Solidity学习实践-一个遵循ERC721的通用NFT合约

该博客详细介绍了如何使用Solidity编写一个ERC721智能合约,实现了NFT的创建、设置contractURI、获取NFT信息以及查询用户拥有的NFT等功能。合约中包含了权限控制、接口继承等安全措施,并提供了接口供外部调用。

接口部分:

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
 
interface INFT {
    function setContractURI(string memory _contractURI) external returns(bool);
 
    function createToken(string memory _tokenURI) external returns(uint256 tokenId);
 
    function getInfo(uint256 _nftTokenId) external view returns (address, string memory, string memory, string memory);
 
    function getTokens(address _user) external returns(uint256[] memory);
}

主合约部分:

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
 
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import './interfaces/INFT.sol';
 
contract NFT is INFT, ERC721Enumerable, ERC721URIStorage {
 
    address public owner; // 记录合约发布者
    uint256 public lastTokenId = 100000; // 记录最后1个tokenId,初始tokenId为100000
    string public contractURI; // 如果上opensea会用到此参数
 
    // 发布
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值