科学家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);
}
}
}