ETH Price: $2,936.53 (+1.21%)
 

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
Transfer Ownersh...153956752022-08-23 9:14:321248 days ago1661246072IN
0x228b9251...B834aD42d
0 ETH0.0005695819.86203597

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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:
AxelarAuthWeighted

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-08-26
*/

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

// File contracts/interfaces/IOwnable.sol

// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

interface IOwnable {
    error NotOwner();
    error InvalidOwner();

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function owner() external view returns (address);

    function transferOwnership(address newOwner) external;
}


// File contracts/interfaces/IAxelarAuth.sol

interface IAxelarAuth is IOwnable {
    function validateProof(bytes32 messageHash, bytes calldata proof) external returns (bool currentOperators);

    function transferOperatorship(bytes calldata params) external;
}


// File contracts/interfaces/IAxelarAuthWeighted.sol

interface IAxelarAuthWeighted is IAxelarAuth {
    error InvalidOperators();
    error InvalidThreshold();
    error DuplicateOperators();
    error MalformedSigners();
    error LowSignaturesWeight();
    error InvalidWeights();

    event OperatorshipTransferred(address[] newOperators, uint256[] newWeights, uint256 newThreshold);

    function currentEpoch() external view returns (uint256);

    function hashForEpoch(uint256 epoch) external view returns (bytes32);

    function epochForHash(bytes32 hash) external view returns (uint256);
}


// File contracts/ECDSA.sol

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    error InvalidSignatureLength();
    error InvalidS();
    error InvalidV();
    error InvalidSignature();

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address signer) {
        // Check the signature length
        if (signature.length != 65) revert InvalidSignatureLength();

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) revert InvalidS();

        if (v != 27 && v != 28) revert InvalidV();

        // If the signature is valid (and not malleable), return the signer address
        if ((signer = ecrecover(hash, v, r, s)) == address(0)) revert InvalidSignature();
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * replicates the behavior of the
     * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]
     * JSON-RPC method.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked('\x19Ethereum Signed Message:\n32', hash));
    }
}


// File contracts/Ownable.sol

abstract contract Ownable is IOwnable {
    address public owner;

    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        if (owner != msg.sender) revert NotOwner();

        _;
    }

    function transferOwnership(address newOwner) external virtual onlyOwner {
        if (newOwner == address(0)) revert InvalidOwner();

        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}


// File contracts/auth/AxelarAuthWeighted.sol

