RFC: sub-ordinals

Note: I realize there are similar ideas floating around, I’m just adding to the discussion here.

When pondering the future of Ordinals it’s fairly obvious i think that they will be horrible at scaling on Bitcoin as 100% full on-chain inscriptions. One can envision in the next bull market that the cost of image inscriptions, let alone audio and video inscriptions, will push many users, devs and their $ and attention onto other chains that support Ordinals like Litecoin, BSV, etc. This i think will mirror the way that high ETH gas fees pushed significant usage off to many other EVM chains in the last bull market.

It would be better for Bitcoin and Stacks for this not to happen, so what are possible solutions?

One thought was if a new type of Ordinal is created, lets call it a sub-ordinal, that is a sorta 2nd class Ordinal where only the NFT meta-data is inscribed on Bitcoin and the bulk of the data is stored off-chain. That could be something like IPFS, or perhaps a Stacks Subnet designed specifically for this purpose (data subnet)?

I see this as two different use cases and cohort of users. Collectors/investors of high end Ordinals will be interested only in full-ordinals with their higher immutability, rarity, and high cost. Many other users, devs, and media creators will likely prefer the lower cost sub-ordinals. Sub-ordinals can be thought of as a type of NFT that is between a full-ordinal and a L2 NFT due to the fact that the meta-data and ownership control is ON Bitcoin versus on the L2/stacks.

If sub-ordinals usage was accepted I could see a v2 of the meta-data format being generalized for other types of data besides only media.

Thoughts? Ordinal users not likely to accept this kind of thing?

The Stacks metadata service could track and index the sub-ordinal’s metadata? and full-ordinals too?

A microservice that indexes metadata for all Fungible, Non-Fungible, and Semi-Fungible Tokens in the Stacks blockchain and exposes it via JSON REST API endpoints.

I’m currently working on this problem. Specifically, on migrating Ordinals onto Stacks-based token.

My main problem right now is that I want to verify a BTC address using an arbitrary message and digital signature. Does anyone know if this is possible in Clarity?

Suppose you have this fingerprint:

-----BEGIN BITCOIN SIGNED MESSAGE----- 123 -----BEGIN SIGNATURE----- bc1qkk37lp7cp376el3p7t0kcfjcsqxy4tz5qerwju J4/10+Ldb/6/KZvglVu4IDsbV1oDHa6sgsmrWLTGCqVbPscihmhkMEdGGmQOHe43NGu0r+a4N3L2SMF3zuxYyO4= -----END BITCOIN SIGNED MESSAGE--

For example by going to https://www.verifybitcoinmessage.com/ it is possible to verify that the signature J4/10+Ldb/6/KZvglVu4IDsbV1oDHa6sgsmrWLTGCqVbPscihmhkMEdGGmQOHe43NGu0r+a4N3L2SMF3zuxYyO4= proves that PK behind bc1qkk37lp7cp376el3p7t0kcfjcsqxy4tz5qerwju BTC address signed 123 message.

I thought I can use secp256k1-verify function for this. Am I correct or wrong about this? If I’m correct what is the best way to convert address/message/signature into a buffer as per the secp256k1-verify function specification?