GBRC721:生成式Brc721协议

前言

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
                ......

OrdiBots

OrdiBots是第一个用于演示的集合,这是由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 to 熊猫撸白.nft
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.