ETH Price: $1,960.48 (-1.64%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Accept Ownership206302932024-08-28 23:13:11552 days ago1724886791IN
Mirror: Write Distributor V1
0 ETH0.00003721.31400263
Transfer Ownersh...206009952024-08-24 20:59:23556 days ago1724533163IN
Mirror: Write Distributor V1
0 ETH0.000046461.00725037
Claim163997302023-01-13 18:41:591145 days ago1673635319IN
Mirror: Write Distributor V1
0 ETH0.0012352828.33609793
Set Merkle Root163997302023-01-13 18:41:591145 days ago1673635319IN
Mirror: Write Distributor V1
0 ETH0.0008614428.33609793
Distribute To163920822023-01-12 17:02:351146 days ago1673542955IN
Mirror: Write Distributor V1
0 ETH0.001222620.63497097
Distribute To163491372023-01-06 17:08:591152 days ago1673024939IN
Mirror: Write Distributor V1
0 ETH0.0052202934.19266471
Distribute To161842842022-12-14 16:59:351175 days ago1671037175IN
Mirror: Write Distributor V1
0 ETH0.0030138915.26765373
Distribute To161712742022-12-12 21:21:351177 days ago1670880095IN
Mirror: Write Distributor V1
0 ETH0.0044174217.48320474
Distribute To160925912022-12-01 21:18:231188 days ago1669929503IN
Mirror: Write Distributor V1
0 ETH0.0017645712.41524672
Distribute To160690282022-11-28 14:17:231191 days ago1669645043IN
Mirror: Write Distributor V1
0 ETH0.0020090613.16028446
Distribute To158348512022-10-26 21:11:231224 days ago1666818683IN
Mirror: Write Distributor V1
0 ETH0.0033911327.11994477
Distribute To157687672022-10-17 15:38:351233 days ago1666021115IN
Mirror: Write Distributor V1
0 ETH0.0022487637.95446238
Distribute To156908102022-10-06 18:20:351244 days ago1665080435IN
Mirror: Write Distributor V1
0 ETH0.0008787614.83475638
Distribute To156343242022-09-28 20:48:231252 days ago1664398103IN
Mirror: Write Distributor V1
0 ETH0.0076525514.18522074
Distribute To154551892022-09-01 21:22:371279 days ago1662067357IN
Mirror: Write Distributor V1
0 ETH0.0298155582.09873523
Claim154458322022-08-31 9:30:061280 days ago1661938206IN
Mirror: Write Distributor V1
0 ETH0.0007719210.1
Claim154083782022-08-25 9:39:521286 days ago1661420392IN
Mirror: Write Distributor V1
0 ETH0.000452185.91859831
Distribute To153730472022-08-19 19:05:371292 days ago1660935937IN
Mirror: Write Distributor V1
0 ETH0.0021997637.12745542
Distribute To153730232022-08-19 18:59:031292 days ago1660935543IN
Mirror: Write Distributor V1
0 ETH0.0149625424.45512384
Distribute To153613482022-08-17 22:37:081294 days ago1660775828IN
Mirror: Write Distributor V1
0 ETH0.0007442112.56083723
Distribute To153543002022-08-16 19:46:301295 days ago1660679190IN
Mirror: Write Distributor V1
0 ETH0.0006377315.1304464
Distribute To153438992022-08-15 4:19:301297 days ago1660537170IN
Mirror: Write Distributor V1
0 ETH0.0011461819.34514343
Distribute To153039972022-08-08 21:26:231303 days ago1659993983IN
Mirror: Write Distributor V1
0 ETH0.0119479526.78475412
Claim152679332022-08-03 6:38:201308 days ago1659508700IN
Mirror: Write Distributor V1
0 ETH0.00043165.6475104
Distribute To152269172022-07-27 21:14:531315 days ago1658956493IN
Mirror: Write Distributor V1
0 ETH0.0057580240.51241737
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WriteDistributionHelperV1

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2021-03-05
*/

// Sources flattened with hardhat v2.0.7 https://hardhat.org

// File @openzeppelin/contracts/cryptography/MerkleProof.sol@v3.3.0

//SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.6.8;
pragma experimental ABIEncoderV2;

/**
 * @dev These functions deal with verification of Merkle trees (hash trees),
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        bytes32 computedHash = leaf;

        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];

            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(
                    abi.encodePacked(computedHash, proofElement)
                );
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(
                    abi.encodePacked(proofElement, computedHash)
                );
            }
        }

        // Check if the computed hash (root) is equal to the provided root
        return computedHash == root;
    }
}

// File contracts/interfaces/IMirrorWriteToken.sol

interface IMirrorWriteToken {
    function register(string calldata label, address owner) external;

    function registrationCost() external view returns (uint256);

    // ============ ERC20 Interface ============

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function nonces(address owner) external view returns (uint256);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

// File contracts/lib/SafeMath.sol

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }

    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }
}

// File contracts/helpers/WriteDistributionHelperV1.sol

/**
 * @title WriteDistributionHelperV1
 * @author MirrorXYZ
 *
 * A helper contract for distributing $WRITE token.
 */
contract WriteDistributionHelperV1 {
    // ============ Constants ============

    uint64 constant units = 1e18;

    // ============ Immutable Storage ============

    address public immutable token;

    // ============ Mutable Storage ============

    address private _owner;
    /**
     * @dev Allows for two-step ownership transfer, whereby the next owner
     * needs to accept the ownership transfer explicitly.
     */
    address private _nextOwner;
    bytes32 public merkleRoot;
    mapping(uint256 => uint256) private claimedBitMap;

    // ============ Events ============

    event Distributed(address account);
    event RootUpdated(bytes32 oldRoot, bytes32 newRoot);
    event Claimed(uint256 index, address account, uint256 amount);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    // ============ Modifiers ============

    modifier onlyOwner() {
        require(isOwner(), "WriteDistributionV1: caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(
            isNextOwner(),
            "WriteDistributionV1: current owner must set caller as next owner."
        );
        _;
    }

    // ============ Constructor ============

    constructor(address token_) public {
        token = token_;

        _owner = tx.origin;
        emit OwnershipTransferred(address(0), _owner);
    }

    // ============ Ownership ============

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Returns true if the caller is the next owner.
     */
    function isNextOwner() public view returns (bool) {
        return msg.sender == _nextOwner;
    }

    /**
     * @dev Allows a new account (`newOwner`) to accept ownership.
     * Can only be called by the current owner.
     */
    function transferOwnership(address nextOwner_) external onlyOwner {
        require(
            nextOwner_ != address(0),
            "WriteDistributionV1: next owner is the zero address."
        );

        _nextOwner = nextOwner_;
    }

    /**
     * @dev Cancel a transfer of ownership to a new account.
     * Can only be called by the current owner.
     */
    function cancelOwnershipTransfer() external onlyOwner {
        delete _nextOwner;
    }

    /**
     * @dev Transfers ownership of the contract to the caller.
     * Can only be called by a new potential owner set by the current owner.
     */
    function acceptOwnership() external onlyNextOwner {
        delete _nextOwner;

        emit OwnershipTransferred(_owner, msg.sender);

        _owner = msg.sender;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    // ============ Distribution ============

    function distributeTo(address[] memory addresses)
        public
        onlyOwner
        returns (bool ok)
    {
        IMirrorWriteToken tokenContract = IMirrorWriteToken(token);

        for (uint256 i = 0; i < addresses.length; i++) {
            tokenContract.transfer(addresses[i], units);
            emit Distributed(addresses[i]);
        }

        return true;
    }

    // ============ Merkle-Tree Token Claim ============

    function setMerkleRoot(bytes32 merkleRoot_) external onlyOwner {
        emit RootUpdated(merkleRoot, merkleRoot_);
        merkleRoot = merkleRoot_;
    }

    function isClaimed(uint256 index) public view returns (bool) {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        uint256 claimedWord = claimedBitMap[claimedWordIndex];
        uint256 mask = (1 << claimedBitIndex);
        return claimedWord & mask == mask;
    }

    function _setClaimed(uint256 index) private {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        claimedBitMap[claimedWordIndex] =
            claimedBitMap[claimedWordIndex] |
            (1 << claimedBitIndex);
    }

    function claim(
        uint256 index,
        address account,
        uint256 amount,
        bytes32[] calldata merkleProof
    ) external {
        require(!isClaimed(index), "WriteDistributionV1: already claimed.");

        // Verify the merkle proof.
        bytes32 node = keccak256(abi.encodePacked(index, account, amount));
        require(
            MerkleProof.verify(merkleProof, merkleRoot, node),
            "WriteDistributionV1: Invalid proof."
        );

        // Mark it claimed and send the token.
        _setClaimed(index);
        require(
            IMirrorWriteToken(token).transfer(account, amount),
            "WriteDistributionV1: Transfer failed."
        );

        emit Claimed(index, account, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Distributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"oldRoot","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"newRoot","type":"bytes32"}],"name":"RootUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"distributeTo","outputs":[{"internalType":"bool","name":"ok","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561001057600080fd5b50604051610e62380380610e6283398101604081905261002f91610090565b6001600160601b0319606082901b16608052600080546001600160a01b03191632178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100be565b6000602082840312156100a1578081fd5b81516001600160a01b03811681146100b7578182fd5b9392505050565b60805160601c610d7d6100e5600039806102d9528061059f528061074e5250610d7d6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638f32d59b11610081578063ed459df21161005b578063ed459df214610172578063f2fde38b1461017a578063fc0c546a1461018d576100d4565b80638f32d59b146101375780639e34070f1461014c578063b7085d3d1461015f576100d4565b8063715018a6116100b2578063715018a61461011457806379ba50971461011c5780637cb6475914610124576100d4565b806323452b9c146100d95780632e7ba6ef146100e35780632eb4a7ab146100f6575b600080fd5b6100e16101a2565b005b6100e16100f136600461094b565b6101ee565b6100fe6103c1565b60405161010b9190610a84565b60405180910390f35b6100e16103c7565b6100e1610442565b6100e1610132366004610933565b6104dc565b61013f610540565b60405161010b9190610a79565b61013f61015a366004610933565b610551565b61013f61016d366004610873565b610577565b61013f6106c2565b6100e1610188366004610851565b6106d3565b61019561074c565b60405161010b9190610a29565b6101aa610540565b6101cf5760405162461bcd60e51b81526004016101c690610c01565b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6101f785610551565b156102145760405162461bcd60e51b81526004016101c690610a8d565b600085858560405160200161022b939291906109ee565b604051602081830303815290604052805190602001209050610284838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610770565b6102a05760405162461bcd60e51b81526004016101c690610ba4565b6102a98661080d565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906103109088908890600401610a3d565b602060405180830381600087803b15801561032a57600080fd5b505af115801561033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103629190610913565b61037e5760405162461bcd60e51b81526004016101c690610aea565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0268686866040516103b193929190610ce1565b60405180910390a1505050505050565b60025481565b6103cf610540565b6103eb5760405162461bcd60e51b81526004016101c690610c01565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61044a6106c2565b6104665760405162461bcd60e51b81526004016101c690610c5e565b6001805473ffffffffffffffffffffffffffffffffffffffff191690556000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b6104e4610540565b6105005760405162461bcd60e51b81526004016101c690610c01565b7f26df13263ccd588bd14d17b939ae977c1d51960da437d7eb886d1cfb6f3d0682600254826040516105339291906109e0565b60405180910390a1600255565b6000546001600160a01b0316331490565b6101008104600090815260036020526040902054600160ff9092169190911b9081161490565b6000610581610540565b61059d5760405162461bcd60e51b81526004016101c690610c01565b7f000000000000000000000000000000000000000000000000000000000000000060005b83518110156106b857816001600160a01b031663a9059cbb8583815181106105e557fe5b6020026020010151670de0b6b3a76400006040518363ffffffff1660e01b8152600401610613929190610a56565b602060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190610913565b507f6c6019f7bc0a12e4798364f4b5376d198b647a80b63f8fe6054438d70a1a8f4384828151811061069357fe5b60200260200101516040516106a89190610a29565b60405180910390a16001016105c1565b5060019392505050565b6001546001600160a01b0316331490565b6106db610540565b6106f75760405162461bcd60e51b81526004016101c690610c01565b6001600160a01b03811661071d5760405162461bcd60e51b81526004016101c690610b47565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081815b855181101561080257600086828151811061078c57fe5b602002602001015190508083116107cd5782816040516020016107b09291906109e0565b6040516020818303038152906040528051906020012092506107f9565b80836040516020016107e09291906109e0565b6040516020818303038152906040528051906020012092505b50600101610775565b509092149392505050565b610100810460009081526003602052604090208054600160ff9093169290921b9091179055565b80356001600160a01b038116811461084b57600080fd5b92915050565b600060208284031215610862578081fd5b61086c8383610834565b9392505050565b60006020808385031215610885578182fd5b823567ffffffffffffffff81111561089b578283fd5b80840185601f8201126108ac578384fd5b803591506108c16108bc83610d27565b610d00565b82815283810190828501858502840186018910156108dd578687fd5b8693505b84841015610907576108f38982610834565b8352600193909301929185019185016108e1565b50979650505050505050565b600060208284031215610924578081fd5b8151801515811461086c578182fd5b600060208284031215610944578081fd5b5035919050565b600080600080600060808688031215610962578081fd5b853594506109738760208801610834565b935060408601359250606086013567ffffffffffffffff80821115610996578283fd5b81880189601f8201126109a7578384fd5b80359250818311156109b7578384fd5b89602080850283010111156109ca578384fd5b6020810194505050809150509295509295909350565b918252602082015260400190565b92835260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152603482015260540190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825267ffffffffffffffff16602082015260400190565b901515815260200190565b90815260200190565b60208082526025908201527f5772697465446973747269627574696f6e56313a20616c726561647920636c6160408201527f696d65642e000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f5772697465446973747269627574696f6e56313a205472616e7366657220666160408201527f696c65642e000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526034908201527f5772697465446973747269627574696f6e56313a206e657874206f776e65722060408201527f697320746865207a65726f20616464726573732e000000000000000000000000606082015260800190565b60208082526023908201527f5772697465446973747269627574696f6e56313a20496e76616c69642070726f60408201527f6f662e0000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f5772697465446973747269627574696f6e56313a2063616c6c6572206973206e60408201527f6f7420746865206f776e65722e00000000000000000000000000000000000000606082015260800190565b60208082526041908201527f5772697465446973747269627574696f6e56313a2063757272656e74206f776e60408201527f6572206d757374207365742063616c6c6572206173206e657874206f776e657260608201527f2e00000000000000000000000000000000000000000000000000000000000000608082015260a00190565b9283526001600160a01b03919091166020830152604082015260600190565b60405181810167ffffffffffffffff81118282101715610d1f57600080fd5b604052919050565b600067ffffffffffffffff821115610d3d578081fd5b506020908102019056fea264697066735822122007770f9054057e77436e06ffcdf7500773242735c1596c238e8f51939aafe34964736f6c63430006080033000000000000000000000000622236bb180256b6ae1a935dae08dc0356141632

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638f32d59b11610081578063ed459df21161005b578063ed459df214610172578063f2fde38b1461017a578063fc0c546a1461018d576100d4565b80638f32d59b146101375780639e34070f1461014c578063b7085d3d1461015f576100d4565b8063715018a6116100b2578063715018a61461011457806379ba50971461011c5780637cb6475914610124576100d4565b806323452b9c146100d95780632e7ba6ef146100e35780632eb4a7ab146100f6575b600080fd5b6100e16101a2565b005b6100e16100f136600461094b565b6101ee565b6100fe6103c1565b60405161010b9190610a84565b60405180910390f35b6100e16103c7565b6100e1610442565b6100e1610132366004610933565b6104dc565b61013f610540565b60405161010b9190610a79565b61013f61015a366004610933565b610551565b61013f61016d366004610873565b610577565b61013f6106c2565b6100e1610188366004610851565b6106d3565b61019561074c565b60405161010b9190610a29565b6101aa610540565b6101cf5760405162461bcd60e51b81526004016101c690610c01565b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6101f785610551565b156102145760405162461bcd60e51b81526004016101c690610a8d565b600085858560405160200161022b939291906109ee565b604051602081830303815290604052805190602001209050610284838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506002549150849050610770565b6102a05760405162461bcd60e51b81526004016101c690610ba4565b6102a98661080d565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000622236bb180256b6ae1a935dae08dc0356141632169063a9059cbb906103109088908890600401610a3d565b602060405180830381600087803b15801561032a57600080fd5b505af115801561033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103629190610913565b61037e5760405162461bcd60e51b81526004016101c690610aea565b7f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0268686866040516103b193929190610ce1565b60405180910390a1505050505050565b60025481565b6103cf610540565b6103eb5760405162461bcd60e51b81526004016101c690610c01565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61044a6106c2565b6104665760405162461bcd60e51b81526004016101c690610c5e565b6001805473ffffffffffffffffffffffffffffffffffffffff191690556000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b6104e4610540565b6105005760405162461bcd60e51b81526004016101c690610c01565b7f26df13263ccd588bd14d17b939ae977c1d51960da437d7eb886d1cfb6f3d0682600254826040516105339291906109e0565b60405180910390a1600255565b6000546001600160a01b0316331490565b6101008104600090815260036020526040902054600160ff9092169190911b9081161490565b6000610581610540565b61059d5760405162461bcd60e51b81526004016101c690610c01565b7f000000000000000000000000622236bb180256b6ae1a935dae08dc035614163260005b83518110156106b857816001600160a01b031663a9059cbb8583815181106105e557fe5b6020026020010151670de0b6b3a76400006040518363ffffffff1660e01b8152600401610613929190610a56565b602060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190610913565b507f6c6019f7bc0a12e4798364f4b5376d198b647a80b63f8fe6054438d70a1a8f4384828151811061069357fe5b60200260200101516040516106a89190610a29565b60405180910390a16001016105c1565b5060019392505050565b6001546001600160a01b0316331490565b6106db610540565b6106f75760405162461bcd60e51b81526004016101c690610c01565b6001600160a01b03811661071d5760405162461bcd60e51b81526004016101c690610b47565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7f000000000000000000000000622236bb180256b6ae1a935dae08dc035614163281565b600081815b855181101561080257600086828151811061078c57fe5b602002602001015190508083116107cd5782816040516020016107b09291906109e0565b6040516020818303038152906040528051906020012092506107f9565b80836040516020016107e09291906109e0565b6040516020818303038152906040528051906020012092505b50600101610775565b509092149392505050565b610100810460009081526003602052604090208054600160ff9093169290921b9091179055565b80356001600160a01b038116811461084b57600080fd5b92915050565b600060208284031215610862578081fd5b61086c8383610834565b9392505050565b60006020808385031215610885578182fd5b823567ffffffffffffffff81111561089b578283fd5b80840185601f8201126108ac578384fd5b803591506108c16108bc83610d27565b610d00565b82815283810190828501858502840186018910156108dd578687fd5b8693505b84841015610907576108f38982610834565b8352600193909301929185019185016108e1565b50979650505050505050565b600060208284031215610924578081fd5b8151801515811461086c578182fd5b600060208284031215610944578081fd5b5035919050565b600080600080600060808688031215610962578081fd5b853594506109738760208801610834565b935060408601359250606086013567ffffffffffffffff80821115610996578283fd5b81880189601f8201126109a7578384fd5b80359250818311156109b7578384fd5b89602080850283010111156109ca578384fd5b6020810194505050809150509295509295909350565b918252602082015260400190565b92835260609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020830152603482015260540190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825267ffffffffffffffff16602082015260400190565b901515815260200190565b90815260200190565b60208082526025908201527f5772697465446973747269627574696f6e56313a20616c726561647920636c6160408201527f696d65642e000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f5772697465446973747269627574696f6e56313a205472616e7366657220666160408201527f696c65642e000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526034908201527f5772697465446973747269627574696f6e56313a206e657874206f776e65722060408201527f697320746865207a65726f20616464726573732e000000000000000000000000606082015260800190565b60208082526023908201527f5772697465446973747269627574696f6e56313a20496e76616c69642070726f60408201527f6f662e0000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f5772697465446973747269627574696f6e56313a2063616c6c6572206973206e60408201527f6f7420746865206f776e65722e00000000000000000000000000000000000000606082015260800190565b60208082526041908201527f5772697465446973747269627574696f6e56313a2063757272656e74206f776e60408201527f6572206d757374207365742063616c6c6572206173206e657874206f776e657260608201527f2e00000000000000000000000000000000000000000000000000000000000000608082015260a00190565b9283526001600160a01b03919091166020830152604082015260600190565b60405181810167ffffffffffffffff81118282101715610d1f57600080fd5b604052919050565b600067ffffffffffffffff821115610d3d578081fd5b506020908102019056fea264697066735822122007770f9054057e77436e06ffcdf7500773242735c1596c238e8f51939aafe34964736f6c63430006080033

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

000000000000000000000000622236bb180256b6ae1a935dae08dc0356141632

-----Decoded View---------------
Arg [0] : token_ (address): 0x622236BB180256B6Ae1a935DaE08dC0356141632

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000622236bb180256b6ae1a935dae08dc0356141632


Deployed Bytecode Sourcemap

3954:5483:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3954:5483:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;6440:90:0;;;:::i;:::-;;8664:770;;;;;;;;;:::i;4439:25::-;;;:::i;:::-;;;;;;;;;;;;;;;;7225:142;;;:::i;6698:176::-;;;:::i;7884:158::-;;;;;;;;;:::i;5636:92::-;;;:::i;:::-;;;;;;;;8050:322;;;;;;;;;:::i;7424:392::-;;;;;;;;;:::i;5813:100::-;;;:::i;6056:247::-;;;;;;;;;:::i;4133:30::-;;;:::i;:::-;;;;;;;;6440:90;5020:9;:7;:9::i;:::-;5012:67;;;;-1:-1:-1;;;5012:67:0;;;;;;;;;;;;;;;;;6512:10:::1;6505:17:::0;;-1:-1:-1;;6505:17:0::1;::::0;;6440:90::o;8664:770::-;8831:16;8841:5;8831:9;:16::i;:::-;8830:17;8822:67;;;;-1:-1:-1;;;8822:67:0;;;;;;;;;8939:12;8981:5;8988:7;8997:6;8964:40;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8964:40:0;;;8954:51;;;;;;8939:66;;9038:49;9057:11;;9038:49;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;9070:10:0;;;-1:-1:-1;9082:4:0;;-1:-1:-1;9038:18:0;:49::i;:::-;9016:134;;;;-1:-1:-1;;;9016:134:0;;;;;;;;;9211:18;9223:5;9211:11;:18::i;:::-;9262:50;;;;;-1:-1:-1;;;;;9280:5:0;9262:33;;;;:50;;9296:7;;9305:6;;9262:50;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9262:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9262:50:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9262:50:0;;;;;;;;;9240:137;;;;-1:-1:-1;;;9240:137:0;;;;;;;;;9395:31;9403:5;9410:7;9419:6;9395:31;;;;;;;;;;;;;;;;;8664:770;;;;;;:::o;4439:25::-;;;;:::o;7225:142::-;5020:9;:7;:9::i;:::-;5012:67;;;;-1:-1:-1;;;5012:67:0;;;;;;;;;7326:1:::1;7310:6:::0;;7289:40:::1;::::0;-1:-1:-1;;;;;7310:6:0;;::::1;::::0;7289:40:::1;::::0;7326:1;;7289:40:::1;7357:1;7340:19:::0;;-1:-1:-1;;7340:19:0::1;::::0;;7225:142::o;6698:176::-;5165:13;:11;:13::i;:::-;5143:128;;;;-1:-1:-1;;;5143:128:0;;;;;;;;;6766:10:::1;6759:17:::0;;-1:-1:-1;;6759:17:0::1;::::0;;-1:-1:-1;6815:6:0;;6794:40:::1;::::0;6823:10:::1;::::0;-1:-1:-1;;;;;6815:6:0;;::::1;::::0;6794:40:::1;::::0;::::1;6847:6;:19:::0;;-1:-1:-1;;6847:19:0::1;6856:10;6847:19;::::0;;6698:176::o;7884:158::-;5020:9;:7;:9::i;:::-;5012:67;;;;-1:-1:-1;;;5012:67:0;;;;;;;;;7963:36:::1;7975:10;;7987:11;7963:36;;;;;;;;;;;;;;;;8010:10;:24:::0;7884:158::o;5636:92::-;5676:4;5714:6;-1:-1:-1;;;;;5714:6:0;5700:10;:20;;5636:92::o;8050:322::-;8157:3;8149:11;;8105:4;8241:31;;;:13;:31;;;;;;8299:1;8197:11;;;;8299:20;;;;8338:18;;;:26;;8050:322::o;7424:392::-;7527:7;5020:9;:7;:9::i;:::-;5012:67;;;;-1:-1:-1;;;5012:67:0;;;;;;;;;7604:5:::1;7552:31;7623:162;7647:9;:16;7643:1;:20;7623:162;;;7685:13;-1:-1:-1::0;;;;;7685:22:0::1;;7708:9;7718:1;7708:12;;;;;;;;;;;;;;4066:4;7685:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;7685:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7685:43:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7685:43:0;;;;;;;;;;7748:25;7760:9;7770:1;7760:12;;;;;;;;;;;;;;7748:25;;;;;;;;;;;;;;;7665:3;;7623:162;;;-1:-1:-1::0;7804:4:0::1;::::0;7424:392;-1:-1:-1;;;7424:392:0:o;5813:100::-;5895:10;;-1:-1:-1;;;;;5895:10:0;5881;:24;;5813:100::o;6056:247::-;5020:9;:7;:9::i;:::-;5012:67;;;;-1:-1:-1;;;5012:67:0;;;;;;;;;-1:-1:-1;;;;;6155:24:0;::::1;6133:126;;;;-1:-1:-1::0;;;6133:126:0::1;;;;;;;;;6272:10;:23:::0;;-1:-1:-1;;6272:23:0::1;-1:-1:-1::0;;;;;6272:23:0;;;::::1;::::0;;;::::1;::::0;;6056:247::o;4133:30::-;;;:::o;690:910::-;815:4;855;815;872:605;896:5;:12;892:1;:16;872:605;;;930:20;953:5;959:1;953:8;;;;;;;;;;;;;;930:31;;998:12;982;:28;978:488;;1174:12;1188;1157:44;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1157:44:0;;;1125:95;;;;;;1110:110;;978:488;;;1404:12;1418;1387:44;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1387:44:0;;;1355:95;;;;;;1340:110;;978:488;-1:-1:-1;910:3:0;;872:605;;;-1:-1:-1;1572:20:0;;;;690:910;-1:-1:-1;;;690:910:0:o;8380:276::-;8470:3;8462:11;;8435:24;8579:31;;;:13;:31;;;;;;;8627:1;8510:11;;;;8627:20;;;;8579:69;;;8532:116;;8380:276::o;5:130:-1:-;72:20;;-1:-1;;;;;13993:54;;14875:35;;14865:2;;14924:1;;14914:12;14865:2;57:78;;;;;1662:241;;1766:2;1754:9;1745:7;1741:23;1737:32;1734:2;;;-1:-1;;1772:12;1734:2;1834:53;1879:7;1855:22;1834:53;;;1824:63;1728:175;-1:-1;;;1728:175;1910:377;;2039:2;;2027:9;2018:7;2014:23;2010:32;2007:2;;;-1:-1;;2045:12;2007:2;2103:17;2090:31;2141:18;2133:6;2130:30;2127:2;;;-1:-1;;2163:12;2127:2;2254:6;2243:9;2239:22;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;305:34;;354:80;369:64;426:6;369:64;;;354:80;;;462:21;;;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;-1:-1;;635:12;593:2;-1:-1;661:10;;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;;;748:50;;702:1;695:9;;;;;812:14;;;;840;;655:206;;;-1:-1;2183:88;2001:286;-1:-1;;;;;;;2001:286;2294:257;;2406:2;2394:9;2385:7;2381:23;2377:32;2374:2;;;-1:-1;;2412:12;2374:2;1334:6;1328:13;15021:5;13826:13;13819:21;14999:5;14996:32;14986:2;;-1:-1;;15032:12;2558:241;;2662:2;2650:9;2641:7;2637:23;2633:32;2630:2;;;-1:-1;;2668:12;2630:2;-1:-1;1455:20;;2624:175;-1:-1;2624:175;3054:773;;;;;;3244:3;3232:9;3223:7;3219:23;3215:33;3212:2;;;-1:-1;;3251:12;3212:2;1605:6;1592:20;3303:63;;3421:53;3466:7;3403:2;3446:9;3442:22;3421:53;;;3411:63;;3511:2;3554:9;3550:22;1592:20;3519:63;;3647:2;3636:9;3632:18;3619:32;3671:18;;3663:6;3660:30;3657:2;;;-1:-1;;3693:12;3657:2;3794:6;3783:9;3779:22;1023:3;1016:4;1008:6;1004:17;1000:27;990:2;;-1:-1;;1031:12;990:2;1074:6;1061:20;1051:30;;3671:18;1093:6;1090:30;1087:2;;;-1:-1;;1123:12;1087:2;1218:3;3403:2;;1202:6;1198:17;1159:6;1184:32;;1181:41;1178:2;;;-1:-1;;1225:12;1178:2;3403;1159:6;1155:17;3721:90;;;;;;;;3206:621;;;;;;;;;7297:392;4295:37;;;7550:2;7541:12;;4295:37;7652:12;;;7441:248;7696:531;4295:37;;;14788:2;14784:14;;;;;;7977:2;7968:12;;4043:58;8079:12;;;4295:37;8190:12;;;7868:359;8234:222;-1:-1;;;;;13993:54;;;;3905:37;;8361:2;8346:18;;8332:124;8463:333;-1:-1;;;;;13993:54;;;;3905:37;;8782:2;8767:18;;4295:37;8618:2;8603:18;;8589:207;8803:331;-1:-1;;;;;13993:54;;;;3905:37;;14210:18;14199:30;9120:2;9105:18;;7236:49;8957:2;8942:18;;8928:206;9141:210;13826:13;;13819:21;4178:34;;9262:2;9247:18;;9233:118;9358:222;4295:37;;;9485:2;9470:18;;9456:124;9927:416;10127:2;10141:47;;;4728:2;10112:18;;;13594:19;4764:34;13634:14;;;4744:55;4833:7;4819:12;;;4812:29;4860:12;;;10098:245;10350:416;10550:2;10564:47;;;5111:2;10535:18;;;13594:19;5147:34;13634:14;;;5127:55;5216:7;5202:12;;;5195:29;5243:12;;;10521:245;10773:416;10973:2;10987:47;;;5494:2;10958:18;;;13594:19;5530:34;13634:14;;;5510:55;5599:22;5585:12;;;5578:44;5641:12;;;10944:245;11196:416;11396:2;11410:47;;;5892:2;11381:18;;;13594:19;5928:34;13634:14;;;5908:55;5997:5;5983:12;;;5976:27;6022:12;;;11367:245;11619:416;11819:2;11833:47;;;6273:2;11804:18;;;13594:19;6309:34;13634:14;;;6289:55;6378:15;6364:12;;;6357:37;6413:12;;;11790:245;12042:416;12242:2;12256:47;;;6664:2;12227:18;;;13594:19;6700:34;13634:14;;;6680:55;6769:34;6755:12;;;6748:56;6838:3;6824:12;;;6817:25;6861:12;;;12213:245;12465:444;4295:37;;;-1:-1;;;;;13993:54;;;;12812:2;12797:18;;3905:37;12895:2;12880:18;;4295:37;12648:2;12633:18;;12619:290;12916:256;12978:2;12972:9;13004:17;;;13079:18;13064:34;;13100:22;;;13061:62;13058:2;;;13136:1;;13126:12;13058:2;12978;13145:22;12956:216;;-1:-1;12956:216;13179:304;;13338:18;13330:6;13327:30;13324:2;;;-1:-1;;13360:12;13324:2;-1:-1;13405:4;13393:17;;;13458:15;;13261:222

Swarm Source

ipfs://07770f9054057e77436e06ffcdf7500773242735c1596c238e8f51939aafe349

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.