淘先锋技术网

首页 1 2 3 4 5 6 7

利用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流程和测试网流程一样。