ETH Price: $1,984.51 (+0.22%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Migrate210388582024-10-24 23:50:35149 days ago1729813835IN
Aragon: ANT Migrator
0 ETH0.001159977.86272621
Migrate210073522024-10-20 14:21:11153 days ago1729434071IN
Aragon: ANT Migrator
0 ETH0.0027988419.23077301
Migrate194337852024-03-14 14:17:35373 days ago1710425855IN
Aragon: ANT Migrator
0 ETH0.0113715878.14017122
Migrate185255682023-11-08 6:52:23500 days ago1699426343IN
Aragon: ANT Migrator
0 ETH0.0041698131.97024216
Migrate153486202022-08-15 22:24:29950 days ago1660602269IN
Aragon: ANT Migrator
0 ETH0.000965244.12956757
Migrate153476052022-08-15 18:34:52950 days ago1660588492IN
Aragon: ANT Migrator
0 ETH0.0041133728.26748826
Migrate136164922021-11-14 21:54:541224 days ago1636926894IN
Aragon: ANT Migrator
0 ETH0.0242085135.71385467
Migrate136164872021-11-14 21:53:571224 days ago1636926837IN
Aragon: ANT Migrator
0 ETH0.02501273171.88996395
Migrate133885822021-10-10 3:44:421259 days ago1633837482IN
Aragon: ANT Migrator
0 ETH0.0080204555.11277844
Migrate126410752021-06-15 19:52:421376 days ago1623786762IN
Aragon: ANT Migrator
0 ETH0.0038455228
Migrate126297632021-06-14 1:50:231377 days ago1623635423IN
Aragon: ANT Migrator
0 ETH0.001488611
Migrate126012332021-06-09 15:58:231382 days ago1623254303IN
Aragon: ANT Migrator
0 ETH0.0073083654
Migrate124265322021-05-13 14:21:021409 days ago1620915662IN
Aragon: ANT Migrator
0 ETH0.01853928135
Migrate123897452021-05-07 22:03:151415 days ago1620424995IN
Aragon: ANT Migrator
0 ETH0.0099013265
Migrate123104862021-04-25 16:14:141427 days ago1619367254IN
Aragon: ANT Migrator
0 ETH0.0082557461
Migrate122895432021-04-22 10:48:321430 days ago1619088512IN
Aragon: ANT Migrator
0 ETH0.0135966699
Migrate122242442021-04-12 8:45:411440 days ago1618217141IN
Aragon: ANT Migrator
0 ETH0.0137514495
Migrate122144672021-04-10 20:54:181442 days ago1618088058IN
Aragon: ANT Migrator
0 ETH0.0115801680
Migrate122009922021-04-08 19:12:301444 days ago1617909150IN
Aragon: ANT Migrator
0 ETH0.01563192108
Migrate121440162021-03-31 0:47:031453 days ago1617151623IN
Aragon: ANT Migrator
0 ETH0.021711150
Migrate120542472021-03-17 5:23:141466 days ago1615958594IN
Aragon: ANT Migrator
0 ETH0.0209873145
Migrate119878922021-03-06 23:34:461477 days ago1615073686IN
Aragon: ANT Migrator
0 ETH0.0141845298
Migrate119623942021-03-03 1:33:341480 days ago1614735214IN
Aragon: ANT Migrator
0 ETH0.0151977105
Migrate119504472021-03-01 5:30:001482 days ago1614576600IN
Aragon: ANT Migrator
0 ETH0.011579280
Migrate119495082021-03-01 1:58:251482 days ago1614563905IN
Aragon: ANT Migrator
0 ETH0.0110002476
View all transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ANTv2Migrator

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-15
*/

// File: contracts/interfaces/ApproveAndCallReceiver.sol

pragma solidity ^0.5.17;


interface ApproveAndCallReceiver {
    /**
    * @dev This allows users to use their tokens to interact with contracts in one function call instead of two
    * @param _from Address of the account transferring the tokens
    * @param _amount The amount of tokens approved for in the transfer
    * @param _token Address of the token contract calling this function
    * @param _data Optional data that can be used to add signalling information in more complex staking applications
    */
    function receiveApproval(address _from, uint256 _amount, address _token, bytes calldata _data) external;
}

// File: contracts/interfaces/IERC20.sol

pragma solidity ^0.5.17;


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

// File: contracts/libraries/SafeMath.sol

pragma solidity ^0.5.17;


// A library for performing overflow-safe math, courtesy of DappHub: https://github.com/dapphub/ds-math/blob/d0ef6d6a5f/src/math.sol
// Modified to include only the essentials
library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "MATH:ADD_OVERFLOW");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "MATH:SUB_UNDERFLOW");
    }
}

