# BRC721:Ordinals集合协议

By [熊猫撸白.nft](https://paragraph.com/@fomoplz) · 2023-05-15

---

前言
--

相信参与过ETH上的NFT的小伙伴对于\*\*「集合」\*\*这个概念一定不陌生。一个集合通常由几千或者上万个NFT组成，典型如加密朋克和无聊猿等一线蓝筹NFT集合都是1000个。

ERC721
------

NFT的价格高低除了个人偏好以外，还取决于每个NFT属性的稀有度。ERC721是一套便于创建集合和管理NFT的非同质化代币协议标准。最早是由Axiom Zen公司的技术总监Dieter Shirley于2018年1月提出,同时Axiom Zen也是CryptoKitties背后的公司。所以，CryptoKitties是第一个实现ERC721标准的NFT。

本文主要探讨**ETH上的NFT集合是如何组织的**，所以在以下NFT实现代码中省略不相干的代码。

    pragma solidity ^0.8.0;
    
    contract pandaNFT is ERC721, Ownable {
        
        uint256 private _tokenIds;
         ...
        function setTokenURI(uint256 tokenId, string memory tokenURI) public onlyOwner {
            _setTokenURI(tokenId, tokenURI);
        }
    }
    

首先Opensea等NFT交易平台是通过**合约地址**来区分不同的集合，其次是集合下每一个NFT都对应了一个**tokenId**,并且通过setTokenURI()函数将**tokenId和tokenURI进行绑定**。这里的tokenURI指的是保存元数据文件的地址，**元数据包含图像地址，属性，名称等**。

以上就是ETH上通过ERC721去管理一个集合的基本原理，接下来我们再来看看如何将上面的理念通过BRC721引入Ordinals NFT Collection。

痛点
--

我们首先需要观察一下当前Ordinal NFT的集合管理方式存在哪些痛点：

*   **中心化**：必须填写各交易市场的集合规范文档，需要经过审核并且需要信任创作者将你的铭文包含在集合中。
    
*   **缺乏集合规范**：当前各个交易市场的集合文档往往有很大的不同，同一个集合上架多个交易所会比较麻烦。
    
*   **缺乏元数据标准和稀有度展示机制**：当前在Ordinal的NFT生态中还没有出现类似于TraitsSniper之类的稀有度排名插件，这是由于尚未出现一个被认可的元数据标准规范便于插件的开发。
    

三份清单
----

整个BRC721协议基于的如下三份清单：集合清单、铭文清单和显示清单，每份清单都有协议和版本字段，允许第三方服务理解规范。（_官网链接：_[_https://www.brc721.com/_](https://www.brc721.com/)）

📜集合清单(CollectionManifest)

集合清单是集合的真实来源。它存储了集合的参数和字段，允许链接和验证基础集合项

    protocol
        name: "BRC721"
        version: string
      
      name: string                      //集合名称
      symbol: string                    //集合符号，比如:PEPE
      type: "collection"                //清单类型：collection
      paymentAddress: string            //用于接收购买铭文付款的BTC地址，创作        者收款地址
      signerPublicKey: string           //集合创造者公钥，可以使用私钥验证所有权
                                        //以下三个参数用于检测铭文的有效性
      maxSupply?: number,               //集合最大的铭文数量
      maxPerAddress?: number,           //每个地址可以铸造的铭文数量
      maxBlockHeight?: number           //有效铭文的最大区块高度
    

💎 铭文清单(InscriptionManifest)

集合的一个Item，类似于NFT

    protocol
        name: "BRC721"
        version: string
      
        type: "inscription"
        contentSignature: string
      
        content: JSON string                 
        price?: number                           //单个铭文的价格以sats计价
        initialOwnerAddress?: string             // 初始拥有者地址可以实现白                        名单的功能，如果不设置，相当于公售
        collectionInscriptionId: string          //集合铭文ID，等于上述集合清单铸造的铭文ID
    

👁️ 显示清单（RevealManifest）

显示清单允许将元数据链接到特定的集合清单上，从而为铭文清单提供属性，类似于ERC721的tokenURI方法，每个铭文清单在集合中从1开始获得一个内部序号，分配的编号基于交易和铭文的顺序。

    protocol
        name: "BRC721"
        version: string
    
        type: "reveal"
        contentSignature: string
    
        content: JSON string                    
        weight: number                     //可以铭刻多个版本显示清单，每个清单有一个权重，权重最高的将作为集合的最新元数据  
        metadataURL: string                //元数据URL，元数据格式参考ERC721
        collectionInscriptionId: string    //集合铭文ID，等于上述集合清单铸造的铭文ID
    

索引和验证
-----

下图展示了从Bitcoin集合中读取集合数据的基本流程：

1.从新区块中检测铭文

2.筛选出集合铭文

3.根据集合铭文ID找到显示清单铭文

4.从显示清单铭文中解析出metadata展示到前端

![](https://storage.googleapis.com/papyrus_images/587f5042d1fddc873dc528e1d88cdf500a9b3efe48286addcd1454c063a7f87e.jpg)

开发进度
----

整个BRC721协议是由这个推特昵称叫做Poyo（@poyo\_eth）的开发者所推动的，最新的一条进度更新是5月7日，表示目前的索引器还有一些问题。所以现在BRC721还只是停留在理论阶段，产品还未落地，我们需要耐心等待。

![](https://storage.googleapis.com/papyrus_images/c3e9e3456191e6630f0506508ec4287ea231007e6f10b0b3da07a270d02c013f.png)

总结
--

我讲一讲我在写这篇文章时的一点感受：

首先是资料特别少，关注这个协议的人不多，其次就是官方文档中很多字段都没有写注释，到目前为止也没有一个完整的例子出现，理解起来非常抽像。（**注：上述我注释的字段是从开发者推特中找到的，没有找到依据的我都没有注释，以防误导**）

其次就是市面上除了这个BRC721协议外，还有其他作者发行的同名协议，这个我们后面再研究。不过实现逻辑都是借鉴ERC721,都是可以通过metadataUrl这个字段去引用ipfs上的元数据文件。

不过，**ordinal协议本来就是为了去解决ETH上的NFT可篡改的问题，这样一来，采用ERC721的实现逻辑，可能不会被市场所认可。其实也可以将Metadata铸造成铭文，然后被引用，这样就无法被篡改了**。

最后，就是我们普通玩家如何参与？ 目前由于还没有产品落地，我们只能继续跟踪最新的开发动态，BRC20火了，BRC721这个概念很可能也会被炒作一波，**我们需要在第一个采用这个标准的NFT集合出现之后，迅速去铸造，同时关注市面上其他BRC721标准的NFT集合，进行横向对比，最终哪个最有共识是由市场所决定的，我们要做的是抓住第一个**。

以上就是关于BRC721的一些介绍，当前资料较少，可能会有一些错误，欢迎点击下方linktree加入tg群：

[

pandawl | Twitter | Linktree
----------------------------

We are an nft community that focuses on noob training and marketing.

https://linktr.ee

![](https://storage.googleapis.com/papyrus_images/d1acd5f2cb54cb8e0be273fefcba6fbf14c879066fa6c7439f311dfbd4701ac5.jpg)

](https://linktr.ee/pandawl)

[Subscribe](null)

---

*Originally published on [熊猫撸白.nft](https://paragraph.com/@fomoplz/brc721-ordinals)*
