美文网首页
ETH ERC721 合约构建

ETH ERC721 合约构建

作者: 威少_horan | 来源:发表于2022-05-30 15:58 被阅读0次

ERC 721 标准

ERC 721 合约定义了非同质化代币,例如 NFT 藏品在合约里都是 Token 的概念,另外只要实现了 erc721Interface 接口的所有合约都是 ERC 721 合约

1、我们可以在 openzeppelin 平台来查找合约模板 https://docs.openzeppelin.com/contracts/4.x/erc721
如下

// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract HejunweiNFT is ERC721URIStorage {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;

    constructor() ERC721("hejunwei", "HJW") {}

    function awardItem(address player, string memory tokenURI)
        public
        returns (uint256)
    {
        uint256 newItemId = _tokenIds.current();
        _mint(player, newItemId);
        _setTokenURI(newItemId, tokenURI);

        _tokenIds.increment();
        return newItemId;
    }
}

替换 constructor() ERC721("hejunwei", "HJW") {} 中的参数,第一个参数代表代币名称,第二个参数是代币的符号

2、使用 https://remix.ethereum.org/ 进行合约的编译和部署

合约编译

然后选择内置的小狐狸进行区块链的部署,这里使用了 rinkeby 的 eth 测试网络


部署

3、部署后的合约可以调用函数进行铸币(NFT上链)
这里需要注意,我们的合约方法名是 awardItem ,第一个参数是将要拥有该token的地址,第二个参数是一个 json 文件的链接,下面解释一下这个 json 文件


调用mint

4、这里的 json 文件是 metadata,一般我们使用 opensea 进行 nft 的交易,需要遵守 opensea 的协议,https://docs.opensea.io/docs/contract-level-metadata
这里的图片一般都是我们传到 ipfs 上去,可以确保文件不会丢失,给一个上传地址:https://anarkrypto.github.io/upload-files-to-ipfs-from-browser-panel/public/,先上传图片之后再自己编写一个 json 文件,再将 json 文件也上传到 ipfs,获取到一个 ipfs 的网关地址来查看该文件,这个地址就是我们 awardItem 的第二个参数

5、执行 awardItem 之后,在 opensea 搜索部署的合约地址,就可以看到我们铸造的 NFT 了


opensea

相关文章

网友评论

      本文标题:ETH ERC721 合约构建

      本文链接:https://www.haomeiwen.com/subject/qivoprtx.html