// File: contracts/ANTv2.sol

pragma solidity 0.5.17;




// Lightweight token modelled after UNI-LP: https://github.com/Uniswap/uniswap-v2-core/blob/v1.0.1/contracts/UniswapV2ERC20.sol
// Adds:
//   - An exposed `mint()` with minting role
//   - An exposed `burn()`
//   - ERC-3009 (`transferWithAuthorization()`)
contract ANTv2 is IERC20 {
    using SafeMath for uint256;

    // bytes32 private constant EIP712DOMAIN_HASH = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")
    bytes32 private constant EIP712DOMAIN_HASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;
    // bytes32 private constant NAME_HASH = keccak256("Aragon Network Token")
    bytes32 private constant NAME_HASH = 0x711a8013284a3c0046af6c0d6ed33e8bbc2c7a11d615cf4fdc8b1ac753bda618;
    // bytes32 private constant VERSION_HASH = keccak256("1")
    bytes32 private constant VERSION_HASH = 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6;

    // bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    // bytes32 public constant TRANSFER_WITH_AUTHORIZATION_TYPEHASH =
    //     keccak256("TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)");
    bytes32 public constant TRANSFER_WITH_AUTHORIZATION_TYPEHASH = 0x7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267;

    string public constant name = "Aragon Network Token";
    string public constant symbol = "ANT";
    uint8 public constant decimals = 18;

    address public minter;
    uint256 public totalSupply;
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    // ERC-2612, ERC-3009 state
    mapping (address => uint256) public nonces;
    mapping (address => mapping (bytes32 => bool)) public authorizationState;

    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event AuthorizationUsed(address indexed authorizer, bytes32 indexed nonce);
    event ChangeMinter(address indexed minter);

    modifier onlyMinter {
        require(msg.sender == minter, "ANTV2:NOT_MINTER");
        _;
    }

    constructor(address initialMinter) public {
        _changeMinter(initialMinter);
    }

    function _validateSignedData(address signer, bytes32 encodeData, uint8 v, bytes32 r, bytes32 s) internal view {
        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                getDomainSeparator(),
                encodeData
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        // Explicitly disallow authorizations for address(0) as ecrecover returns address(0) on malformed messages
        require(recoveredAddress != address(0) && recoveredAddress == signer, "ANTV2:INVALID_SIGNATURE");
    }

    function _changeMinter(address newMinter) internal {
        minter = newMinter;
        emit ChangeMinter(newMinter);
    }

    function _mint(address to, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        // Balance is implicitly checked with SafeMath's underflow protection
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint256 value) private {
        require(to != address(this) && to != address(0), "ANTV2:RECEIVER_IS_TOKEN_OR_ZERO");

        // Balance is implicitly checked with SafeMath's underflow protection
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function getChainId() public pure returns (uint256 chainId) {
        assembly { chainId := chainid() }
    }

    function getDomainSeparator() public view returns (bytes32) {
        return keccak256(
            abi.encode(
                EIP712DOMAIN_HASH,
                NAME_HASH,
                VERSION_HASH,
                getChainId(),
                address(this)
            )
        );
    }

    function mint(address to, uint256 value) external onlyMinter returns (bool) {
        _mint(to, value);
        return true;
    }

    function changeMinter(address newMinter) external onlyMinter {
        _changeMinter(newMinter);
    }

    function burn(uint256 value) external returns (bool) {
        _burn(msg.sender, value);
        return true;
    }

    function approve(address spender, uint256 value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint256 value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        uint256 fromAllowance = allowance[from][msg.sender];
        if (fromAllowance != uint256(-1)) {
            // Allowance is implicitly checked with SafeMath's underflow protection
            allowance[from][msg.sender] = fromAllowance.sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, "ANTV2:AUTH_EXPIRED");

        bytes32 encodeData = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline));
        _validateSignedData(owner, encodeData, v, r, s);

        _approve(owner, spender, value);
    }

    function transferWithAuthorization(
        address from,
        address to,
        uint256 value,
        uint256 validAfter,
        uint256 validBefore,
        bytes32 nonce,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        external
    {
        require(block.timestamp > validAfter, "ANTV2:AUTH_NOT_YET_VALID");
        require(block.timestamp < validBefore, "ANTV2:AUTH_EXPIRED");
        require(!authorizationState[from][nonce],  "ANTV2:AUTH_ALREADY_USED");

        bytes32 encodeData = keccak256(abi.encode(TRANSFER_WITH_AUTHORIZATION_TYPEHASH, from, to, value, validAfter, validBefore, nonce));
        _validateSignedData(from, encodeData, v, r, s);

        authorizationState[from][nonce] = true;
        emit AuthorizationUsed(from, nonce);

        _transfer(from, to, value);
    }
}

