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是第一个用于演示的集合,这是由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”加入免费交流群.。