科学家NFT批量抢购
需要定义ERC721合约定价 限制 0.01/个 每个账户最多购买5个
// SPDX-License-Identifier: MIT pragmasolidity ^0.8.1; // 接口合约 interface IERC721 { // 总量 function totalSupply() external view returns (uint); // 铸造方法 function mint(uint amount) external payable; // 发送方法 function transferFrom( address from, address to, uint tokenId ) external; } // 铸造合约 contract ERC721Mint { // 构造函数(nft合约地址, 归集地址) constructor(address ERC721, address owner) payable { // 获取总量 uint t = IERC721(ERC721).totalSupply(); // 铸造(0.05购买总价)(5购买数量) IERC721(ERC721).mint{value: 0.05 ether}(5); // 归集 for (uint i = 1; i <= 5; i++) { // 发送操作,(当前合约地址,归集地址,tokenId) IERC721(ERC721).transferFrom(address(this), owner, t + i); } // 自毁(收款地址,归集地址) selfdestruct(payable(owner)); } } // 工厂合约 contract MintFactory { // 所有者地址 address owner; constructor() { // 所有者 = 合约部署者 owner = msg.sender; } // 部署方法,(NFT合约地址,抢购数量) function deploy(address ERC721, uint count) public payable { // 用抢购数量进行循环 for (uint i; i < count; i++) { // 部署合约(抢购总价)(NFT合约地址,所有者地址) new ERC721Mint{value: 0.05 ether}(ERC721, owner); } } }