// File: contracts/ANTv2Migrator.sol

pragma solidity 0.5.17;





contract ANTv2Migrator is ApproveAndCallReceiver {
    string private constant ERROR_NOT_INITATOR = "ANTV2_MIG:NOT_INITIATOR";
    string private constant ERROR_WRONG_TOKEN = "ANTV2_MIG:WRONG_TOKEN";
    string private constant ERROR_ZERO_AMOUNT = "ANTV2_MIG:ZERO_AMOUNT";
    string private constant ERROR_TRANSFER_FAILED = "ANTV2_MIG:TRANSFER_FAIL";

    address private constant BURNED_ADDR = 0x000000000000000000000000000000000000dEaD;

    address public owner;
    IERC20 public antv1;
    ANTv2 public antv2;

    constructor(address _owner, IERC20 _antv1, ANTv2 _antv2) public {
        owner = _owner;
        antv1 = _antv1;
        antv2 = _antv2;
    }

    function initiate() external {
        require(msg.sender == owner, ERROR_NOT_INITATOR);

        // Mint an equal supply of ANTv2 as ANTv1 to this migration contract
        uint256 antv1Supply = antv1.totalSupply();
        antv2.mint(address(this), antv1Supply);

        // Transfer ANTv2 minting role to owner
        antv2.changeMinter(owner);
    }

    function migrate(uint256 _amount) external {
        _migrate(msg.sender, _amount);
    }

    function migrateAll() external {
        uint256 amount = antv1.balanceOf(msg.sender);
        _migrate(msg.sender, amount);
    }

    function receiveApproval(address _from, uint256 _amount, address _token, bytes calldata /*_data*/) external {
        require(_token == msg.sender && _token == address(antv1), ERROR_WRONG_TOKEN);

        uint256 fromBalance = antv1.balanceOf(_from);
        uint256 migrationAmount = _amount > fromBalance ? fromBalance : _amount;

        _migrate(_from, migrationAmount);
    }

    function _migrate(address _from, uint256 _amount) private {
        require(_amount > 0, ERROR_ZERO_AMOUNT);

        // Burn ANTv1
        require(antv1.transferFrom(_from, BURNED_ADDR, _amount), ERROR_TRANSFER_FAILED);
        // Return ANTv2
        require(antv2.transfer(_from, _amount), ERROR_TRANSFER_FAILED);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract IERC20","name":"_antv1","type":"address"},{"internalType":"contract ANTv2","name":"_antv2","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"antv1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"antv2","outputs":[{"internalType":"contract ANTv2","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initiate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"migrate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"migrateAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"receiveApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610af3380380610af38339818101604052606081101561003357600080fd5b5080516020820151604090920151600080546001600160a01b039384166001600160a01b0319918216179091556001805494841694821694909417909355600280549290911691909216179055610a648061008f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100b15780638f4ffcb1146100e2578063bdad789e1461017e578063dd844948146101865761007d565b8063454b0608146100825780634a77f870146100a157806366aa56c5146100a9575b600080fd5b61009f6004803603602081101561009857600080fd5b503561018e565b005b61009f61019b565b61009f610244565b6100b9610507565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61009f600480360360808110156100f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359260408201359092169181019060808101606082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184600183028401116401000000008311171561017357600080fd5b509092509050610523565b6100b96106ca565b6100b96106e6565b6101983382610702565b50565b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561020c57600080fd5b505afa158015610220573d6000803e3d6000fd5b505050506040513d602081101561023657600080fd5b505190506101983382610702565b60005460408051808201909152601781527f414e5456325f4d49473a4e4f545f494e49544941544f5200000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610336576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102fb5781810151838201526020016102e3565b50505050905090810190601f1680156103285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600154604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916318160ddd916004808301926020929190829003018186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d60208110156103cc57600080fd5b5051600254604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916044808201926020929091908290030181600087803b15801561044b57600080fd5b505af115801561045f573d6000803e3d6000fd5b505050506040513d602081101561047557600080fd5b505060025460008054604080517f2c4d4d1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290519190931692632c4d4d1892602480830193919282900301818387803b1580156104ec57600080fd5b505af1158015610500573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff831633148015610562575060015473ffffffffffffffffffffffffffffffffffffffff8481169116145b6040518060400160405280601581526020017f414e5456325f4d49473a57524f4e475f544f4b454e0000000000000000000000815250906105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561067657600080fd5b505afa15801561068a573d6000803e3d6000fd5b505050506040513d60208110156106a057600080fd5b5051905060008186116106b357856106b5565b815b90506106c18782610702565b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60408051808201909152601581527f414e5456325f4d49473a5a45524f5f414d4f554e54000000000000000000000060208201528161079c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50600154604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261dead602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050506040513d602081101561084b57600080fd5b505160408051808201909152601781527f414e5456325f4d49473a5452414e534645525f4641494c0000000000000000006020820152906108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50600254604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b505160408051808201909152601781527f414e5456325f4d49473a5452414e534645525f4641494c000000000000000000602082015290610a2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50505056fea265627a7a72315820d24e3bad0af15884dea494ea6b25a0a6506f2ef9a045fad658da5ca48084d59864736f6c63430005110032000000000000000000000000beefbeef03c7e5a1c29e0aa675f8e16aee0a5fad000000000000000000000000960b236a07cf122663c4303350609a66a7b288c0000000000000000000000000a117000000f279d81a1d3cc75430faa017fa5a2e

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100b15780638f4ffcb1146100e2578063bdad789e1461017e578063dd844948146101865761007d565b8063454b0608146100825780634a77f870146100a157806366aa56c5146100a9575b600080fd5b61009f6004803603602081101561009857600080fd5b503561018e565b005b61009f61019b565b61009f610244565b6100b9610507565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61009f600480360360808110156100f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359260408201359092169181019060808101606082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184600183028401116401000000008311171561017357600080fd5b509092509050610523565b6100b96106ca565b6100b96106e6565b6101983382610702565b50565b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561020c57600080fd5b505afa158015610220573d6000803e3d6000fd5b505050506040513d602081101561023657600080fd5b505190506101983382610702565b60005460408051808201909152601781527f414e5456325f4d49473a4e4f545f494e49544941544f5200000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610336576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102fb5781810151838201526020016102e3565b50505050905090810190601f1680156103285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600154604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916318160ddd916004808301926020929190829003018186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d60208110156103cc57600080fd5b5051600254604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916044808201926020929091908290030181600087803b15801561044b57600080fd5b505af115801561045f573d6000803e3d6000fd5b505050506040513d602081101561047557600080fd5b505060025460008054604080517f2c4d4d1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290519190931692632c4d4d1892602480830193919282900301818387803b1580156104ec57600080fd5b505af1158015610500573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff831633148015610562575060015473ffffffffffffffffffffffffffffffffffffffff8481169116145b6040518060400160405280601581526020017f414e5456325f4d49473a57524f4e475f544f4b454e0000000000000000000000815250906105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561067657600080fd5b505afa15801561068a573d6000803e3d6000fd5b505050506040513d60208110156106a057600080fd5b5051905060008186116106b357856106b5565b815b90506106c18782610702565b50505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60408051808201909152601581527f414e5456325f4d49473a5a45524f5f414d4f554e54000000000000000000000060208201528161079c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50600154604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261dead602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050506040513d602081101561084b57600080fd5b505160408051808201909152601781527f414e5456325f4d49473a5452414e534645525f4641494c0000000000000000006020820152906108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50600254604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b505160408051808201909152601781527f414e5456325f4d49473a5452414e534645525f4641494c000000000000000000602082015290610a2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102fb5781810151838201526020016102e3565b50505056fea265627a7a72315820d24e3bad0af15884dea494ea6b25a0a6506f2ef9a045fad658da5ca48084d59864736f6c63430005110032

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

000000000000000000000000beefbeef03c7e5a1c29e0aa675f8e16aee0a5fad000000000000000000000000960b236a07cf122663c4303350609a66a7b288c0000000000000000000000000a117000000f279d81a1d3cc75430faa017fa5a2e

-----Decoded View---------------
Arg [0] : _owner (address): 0xbEEFbEeF03c7E5a1C29E0Aa675f8E16AEe0A5FAd
Arg [1] : _antv1 (address): 0x960b236A07cf122663c4303350609A66A7B288C0
Arg [2] : _antv2 (address): 0xa117000000f279D81A1D3cc75430fAA017FA5A2e

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000beefbeef03c7e5a1c29e0aa675f8e16aee0a5fad
Arg [1] : 000000000000000000000000960b236a07cf122663c4303350609a66a7b288c0
Arg [2] : 000000000000000000000000a117000000f279d81a1d3cc75430faa017fa5a2e


Deployed Bytecode Sourcemap

9232:2027:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9232:2027:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10292:91;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10292:91:0;;:::i;:::-;;10391:133;;;:::i;9920:364::-;;;:::i;9685:20::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10532:387;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10532:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10532:387:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10532:387:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;10532:387:0;;-1:-1:-1;10532:387:0;-1:-1:-1;10532:387:0;:::i;9712:19::-;;;:::i;9738:18::-;;;:::i;10292:91::-;10346:29;10355:10;10367:7;10346:8;:29::i;:::-;10292:91;:::o;10391:133::-;10450:5;;:27;;;;;;10466:10;10450:27;;;;;;10433:14;;10450:5;;;:15;;:27;;;;;;;;;;;;;;:5;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;10450:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10450:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10450:27:0;;-1:-1:-1;10488:28:0;10497:10;10450:27;10488:8;:28::i;9920:364::-;9982:5;;9989:18;;;;;;;;;;;;;;;;;;9982:5;;9968:10;:19;9960:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;9960:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10121:5:0;;:19;;;;;;;;10099;;10121:5;;;:17;;:19;;;;;;;;;;;;;;:5;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;10121:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10121:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10121:19:0;10151:5;;:38;;;;;;10170:4;10151:38;;;;;;;;;;;;10121:19;;-1:-1:-1;10151:5:0;;;;;:10;;:38;;;;;10121:19;;10151:38;;;;;;;;:5;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;10151:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10151:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;10251:5:0;;;10270;;10251:25;;;;;;:5;10270;;;10251:25;;;;;;:5;;;;;:18;;:25;;;;;:5;;:25;;;;;:5;;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;10251:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10251:25:0;;;;9920:364;:::o;9685:20::-;;;;;;:::o;10532:387::-;10659:20;;;10669:10;10659:20;:48;;;;-1:-1:-1;10701:5:0;;;10683:24;;;10701:5;;10683:24;10659:48;10709:17;;;;;;;;;;;;;;;;;10651:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10651:76:0;-1:-1:-1;10762:5:0;;:22;;;;;;:5;:22;;;;;;;;;10740:19;;10762:5;;;;;:15;;:22;;;;;;;;;;;;;;;:5;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;10762:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10762:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10762:22:0;;-1:-1:-1;10795:23:0;10821:21;;;:45;;10859:7;10821:45;;;10845:11;10821:45;10795:71;;10879:32;10888:5;10895:15;10879:8;:32::i;:::-;10532:387;;;;;;;:::o;9712:19::-;;;;;;:::o;9738:18::-;;;;;;:::o;10927:329::-;11017:17;;;;;;;;;;;;;;;;;11004:11;10996:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10996:39:0;-1:-1:-1;11079:5:0;;:47;;;;;;:5;:47;;;;;;;9634:42;11079:47;;;;;;;;;;;;:5;;;;;:18;;:47;;;;;;;;;;;;;;:5;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;11079:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11079:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11079:47:0;11128:21;;;;;;;;;;;;;11079:47;11128:21;;;;11071:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11071:79:0;-1:-1:-1;11194:5:0;;:30;;;;;;:5;:30;;;;;;;;;;;;;;;:5;;;;;:14;;:30;;;;;;;;;;;;;;:5;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11194:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11194:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11194:30:0;11226:21;;;;;;;;;;;;;11194:30;11226:21;;;;11186:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11186:62:0;;10927:329;;:::o

Swarm Source

bzzr://d24e3bad0af15884dea494ea6b25a0a6506f2ef9a045fad658da5ca48084d598

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

The migration contract facilitating the ANTv1 to ANTv2 upgrade.

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.