动态NFT开发教程【含源码】

动态NFT (dNFT) 是 NFT 发展的下一个阶段,它将 NFT 可验证的独特性与动态数据输入和链下计算相结合。预言机是将动态元素引入 NFT 的基础,为它们提供输入,例如可证明公平、防篡改的随机性和来自现实世界的各种数据。

在本教程中,我们将学习如何基于 Polygon 上的 Chainlink 预言机提供的实时天气数据构建 dNFT。

动态NFT开发教程【含源码】_第1张图片

用熟悉的语言学习 以太坊开发 : NFT实战 | Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart

1、Polygon简介

Polygon(以前称为 Matic Network)是用于构建与以太坊兼容的区块链的扩展框架。Polygon 不是只提供一两个扩展解决方案,而是创建一个生态系统,连接多个不同的扩展解决方案,包括具有不同共识机制的侧链和第二层选项,如 Plasma、Optimistic Rollups 和 ZK-Rollups。Polygon 的框架还允许新项目快速轻松地构建自己独特的扩展解决方案。Polygon 凭借其以太坊虚拟机 (EVM) 兼容性、可选的共享安全模型及其先进的灵活性,将自己与其他区块链扩展和互操作性项目区分开来。

动态NFT开发教程【含源码】_第2张图片

流行的基于 NFT 的游戏项目,如 Aavegotchi 和 Polychain Monsters 已经使用 Polygon 的可伸缩技术启动,两者都集成了 Chainlink 可验证随机函数 (VRF),为用户创造更加动态的体验。然而,可验证的随机性并不是开发人员可以用来在 Polygon 上构建 dApp 的唯一输入。通过利用 Chainlink on Polygon 提供的天气源,开发人员可以创建动态 NFT,这些 NFT 根据安全预言机提供的链下数据而变化。

2、为什么动态 NFT 很重要?

NFT通常用于表示艺术品等独特资产的所有权,但它们也可用于表示动态资产,例如运动员在体育比赛中的统计数据。可以使用数据创建加密安全、去中心化和防欺诈的交易卡,并在数据发生变化时实时更新——例如,当获得新分数或记录成功助攻时。这为 NFT 收藏家创造了新的新水平,并在基于 NFT 的游戏应用程序中解锁了新的实用程序。

由预言机驱动的动态 NFT 在游戏 dApp Aavegotchi 中发挥着关键作用,它集成了 Chainlink VRF 为其提供可证明的随机性来源。Chainlink VRF 有助于确保公平地确定 Aavegotchi dNFT 的独特特征,并为不可预测的游戏场景以及随机 DAO 陪审员选择提供支持。Aavegotchi 在 Polygon 的第 2 层 PoS 链上推出,凭借接近零的交易费用和快速的结算时间,使游戏能够经济高效地扩展以满足用户需求。

Chainlink 通过提供抗操纵的低成本链下服务,在支持 Polygon 等扩展解决方案方面发挥着至关重要的作用。借助 Chainlink,开发人员可以访问天气数据,例如,构建现实世界数据的 dNFT 表示,例如某些地理位置的当前温度。

像这样的 dNFT 的一个用例是支持基于区块链的保险。保险单可以转换为 dNFT,允许根据 Chainlink 预言机从外部世界获取的天气数据定制农作物保险单。由于它们允许在广阔的地域进行实时覆盖并提高支付效率,因此dNFT 是传统保险形式的强大替代品,传统形式的保险通常会受到人工处理延迟和主观评估的影响。

FarmerNet NFTs是 GeoDB Geolocation Oracle 和 Chainlink Virtual Hackathon Spring 2021 政府技术奖的获得者,他们使用 Chainlink 为农民创建了一个区块链市场,以通过碳信用赚取收入。像这样的项目可以让买家获得不可变的证据,证明他们通过 dNFT 声称减少碳和使用可再生能源。这只是预言机在创建下一代 NFT过程中提供的众多好处的一个例子。

3、示例:动态天气 NFT

因为 Polygon 与 EVM 兼容,所以我们可以使用 Solidity 环境中的工具,例如 Truffle、Hardhat、MetaMask 等。在本教程中,我们将使用 Truffle,这是一个智能合约开发框架,允许我们使用 Polygon。

首先,我们需要设置环境变量,所以我们需要一个 PRIVATE_KEY 和一个 MATIC_RPC_URL 环境变量。PRIVATE_KEY 是钱包的助记词,你可以从 Infura 等节点提供商服务中找到MATIC_RPC_URL。你的钱包中还需要一些Mumbai测试网 的MATIC代币,可以从Mumbai Faucet获得这些代币。

然后,将它们设置在 bash_profile 文件中或在终端导出:

export MNEMONIC='cat dog frog....'
export RINKEBY_RPC_URL='www.infura.io/asdfadsfafdadf'

接下来执行以下命令开始使用 repo,这将在 Polygon 链上部署动态 NFT:

yarn global add truffle

git clone https://github.com/kwsantiago/weather-nft

cd weather-nft

yarn

truffle migrate --network  mumbai

我们刚刚在链上部署的 dNFT 将根据WeatherFeed.sol 文件中 getWeather() 函数中调用的天气数据进行更新,该函数获取马萨诸塞州波士顿的当前温度。

function getWeather() public onlyOwner
returns (bytes32 requestId) {
    Chainlink.Request memory req = buildChainlinkRequest(jobid, address(this), this.fulfill.selector);
    req.add("city", "boston");
    req.add("copyPath", "weather.0.main");
    requestId = sendChainlinkRequestTo(oracle, req, fee);
}

恭喜,你已经部署了您的第一个 dNFT,并且可以随着天气的变化看到它的运行情况!

动态NFT开发教程【含源码】_第3张图片

4、在 Etherscan 上查看dNFT

可以免费获得 Etherscan API 密钥并与链上 dNFT 进行交互。然后,可以将 ETHERSCAN_API_KEY 设置为环境变量。

我们可以通过执行以下操作来验证这一点:

yarn add truffle-plugin-verify

truffle run verify WeatherNFT --network mumbai --license MIT

truffle run verify WeatherFeed --network mumbai --license MIT

这将验证并发布你的合约,可以转到Etherscan 的“读取合约”部分。

否则,可以使用oneclickdapp并添加合约地址和 ABI。可以在
build/contracts 文件夹中找到 ABI。请记住,ABI 不是整个文件,只是显示“ABI”的部分。

5、结束语

本教程源码可以从这里下载。

将 Polygon 等快速且具有成本效益的平台与强大的去中心化预言机网络 (DON) 相结合时,创建dNFT 将变得很容易,从而扩展了智能合约的可能性。Polygon dApp 还可以将 Chainlink 用于广泛的其他用例,例如在 Polygon 上使用随机数来构建可证明公平的区块链游戏,或者在 Polygon 上引用去中心化的价格信息来支持下一个革命性的DeFi协议。


原文链接:动态NFT开发教程 — 汇智网

你可能感兴趣的:(NFT,以太坊开发,区块链)