MoonCats 是以太坊上最早的生成艺术,严格来说是由用户在铸造时通过链上可验证的算法生成的。就是这样。以下是原因🧵
2017年链上部署。MoonCatRescue合约于2017年8月9日获得验证,早于ERC-721和大多数NFT基础设施。
链上激活时间随机性。当所有者调用 activate() 时,合约承诺 searchSeed = block.blockhash(block.number - 1),这在激活之前是无法知道的。这防止了对理想输出的预计算或预挖掘。
工作量证明门控铸造。铸造使用 rescueCat(bytes32 seed),计算 catIdHash = keccak256(seed, searchSeed),并要求 catIdHash[0] | catIdHash[1] | catIdHash[2] == 0x0。实际上,救援者必须在链外搜索种子,直到找到一个具有三个前导零字节的哈希,然后在链上提交该种子。这使得生成变得无权限且可由矿工发现,而不是由创作者预先生成。
在铸造时进行确定性ID派生。对于有效的种子,合约将catId分配为bytes5((catIdHash & 0xffffffff) << 216),即将哈希的低32位移入一个5字节标识符,高字节保留用于“创世”标志。通过require(catOwners[catId] == 0x0)在链上强制唯一性。
基于链上的规范生成器。该合约存储 imageGenerationCodeMD5,以便客户可以验证他们使用的渲染代码是否与合约引用的规范生成器匹配。这是渲染器的链上加密锚。
紧凑的、生成的“配方”完全存储在链上。每个MoonCat的5字节十六进制ID编码了其完整的配方:方向、调色板反转、毛发图案、面部表情、姿势和基础颜色。第二个字节(“k”)多路复用姿势/面部/毛发/朝向,最后三个字节提供基础RGB,扩展为调色板。
打开,参考渲染器。官方生成器 mooncatparser 确定性地将 5 字节 ID 映射到 2D 像素数组中。任何人都可以仅通过链上 ID 独立重新渲染 MoonCat,确保长期可验证性。
用户在铸造时控制分发。原始的“扫描仪”让用户在本地挖掘种子,并决定是否提交救援,这使得稀有度统计和特征分布从开放参与中产生,而不是预先计算的掉落。
ERC-721 之前,完全链上市场和命名。2017 年的合约包括一个链上市场(makeAdoptionOffer、acceptAdoptionOffer、requests)和通过 nameCat 进行不可变命名,展示了一个独立的生成铸币厂以及一个系统中的出处和交换层。
随后硬化为完全链上图像。在2022年,部署了补充合约(MoonCatSVGs、MoonCatColors、MoonCatTraits),使得链本身可以直接从其链上配方返回任何MoonCat的SVG,消除了对链外图像的依赖,同时保留了2017年生成模型的原始设计。
总之,MoonCats 在 2017 年 8 月开创了基于链的种子、工作量证明限制、用户发现的生成铸造,具有通过合约中的哈希锚定的可验证渲染管道和每个代币的紧凑链上配方。
23.94K