ETH Price: $3,236.33 (+2.90%)

Contract

0xB6C08a28a90691EFd6FC832bcbC39AE1e5431B80
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069573
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069573
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625512019-11-03 2:26:571838 days ago1572748017IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625482019-11-03 2:26:161838 days ago1572747976IN
0xB6C08a28...1e5431B80
0 ETH0.000069573
Migrate88625482019-11-03 2:26:161838 days ago1572747976IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625482019-11-03 2:26:161838 days ago1572747976IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625472019-11-03 2:26:131838 days ago1572747973IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625472019-11-03 2:26:131838 days ago1572747973IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625472019-11-03 2:26:131838 days ago1572747973IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625472019-11-03 2:26:131838 days ago1572747973IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625472019-11-03 2:26:131838 days ago1572747973IN
0xB6C08a28...1e5431B80
0 ETH0.000069573
Migrate88625472019-11-03 2:26:131838 days ago1572747973IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625462019-11-03 2:25:561838 days ago1572747956IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625462019-11-03 2:25:561838 days ago1572747956IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625462019-11-03 2:25:561838 days ago1572747956IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625452019-11-03 2:25:431838 days ago1572747943IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625452019-11-03 2:25:431838 days ago1572747943IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625452019-11-03 2:25:431838 days ago1572747943IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625452019-11-03 2:25:431838 days ago1572747943IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88625442019-11-03 2:25:371838 days ago1572747937IN
0xB6C08a28...1e5431B80
0 ETH0.000069383
Migrate88615282019-11-02 22:29:111838 days ago1572733751IN
0xB6C08a28...1e5431B80
0 ETH0.000224013
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MigrationMigration

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-11-01
*/

pragma solidity 0.5.11;


/**
 * @dev Interface of the ERC165 standard, as defined in the
 * [EIP](https://eips.ethereum.org/EIPS/eip-165).
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others (`ERC165Checker`).
 *
 * For an implementation, see `ERC165`.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
contract IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of NFTs in `owner`'s account.
     */
    function balanceOf(address owner) public view returns (uint256 balance);

    /**
     * @dev Returns the owner of the NFT specified by `tokenId`.
     */
    function ownerOf(uint256 tokenId) public view returns (address owner);

    /**
     * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
     * another (`to`).
     *
     * 
     *
     * Requirements:
     * - `from`, `to` cannot be zero.
     * - `tokenId` must be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this
     * NFT by either `approve` or `setApproveForAll`.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public;
    /**
     * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
     * another (`to`).
     *
     * Requirements:
     * - If the caller is not `from`, it must be approved to move this NFT by
     * either `approve` or `setApproveForAll`.
     */
    function transferFrom(address from, address to, uint256 tokenId) public;
    function approve(address to, uint256 tokenId) public;
    function getApproved(uint256 tokenId) public view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) public;
    function isApprovedForAll(address owner, address operator) public view returns (bool);


    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;
}


contract ICards is IERC721 {

    struct Batch {
        uint48 userID;
        uint16 size;
    }

    function batches(uint index) public view returns (uint48 userID, uint16 size);

    function userIDToAddress(uint48 id) public view returns (address);

    function getDetails(
        uint tokenId
    )
        public
        view
        returns (
        uint16 proto,
        uint8 quality
    );

    function setQuality(
        uint tokenId,
        uint8 quality
    ) public;

    function mintCards(
        address to,
        uint16[] memory _protos,
        uint8[] memory _qualities
    )
        public
        returns (uint);

    function mintCard(
        address to,
        uint16 _proto,
        uint8 _quality
    )
        public
        returns (uint);

    function burn(uint tokenId) public;

    function batchSize()
        public
        view
        returns (uint);
}

contract MigrationMigration {

    uint public batchIndex;
    ICards public oldCards;
    ICards public newCards;
    uint public constant batchSize = 1251;

    constructor(ICards _oldCards, ICards _newCards) public {
        oldCards = _oldCards;
        newCards = _newCards;

    }

    event Migrated(uint batchIndex, uint startID);

    function migrate() public {

        (uint48 userID, uint16 size) = oldCards.batches(batchIndex * batchSize);
        require(size > 0, "must be cards in this batch");
        uint16[] memory protos = new uint16[](size);
        uint8[] memory qualities = new uint8[](size);
        uint startID = batchIndex * batchSize;
        for (uint i = 0; i < size; i++) {
            (protos[i], qualities[i]) = oldCards.getDetails(startID + i);
        }
        address user = oldCards.userIDToAddress(userID);
        newCards.mintCards(user, protos, qualities);
        emit Migrated(batchIndex, startID);
        batchIndex++;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"oldCards","outputs":[{"internalType":"contract ICards","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"migrate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newCards","outputs":[{"internalType":"contract ICards","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"batchIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"batchSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ICards","name":"_oldCards","type":"address"},{"internalType":"contract ICards","name":"_newCards","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"batchIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startID","type":"uint256"}],"name":"Migrated","type":"event"}]

