中华街zhshops

动态NFT的构建、部署和出售

1.png
NFT是只有在区块链领域里才存在的工具,有着广泛的应用和机遇。ERC721代币标准可以构建收藏品、独立代币、票据、游戏等多种应用,对于那些想要参与构建的开发者来说,一个动态和随机的NFT是一个很好的开始。但我们现在可以用它做什么?展示你新铸造的随机化或动态角色,是不是很赞?
我们也是这样认为的。在本教程中,我们将引导您完成所有步骤,将您自己的动态或随机化NFT部署到OpenSea市场。下面是一个[backcolor=transp的费用。
数据存储的成本是(大约)每Kb数据64万gas。如果目前的gas约为50Gwei或0.000000050ETH,而1ETH相当于目前的600美元,你将花费20美元。
1KB图像
花费20美元,将这样一个图形添加到区块链中,并没有让NFT的创造者们真正兴奋起来。
我们意识到Ethereum 2.0将解决很多这些令人头疼的扩展问题(同时也祝贺ETH2.0成功启动),但目前社区需要一个标准来帮助解决这个问题。元数据就是这个问题的答案。
元数据为链外存储的tokenId提供描述性信息。这些都是简单的API,链外UI调用这些API来收集有关token的所有信息。每个tokenId都有一个特定的tokenURI,定义了这个API调用,它返回一个JSON对象,看起来像这样:
{    "name": "You NFT token name",    "description": "Something Cool here",    "image": "https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png",    "attributes": [. . .]}
元数据有四个不同的key:
name,定义了tokenIds的可读名称
description,其中提供了一些关于token的背景信息
image是图像的另一个URI
attributes是token的统计数据
如果您的NFT与其他NFT进行交互,确保tokenURI上的属性(attributes)与您的NFT智能合约的属性(attributes)相匹配,这一点非常重要,否则当战斗或互动没有达到预期时,您可能会感到困惑!
为tokenURI分配出tokenIds之后,NFT市场就能够显示你的token,让你展示你的创造力。你可以在Rinkeby testnet的OpenSea市场上看到我们使用更新后的《龙与地下城》随机NFT代码仓库创建的一个NFT。这种市场有很多,比如MintableRaribleOpenSea


分享至 : QQ空间
收藏

7 个回复

倒序浏览

链上和链下元数据
你可以一直将所有的元数据存储在链上(事实上,这是与代币进行交互的唯一方式),但很多NFT市场不知道如何读取链上元数据_现在。_所以目前来说,使用链下元数据来可视化你的代币,同时拥有所有的链上元数据是最理想的,这样你的代币就可以互相交互。
名称、描述和属性很容易在链上存储,但图像才是难点。另外,我们在哪里存储tokenURI的API?很多人选择运行服务器来托管信息,这很好,但这是一个中心化的用于可视化token的地方。如果我们能把图片存储在链上,这样就不会宕机或被黑客攻击,是一个更好的选择。在上面的例子中,他们的图片使用的是指向IPFS的URL,这是一种常用地存储图片的方式。
IPFS是InterPlanetary File System(星际文件系统)的缩写,是一种点对点的超媒体协议,旨在使网络更快、更安全、更开放。它允许任何人上传一个文件,并且该文件是经过哈希校验的,所以如果文件发生改变,它的哈希值也会改变。这对于存储图片来说是非常理想的,因为这意味着每次图片更新时,链上的哈希/tokenURI也要改变,同时这意味着我们可以拥有元数据的历史记录。将图像添加到IPFS上也非常简单,而且不需要运行服务器。
现在我们知道了要做什么,下面让我们来构建和部署吧!你部署了你的NFT代币和市场之后,一个代币将看起来像这样:
levels部分是代币的随机统计数据的地方!
给您一个额外的惊喜
现在,读到这里的朋友们,我们为你们准备了一个额外的惊喜。我们将在一秒钟内介绍如何部署这些NFT,但在这之前,我们在这个游戏中创建的这四个代币,将在第一个NFT寻宝活动中进行争夺!
这里是他们主网市场的链接。祝大家好运。
如何部署你的动态NFT市场
再次强调一下,我们使用最新版本的Dungeons & Dragons 代码仓库,在readme中也有说明。
下面我们要做:
  • 使用Chainlink VRF构建一个可验证的随机D&D角色
  • 使用IPFS添加一个tokenURI
  • 将随机NFT添加到OpenSea市场中
请记住,你可以改变仓库,使其适用于动态NFTs。你可以很容易地把VRF换成Chainlink Price FeedsChainlink API
这个仓库目前只适用于Rinkeby,所以请务必切换到到Rinkeby网络!我们会从头开始讲解,如果你没有读过上一篇文章也不用担心。
你需要在你的钱包里有Rinkeby Testnet ETHRinkeby Testnet LINK才能继续。
配置环境变量
配置MNEMONIC和一个rinkeby RINKEBY_RPC_URL环境变量。你的MNEMONIC是你的钱包的种子短语。你可以从节点提供者服务中找到一个RINKEBY_RPC_URL,比如Infura
然后,将它们设置在bash_profile文件中,或者像这样将它们导出到你的终端:
export MNEMONIC='cat dog frog....'export RINKEBY_RPC_URL='www.infura.io/asdfadsfafdadf'
接下来你需要这样做:
克隆仓库并部署git clone https://github.com/PatrickAlphaC/dungeons-and-dragons-nftcd dungeons-and-dragons-nftgit checkout opensea-updatenpm installtruffle migrate --reset --network rinkeby
上面的命令部署你的D&D NFT!
回复 使用道具 举报

创建角色
可以通过以下命令来尝试:
truffle exec scripts/fund-contract.js --network rinkebytruffle exec scripts/generate-character.js --network rinkebytruffle exec scripts/get-character.js --network rinkeby
上面的命令可以通过随机数据创建一个新的角色!
根据你部署的频率,你可以通过改变get-character.js中的dnd.getCharacterOverView(1)命令来选择哪个角色,将0换成你喜欢的任何角色的tokenId。
以上命令提供了NFT的概览。因为调用返回的是大数字(big numbers),所以会看到BN,你可以把它们转为整型来查看它们是什么。或者你可以更进一步...
在Etherscan查看
你可以免费获得一个Etherscan API密钥,并与链上的NFT进行交互。然后将ETHERSCAN_API_KEY设置为环境变量。
npm install truffle-plugin-verifytruffle run verify DungeonsAndDragonsCharacter --network rinkeby --license MIT
这样就可以验证并发布你的合约,可以去它给你的Etherscan的Read Contract部分查看。
或者可以使用oneclickdapp,只需添加合约地址和ABI。可以在build/contracts文件夹中找到ABI。注意,ABI不是整个文件,只是写着ABI的部分。
部署到OpenSea
创建好NFT后,我们需要给它们一个tokenURI。TokenURI是向世界展示NFTs数据的标准。可以让我们更容易存储图片等内容,不必浪费气力在链上存储它们。
TokenURI代表一个URL或其他唯一的标识符,它是一个带有一些参数的.json文件。
{    "name": "Name for it ",    "description": "Anything you want",    "image": "https://ipfs.io/ipfs/HASH_HERE?file.png",    "attributes": [...]}下载IPFS和IPFS伴侣(IPFS Companion)
现在,我们将把这些图像和元数据存储在IPFS中。你需要
IPFS伴侣让我们可以在Brave或Chrome等浏览器中原生查看IPFS数据。而Pinata可以让我们在节点宕机时也能保持IPFS文件的正常运行(暂时不用担心这个问题)。如果你在浏览器中点击这个链接,你就会知道IPFS伴侣在工作:https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png
就会出现下面的图像:
Chainlink精灵
添加图像到IPFS
IPFS节点建立起来之后,就可以开始向它添加文件了。首先要上传我们NFT的图像。前往IPFS安装的 "files"部分。
IPFS文件
这个D&D角色是什么样子的?将它添加到你的IPFS节点,然后 "Pin "它。现在,你可以随意pin一个空白的图片,或者随便任何东西。
添加元数据文件到IPFS
然后需要将元数据JSON对象添加到IPFS中。需要从部署的代币中获取名称和属性。我们在create-metadata.js脚本中为做了一些工作。只需运行
truffle exec scripts/create-metadata.js --network rinkeby
元数据会显示在metadata文件夹中。它现在只需要图片的URL!元数据是我们使用Chainlink VRF创建的随机数和统计数据。现在我们得到我们创建的图片的CID,并将其添加到元数据JSON文件中,然后将该文件也添加到IPFS中,并将其pin住!它看起来会像这样:
Chainlink精灵JSON
Pinata
如果IPFS节点宕机了,或者关闭了计算机,我们将无法拉取元数据,所以我们需要一种方法来保持它们pin的状态,并让其他节点托管数据。这就是Pinata的作用。别担心,它是免费的!作用是在我们的IPFS节点停机时帮我们维护数据。复制图像和JSON元数据文件的CID,并将其添加到Pinata账户中。这需要几秒钟的时间来注册。
复制CID
这个元数据 json 文件就是 tokenURI,所以我们用给图片NFT的 tokenId 来修改 set-token-uri.js,并添加 ipfs tokenURI。
然后我们用
truffle exec scripts/set-token-uri.js --network rinkeby
现在就可以得到NFT的地址,然后到OpenSea testnet市场去看看我们做的是否正确。如果做得正确,它将看起来像[url=https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/%5Bhttps://testnets.opensea.io/asse ... gonscharacter-v9%5D(https://testnets.opensea.io/assets/dungeonsanddragonscharacter-v9)]这样[/url]。我们要先在OpenSea注册一个账户。
[url=https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/%5Bhttps://testnets.opensea.io/get-listed/step-two%5D(https://testnets.opensea.io/get-listed/step-two)]这里是添加你的testnet NFT合约在opensea上查看的链接[/url]。然后,就可以开始销售你的NFT了。
回复 使用道具 举报
Liyun Liyun 来自手机 版主 2021-12-16 03:43:59
地板
不错,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册