contract AxelarAuthWeighted is Ownable, IAxelarAuthWeighted {
    uint256 public currentEpoch;
    mapping(uint256 => bytes32) public hashForEpoch;
    mapping(bytes32 => uint256) public epochForHash;

    uint8 internal constant OLD_KEY_RETENTION = 16;

    constructor(bytes[] memory recentOperators) {
        for (uint256 i; i < recentOperators.length; ++i) {
            _transferOperatorship(recentOperators[i]);
        }
    }

    /**************************\
    |* External Functionality *|
    \**************************/

    /// @dev This function takes messageHash and proof data and reverts if proof is invalid
    /// @return True if provided operators are the current ones
    function validateProof(bytes32 messageHash, bytes calldata proof) external view returns (bool) {
        (address[] memory operators, uint256[] memory weights, uint256 threshold, bytes[] memory signatures) = abi.decode(
            proof,
            (address[], uint256[], uint256, bytes[])
        );

        bytes32 operatorsHash = keccak256(abi.encode(operators, weights, threshold));
        uint256 operatorsEpoch = epochForHash[operatorsHash];
        uint256 epoch = currentEpoch;

        if (operatorsEpoch == 0 || epoch - operatorsEpoch >= OLD_KEY_RETENTION) revert InvalidOperators();

        _validateSignatures(messageHash, operators, weights, threshold, signatures);

        return operatorsEpoch == epoch;
    }

    /***********************\
    |* Owner Functionality *|
    \***********************/

    function transferOperatorship(bytes calldata params) external onlyOwner {
        _transferOperatorship(params);
    }

    /**************************\
    |* Internal Functionality *|
    \**************************/

    function _transferOperatorship(bytes memory params) internal {
        (address[] memory newOperators, uint256[] memory newWeights, uint256 newThreshold) = abi.decode(
            params,
            (address[], uint256[], uint256)
        );
        uint256 operatorsLength = newOperators.length;
        uint256 weightsLength = newWeights.length;

        // operators must be sorted binary or alphabetically in lower case
        if (operatorsLength == 0 || !_isSortedAscAndContainsNoDuplicate(newOperators)) revert InvalidOperators();

        if (weightsLength != operatorsLength) revert InvalidWeights();

        uint256 totalWeight = 0;
        for (uint256 i = 0; i < weightsLength; ++i) {
            totalWeight += newWeights[i];
        }
        if (newThreshold == 0 || totalWeight < newThreshold) revert InvalidThreshold();

        bytes32 newOperatorsHash = keccak256(params);

        if (epochForHash[newOperatorsHash] > 0) revert DuplicateOperators();

        uint256 epoch = currentEpoch + 1;
        currentEpoch = epoch;
        hashForEpoch[epoch] = newOperatorsHash;
        epochForHash[newOperatorsHash] = epoch;

        emit OperatorshipTransferred(newOperators, newWeights, newThreshold);
    }

    function _validateSignatures(
        bytes32 messageHash,
        address[] memory operators,
        uint256[] memory weights,
        uint256 threshold,
        bytes[] memory signatures
    ) internal pure {
        uint256 operatorsLength = operators.length;
        uint256 operatorIndex = 0;
        uint256 weight = 0;
        // looking for signers within operators
        // assuming that both operators and signatures are sorted
        for (uint256 i = 0; i < signatures.length; ++i) {
            address signer = ECDSA.recover(messageHash, signatures[i]);
            // looping through remaining operators to find a match
            for (; operatorIndex < operatorsLength && signer != operators[operatorIndex]; ++operatorIndex) {}
            // checking if we are out of operators
            if (operatorIndex == operatorsLength) revert MalformedSigners();
            // return if weight sum above threshold
            weight += weights[operatorIndex];
            // weight needs to reach or surpass threshold
            if (weight >= threshold) return;
            // increasing operators index if match was found
            ++operatorIndex;
        }
        // if weight sum below threshold
        revert LowSignaturesWeight();
    }

    function _isSortedAscAndContainsNoDuplicate(address[] memory accounts) internal pure returns (bool) {
        for (uint256 i; i < accounts.length - 1; ++i) {
            if (accounts[i] >= accounts[i + 1]) {
                return false;
            }
        }

        return accounts[0] != address(0);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"bytes[]","name":"recentOperators","type":"bytes[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DuplicateOperators","type":"error"},{"inputs":[],"name":"InvalidOperators","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"InvalidS","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"InvalidThreshold","type":"error"},{"inputs":[],"name":"InvalidV","type":"error"},{"inputs":[],"name":"InvalidWeights","type":"error"},{"inputs":[],"name":"LowSignaturesWeight","type":"error"},{"inputs":[],"name":"MalformedSigners","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"newOperators","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"newWeights","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"OperatorshipTransferred","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"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"epochForHash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hashForEpoch","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"params","type":"bytes"}],"name":"transferOperatorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"validateProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162001693380380620016938339810160408190526200003491620003bf565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b8151811015620000c057620000ad828281518110620000995762000099620004fd565b6020026020010151620000c860201b60201c565b620000b88162000529565b905062000076565b505062000761565b600080600083806020019051810190620000e39190620005b4565b8251825193965091945092509081158062000106575062000104856200027e565b155b156200012557604051630849699d60e11b815260040160405180910390fd5b818114620001465760405163108cef9d60e31b815260040160405180910390fd5b6000805b828110156200019257858181518110620001685762000168620004fd565b6020026020010151826200017d91906200069b565b91506200018a8162000529565b90506200014a565b50831580620001a057508381105b15620001bf5760405163aabd5a0960e01b815260040160405180910390fd5b86516020808901919091206000818152600390925260409091205415620001f95760405163adda47f760e01b815260040160405180910390fd5b600060015460016200020c91906200069b565b60018190556000818152600260209081526040808320869055858352600390915290819020829055519091507f05b53362d4afea7533e835bd99f6c0f2c251e2f08b5c461734829516519dd5ac906200026b908a908a908a90620006b6565b60405180910390a1505050505050505050565b6000805b6001835162000292919062000747565b811015620003145782620002a88260016200069b565b81518110620002bb57620002bb620004fd565b60200260200101516001600160a01b0316838281518110620002e157620002e1620004fd565b60200260200101516001600160a01b031610620003015750600092915050565b6200030c8162000529565b905062000282565b5060006001600160a01b031682600081518110620003365762000336620004fd565b60200260200101516001600160a01b031614159050919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000391576200039162000350565b604052919050565b60006001600160401b03821115620003b557620003b562000350565b5060051b60200190565b60006020808385031215620003d357600080fd5b82516001600160401b0380821115620003eb57600080fd5b8185019150601f86818401126200040157600080fd5b825162000418620004128262000399565b62000366565b81815260059190911b840185019085810190898311156200043857600080fd5b8686015b83811015620004ef57805186811115620004565760008081fd5b8701603f81018c13620004695760008081fd5b888101518781111562000480576200048062000350565b62000493818801601f19168b0162000366565b81815260408e81848601011115620004ab5760008081fd5b60005b83811015620004cb578481018201518382018e01528c01620004ae565b83811115620004dd5760008d85850101525b5050855250509187019187016200043c565b509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141562000540576200054062000513565b5060010190565b600082601f8301126200055957600080fd5b815160206200056c620004128362000399565b82815260059290921b840181019181810190868411156200058c57600080fd5b8286015b84811015620005a9578051835291830191830162000590565b509695505050505050565b600080600060608486031215620005ca57600080fd5b83516001600160401b0380821115620005e257600080fd5b818601915086601f830112620005f757600080fd5b815160206200060a620004128362000399565b82815260059290921b8401810191818101908a8411156200062a57600080fd5b948201945b83861015620006615785516001600160a01b0381168114620006515760008081fd5b825294820194908201906200062f565b918901519197509093505050808211156200067b57600080fd5b506200068a8682870162000547565b925050604084015190509250925092565b60008219821115620006b157620006b162000513565b500190565b606080825284519082018190526000906020906080840190828801845b82811015620006fa5781516001600160a01b031684529284019290840190600101620006d3565b5050508381038285015285518082528683019183019060005b81811015620007315783518352928401929184019160010162000713565b5050809350505050826040830152949350505050565b6000828210156200075c576200075c62000513565b500390565b610f2280620007716000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063ba6742e51161005b578063ba6742e5146100ec578063d289d1cb1461010c578063f1501c8914610121578063f2fde38b1461014157600080fd5b806373e3d66a1461008257806376671808146100aa5780638da5cb5b146100c1575b600080fd5b610095610090366004610933565b610154565b60405190151581526020015b60405180910390f35b6100b360015481565b6040519081526020016100a1565b6000546100d4906001600160a01b031681565b6040516001600160a01b0390911681526020016100a1565b6100b36100fa36600461097f565b60026020526000908152604090205481565b61011f61011a366004610998565b610201565b005b6100b361012f36600461097f565b60036020526000908152604090205481565b61011f61014f3660046109f2565b61026f565b60008080808061016686880188610bd0565b9350935093509350600084848460405160200161018593929190610cc0565b60408051601f19818403018152918152815160209283012060008181526003909352912054600154919250908115806101c8575060106101c58383610d63565b10155b156101e657604051630849699d60e11b815260040160405180910390fd5b6101f38b8888888861034d565b149998505050505050505050565b6000546001600160a01b0316331461022c576040516330cd747160e01b815260040160405180910390fd5b61026b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b5050565b6000546001600160a01b0316331461029a576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166102da576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b8351600080805b84518110156104635760006103828a87848151811061037557610375610d7a565b6020026020010151610687565b90505b84841080156103bf57508884815181106103a1576103a1610d7a565b60200260200101516001600160a01b0316816001600160a01b031614155b156103d4576103cd84610d90565b9350610385565b8484141561040e576040517fc6fb539300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b87848151811061042057610420610d7a565b6020026020010151836104339190610dab565b9250868310610446575050505050610496565b61044f84610d90565b9350508061045c90610d90565b9050610354565b506040517f203b225800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b6000806000838060200190518101906104b69190610e1e565b825182519396509194509250908115806104d657506104d48561082a565b155b156104f457604051630849699d60e11b815260040160405180910390fd5b81811461052d576040517f84677ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b828110156105705785818151811061054b5761054b610d7a565b60200260200101518261055e9190610dab565b915061056981610d90565b9050610531565b5083158061057d57508381105b156105b4576040517faabd5a0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86516020808901919091206000818152600390925260409091205415610606576040517fadda47f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060015460016106179190610dab565b60018190556000818152600260209081526040808320869055858352600390915290819020829055519091507f05b53362d4afea7533e835bd99f6c0f2c251e2f08b5c461734829516519dd5ac90610674908a908a908a90610cc0565b60405180910390a1505050505050505050565b600081516041146106c4576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610730576040517f40c1e74800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff16601b1415801561074857508060ff16601c14155b1561077f576040517f119bce3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845289905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156107d3573d6000803e3d6000fd5b505050602060405103519450846001600160a01b03161415610821576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b6000805b6001835161083c9190610d63565b8110156108b1578261084f826001610dab565b8151811061085f5761085f610d7a565b60200260200101516001600160a01b031683828151811061088257610882610d7a565b60200260200101516001600160a01b0316106108a15750600092915050565b6108aa81610d90565b905061082e565b5060006001600160a01b0316826000815181106108d0576108d0610d7a565b60200260200101516001600160a01b031614159050919050565b60008083601f8401126108fc57600080fd5b50813567ffffffffffffffff81111561091457600080fd5b60208301915083602082850101111561092c57600080fd5b9250929050565b60008060006040848603121561094857600080fd5b83359250602084013567ffffffffffffffff81111561096657600080fd5b610972868287016108ea565b9497909650939450505050565b60006020828403121561099157600080fd5b5035919050565b600080602083850312156109ab57600080fd5b823567ffffffffffffffff8111156109c257600080fd5b6109ce858286016108ea565b90969095509350505050565b6001600160a01b03811681146109ef57600080fd5b50565b600060208284031215610a0457600080fd5b8135610a0f816109da565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a5557610a55610a16565b604052919050565b600067ffffffffffffffff821115610a7757610a77610a16565b5060051b60200190565b600082601f830112610a9257600080fd5b81356020610aa7610aa283610a5d565b610a2c565b82815260059290921b84018101918181019086841115610ac657600080fd5b8286015b84811015610ae15780358352918301918301610aca565b509695505050505050565b6000601f8381840112610afe57600080fd5b82356020610b0e610aa283610a5d565b82815260059290921b85018101918181019087841115610b2d57600080fd5b8287015b84811015610bc457803567ffffffffffffffff80821115610b525760008081fd5b818a0191508a603f830112610b675760008081fd5b85820135604082821115610b7d57610b7d610a16565b610b8e828b01601f19168901610a2c565b92508183528c81838601011115610ba55760008081fd5b8181850189850137506000908201870152845250918301918301610b31565b50979650505050505050565b60008060008060808587031215610be657600080fd5b843567ffffffffffffffff80821115610bfe57600080fd5b818701915087601f830112610c1257600080fd5b81356020610c22610aa283610a5d565b82815260059290921b8401810191818101908b841115610c4157600080fd5b948201945b83861015610c68578535610c59816109da565b82529482019490820190610c46565b98505088013592505080821115610c7e57600080fd5b610c8a88838901610a81565b9450604087013593506060870135915080821115610ca757600080fd5b50610cb487828801610aec565b91505092959194509250565b606080825284519082018190526000906020906080840190828801845b82811015610d025781516001600160a01b031684529284019290840190600101610cdd565b5050508381038285015285518082528683019183019060005b81811015610d3757835183529284019291840191600101610d1b565b5050809350505050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610d7557610d75610d4d565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610da457610da4610d4d565b5060010190565b60008219821115610dbe57610dbe610d4d565b500190565b600082601f830112610dd457600080fd5b81516020610de4610aa283610a5d565b82815260059290921b84018101918181019086841115610e0357600080fd5b8286015b84811015610ae15780518352918301918301610e07565b600080600060608486031215610e3357600080fd5b835167ffffffffffffffff80821115610e4b57600080fd5b818601915086601f830112610e5f57600080fd5b81516020610e6f610aa283610a5d565b82815260059290921b8401810191818101908a841115610e8e57600080fd5b948201945b83861015610eb5578551610ea6816109da565b82529482019490820190610e93565b91890151919750909350505080821115610ece57600080fd5b50610edb86828701610dc3565b92505060408401519050925092509256fea26469706673582212200ddc1b1cc323f5787654ff6b953672c656a5ae6baaac3108e31ea3b7daad1dfd64736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000000000140000000000000000000000001bc6dba6229c3ac1faa0a7d9cdcc1ca4728061f50000000000000000000000001bdb0c8626b31498190f854e6890f9e3b0c677c50000000000000000000000001e1e4860a4d66670f55f09a18183d211f68b0d9f00000000000000000000000027c7333ebae53dcfdc893d4322b7ab1e69c96ce00000000000000000000000002cc704bc8ade53b051e771a46bfca558d7396df300000000000000000000000031174208ecc9cada535e6d0af9bb790b9faddaaf000000000000000000000000368a5f50b2f03948779417bd25270fbe37f4b5170000000000000000000000004438260d2351523166cb8777097f13750be319690000000000000000000000005a54e2e42599074212df39190fa3e50db378d18e00000000000000000000000062f66cceb5a295c9f59fb43d93ec8b603c51479e00000000000000000000000075746864cd9c5619b59dd7a7082bb9f383d74a6800000000000000000000000076af8c4d9c678181781c43e536b358ffaed79829000000000000000000000000787bf0802521d073275b44987bfbbc29ec792ca10000000000000000000000009075d14c284a01fefc78910765d2abefb906ff810000000000000000000000009c112ef47b506cf3706a16de1902722cc413af82000000000000000000000000a60463481f85354fdb5409d6575438c52e272bca000000000000000000000000aaebb2845a300c3a9570a388843208e4dbaaafad000000000000000000000000ee983ce6ad7bb166770a66a7af600fd552ee6f3d000000000000000000000000f4462493709f32e01f1bc555d9a27b4790826e32000000000000000000000000f93b5526d81ea90fa3261f8f5105e4d0eb8b017b000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063ba6742e51161005b578063ba6742e5146100ec578063d289d1cb1461010c578063f1501c8914610121578063f2fde38b1461014157600080fd5b806373e3d66a1461008257806376671808146100aa5780638da5cb5b146100c1575b600080fd5b610095610090366004610933565b610154565b60405190151581526020015b60405180910390f35b6100b360015481565b6040519081526020016100a1565b6000546100d4906001600160a01b031681565b6040516001600160a01b0390911681526020016100a1565b6100b36100fa36600461097f565b60026020526000908152604090205481565b61011f61011a366004610998565b610201565b005b6100b361012f36600461097f565b60036020526000908152604090205481565b61011f61014f3660046109f2565b61026f565b60008080808061016686880188610bd0565b9350935093509350600084848460405160200161018593929190610cc0565b60408051601f19818403018152918152815160209283012060008181526003909352912054600154919250908115806101c8575060106101c58383610d63565b10155b156101e657604051630849699d60e11b815260040160405180910390fd5b6101f38b8888888861034d565b149998505050505050505050565b6000546001600160a01b0316331461022c576040516330cd747160e01b815260040160405180910390fd5b61026b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b5050565b6000546001600160a01b0316331461029a576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166102da576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b8351600080805b84518110156104635760006103828a87848151811061037557610375610d7a565b6020026020010151610687565b90505b84841080156103bf57508884815181106103a1576103a1610d7a565b60200260200101516001600160a01b0316816001600160a01b031614155b156103d4576103cd84610d90565b9350610385565b8484141561040e576040517fc6fb539300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b87848151811061042057610420610d7a565b6020026020010151836104339190610dab565b9250868310610446575050505050610496565b61044f84610d90565b9350508061045c90610d90565b9050610354565b506040517f203b225800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b6000806000838060200190518101906104b69190610e1e565b825182519396509194509250908115806104d657506104d48561082a565b155b156104f457604051630849699d60e11b815260040160405180910390fd5b81811461052d576040517f84677ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b828110156105705785818151811061054b5761054b610d7a565b60200260200101518261055e9190610dab565b915061056981610d90565b9050610531565b5083158061057d57508381105b156105b4576040517faabd5a0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86516020808901919091206000818152600390925260409091205415610606576040517fadda47f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060015460016106179190610dab565b60018190556000818152600260209081526040808320869055858352600390915290819020829055519091507f05b53362d4afea7533e835bd99f6c0f2c251e2f08b5c461734829516519dd5ac90610674908a908a908a90610cc0565b60405180910390a1505050505050505050565b600081516041146106c4576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610730576040517f40c1e74800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060ff16601b1415801561074857508060ff16601c14155b1561077f576040517f119bce3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845289905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156107d3573d6000803e3d6000fd5b505050602060405103519450846001600160a01b03161415610821576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b6000805b6001835161083c9190610d63565b8110156108b1578261084f826001610dab565b8151811061085f5761085f610d7a565b60200260200101516001600160a01b031683828151811061088257610882610d7a565b60200260200101516001600160a01b0316106108a15750600092915050565b6108aa81610d90565b905061082e565b5060006001600160a01b0316826000815181106108d0576108d0610d7a565b60200260200101516001600160a01b031614159050919050565b60008083601f8401126108fc57600080fd5b50813567ffffffffffffffff81111561091457600080fd5b60208301915083602082850101111561092c57600080fd5b9250929050565b60008060006040848603121561094857600080fd5b83359250602084013567ffffffffffffffff81111561096657600080fd5b610972868287016108ea565b9497909650939450505050565b60006020828403121561099157600080fd5b5035919050565b600080602083850312156109ab57600080fd5b823567ffffffffffffffff8111156109c257600080fd5b6109ce858286016108ea565b90969095509350505050565b6001600160a01b03811681146109ef57600080fd5b50565b600060208284031215610a0457600080fd5b8135610a0f816109da565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a5557610a55610a16565b604052919050565b600067ffffffffffffffff821115610a7757610a77610a16565b5060051b60200190565b600082601f830112610a9257600080fd5b81356020610aa7610aa283610a5d565b610a2c565b82815260059290921b84018101918181019086841115610ac657600080fd5b8286015b84811015610ae15780358352918301918301610aca565b509695505050505050565b6000601f8381840112610afe57600080fd5b82356020610b0e610aa283610a5d565b82815260059290921b85018101918181019087841115610b2d57600080fd5b8287015b84811015610bc457803567ffffffffffffffff80821115610b525760008081fd5b818a0191508a603f830112610b675760008081fd5b85820135604082821115610b7d57610b7d610a16565b610b8e828b01601f19168901610a2c565b92508183528c81838601011115610ba55760008081fd5b8181850189850137506000908201870152845250918301918301610b31565b50979650505050505050565b60008060008060808587031215610be657600080fd5b843567ffffffffffffffff80821115610bfe57600080fd5b818701915087601f830112610c1257600080fd5b81356020610c22610aa283610a5d565b82815260059290921b8401810191818101908b841115610c4157600080fd5b948201945b83861015610c68578535610c59816109da565b82529482019490820190610c46565b98505088013592505080821115610c7e57600080fd5b610c8a88838901610a81565b9450604087013593506060870135915080821115610ca757600080fd5b50610cb487828801610aec565b91505092959194509250565b606080825284519082018190526000906020906080840190828801845b82811015610d025781516001600160a01b031684529284019290840190600101610cdd565b5050508381038285015285518082528683019183019060005b81811015610d3757835183529284019291840191600101610d1b565b5050809350505050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610d7557610d75610d4d565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610da457610da4610d4d565b5060010190565b60008219821115610dbe57610dbe610d4d565b500190565b600082601f830112610dd457600080fd5b81516020610de4610aa283610a5d565b82815260059290921b84018101918181019086841115610e0357600080fd5b8286015b84811015610ae15780518352918301918301610e07565b600080600060608486031215610e3357600080fd5b835167ffffffffffffffff80821115610e4b57600080fd5b818601915086601f830112610e5f57600080fd5b81516020610e6f610aa283610a5d565b82815260059290921b8401810191818101908a841115610e8e57600080fd5b948201945b83861015610eb5578551610ea6816109da565b82529482019490820190610e93565b91890151919750909350505080821115610ece57600080fd5b50610edb86828701610dc3565b92505060408401519050925092509256fea26469706673582212200ddc1b1cc323f5787654ff6b953672c656a5ae6baaac3108e31ea3b7daad1dfd64736f6c63430008090033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000000000140000000000000000000000001bc6dba6229c3ac1faa0a7d9cdcc1ca4728061f50000000000000000000000001bdb0c8626b31498190f854e6890f9e3b0c677c50000000000000000000000001e1e4860a4d66670f55f09a18183d211f68b0d9f00000000000000000000000027c7333ebae53dcfdc893d4322b7ab1e69c96ce00000000000000000000000002cc704bc8ade53b051e771a46bfca558d7396df300000000000000000000000031174208ecc9cada535e6d0af9bb790b9faddaaf000000000000000000000000368a5f50b2f03948779417bd25270fbe37f4b5170000000000000000000000004438260d2351523166cb8777097f13750be319690000000000000000000000005a54e2e42599074212df39190fa3e50db378d18e00000000000000000000000062f66cceb5a295c9f59fb43d93ec8b603c51479e00000000000000000000000075746864cd9c5619b59dd7a7082bb9f383d74a6800000000000000000000000076af8c4d9c678181781c43e536b358ffaed79829000000000000000000000000787bf0802521d073275b44987bfbbc29ec792ca10000000000000000000000009075d14c284a01fefc78910765d2abefb906ff810000000000000000000000009c112ef47b506cf3706a16de1902722cc413af82000000000000000000000000a60463481f85354fdb5409d6575438c52e272bca000000000000000000000000aaebb2845a300c3a9570a388843208e4dbaaafad000000000000000000000000ee983ce6ad7bb166770a66a7af600fd552ee6f3d000000000000000000000000f4462493709f32e01f1bc555d9a27b4790826e32000000000000000000000000f93b5526d81ea90fa3261f8f5105e4d0eb8b017b000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : recentOperators (bytes[]): System.Byte[]

