# GBRC721:生成式Brc721协议 **Published by:** [熊猫撸白.nft](https://paragraph.com/@fomoplz/) **Published on:** 2023-06-03 **URL:** https://paragraph.com/@fomoplz/gbrc721-brc721 ## Content 前言BRC20协议只有一个,但是自它出圈之后,有很多人想去争夺BRC721的“正主”地位,前两天,介绍了《BRC721:Ordinals集合协议》,今天这篇文章来给大家介绍另外一种Ordinal NFT标准化方案:GBRC721简介GBRC721全称是Generative-brc-721,是由专业的开发者 @0xJerry543于5月23日在推特提出,他表示“当前高昂的网络费用和区块空间的使用使得创建链上的NFOs(Non-Fungible Ordinals)效率非常低下且昂贵,是时候优化此过程来使得NFOs更易于访问和可持续。”工作原理不得不说整个开发文档写得还是非常清晰的,GBRC721可以节省所有的链上资源,同时实现50%-90%的区块空间优化。该过程包括三个主要操作:使用部署操作创建生成 BRC-721 集合使用 mint 操作铸造一个不可替代的序号将 Non-Fungible Ordinal 转换为标准序号铭文。部署Deploy操作是一个JSON/Text铭文,其中包含了集合的一般信息(比如集合的标识符,名称和最大供应量等)以及构成集合的特征的base64编码数据。(注意:也可以为同一个集合创建多个部署铭文,每个都将存储一组不同的特征)以下演示均以第一个集合OrdiBots为例。{ "p": "gen-brc-721", "op": "deploy", "slug": "ordibots", "name": "OrdiBots", "supply": 1000, "trait_types": [ "background", "accessories", "body", "belly", "face" ], "dim": [32,32], //尺寸,表示属性图和最终图片的像素大小[width,height] "traits": { "background": { "blue": { "name": "Blue", //属性图片的base64编码 "base64": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEVkhZa3PARZAAAAC0lEQVR4AWMY5AAAAKAAAVQqnscAAAAASUVORK5CYII=" }, ... // more backgrounds }, "accessories": { "antenna": { "name": "Antenna", "base64": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAKUlEQVRYCe3BsQ0AIADDsOT/o8sJLEgssSHJhTpg4oDxmzKSJEmS5KEDUlIFA6L+DvwAAAAASUVORK5CYII=" }, ... // more accessories }, ... // other traits } } 铸造铸造操作使用的也是一个JSON文本,其中包含了正在铸造的NFT的信息以及对于部署铭文的引用。目的是存储生成图像的属性值、最终图像的哈希值以及链上部署铭文集合的引用。这种方法允许任何人使用链上刻录数据重新创建图像。看到这里相信大家就会和我一样恍然大悟,原来这就是“生成式”这个名字的由来,这是一种全新的NFT组合方式,而且是不同于ETH,是完全创新的存储在链上的NFT解决方案。{ "p":"gen-brc-721", "op":"mint", "s":"ordibots", //集合的标识 "t_ins":[ //包含属性部署铭文ID的数组 "b7205d40f3b1b1486567f0d6e53ff2812983db4c03ad7d3606812cd150c64802i0" ], //最终生成的图像的hash值,这是一个可选项,可以用于额外的安全检查,不使用的话可以提高效率 "h":"aa0d33b748e0177528a910a56a61c47bee2ba9b69749228d6520049c0fea3f4f", "id":"554", //tokenid,每个NFT的唯一标识 "a":[ //属性数组 [0,"bitcoin-orange"], //[包含相应属性的base64数据的部署铭文的索引:属性值] [0,"rainbow"], [0,"black-and-white-triangular"], [0,"square"], [0,"happy"] ] } 前端展示前端需要根据JSON文本去生成图像,不过大多数平台不会在每次需要向用户显示图像的时候查询区块链。相反,为了方便和高效,他们通常将这些图像存储在自己的数据库中。因此,实施该标准不应对流行的方法造成重大改变。 可以通过如下代码去重建图像(代码太长,这里就不会完全展示了,感兴趣的可以参考源文档:https://github.com/jerryfane/generative-brc-721)async function createImage(attributes, t_ins) { let baseImg; let ctx; let promises = []; let images = new Array(attributes.length); for (let i = 0; i < attributes.length; i++) { let attribute = attributes[i]; let inscriptionIndex = attribute[0]; let traitValue = attribute[1]; let traitsInscriptionId = t_ins[inscriptionIndex]; let promise = fetch('https://ordinals.com/content/' + traitsInscriptionId) .then(res => res.json()) .then(data => { // Map the index of the attribute to the corresponding trait_type let traitType = data.trait_types[i]; let base64ImageString = data.traits[traitType][traitValue]['base64']; let img = new Image(); let [x_dim, y_dim] = data.dim || [32, 32]; // Default to [32, 32] if 'dim' is not defined ...... OrdiBotsOrdiBots是第一个用于演示的集合,这是由26个不同特征组成的1000个机器人铭文集合,使用新标准可以使块空间减少55%,大大降低了铭刻的费用。 以下是关于该集合的铭文链接: 部署铭文:https://www.ord.io/8326719 所有可能得资产铭文文件:https://luminex-public.s3.eu-west-1.amazonaws.com/collections/ordibots/ordibots-assets.json 铸造铭文示例:https://www.ord.io/8400075 购买链接:https://magiceden.io/ordinals/marketplace/ordibot总结:个人觉得GBRC721这种“乐高”式链上组合方案比ERC721还要好,他不仅可以解决当前ordinals NFT占用空间大,铸造费用高的问题。同时,可以预见的是这种方案可以拓展到让用户自定义自己的NFT形象。同上文所提到的BRC721解决方案相比,两种方案侧重点不同,BRC721注重于集合和单个NFT的组织关系,GBRC721更侧重于单个NFT的组合方式。 最后,欢迎添加下方联系方式,备注“GBRC721”加入免费交流群.。Subscribe ## Publication Information - [熊猫撸白.nft](https://paragraph.com/@fomoplz/): Publication homepage - [All Posts](https://paragraph.com/@fomoplz/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@fomoplz): Subscribe to updates - [Twitter](https://twitter.com/dajingou1): Follow on Twitter