账户
0x39...bfe5
0x39...BFE5

0x39...BFE5

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.8.19+commit.7dd6d404
语言
Solidity
合同源代码
文件 1 的 3:IERC721Burnable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

interface IERC721Burnable {
    function burn(uint256 tokenId) external;

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function setApprovalForAll(address operator, bool approved) external;

    function balanceOf(address owner) external view returns (uint256 balance);
}
合同源代码
文件 2 的 3:ITitanV2.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

interface ITitanV2 {
    function migrateMint(address _to, uint256 _tokenId) external;
}
合同源代码
文件 3 的 3:TitanMigration.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import "./IERC721Burnable.sol";
import "./ITitanV2.sol";

contract TitanMigration {
    IERC721Burnable public titanV1;
    ITitanV2 public titanV2;

    event Migrated(address indexed from, uint256 tokenId);

    constructor(address _titanV1, address _titanV2) {
        titanV1 = IERC721Burnable(_titanV1);
        titanV2 = ITitanV2(_titanV2);
    }

    function migrate(uint256[] calldata _tokenIds) external {
        uint256 i = 0;
        for (i = 0; i < _tokenIds.length; i++) {
            uint256 tokenId = _tokenIds[i];
            require(titanV1.ownerOf(tokenId) == msg.sender, "Not owner");
            titanV1.burn(tokenId);
            titanV2.migrateMint(msg.sender, tokenId);
            emit Migrated(msg.sender, tokenId);
        }
    }
}
设置
{
  "compilationTarget": {
    "contracts/TitanMigration.sol": "TitanMigration"
  },
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 7777
  },
  "remappings": []
}
ABI
[{"inputs":[{"internalType":"address","name":"_titanV1","type":"address"},{"internalType":"address","name":"_titanV2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Migrated","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"titanV1","outputs":[{"internalType":"contract IERC721Burnable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"titanV2","outputs":[{"internalType":"contract ITitanV2","name":"","type":"address"}],"stateMutability":"view","type":"function"}]