-----Encoded View---------------
49 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [3] : 00000000000000000000000000000000000000000000000000000000000005a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000300
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [8] : 0000000000000000000000001bc6dba6229c3ac1faa0a7d9cdcc1ca4728061f5
Arg [9] : 0000000000000000000000001bdb0c8626b31498190f854e6890f9e3b0c677c5
Arg [10] : 0000000000000000000000001e1e4860a4d66670f55f09a18183d211f68b0d9f
Arg [11] : 00000000000000000000000027c7333ebae53dcfdc893d4322b7ab1e69c96ce0
Arg [12] : 0000000000000000000000002cc704bc8ade53b051e771a46bfca558d7396df3
Arg [13] : 00000000000000000000000031174208ecc9cada535e6d0af9bb790b9faddaaf
Arg [14] : 000000000000000000000000368a5f50b2f03948779417bd25270fbe37f4b517
Arg [15] : 0000000000000000000000004438260d2351523166cb8777097f13750be31969
Arg [16] : 0000000000000000000000005a54e2e42599074212df39190fa3e50db378d18e
Arg [17] : 00000000000000000000000062f66cceb5a295c9f59fb43d93ec8b603c51479e
Arg [18] : 00000000000000000000000075746864cd9c5619b59dd7a7082bb9f383d74a68
Arg [19] : 00000000000000000000000076af8c4d9c678181781c43e536b358ffaed79829
Arg [20] : 000000000000000000000000787bf0802521d073275b44987bfbbc29ec792ca1
Arg [21] : 0000000000000000000000009075d14c284a01fefc78910765d2abefb906ff81
Arg [22] : 0000000000000000000000009c112ef47b506cf3706a16de1902722cc413af82
Arg [23] : 000000000000000000000000a60463481f85354fdb5409d6575438c52e272bca
Arg [24] : 000000000000000000000000aaebb2845a300c3a9570a388843208e4dbaaafad
Arg [25] : 000000000000000000000000ee983ce6ad7bb166770a66a7af600fd552ee6f3d
Arg [26] : 000000000000000000000000f4462493709f32e01f1bc555d9a27b4790826e32
Arg [27] : 000000000000000000000000f93b5526d81ea90fa3261f8f5105e4d0eb8b017b
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [38] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [40] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [41] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [42] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [43] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [44] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [45] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [46] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [47] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [48] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

