翻译:团长(https://twitter.com/quentangle_)
在本教程中,我们将构建一个动态 NFT。希望您对 NFT有所了解,知道一些流行项目,BAYC、Cool Cats 等。如果没有,您可能需要先查看关于从头启动 NFT 的文章。
传统图像 ERC721 和 ERC1115 变体这样的 NFT 智能合约可以通过不同的方式存储图像信息:
Figure 0. We Love the Nouns
在本教程中,我们将使用一种混合方法来生成元数据。元数据包含的图像将被存储在IPFS上,然而,JSON的生成将在链上完成。这使得动态创建元数据变得更加容易,同时让我们可以灵活地不费吹灰之力地改变元数据所包含的图像。
在继续之前,有必要注意一下元数据对NFT项目的影响。想象一下,通过操纵图像或甚至改变属性来改变像BAYC这样的蓝筹藏品的元数据,使一些token更加稀有。如果开发人员只需更新NFT的URI就能完全改变外观,那么收藏者就真的把所有的信任放在了团队的交付上。
这就是溯源验证的重要性,这是在NFTs中没有被充分提及的东西。如果NFTs只使用IPFS,开发者应该在他们披露后发布元数据文件夹的不可变的校验和(哈希)。这样一来,用户总是可以在链外验证元数据没有被篡改。如果元数据完全是在链上生成的,那么风险就比较小。
在动态NFT的情况下,元数据和图像可以改变,最终用户应该被告知事情将如何以及何时改变。在元数据位于链外(IPFS)的情况下,每次元数据变化时,可以将新的来源哈希值更新到合同上,这样就有了完整的可证明的审计跟踪。
现在我们明白了NFT如何更新,如果我们可以使用真实世界的数据、事件,甚至是真正的随机性来动态更新我们的智能合约中的元数据,会怎么样呢?欢迎来到Chainlink的世界。
Chainlink是一个去中心化的预言机网络,它可以将链外数据输入到智能合约中,本质上赋予它们请求和响应任何链外API的能力。
Figure 1. Chainlink Network
本教程假定你已经有了MetaMask,并且熟悉改变网络的能力。我们将使用Rinkeby Testnet来进行所有的工作。
注意:如果你以前从未使用过测试网络,你可能需要启用这一功能。我的账户 > 设置 > 高级 > 显示测试网络。
接下来,我们需要用一些Rinkeby ETH和LINK来资助我们的钱包。每次调用Oracle将花费一些LINK,作为服务费给节点运营商。前往https://faucets.chain.link/rinkeby,在你的账户中填入一些测试ETH和LINK。
Figure 2. Chainlink测试币