Solidity合约参数配置与baseURI设置技术咨询
Solidity ERC721合约代码审查解答
1. 构造函数参数说明与配置位置
参数含义
name(string): Test MB:NFT集合的全称,会在钱包、区块浏览器等平台展示symbol(string): TEST:NFT的短标识符号,类似代币缩写maxNftSupply(uint256): 10000:NFT的总发行上限,合约最多仅能铸造10000个saleStart(uint256): 1619060439:开售时间的Unix时间戳(对应2021年4月22日左右),合约会以此计算REVEAL_TIMESTAMP(开售时间 + 89100秒,约24.75小时)
配置位置
部署合约时,在Remix、Hardhat、Truffle或区块浏览器的部署工具中,按顺序填入这四个参数的值即可完成配置。
2. totalSupply识别问题与baseURI设置方法
totalSupply识别问题
当前合约继承的ERC721默认未实现totalSupply()函数,代码中多处调用该函数会导致编译或运行报错,解决方式二选一:
- 改为继承
ERC721Enumerable(该合约内置totalSupply()实现),修改合约头部为:contract TestMB is ERC721Enumerable, Ownable - 自行实现
totalSupply():在合约中添加变量与函数
uint256 public totalSupply_; function totalSupply() public view returns (uint256) { return totalSupply_; }
同时在每次_safeMint执行后添加totalSupply_++。
baseURI设置方法
合约已实现仅所有者可调用的setBaseURI(string memory baseURI)函数:
- 使用部署合约的owner地址连接钱包
- 调用该函数并传入元数据基础地址,例如:
- IPFS地址:
ipfs://QmYourHashHere/(NFT元数据最终URL为baseURI + tokenId + .json) - 服务器地址:
https://your-domain.com/nfts/
- IPFS地址:
3. Etherscan验证后的编码视图是否需要添加
不需要手动添加。Etherscan在合约验证通过后,会自动解析合约ABI,生成对应的**只读(Read)和写操作(Write)**界面,即你所说的“编码视图”。即使合约包含自定义复杂类型,Etherscan也会自动适配展示,无需额外配置。
内容的提问来源于stack exchange,提问作者Taylor B
相关产品推荐
相关产品推荐