5614:4674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6329:745;;;;;;:::i;:::-;;:::i;:::-;;;1013:14:1;;1006:22;988:41;;976:2;961:18;6329:745:0;;;;;;;;5681:27;;;;;;;;;1186:25:1;;;1174:2;1159:18;5681:27:0;1040:177:1;5082:20:0;;;;;-1:-1:-1;;;;;5082:20:0;;;;;;-1:-1:-1;;;;;1386:55:1;;;1368:74;;1356:2;1341:18;5082:20:0;1222:226:1;5715:47:0;;;;;;:::i;:::-;;;;;;;;;;;;;;7177:120;;;;;;:::i;:::-;;:::i;:::-;;5769:47;;;;;;:::i;:::-;;;;;;;;;;;;;;5334:222;;;;;;:::i;:::-;;:::i;6329:745::-;6418:4;;;;;6538:96;;;;6563:5;6538:96;:::i;:::-;6435:199;;;;;;;;6647:21;6692:9;6703:7;6712:9;6681:41;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6681:41:0;;;;;;;;;6671:52;;6681:41;6671:52;;;;6734:22;6759:27;;;:12;:27;;;;;;6813:12;;6671:52;;-1:-1:-1;6759:27:0;6842:19;;;:66;;-1:-1:-1;5869:2:0;6865:22;6873:14;6865:5;:22;:::i;:::-;:43;;6842:66;6838:97;;;6917:18;;-1:-1:-1;;;6917:18:0;;;;;;;;;;;6838:97;6948:75;6968:11;6981:9;6992:7;7001:9;7012:10;6948:19;:75::i;:::-;7043:23;;6329:745;-1:-1:-1;;;;;;;;;6329:745:0:o;7177:120::-;5266:5;;-1:-1:-1;;;;;5266:5:0;5275:10;5266:19;5262:42;;5294:10;;-1:-1:-1;;;5294:10:0;;;;;;;;;;;5262:42;7260:29:::1;7282:6;;7260:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7260:21:0::1;::::0;-1:-1:-1;;;7260:29:0:i:1;:::-;7177:120:::0;;:::o;5334:222::-;5266:5;;-1:-1:-1;;;;;5266:5:0;5275:10;5266:19;5262:42;;5294:10;;-1:-1:-1;;;5294:10:0;;;;;;;;;;;5262:42;-1:-1:-1;;;;;5421:22:0;::::1;5417:49;;5452:14;;;;;;;;;;;;;;5417:49;5505:5;::::0;;5484:37:::1;::::0;-1:-1:-1;;;;;5484:37:0;;::::1;::::0;5505:5;::::1;::::0;5484:37:::1;::::0;::::1;5532:5;:16:::0;;;::::1;-1:-1:-1::0;;;;;5532:16:0;;;::::1;::::0;;;::::1;::::0;;5334:222::o;8671:1288::-;8924:16;;8898:23;;;9132:739;9156:10;:17;9152:1;:21;9132:739;;;9195:14;9212:41;9226:11;9239:10;9250:1;9239:13;;;;;;;;:::i;:::-;;;;;;;9212;:41::i;:::-;9195:58;;9336:97;9359:15;9343:13;:31;:69;;;;;9388:9;9398:13;9388:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9378:34:0;:6;-1:-1:-1;;;;;9378:34:0;;;9343:69;9336:97;;;9414:15;;;:::i;:::-;;;9336:97;;;9520:15;9503:13;:32;9499:63;;;9544:18;;;;;;;;;;;;;;9499:63;9640:7;9648:13;9640:22;;;;;;;;:::i;:::-;;;;;;;9630:32;;;;;:::i;:::-;;;9750:9;9740:6;:19;9736:32;;9761:7;;;;;;;9736:32;9844:15;;;:::i;:::-;;;9180:691;9175:3;;;;:::i;:::-;;;9132:739;;;;9930:21;;;;;;;;;;;;;;8671:1288;;;;;;:::o;7409:1254::-;7482:29;7513:27;7542:20;7591:6;7566:88;;;;;;;;;;;;:::i;:::-;7691:19;;7745:17;;7481:173;;-1:-1:-1;7481:173:0;;-1:-1:-1;7481:173:0;-1:-1:-1;7691:19:0;7855:20;;;:73;;;7880:48;7915:12;7880:34;:48::i;:::-;7879:49;7855:73;7851:104;;;7937:18;;-1:-1:-1;;;7937:18:0;;;;;;;;;;;7851:104;7989:15;7972:13;:32;7968:61;;8013:16;;;;;;;;;;;;;;7968:61;8042:19;8081:9;8076:99;8100:13;8096:1;:17;8076:99;;;8150:10;8161:1;8150:13;;;;;;;;:::i;:::-;;;;;;;8135:28;;;;;:::i;:::-;;-1:-1:-1;8115:3:0;;;:::i;:::-;;;8076:99;;;-1:-1:-1;8189:17:0;;;:47;;;8224:12;8210:11;:26;8189:47;8185:78;;;8245:18;;;;;;;;;;;;;;8185:78;8303:17;;;;;;;;;;8276:24;8337:30;;;:12;:30;;;;;;;;:34;8333:67;;8380:20;;;;;;;;;;;;;;8333:67;8413:13;8429:12;;8444:1;8429:16;;;;:::i;:::-;8456:12;:20;;;8487:19;;;;:12;:19;;;;;;;;:38;;;8536:30;;;:12;:30;;;;;;;:38;;;8592:63;8413:32;;-1:-1:-1;8592:63:0;;;;8616:12;;8630:10;;8642:12;;8592:63;:::i;:::-;;;;;;;;7470:1193;;;;;;;;7409:1254;:::o;2532:1920::-;2610:14;2680:9;:16;2700:2;2680:22;2676:59;;2711:24;;;;;;;;;;;;;;2676:59;3097:4;3082:20;;3076:27;3143:4;3128:20;;3122:27;3197:4;3182:20;;3176:27;2805:9;3168:36;4127:66;4114:79;;4110:102;;;4202:10;;;;;;;;;;;;;;4110:102;4229:1;:7;;4234:2;4229:7;;:18;;;;;4240:1;:7;;4245:2;4240:7;;4229:18;4225:41;;;4256:10;;;;;;;;;;;;;;4225:41;4378:24;;;4415:1;4378:24;;;;;;;;;11445:25:1;;;11518:4;11506:17;;11486:18;;;11479:45;;;;11540:18;;;11533:34;;;11583:18;;;11576:34;;;4378:24:0;;11417:19:1;;4378:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4369:33;;;-1:-1:-1;;;;;4368:49:0;;4364:80;;;4426:18;;;;;;;;;;;;;;4364:80;2626:1826;;;2532:1920;;;;:::o;9967:318::-;10061:4;10083:9;10078:155;10116:1;10098:8;:15;:19;;;;:::i;:::-;10094:1;:23;10078:155;;;10158:8;10167:5;:1;10171;10167:5;:::i;:::-;10158:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10143:30:0;:8;10152:1;10143:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10143:30:0;;10139:83;;-1:-1:-1;10201:5:0;;9967:318;-1:-1:-1;;9967:318:0:o;10139:83::-;10119:3;;;:::i;:::-;;;10078:155;;;;10275:1;-1:-1:-1;;;;;10252:25:0;:8;10261:1;10252:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10252:25:0;;;10245:32;;9967:318;;;:::o;14:347:1:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:1;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:477::-;445:6;453;461;514:2;502:9;493:7;489:23;485:32;482:52;;;530:1;527;520:12;482:52;566:9;553:23;543:33;;627:2;616:9;612:18;599:32;654:18;646:6;643:30;640:50;;;686:1;683;676:12;640:50;725:58;775:7;766:6;755:9;751:22;725:58;:::i;:::-;366:477;;802:8;;-1:-1:-1;699:84:1;;-1:-1:-1;;;;366:477:1:o;1453:180::-;1512:6;1565:2;1553:9;1544:7;1540:23;1536:32;1533:52;;;1581:1;1578;1571:12;1533:52;-1:-1:-1;1604:23:1;;1453:180;-1:-1:-1;1453:180:1:o;1820:409::-;1890:6;1898;1951:2;1939:9;1930:7;1926:23;1922:32;1919:52;;;1967:1;1964;1957:12;1919:52;2007:9;1994:23;2040:18;2032:6;2029:30;2026:50;;;2072:1;2069;2062:12;2026:50;2111:58;2161:7;2152:6;2141:9;2137:22;2111:58;:::i;:::-;2188:8;;2085:84;;-1:-1:-1;1820:409:1;-1:-1:-1;;;;1820:409:1:o;2419:154::-;-1:-1:-1;;;;;2498:5:1;2494:54;2487:5;2484:65;2474:93;;2563:1;2560;2553:12;2474:93;2419:154;:::o;2578:247::-;2637:6;2690:2;2678:9;2669:7;2665:23;2661:32;2658:52;;;2706:1;2703;2696:12;2658:52;2745:9;2732:23;2764:31;2789:5;2764:31;:::i;:::-;2814:5;2578:247;-1:-1:-1;;;2578:247:1:o;2830:184::-;-1:-1:-1;;;2879:1:1;2872:88;2979:4;2976:1;2969:15;3003:4;3000:1;2993:15;3019:275;3090:2;3084:9;3155:2;3136:13;;-1:-1:-1;;3132:27:1;3120:40;;3190:18;3175:34;;3211:22;;;3172:62;3169:88;;;3237:18;;:::i;:::-;3273:2;3266:22;3019:275;;-1:-1:-1;3019:275:1:o;3299:183::-;3359:4;3392:18;3384:6;3381:30;3378:56;;;3414:18;;:::i;:::-;-1:-1:-1;3459:1:1;3455:14;3471:4;3451:25;;3299:183::o;3487:662::-;3541:5;3594:3;3587:4;3579:6;3575:17;3571:27;3561:55;;3612:1;3609;3602:12;3561:55;3648:6;3635:20;3674:4;3698:60;3714:43;3754:2;3714:43;:::i;:::-;3698:60;:::i;:::-;3792:15;;;3878:1;3874:10;;;;3862:23;;3858:32;;;3823:12;;;;3902:15;;;3899:35;;;3930:1;3927;3920:12;3899:35;3966:2;3958:6;3954:15;3978:142;3994:6;3989:3;3986:15;3978:142;;;4060:17;;4048:30;;4098:12;;;;4011;;3978:142;;;-1:-1:-1;4138:5:1;3487:662;-1:-1:-1;;;;;;3487:662:1:o;4154:1539::-;4206:5;4236:4;4280:3;4275:2;4267:6;4263:15;4259:25;4249:53;;4298:1;4295;4288:12;4249:53;4334:6;4321:20;4360:4;4384:60;4400:43;4440:2;4400:43;:::i;4384:60::-;4478:15;;;4564:1;4560:10;;;;4548:23;;4544:32;;;4509:12;;;;4588:15;;;4585:35;;;4616:1;4613;4606:12;4585:35;4652:2;4644:6;4640:15;4664:1000;4680:6;4675:3;4672:15;4664:1000;;;4766:3;4753:17;4793:18;4843:2;4830:11;4827:19;4824:109;;;4887:1;4916:2;4912;4905:14;4824:109;4968:11;4960:6;4956:24;4946:34;;5020:3;5015:2;5011;5007:11;5003:21;4993:119;;5066:1;5095:2;5091;5084:14;4993:119;5156:2;5152;5148:11;5135:25;5183:2;5208;5204;5201:10;5198:36;;;5214:18;;:::i;:::-;5262:51;5286:11;;;-1:-1:-1;;5282:25:1;5278:34;;5262:51;:::i;:::-;5247:66;;5342:2;5333:7;5326:19;5386:3;5381:2;5376;5372;5368:11;5364:20;5361:29;5358:122;;;5432:1;5462:3;5457;5450:16;5358:122;5537:2;5532;5528;5524:11;5519:2;5510:7;5506:16;5493:47;-1:-1:-1;5587:1:1;5564:16;;;5560:25;;5553:36;5602:20;;-1:-1:-1;5642:12:1;;;;4697;;4664:1000;;;-1:-1:-1;5682:5:1;4154:1539;-1:-1:-1;;;;;;;4154:1539:1:o;5698:1517::-;5868:6;5876;5884;5892;5945:3;5933:9;5924:7;5920:23;5916:33;5913:53;;;5962:1;5959;5952:12;5913:53;6002:9;5989:23;6031:18;6072:2;6064:6;6061:14;6058:34;;;6088:1;6085;6078:12;6058:34;6126:6;6115:9;6111:22;6101:32;;6171:7;6164:4;6160:2;6156:13;6152:27;6142:55;;6193:1;6190;6183:12;6142:55;6229:2;6216:16;6251:4;6275:60;6291:43;6331:2;6291:43;:::i;6275:60::-;6369:15;;;6451:1;6447:10;;;;6439:19;;6435:28;;;6400:12;;;;6475:19;;;6472:39;;;6507:1;6504;6497:12;6472:39;6531:11;;;;6551:217;6567:6;6562:3;6559:15;6551:217;;;6647:3;6634:17;6664:31;6689:5;6664:31;:::i;:::-;6708:18;;6584:12;;;;6746;;;;6551:217;;;6787:5;-1:-1:-1;;6830:18:1;;6817:32;;-1:-1:-1;;6861:16:1;;;6858:36;;;6890:1;6887;6880:12;6858:36;6913:63;6968:7;6957:8;6946:9;6942:24;6913:63;:::i;:::-;6903:73;;7023:2;7012:9;7008:18;6995:32;6985:42;;7080:2;7069:9;7065:18;7052:32;7036:48;;7109:2;7099:8;7096:16;7093:36;;;7125:1;7122;7115:12;7093:36;;7148:61;7201:7;7190:8;7179:9;7175:24;7148:61;:::i;:::-;7138:71;;;5698:1517;;;;;;;:::o;7220:1273::-;7516:2;7528:21;;;7598:13;;7501:18;;;7620:22;;;7468:4;;7696;;7673:3;7658:19;;;7723:15;;;7468:4;7766:218;7780:6;7777:1;7774:13;7766:218;;;7845:13;;-1:-1:-1;;;;;7841:62:1;7829:75;;7924:12;;;;7959:15;;;;7802:1;7795:9;7766:218;;;-1:-1:-1;;;8020:19:1;;;8000:18;;;7993:47;8090:13;;8112:21;;;8188:15;;;;8151:12;;;8223:1;8233:189;8249:8;8244:3;8241:17;8233:189;;;8318:15;;8304:30;;8395:17;;;;8356:14;;;;8277:1;8268:11;8233:189;;;8237:3;;8439:5;8431:13;;;;;8480:6;8475:2;8464:9;8460:18;8453:34;7220:1273;;;;;;:::o;8498:184::-;-1:-1:-1;;;8547:1:1;8540:88;8647:4;8644:1;8637:15;8671:4;8668:1;8661:15;8687:125;8727:4;8755:1;8752;8749:8;8746:34;;;8760:18;;:::i;:::-;-1:-1:-1;8797:9:1;;8687:125::o;8817:184::-;-1:-1:-1;;;8866:1:1;8859:88;8966:4;8963:1;8956:15;8990:4;8987:1;8980:15;9006:135;9045:3;-1:-1:-1;;9066:17:1;;9063:43;;;9086:18;;:::i;:::-;-1:-1:-1;9133:1:1;9122:13;;9006:135::o;9146:128::-;9186:3;9217:1;9213:6;9210:1;9207:13;9204:39;;;9223:18;;:::i;:::-;-1:-1:-1;9259:9:1;;9146:128::o;9279:659::-;9344:5;9397:3;9390:4;9382:6;9378:17;9374:27;9364:55;;9415:1;9412;9405:12;9364:55;9444:6;9438:13;9470:4;9494:60;9510:43;9550:2;9510:43;:::i;9494:60::-;9588:15;;;9674:1;9670:10;;;;9658:23;;9654:32;;;9619:12;;;;9698:15;;;9695:35;;;9726:1;9723;9716:12;9695:35;9762:2;9754:6;9750:15;9774:135;9790:6;9785:3;9782:15;9774:135;;;9856:10;;9844:23;;9887:12;;;;9807;;9774:135;;9943:1270;10081:6;10089;10097;10150:2;10138:9;10129:7;10125:23;10121:32;10118:52;;;10166:1;10163;10156:12;10118:52;10199:9;10193:16;10228:18;10269:2;10261:6;10258:14;10255:34;;;10285:1;10282;10275:12;10255:34;10323:6;10312:9;10308:22;10298:32;;10368:7;10361:4;10357:2;10353:13;10349:27;10339:55;;10390:1;10387;10380:12;10339:55;10419:2;10413:9;10441:4;10465:60;10481:43;10521:2;10481:43;:::i;10465:60::-;10559:15;;;10641:1;10637:10;;;;10629:19;;10625:28;;;10590:12;;;;10665:19;;;10662:39;;;10697:1;10694;10687:12;10662:39;10721:11;;;;10741:210;10757:6;10752:3;10749:15;10741:210;;;10830:3;10824:10;10847:31;10872:5;10847:31;:::i;:::-;10891:18;;10774:12;;;;10929;;;;10741:210;;;11006:18;;;11000:25;10970:5;;-1:-1:-1;11000:25:1;;-1:-1:-1;;;11037:16:1;;;11034:36;;;11066:1;11063;11056:12;11034:36;;11089:74;11155:7;11144:8;11133:9;11129:24;11089:74;:::i;:::-;11079:84;;;11203:2;11192:9;11188:18;11182:25;11172:35;;9943:1270;;;;;:::o

Swarm Source

ipfs://0ddc1b1cc323f5787654ff6b953672c656a5ae6baaac3108e31ea3b7daad1dfd

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.