Advertisement
hivefans

科学家NFT批量抢购

Apr 10th, 2022
1,509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.1;
  3.  
  4.  
  5. // 接口合约
  6. interface IERC721 {
  7.  // 总量
  8.  function totalSupply() external view returns (uint);
  9.  
  10.  
  11.  // 铸造方法
  12.  function mint(uint amount) external payable;
  13.  
  14.  
  15.  // 发送方法
  16.  function transferFrom(
  17.     address from,
  18.     address to,
  19.     uint tokenId
  20.     ) external;
  21. }
  22.  
  23.  
  24. // 铸造合约
  25. contract ERC721Mint {
  26.     // 构造函数(nft合约地址, 归集地址)
  27.      constructor(address ERC721, address owner) payable {
  28.         // 获取总量
  29.         uint t = IERC721(ERC721).totalSupply();
  30.         // 铸造(0.05购买总价)(5购买数量)
  31.         IERC721(ERC721).mint{value: 0.05 ether}(5);
  32.         // 归集
  33.         for (uint i = 1; i <= 5; i++) {
  34.            // 发送操作,(当前合约地址,归集地址,tokenId)
  35.            IERC721(ERC721).transferFrom(address(this), owner, t + i);
  36.      }
  37.      // 自毁(收款地址,归集地址)
  38.      selfdestruct(payable(owner));
  39.      }
  40. }
  41.  
  42.  
  43. // 工厂合约
  44. contract MintFactory {
  45.      // 所有者地址
  46.      address owner;
  47.  
  48.  
  49.      constructor() {
  50.         // 所有者 = 合约部署者
  51.         owner = msg.sender;
  52.      }
  53.  
  54.  
  55.      // 部署方法,(NFT合约地址,抢购数量)
  56.      function deploy(address ERC721, uint count) public payable {
  57.         // 用抢购数量进行循环
  58.         for (uint i; i < count; i++) {
  59.            // 部署合约(抢购总价)(NFT合约地址,所有者地址)
  60.            new ERC721Mint{value: 0.05 ether}(ERC721, owner);
  61.         }
  62.      }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement