BRC-721 - Ordinals Collection Protocol is a cutting-edge protocol that enables the creation, ownership, and trading of unique digital assets known as NFTs or Non-Fungible Tokens. NFTs are digital assets that are backed by the security of blockchain technology, making them tamper-proof and secure. Ordinals Collection Protocol utilizes the Binance Smart Chain to ensure fast and efficient transactions with low fees.
Read More Version: 1-draft
The Ordinal Theory lacks a prescribed method for combining individual items into collections, resulting in various entities developing their own techniques. Unfortunately, these techniques are centralized and reliant on specific services or wallets, thereby restricting the Ordinal ecosystem and leaving it vulnerable to potential exploitation by malicious actors.
These limitations have significantly curbed the ecosystem's potential, necessitating a decentralized and trustless approach for creating and verifying collections.
The BRC-721 Ordinals Collection Protocol brings forth a decentralized and trustless mechanism for creating collections, along with a post-reveal feature akin to Ethereum's ERC-721 standard.
Through the provision of a unified source of authenticity, the protocol intends to simplify the process of collection creation and verification without necessitating upfront payments.
The protocol outlines the data format for collections and their constituent items within the manifest. The verification rules and manifest jointly establish the eligibility of an ordinal inscription for inclusion within a collection.
The CollectionManifest serves as the authoritative source for the collection, containing crucial information such as the collection name and version, which facilitates third-party services in comprehending the specifications. Additionally, it holds various values that aid in verifying the inscriptions.
{ type: "collection", name: string, version: string, paymentAddress: string, signerPublicKey: string, // optional fields maxSupply?: number, maxPerAddress?: number, maxBlockHeight?: number }
The InscriptionManifest is a type of ordinal inscription that is associated with the CollectionManifest, comparable to how an NFT is linked to an Ethereum blockchain contract.
{ type: "inscription", manifestTxId: string, content: { price?: number, initialOwnerAddress?: string } contentSignature: string }
The RevealManifest enables the metadata to be linked to a particular CollectionManifest, providing attributes to the InscriptionManifests.
{ type: "reveal", metadataURL: string, manifestTxId: string }
Each manifest is a JSON string that must be valid against the declared json-schema.org Draft 4 to prevent inconsistency.
To ensure that an InscriptionManifest is a part of the collection, the underlying conditions must be met:
1️⃣ InscriptionManifest.manifestTxId is equal to CollectionManifest's
transaction ID
2️⃣ InscriptionManifest.contentSignature is verifiable with
CollectionManifest.signerPublicKey and InscriptionManifest.content
3️⃣ If InscriptionManifest.content.price exists and is greater than
0, the inscription transaction includes a spendable output(s) for
CollectionManifest.paymentAddress with a total value more or equal
to InscriptionManifest.content.price
4️⃣ If CollectionManifest.maxBlockHeight exists and is greater than
0, then InscriptionManifest's transaction block height is less or
equal to the specified value
5️⃣ If CollectionManifest.maxSupply exists and is greater than 0,
then InscriptionManifest number is less or equal to the specified
value. The order of the transactions in the blocks calculates the
InscriptionManifest number.
6️⃣ If InscriptionManifest.content.initialOwnerAddress exists, then
InscriptionManifest's first output is spendable by the same address
to ensure that initialOwnerAddress is the initial recipient of the
inscription
7️⃣ If CollectionManifest.maxPerAddress exists and is greater than 0,
then total number of verified InscriptionManifests is less or equal
to CollectionManifest.maxPerAddress
To ensure that a RevealManifest is a part of the collection, the underlying conditions must be met:
1️⃣ The first output spender in CollectionManifest's transaction
must be equal to the first output of RevealManifest's transaction
spender
2️⃣ RevealManifest.manifestTxId is equal to CollectionManifest's
transaction ID
3️⃣ The last RevealManifest inscription if more than one exists to
update the metadata