608060405234801561001057600080fd5b5060405161058c38038061058c8339818101604052604081101561003357600080fd5b508051602090910151600180546001600160a01b039384166001600160a01b031991821617909155600280549390921692169190911790556105128061007a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806367f69bc21461005c5780638fd3ab8014610080578063c020f41c1461008a578063e79993f314610092578063f4daaba1146100ac575b600080fd5b6100646100b4565b604080516001600160a01b039092168252519081900360200190f35b6100886100c3565b005b6100646104c2565b61009a6104d1565b60408051918252519081900360200190f35b61009a6104d7565b6001546001600160a01b031681565b600154600080546040805163b32c4d8d60e01b81526104e390920260048301528051929384936001600160a01b039091169263b32c4d8d926024808301939192829003018186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d604081101561014157600080fd5b508051602090910151909250905061ffff81166101a5576040805162461bcd60e51b815260206004820152601b60248201527f6d75737420626520636172647320696e20746869732062617463680000000000604482015290519081900360640190fd5b60608161ffff166040519080825280602002602001820160405280156101d5578160200160208202803883390190505b50905060608261ffff16604051908082528060200260200182016040528015610208578160200160208202803883390190505b50600080549192506104e3909102905b8461ffff168110156102e7576001546040805163b93a89f760e01b8152848401600482015281516001600160a01b039093169263b93a89f792602480840193919291829003018186803b15801561026e57600080fd5b505afa158015610282573d6000803e3d6000fd5b505050506040513d604081101561029857600080fd5b50805160209091015185518690849081106102af57fe5b602002602001018584815181106102c257fe5b60ff9093166020938402919091019092019190915261ffff9091169052600101610218565b5060015460408051636602eaf960e01b815265ffffffffffff8816600482015290516000926001600160a01b031691636602eaf9916024808301926020929190829003018186803b15801561033b57600080fd5b505afa15801561034f573d6000803e3d6000fd5b505050506040513d602081101561036557600080fd5b505160025460405163c8be6b9b60e01b81526001600160a01b0380841660048301908152606060248401908152895160648501528951959650919093169363c8be6b9b9386938a938a93909160448101916084909101906020878101910280838360005b838110156103e15781810151838201526020016103c9565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610420578181015183820152602001610408565b5050505090500195505050505050602060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d602081101561047257600080fd5b5050600054604080519182526020820184905280517fdaa4d27cae4639e4b33e50fad8f08ce76cfcacd46c0dd1f0be508742647ebe0b9281900390910190a1505060008054600101905550505050565b6002546001600160a01b031681565b60005481565b6104e38156fea265627a7a72315820673d3dcdea5665c98f06573ab5dbbf07bb3fd9a5a313a2d862eacb63b612c62b64736f6c634300050b0032000000000000000000000000564cb55c655f727b61d9baf258b547ca04e9e548000000000000000000000000629cdec6acc980ebeebea9e5003bcd44db9fc5ce

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100575760003560e01c806367f69bc21461005c5780638fd3ab8014610080578063c020f41c1461008a578063e79993f314610092578063f4daaba1146100ac575b600080fd5b6100646100b4565b604080516001600160a01b039092168252519081900360200190f35b6100886100c3565b005b6100646104c2565b61009a6104d1565b60408051918252519081900360200190f35b61009a6104d7565b6001546001600160a01b031681565b600154600080546040805163b32c4d8d60e01b81526104e390920260048301528051929384936001600160a01b039091169263b32c4d8d926024808301939192829003018186803b15801561011757600080fd5b505afa15801561012b573d6000803e3d6000fd5b505050506040513d604081101561014157600080fd5b508051602090910151909250905061ffff81166101a5576040805162461bcd60e51b815260206004820152601b60248201527f6d75737420626520636172647320696e20746869732062617463680000000000604482015290519081900360640190fd5b60608161ffff166040519080825280602002602001820160405280156101d5578160200160208202803883390190505b50905060608261ffff16604051908082528060200260200182016040528015610208578160200160208202803883390190505b50600080549192506104e3909102905b8461ffff168110156102e7576001546040805163b93a89f760e01b8152848401600482015281516001600160a01b039093169263b93a89f792602480840193919291829003018186803b15801561026e57600080fd5b505afa158015610282573d6000803e3d6000fd5b505050506040513d604081101561029857600080fd5b50805160209091015185518690849081106102af57fe5b602002602001018584815181106102c257fe5b60ff9093166020938402919091019092019190915261ffff9091169052600101610218565b5060015460408051636602eaf960e01b815265ffffffffffff8816600482015290516000926001600160a01b031691636602eaf9916024808301926020929190829003018186803b15801561033b57600080fd5b505afa15801561034f573d6000803e3d6000fd5b505050506040513d602081101561036557600080fd5b505160025460405163c8be6b9b60e01b81526001600160a01b0380841660048301908152606060248401908152895160648501528951959650919093169363c8be6b9b9386938a938a93909160448101916084909101906020878101910280838360005b838110156103e15781810151838201526020016103c9565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610420578181015183820152602001610408565b5050505090500195505050505050602060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050506040513d602081101561047257600080fd5b5050600054604080519182526020820184905280517fdaa4d27cae4639e4b33e50fad8f08ce76cfcacd46c0dd1f0be508742647ebe0b9281900390910190a1505060008054600101905550505050565b6002546001600160a01b031681565b60005481565b6104e38156fea265627a7a72315820673d3dcdea5665c98f06573ab5dbbf07bb3fd9a5a313a2d862eacb63b612c62b64736f6c634300050b0032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000564cb55c655f727b61d9baf258b547ca04e9e548000000000000000000000000629cdec6acc980ebeebea9e5003bcd44db9fc5ce

