探索 dNFT 实现方式
9437a159852841d58530eb69e14619fa
dNFT:在原生 NFT (ERC721)基础上迭代,可以根据数据反馈,实时变更 NFT 的元数据。
有生命的真实资产。能够在外界的刺激下生长、变化、分解、重组。
dNFT 可以通过 「链上数据」和「链下数据」的变动触发 NFT 状态变化。链上数据主要是合约层可以获取的数据,如 token price等,链下数据则通过 Oracle (Chainlink)实体校验后,再添加到区块链中。
如何实现 NFT 动态变化?
Chainlink + 预设IPFS
Chainlink 是头部 Oracle 供应商 ,我们可以便捷的获取代币价格或者天气信息来实现可预测的局部变化。
以天气变化为例,可以通过导入下面的库
import "@chainlink/contracts/src/v0.6/ChainlinkClient.sol";
获取马萨诸塞州波士顿当前温度
再通过初始化预设 IPFS 即可实现不同的温度生成不同的 GIF
之前提到的根据 BTC/USD 价格显示牛|熊图片也是这个逻辑。
问题是这个方法局限性较大,无法更新图片,当然想强行更新也可以,开个方法换 IPFS 地址,总的来说这种方法实现的 dNFT 类似于固定格式的幻灯片,可拓展性太弱。
模块化
把一个完成品拆分不同部件,在进行组合搭配。运行逻辑和 Yuri 类似,不同的图层叠加,可以构筑出不同的 NFT。然后这个 NFT 又能再和其他元素部件叠加,形成新的 NFT。
最佳案例是 First Supper ,由13个艺术家联合创作,每次图层变化都会改变元数据。
这个思路很像堆叠艺术,由于元素固定,用户能改变的状态也就局限于旋转、RGB色调、位置等参数,从画面构图的角度而言差别不大。
不过换成音乐为载体或许有不一样的效果。
Revise 个人定制
Revise.network 是一个为个人提供 NFT 定制的协议,通过 Revise SDK,可以帮用户存储元数据,也能更新数据实现 NFT 动态变化。
运行函数会得到存储在 Revise Network 的 NFT ID,并初始化展示。
再写一个update的函数就能实现数据更新,而且每次更新会在 NFT 中展示记录。
总的来说,Revise 可以通过 Revise SDK,元数据参数化,然后可以手动更新或者说触发元数据,而且每一次的更新,都会进行加密认证,Revise 使用 Optimizedversion 的零知识证明,每个事件的哈希值部署在链上,确保数据的不可篡改性。
这个思路是比较符合预期的。
链上渲染 SVG Canvas
Carbonable是一个碳中和项目,旨在资助再生项目并实施企业管理净零计划和报告。
Carbonable 使用 Cairo 开发了carbon-protocol,可以根据链上数据自动更新 NFT 元数据。
元数据合约只需在 StarkNet 上声明,甚至不用部署成合约。和以太坊不同,StarkNet区分合约类别和合约实例。合约类别表示合约的代码(但没有状态),而合约实例表示具有自身状态的特定类别实例。当声明合约类别时,代码将存储在链上,但无需维护状态。由于元数据合约不一定需要有状态,仅需声明就可以在 NFT 合约的函数调用,运行代码。
Carbonable 团队部署的概念证明是完全去中心化的,图像的 SVG 存储了包含在合约上部署的所有代码。这样任何人都可以跟踪 SVG 的变化。只要代币从一个用户转移到另一个用户,代币的值就会发生变化,SVG 也会相应变动。
资料: 如何在Polygon构建动态 NFTNFT的下一个叙事:动态NFT下一代 NFT:详解动态 NFT 机制、用例和风险零知识证明 | Cairo 语言介绍数字产权和稀缺性Koii’s Vision 可生长水仙花使用 Chainlink Oracles创建动态 NFT合约生成 SVG NFT
- Chainlink + 预设IPFS
- 模块化
- Revise 个人定制
- 链上渲染 SVG Canvas