AI机器人不但能写代码,还能解释为什么这么写。
问题
用solidity语言开发一个erc-1155标准的智能合约,可一次性输入address数组,批量铸造某个id的NFT
答案
好的,下面是一个简单的ERC-1155合约,可以实现批量铸造某个ID的NFT:
```
pragma solidity ^0.8.0;
import ""@openzeppelin/contracts/token/ERC1155/ERC1155.sol"";
contract MyNFT is ERC1155 {
constructor() ERC1155(""https://my-api/{id}.json"") {
}
function mintBatch(address[] memory addresses, uint256 id, uint256 amount) public {
for (uint256 i = 0; i < addresses.length; i++) {
_mint(addresses[i], id, amount, """");
}
}
}
```
在这个合约中,我们继承了OpenZeppelin的ERC1155合约,使用了它提供的标准实现,并在构造函数中指定了NFT的元数据URI。`mintBatch`函数接受一个地址数组、一个ID和一个数量,循环遍历地址数组,为每个地址铸造指定数量的NFT。
需要注意的是,在铸造NFT时,我们使用了OpenZeppelin提供的内部函数`_mint`,它是一个安全的铸造函数,会自动更新地址的余额和总供应量。
希望这个合约对你有所帮助!