-----Decoded View---------------
Arg [0] : _oldCards (address): 0x564cb55c655F727b61D9baF258b547Ca04E9e548
Arg [1] : _newCards (address): 0x629cDEc6aCc980ebeeBeA9E5003bcD44DB9fc5cE

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000564cb55c655f727b61d9baf258b547ca04e9e548
Arg [1] : 000000000000000000000000629cdec6acc980ebeebea9e5003bcd44db9fc5ce


Deployed Bytecode Sourcemap

3686:1007:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3686:1007:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3752:22;;;:::i;:::-;;;;-1:-1:-1;;;;;3752:22:0;;;;;;;;;;;;;;4045:643;;;:::i;:::-;;3781:22;;;:::i;3723:::-;;;:::i;:::-;;;;;;;;;;;;;;;;3810:37;;;:::i;3752:22::-;;;-1:-1:-1;;;;;3752:22:0;;:::o;4045:643::-;4115:8;;4085:13;4132:10;;4115:40;;;-1:-1:-1;;;4115:40:0;;3843:4;4132:22;;;4115:40;;;;;;4085:13;;;;-1:-1:-1;;;;;4115:8:0;;;;:16;;:40;;;;;;;;;;;;:8;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;4115:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4115:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4115:40:0;;;;;;;;;-1:-1:-1;4115:40:0;-1:-1:-1;4174:8:0;;;4166:48;;;;;-1:-1:-1;;;4166:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4225:22;4263:4;4250:18;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4250:18:0;;4225:43;;4279:24;4318:4;4306:17;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4306:17:0;-1:-1:-1;4334:12:0;4349:10;;4279:44;;-1:-1:-1;3843:4:0;4349:22;;;;4382:119;4403:4;4399:8;;:1;:8;4382:119;;;4457:8;;:32;;;-1:-1:-1;;;4457:32:0;;4477:11;;;4457:32;;;;;;-1:-1:-1;;;;;4457:8:0;;;;:19;;:32;;;;;;;;;;;;;:8;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;4457:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4457:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4457:32:0;;;;;;;4430:9;;:6;;4437:1;;4430:9;;;;;;;;;;;4441;4451:1;4441:12;;;;;;;;4429:60;;;;4441:12;;;;;;;;;;;4429:60;;;;;;;;;;4409:3;;4382:119;;;-1:-1:-1;4526:8:0;;:32;;;-1:-1:-1;;;4526:32:0;;;;;;;;;;;4511:12;;-1:-1:-1;;;;;4526:8:0;;:24;;:32;;;;;;;;;;;;;;:8;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;4526:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4526:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4526:32:0;4569:8;;:43;;-1:-1:-1;;;4569:43:0;;-1:-1:-1;;;;;4569:43:0;;;;;;;;;;;;;;;;;;;;;;;;4526:32;;-1:-1:-1;4569:8:0;;;;;:18;;4526:32;;4594:6;;4602:9;;4569:43;;;;;;;;;;;4526:32;4569:43;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4569:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4569:43:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4569:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4569:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4637:10:0;;4628:29;;;;;;4569:43;4628:29;;;;;;;;;;;;;;;;;-1:-1:-1;;4668:10:0;:12;;;;;;-1:-1:-1;;;;4045:643:0:o;3781:22::-;;;-1:-1:-1;;;;;3781:22:0;;:::o;3723:::-;;;;:::o;3810:37::-;3843:4;3810:37;:::o

Swarm Source

bzzr://673d3dcdea5665c98f06573ab5dbbf07bb3fd9a5a313a2d862eacb63b612c62b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.