利用openzeppelin发布ERC-721 NFT
本文主要分享如何使用openzeppelin上面现成的erc721合约自动生成自己的NFT,本文使用rinkeby测试网进行发布,你只需要准备一张需要制作成nft的图片和一个rinkeby测试链的地址,并确保上面有一定的测试币,这样才能支付足够的gas费用,合约才能发布成功,这里就不分享如何添加metamask钱包了
准备测试币
https://rinkebyfaucet.com/
输入rinkeby测试链地址,24小时之内可以领取一次测试币,0.1个eth
在openzeppelin上面生成erc721合约代码
openzeppelin官网
如果不能访问就要使用科学上网。
主页——learn——docs——左侧的contracts——wizard——选择右侧的erc721
进行个性化设置
我这里选择了可以mint,这里需要上链所以选择了存储,
选择右侧的open in remix,会自动使用网页版remix编辑器打开该合约代码
注意:
1、左上角的编辑器的版本要和代码里面编辑器的版本保持一致
2、environment选择injected provider,浏览器会自动获取metamask当前的链、地址和余额,如果这里显示的不是rinkeby,需要在metamask里面切换网络,当然你也可以使用eth的其他测试网络或正式网络。
准备NFT图片
这里在网上随便找了一张图片
图片上传ipfs,获取cid
本文使用的是Filebase,如果你没有账号,可以先注册,再使用邮箱验证即可使用
首次使用需要先在左侧创建一个bucket,注意这个bucket名字具有唯一性,如果提示失败,那就是名字重复了,可以多尝试使用不同的名字
创建成功后,进入bucket并点击upload
上传成功后,进去拷贝IPFS Gateway URL,这个字符串后面需要保存到json文件中,json文件到时候也要上传到ipfs,这个地址也可以在浏览器中打开,图片如果能打开则代表上传成功
准备json文件
每一个nft都会有一个对应的json文件,里面包含了该nft的各项元数据,该json示例可以opensea的metadata standard里面找到,我们可以直接拷贝过来,修改里面的各项参数就可以了
{
"description": "Friendly OpenSea Creature that enjoys long swims in the ocean.",
"external_url": "https://openseacreatures.io/3",
"image": "https://storage.googleapis.com/opensea-prod.appspot.com/puffs/3.png",
"name": "Dave Starbelly",
"attributes": [
{
"trait_type": "Eyes",
"value": "Big"
},
{
"trait_type": "Mouth",
"value": "Surprised"
},
{
"trait_type": "Level",
"value": 5
}
],
}
里面的各项参数,opensea上面也进行了详细的说明
最终json文件格式如下
{
"description": "Friendly OpenSea Creature that enjoys long swims in the ocean.",
"external_url": "https://openseacreatures.io/3",
"image": "https://ipfs.filebase.io/ipfs/QmaNKM9YrKhJjuhQAzwAZ4YXdDMAPFqNvyx68Eb76SefiL",
"name": "Dave Starbelly",
"attributes": [
{
"trait_type": "Eyes",
"value": "Big"
},
{
"trait_type": "Mouth",
"value": "Confused"
},
{
"trait_type": "Level",
"value": 5
}
],
}
上面的attribute可以按照自己的需要进行个性化设置
上传json配置文件
文件上传成功后,拷贝CID,后面mint NFT的时候需要使用
发布合约
发布的时候左侧的contract选择当前的这个sol,deploy,并支付相应gas费用
调用safemint方法的时候需要地址和uri
官方文档也给出了说明,uri的格式,“ipfs://CID”,CID为刚才json文件的cid,将地址和uri作为入参调用safeMint.并等待上链
上链成功后,将刚才mint地址作为入参调用balanceOf方法,可以看到已经有一张nft了
链上查看
文章使用的是eth测试网络发布的,所以在在opensea测试链上进行查看
使用刚才的mint地址登录opensea testnet,点击右上角的头像选择Profile,进去就可以看到刚才的nft了
至此就成功的发布了一张NFT,eth mainnet流程和测试网流程一样。