相信参与过ETH上的NFT的小伙伴对于**「集合」**这个概念一定不陌生。一个集合通常由几千或者上万个NFT组成,典型如加密朋克和无聊猿等一线蓝筹NFT集合都是1000个。
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/*)
📜集合清单(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展示到前端
整个BRC721协议是由这个推特昵称叫做Poyo(@poyo_eth)的开发者所推动的,最新的一条进度更新是5月7日,表示目前的索引器还有一些问题。所以现在BRC721还只是停留在理论阶段,产品还未落地,我们需要耐心等待。
我讲一讲我在写这篇文章时的一点感受:
首先是资料特别少,关注这个协议的人不多,其次就是官方文档中很多字段都没有写注释,到目前为止也没有一个完整的例子出现,理解起来非常抽像。(注:上述我注释的字段是从开发者推特中找到的,没有找到依据的我都没有注释,以防误导)
其次就是市面上除了这个BRC721协议外,还有其他作者发行的同名协议,这个我们后面再研究。不过实现逻辑都是借鉴ERC721,都是可以通过metadataUrl这个字段去引用ipfs上的元数据文件。
不过,ordinal协议本来就是为了去解决ETH上的NFT可篡改的问题,这样一来,采用ERC721的实现逻辑,可能不会被市场所认可。其实也可以将Metadata铸造成铭文,然后被引用,这样就无法被篡改了。
最后,就是我们普通玩家如何参与? 目前由于还没有产品落地,我们只能继续跟踪最新的开发动态,BRC20火了,BRC721这个概念很可能也会被炒作一波,我们需要在第一个采用这个标准的NFT集合出现之后,迅速去铸造,同时关注市面上其他BRC721标准的NFT集合,进行横向对比,最终哪个最有共识是由市场所决定的,我们要做的是抓住第一个。
以上就是关于BRC721的一些介绍,当前资料较少,可能会有一些错误,欢迎点击下方linktree加入tg群: