CRO Price: $0.08 (+16.94%)

Contract

0x1B0789910027c3CC58af2391de7228d973c5C46E

Overview

CRO Balance

Cronos Chain LogoCronos Chain LogoCronos Chain Logo0 CRO

CRO Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Threshold63294892023-01-04 4:10:57672 days ago1672805457IN
XY Finance: Supervisor
0 CRO0.27707584,840.76677845
Set Validator60107592022-12-14 7:51:26693 days ago1671004286IN
XY Finance: Supervisor
0 CRO0.402535214,855.49634579
Set Validator60107582022-12-14 7:51:21693 days ago1671004281IN
XY Finance: Supervisor
0 CRO0.402574064,855.49639389
Set Validator60107572022-12-14 7:51:15693 days ago1671004275IN
XY Finance: Supervisor
0 CRO0.475406514,855.4964417
0x6080604015845002022-02-21 9:29:11989 days ago1645435751IN
 Create: Supervisor
0 CRO5.028825,000

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Supervisor

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, None license
File 1 of 2 : Supervisor.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import "ECDSA.sol";

/// @title Supervisor is the guardian of YPool. It requires multiple validators to valid
/// the requests from users and workers and sign on them if valid.
contract Supervisor {
    using ECDSA for bytes32;

    /* ========== STATE VARIABLES ========== */

    bytes32 public constant CLAIM_IDENTIFIER = 'SWAPPER_CLAIM';
    bytes32 public constant SET_THRESHOLD_IDENTIFIER = 'SET_THRESHOLD';
    bytes32 public constant SET_VALIDATOR_IDENTIFIER = 'SET_VALIDATOR';
    bytes32 public constant LOCK_CLOSE_SWAP_AND_REFUND_IDENTIFIER = 'LOCK_CLOSE_SWAP_AND_REFUND';
    bytes32 public constant BATCH_CLAIM_IDENTIFIER = 'BATCH_CLAIM';
    bytes32 public constant VALIDATE_SWAP_IDENTIFIER = 'VALIDATE_SWAP_IDENTIFIER';
    bytes32 public constant VALIDATE_XY_CROSS_CHAIN_IDENTIFIER = 'VALIDATE_XY_XCHAIN_IDENTIFIER';

    // the chain ID contract located at
    uint32 public chainId;
    // check if the address is one of the validators
    mapping (address => bool) public validators;
    // number of validators
    uint256 private validatorsNum;
    // threshold to pass the signature validation
    uint256 public threshold;
    // current nonce for write functions
    uint256 public nonce;

    /// @dev Constuctor with chainId / validators / threshold
    /// @param _chainId The chain ID located with
    /// @param _validators Initial validator addresses
    /// @param _threshold Initial threshold to pass the request validation
    constructor(uint32 _chainId, address [] memory _validators, uint256 _threshold) {
        chainId = _chainId;

        for (uint256 i; i < _validators.length; i++) {
            validators[_validators[i]] = true;
        }
        validatorsNum = _validators.length;
        require(_threshold <= validatorsNum, "ERR_INVALID_THRESHOLD");
        threshold = _threshold;
    }

    /* ========== VIEW FUNCTIONS ========== */

    /// @notice Check if there are enough signed signatures to the signature hash
    /// @param sigIdHash The signature hash to be signed
    /// @param signatures Signed signatures by different validators
    function checkSignatures(bytes32 sigIdHash, bytes[] memory signatures) public view {
        require(signatures.length >= threshold, "ERR_NOT_ENOUGH_SIGNATURES");
        address prevAddress = address(0);
        for (uint i; i < threshold; i++) {
            address recovered = sigIdHash.recover(signatures[i]);
            require(validators[recovered], "ERR_NOT_VALIDATOR");
            require(recovered > prevAddress, "ERR_WRONG_SIGNER_ORDER");
            prevAddress = recovered;
        }
    }

    /* ========== WRITE FUNCTIONS ========== */

    /// @notice Change `threshold` by providing a correct nonce and enough signatures from validators
    /// @param _threshold New `threshold`
    /// @param _nonce The nonce to be processed
    /// @param signatures Signed signatures by validators
    function setThreshold(uint256 _threshold, uint256 _nonce, bytes[] memory signatures) external {
        require(signatures.length >= threshold, "ERR_NOT_ENOUGH_SIGNATURES");
        require(_nonce == nonce, "ERR_INVALID_NONCE");
        require(_threshold > 0, "ERR_INVALID_THRESHOLD");
        require(_threshold <= validatorsNum, "ERR_INVALID_THRESHOLD");

        bytes32 sigId = keccak256(abi.encodePacked(SET_THRESHOLD_IDENTIFIER, address(this), chainId, _threshold, _nonce));
        bytes32 sigIdHash = sigId.toEthSignedMessageHash();
        checkSignatures(sigIdHash, signatures);

        threshold = _threshold;
        nonce++;
    }

    /// @notice Set / remove the validator address to be part of signatures committee
    /// @param _validator The address to add or remove
    /// @param flag `true` to add, `false` to remove
    /// @param _nonce The nonce to be processed
    /// @param signatures Signed signatures by validators
    function setValidator(address _validator, bool flag, uint256 _nonce, bytes[] memory signatures) external {
        require(_validator != address(0), "ERR_INVALID_VALIDATOR");
        require(signatures.length >= threshold, "ERR_NOT_ENOUGH_SIGNATURES");
        require(_nonce == nonce, "ERR_INVALID_NONCE");
        require(flag != validators[_validator], "ERR_OPERATION_TO_VALIDATOR");

        bytes32 sigId = keccak256(abi.encodePacked(SET_VALIDATOR_IDENTIFIER, address(this), chainId, _validator, flag, _nonce));
        bytes32 sigIdHash = sigId.toEthSignedMessageHash();
        checkSignatures(sigIdHash, signatures);

        if (validators[_validator]) {
            validatorsNum--;
            validators[_validator] = false;
            if (validatorsNum < threshold) threshold--;
        } else {
            validatorsNum++;
            validators[_validator] = true;
        }
        nonce++;
    }
}

File 2 of 2 : ECDSA.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @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 {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature` or error string. 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.
     *
     * Documentation for signature generation:
     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]
     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]
     *
     * _Available since v4.3._
     */
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        // Check the signature length
        // - case 65: r,s,v signature (standard)
        // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;
            // ecrecover takes the signature parameters, and the only way to get them
            // currently is to use assembly.
            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    /**
     * @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) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.
     *
     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s;
        uint8 v;
        assembly {
            s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
            v := add(shr(255, vs), 27)
        }
        return tryRecover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.
     *
     * _Available since v4.2._
     */
    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,
     * `r` and `s` signature fields separately.
     *
     * _Available since v4.3._
     */
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {
        // 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 (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): 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) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

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

        return (signer, RecoverError.NoError);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * 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));
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

Settings
{
  "evmVersion": "istanbul",
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "libraries": {
    "Supervisor.sol": {}
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint32","name":"_chainId","type":"uint32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BATCH_CLAIM_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLAIM_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCK_CLOSE_SWAP_AND_REFUND_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SET_THRESHOLD_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SET_VALIDATOR_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATE_SWAP_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATE_XY_CROSS_CHAIN_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"sigIdHash","type":"bytes32"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"checkSignatures","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"},{"internalType":"bool","name":"flag","type":"bool"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040516200119c3803806200119c833981016040819052620000349162000146565b6000805463ffffffff191663ffffffff85161781555b8251811015620000c15760018060008584815181106200007a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000b88162000242565b9150506200004a565b50815160028190558111156200011d5760405162461bcd60e51b815260206004820152601560248201527f4552525f494e56414c49445f5448524553484f4c440000000000000000000000604482015260640160405180910390fd5b60035550620002809050565b80516001600160a01b03811681146200014157600080fd5b919050565b6000806000606084860312156200015b578283fd5b835163ffffffff811681146200016f578384fd5b602085810151919450906001600160401b03808211156200018e578485fd5b818701915087601f830112620001a2578485fd5b815181811115620001b757620001b76200026a565b838102604051601f19603f83011681018181108582111715620001de57620001de6200026a565b604052828152858101935084860182860187018c1015620001fd578889fd5b8895505b838610156200022a57620002158162000129565b85526001959095019493860193860162000201565b50809750505050505050604084015190509250925092565b60006000198214156200026357634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b610f0c80620002906000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063935d91dd1161008c578063da8bd3fe11610066578063da8bd3fe146101f4578063f7ca802314610207578063fa52c7d81461021c578063faf55b5c1461024f576100ea565b8063935d91dd146101b35780639a8a0592146101c6578063affed0e0146101eb576100ea565b80635938c87d116100c85780635938c87d146101395780635a0f88301461015057806371aca57e1461016557806374892a721461018c576100ea565b80633c0e39bf146100ef57806342cde4e81461011957806351f61efa14610122575b600080fd5b6101066c14d15517d512149154d213d311609a1b81565b6040519081526020015b60405180910390f35b61010660035481565b6101066c29a2aa2fab20a624a220aa27a960991b81565b6101066c535741505045525f434c41494d60981b81565b61016361015e366004610d7d565b610276565b005b6101067f56414c49444154455f58595f58434841494e5f4944454e54494649455200000081565b6101067f4c4f434b5f434c4f53455f535741505f414e445f524546554e4400000000000081565b6101636101c1366004610dc2565b6103bf565b6000546101d69063ffffffff1681565b60405163ffffffff9091168152602001610110565b61010660045481565b610163610202366004610d11565b610567565b6101066a42415443485f434c41494d60a81b81565b61023f61022a366004610cf0565b60016020526000908152604090205460ff1681565b6040519015158152602001610110565b6101067f56414c49444154455f535741505f4944454e544946494552000000000000000081565b600354815110156102a25760405162461bcd60e51b815260040161029990610e10565b60405180910390fd5b6000805b6003548110156103b95760006102ec8483815181106102d557634e487b7160e01b600052603260045260246000fd5b60200260200101518661080190919063ffffffff16565b6001600160a01b03811660009081526001602052604090205490915060ff1661034b5760405162461bcd60e51b815260206004820152601160248201527022a9292fa727aa2fab20a624a220aa27a960791b6044820152606401610299565b826001600160a01b0316816001600160a01b0316116103a55760405162461bcd60e51b815260206004820152601660248201527522a9292faba927a723afa9a4a3a722a92fa7a92222a960511b6044820152606401610299565b9150806103b181610e8f565b9150506102a6565b50505050565b600354815110156103e25760405162461bcd60e51b815260040161029990610e10565b60045482146104275760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6000831161046f5760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b6002548311156104b95760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b60008054604080516c14d15517d512149154d213d311609a1b60208201523060601b6bffffffffffffffffffffffff19169181019190915260e09190911b6001600160e01b03191660548201526058810185905260788101849052609801604051602081830303815290604052805190602001209050600061053a82610825565b90506105468184610276565b60038590556004805490600061055b83610e8f565b91905055505050505050565b6001600160a01b0384166105b55760405162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fab20a624a220aa27a960591b6044820152606401610299565b600354815110156105d85760405162461bcd60e51b815260040161029990610e10565b600454821461061d5760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6001600160a01b03841660009081526001602052604090205460ff161515831515141561068c5760405162461bcd60e51b815260206004820152601a60248201527f4552525f4f5045524154494f4e5f544f5f56414c494441544f520000000000006044820152606401610299565b60008054604080516c29a2aa2fab20a624a220aa27a960991b602082015230606090811b6bffffffffffffffffffffffff199081169383019390935260e09390931b6001600160e01b03191660548201529187901b16605882015284151560f81b606c820152606d8101849052608d01604051602081830303815290604052805190602001209050600061071f82610825565b905061072b8184610276565b6001600160a01b03861660009081526001602052604090205460ff16156107a8576002805490600061075c83610e78565b90915550506001600160a01b0386166000908152600160205260409020805460ff1916905560035460025410156107a3576003805490600061079d83610e78565b91905055505b6107e4565b600280549060006107b883610e8f565b90915550506001600160a01b0386166000908152600160208190526040909120805460ff191690911790555b600480549060006107f483610e8f565b9190505550505050505050565b60008060006108108585610879565b9150915061081d816108e9565b509392505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016040516020818303038152906040528051906020012090505b919050565b6000808251604114156108b05760208301516040840151606085015160001a6108a487828585610aef565b945094505050506108e2565b8251604014156108da57602083015160408401516108cf868383610bdc565b9350935050506108e2565b506000905060025b9250929050565b600081600481111561090b57634e487b7160e01b600052602160045260246000fd5b141561091657610aec565b600181600481111561093857634e487b7160e01b600052602160045260246000fd5b14156109865760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610299565b60028160048111156109a857634e487b7160e01b600052602160045260246000fd5b14156109f65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610299565b6003816004811115610a1857634e487b7160e01b600052602160045260246000fd5b1415610a715760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610299565b6004816004811115610a9357634e487b7160e01b600052602160045260246000fd5b1415610aec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610299565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b265750600090506003610bd3565b8460ff16601b14158015610b3e57508460ff16601c14155b15610b4f5750600090506004610bd3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ba3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bcc57600060019250925050610bd3565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01610bfd87828885610aef565b935093505050935093915050565b80356001600160a01b038116811461087457600080fd5b6000601f8381840112610c33578182fd5b8235602067ffffffffffffffff80831115610c5057610c50610ec0565b610c5d8283850201610e47565b83815282810190878401875b86811015610ce15781358a018b603f820112610c8357898afd5b86810135604087821115610c9957610c99610ec0565b610caa828c01601f19168a01610e47565b8281528e82848601011115610cbd578c8dfd5b828285018b83013791820189018c9052508552509285019290850190600101610c69565b50909998505050505050505050565b600060208284031215610d01578081fd5b610d0a82610c0b565b9392505050565b60008060008060808587031215610d26578283fd5b610d2f85610c0b565b935060208501358015158114610d43578384fd5b925060408501359150606085013567ffffffffffffffff811115610d65578182fd5b610d7187828801610c22565b91505092959194509250565b60008060408385031215610d8f578182fd5b82359150602083013567ffffffffffffffff811115610dac578182fd5b610db885828601610c22565b9150509250929050565b600080600060608486031215610dd6578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610dfa578182fd5b610e0686828701610c22565b9150509250925092565b60208082526019908201527f4552525f4e4f545f454e4f5547485f5349474e41545552455300000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7057610e70610ec0565b604052919050565b600081610e8757610e87610eaa565b506000190190565b6000600019821415610ea357610ea3610eaa565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212208859070416ce9cbc252fdfbd56c8968d4b4423286bfe38c9b13a95efffa3db1e64736f6c634300080200330000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b7702af3cffa4c5bda7ed48b51351dd437343c1b0000000000000000000000000589312aaefb4155d792e4832a00f8e28222bae4

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063935d91dd1161008c578063da8bd3fe11610066578063da8bd3fe146101f4578063f7ca802314610207578063fa52c7d81461021c578063faf55b5c1461024f576100ea565b8063935d91dd146101b35780639a8a0592146101c6578063affed0e0146101eb576100ea565b80635938c87d116100c85780635938c87d146101395780635a0f88301461015057806371aca57e1461016557806374892a721461018c576100ea565b80633c0e39bf146100ef57806342cde4e81461011957806351f61efa14610122575b600080fd5b6101066c14d15517d512149154d213d311609a1b81565b6040519081526020015b60405180910390f35b61010660035481565b6101066c29a2aa2fab20a624a220aa27a960991b81565b6101066c535741505045525f434c41494d60981b81565b61016361015e366004610d7d565b610276565b005b6101067f56414c49444154455f58595f58434841494e5f4944454e54494649455200000081565b6101067f4c4f434b5f434c4f53455f535741505f414e445f524546554e4400000000000081565b6101636101c1366004610dc2565b6103bf565b6000546101d69063ffffffff1681565b60405163ffffffff9091168152602001610110565b61010660045481565b610163610202366004610d11565b610567565b6101066a42415443485f434c41494d60a81b81565b61023f61022a366004610cf0565b60016020526000908152604090205460ff1681565b6040519015158152602001610110565b6101067f56414c49444154455f535741505f4944454e544946494552000000000000000081565b600354815110156102a25760405162461bcd60e51b815260040161029990610e10565b60405180910390fd5b6000805b6003548110156103b95760006102ec8483815181106102d557634e487b7160e01b600052603260045260246000fd5b60200260200101518661080190919063ffffffff16565b6001600160a01b03811660009081526001602052604090205490915060ff1661034b5760405162461bcd60e51b815260206004820152601160248201527022a9292fa727aa2fab20a624a220aa27a960791b6044820152606401610299565b826001600160a01b0316816001600160a01b0316116103a55760405162461bcd60e51b815260206004820152601660248201527522a9292faba927a723afa9a4a3a722a92fa7a92222a960511b6044820152606401610299565b9150806103b181610e8f565b9150506102a6565b50505050565b600354815110156103e25760405162461bcd60e51b815260040161029990610e10565b60045482146104275760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6000831161046f5760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b6002548311156104b95760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b60008054604080516c14d15517d512149154d213d311609a1b60208201523060601b6bffffffffffffffffffffffff19169181019190915260e09190911b6001600160e01b03191660548201526058810185905260788101849052609801604051602081830303815290604052805190602001209050600061053a82610825565b90506105468184610276565b60038590556004805490600061055b83610e8f565b91905055505050505050565b6001600160a01b0384166105b55760405162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fab20a624a220aa27a960591b6044820152606401610299565b600354815110156105d85760405162461bcd60e51b815260040161029990610e10565b600454821461061d5760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6001600160a01b03841660009081526001602052604090205460ff161515831515141561068c5760405162461bcd60e51b815260206004820152601a60248201527f4552525f4f5045524154494f4e5f544f5f56414c494441544f520000000000006044820152606401610299565b60008054604080516c29a2aa2fab20a624a220aa27a960991b602082015230606090811b6bffffffffffffffffffffffff199081169383019390935260e09390931b6001600160e01b03191660548201529187901b16605882015284151560f81b606c820152606d8101849052608d01604051602081830303815290604052805190602001209050600061071f82610825565b905061072b8184610276565b6001600160a01b03861660009081526001602052604090205460ff16156107a8576002805490600061075c83610e78565b90915550506001600160a01b0386166000908152600160205260409020805460ff1916905560035460025410156107a3576003805490600061079d83610e78565b91905055505b6107e4565b600280549060006107b883610e8f565b90915550506001600160a01b0386166000908152600160208190526040909120805460ff191690911790555b600480549060006107f483610e8f565b9190505550505050505050565b60008060006108108585610879565b9150915061081d816108e9565b509392505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016040516020818303038152906040528051906020012090505b919050565b6000808251604114156108b05760208301516040840151606085015160001a6108a487828585610aef565b945094505050506108e2565b8251604014156108da57602083015160408401516108cf868383610bdc565b9350935050506108e2565b506000905060025b9250929050565b600081600481111561090b57634e487b7160e01b600052602160045260246000fd5b141561091657610aec565b600181600481111561093857634e487b7160e01b600052602160045260246000fd5b14156109865760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610299565b60028160048111156109a857634e487b7160e01b600052602160045260246000fd5b14156109f65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610299565b6003816004811115610a1857634e487b7160e01b600052602160045260246000fd5b1415610a715760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610299565b6004816004811115610a9357634e487b7160e01b600052602160045260246000fd5b1415610aec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610299565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b265750600090506003610bd3565b8460ff16601b14158015610b3e57508460ff16601c14155b15610b4f5750600090506004610bd3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ba3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bcc57600060019250925050610bd3565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01610bfd87828885610aef565b935093505050935093915050565b80356001600160a01b038116811461087457600080fd5b6000601f8381840112610c33578182fd5b8235602067ffffffffffffffff80831115610c5057610c50610ec0565b610c5d8283850201610e47565b83815282810190878401875b86811015610ce15781358a018b603f820112610c8357898afd5b86810135604087821115610c9957610c99610ec0565b610caa828c01601f19168a01610e47565b8281528e82848601011115610cbd578c8dfd5b828285018b83013791820189018c9052508552509285019290850190600101610c69565b50909998505050505050505050565b600060208284031215610d01578081fd5b610d0a82610c0b565b9392505050565b60008060008060808587031215610d26578283fd5b610d2f85610c0b565b935060208501358015158114610d43578384fd5b925060408501359150606085013567ffffffffffffffff811115610d65578182fd5b610d7187828801610c22565b91505092959194509250565b60008060408385031215610d8f578182fd5b82359150602083013567ffffffffffffffff811115610dac578182fd5b610db885828601610c22565b9150509250929050565b600080600060608486031215610dd6578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610dfa578182fd5b610e0686828701610c22565b9150509250925092565b60208082526019908201527f4552525f4e4f545f454e4f5547485f5349474e41545552455300000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7057610e70610ec0565b604052919050565b600081610e8757610e87610eaa565b506000190190565b6000600019821415610ea357610ea3610eaa565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212208859070416ce9cbc252fdfbd56c8968d4b4423286bfe38c9b13a95efffa3db1e64736f6c63430008020033

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

0000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b7702af3cffa4c5bda7ed48b51351dd437343c1b0000000000000000000000000589312aaefb4155d792e4832a00f8e28222bae4

-----Decoded View---------------
Arg [0] : _chainId (uint32): 25
Arg [1] : _validators (address[]): 0xb7702aF3CFFa4C5bDA7Ed48b51351Dd437343C1B,0x0589312AAEFb4155D792e4832a00f8e28222bae4
Arg [2] : _threshold (uint256): 1

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [4] : 000000000000000000000000b7702af3cffa4c5bda7ed48b51351dd437343c1b
Arg [5] : 0000000000000000000000000589312aaefb4155d792e4832a00f8e28222bae4


Deployed Bytecode Sourcemap

239:4594:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:66;;-1:-1:-1;;;408:66:1;;;;;5185:25:2;;;5173:2;5158:18;408:66:1;;;;;;;;1182:24;;;;;;480:66;;-1:-1:-1;;;480:66:1;;344:58;;-1:-1:-1;;;344:58:1;;2158:503;;;;;;:::i;:::-;;:::i;:::-;;801:92;;;;;552;;;;;2966:645;;;;;;:::i;:::-;;:::i;940:21::-;;;;;;;;;;;;9951:10:2;9939:23;;;9921:42;;9909:2;9894:18;940:21:1;9876:93:2;1253:20:1;;;;;;3917:914;;;;;;:::i;:::-;;:::i;650:62::-;;-1:-1:-1;;;650:62:1;;1020:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5012:14:2;;5005:22;4987:41;;4975:2;4960:18;1020:43:1;4942:92:2;718:77:1;;;;;2158:503;2280:9;;2259:10;:17;:30;;2251:68;;;;-1:-1:-1;;;2251:68:1;;;;;;;:::i;:::-;;;;;;;;;2329:19;2376:6;2371:284;2388:9;;2384:1;:13;2371:284;;;2418:17;2438:32;2456:10;2467:1;2456:13;;;;;;-1:-1:-1;;;2456:13:1;;;;;;;;;;;;;;;2438:9;:17;;:32;;;;:::i;:::-;-1:-1:-1;;;;;2492:21:1;;;;;;:10;:21;;;;;;2418:52;;-1:-1:-1;2492:21:1;;2484:51;;;;-1:-1:-1;;;2484:51:1;;6539:2:2;2484:51:1;;;6521:21:2;6578:2;6558:18;;;6551:30;-1:-1:-1;;;6597:18:2;;;6590:47;6654:18;;2484:51:1;6511:167:2;2484:51:1;2569:11;-1:-1:-1;;;;;2557:23:1;:9;-1:-1:-1;;;;;2557:23:1;;2549:58;;;;-1:-1:-1;;;2549:58:1;;7240:2:2;2549:58:1;;;7222:21:2;7279:2;7259:18;;;7252:30;-1:-1:-1;;;7298:18:2;;;7291:52;7360:18;;2549:58:1;7212:172:2;2549:58:1;2635:9;-1:-1:-1;2399:3:1;;;;:::i;:::-;;;;2371:284;;;;2158:503;;;:::o;2966:645::-;3099:9;;3078:10;:17;:30;;3070:68;;;;-1:-1:-1;;;3070:68:1;;;;;;;:::i;:::-;3166:5;;3156:6;:15;3148:45;;;;-1:-1:-1;;;3148:45:1;;9101:2:2;3148:45:1;;;9083:21:2;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:2;;;9152:47;9216:18;;3148:45:1;9073:167:2;3148:45:1;3224:1;3211:10;:14;3203:48;;;;-1:-1:-1;;;3203:48:1;;8751:2:2;3203:48:1;;;8733:21:2;8790:2;8770:18;;;8763:30;-1:-1:-1;;;8809:18:2;;;8802:51;8870:18;;3203:48:1;8723:171:2;3203:48:1;3283:13;;3269:10;:27;;3261:61;;;;-1:-1:-1;;;3261:61:1;;8751:2:2;3261:61:1;;;8733:21:2;8790:2;8770:18;;;8763:30;-1:-1:-1;;;8809:18:2;;;8802:51;8870:18;;3261:61:1;8723:171:2;3261:61:1;3333:13;3417:7;;3359:86;;;-1:-1:-1;;;3359:86:1;;;4171:19:2;3410:4:1;4228:2:2;4224:15;-1:-1:-1;;4220:53:2;4206:12;;;4199:75;;;;4330:3;4308:16;;;;-1:-1:-1;;;;;;4308:16:2;4290:12;;;4283:65;4364:12;;;4357:28;;;4401:12;;;4394:28;;;4438:13;;3359:86:1;;;;;;;;;;;;3349:97;;;;;;3333:113;;3456:17;3476:30;:5;:28;:30::i;:::-;3456:50;;3516:38;3532:9;3543:10;3516:15;:38::i;:::-;3565:9;:22;;;3597:5;:7;;;:5;:7;;;:::i;:::-;;;;;;2966:645;;;;;:::o;3917:914::-;-1:-1:-1;;;;;4040:24:1;;4032:58;;;;-1:-1:-1;;;4032:58:1;;9447:2:2;4032:58:1;;;9429:21:2;9486:2;9466:18;;;9459:30;-1:-1:-1;;;9505:18:2;;;9498:51;9566:18;;4032:58:1;9419:171:2;4032:58:1;4129:9;;4108:10;:17;:30;;4100:68;;;;-1:-1:-1;;;4100:68:1;;;;;;;:::i;:::-;4196:5;;4186:6;:15;4178:45;;;;-1:-1:-1;;;4178:45:1;;9101:2:2;4178:45:1;;;9083:21:2;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:2;;;9152:47;9216:18;;4178:45:1;9073:167:2;4178:45:1;-1:-1:-1;;;;;4249:22:1;;;;;;:10;:22;;;;;;;;4241:30;;;;;;;4233:69;;;;-1:-1:-1;;;4233:69:1;;6885:2:2;4233:69:1;;;6867:21:2;6924:2;6904:18;;;6897:30;6963:28;6943:18;;;6936:56;7009:18;;4233:69:1;6857:176:2;4233:69:1;4313:13;4397:7;;4339:92;;;-1:-1:-1;;;4339:92:1;;;3539:19:2;4390:4:1;3646:2:2;3642:15;;;-1:-1:-1;;3638:24:2;;;3624:12;;;3617:46;;;;3719:3;3697:16;;;;-1:-1:-1;;;;;;3697:16:2;3679:12;;;3672:65;3771:15;;;;3767:24;3753:12;;;3746:46;3838:14;;3831:22;3826:3;3822:32;3808:12;;;3801:54;3871:12;;;3864:28;;;3908:13;;4339:92:1;;;;;;;;;;;;4329:103;;;;;;4313:119;;4442:17;4462:30;:5;:28;:30::i;:::-;4442:50;;4502:38;4518:9;4529:10;4502:15;:38::i;:::-;-1:-1:-1;;;;;4555:22:1;;;;;;:10;:22;;;;;;;;4551:257;;;4593:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4622:22:1;;4647:5;4622:22;;;:10;:22;;;;;:30;;-1:-1:-1;;4622:30:1;;;4686:9;;4670:13;;:25;4666:42;;;4697:9;:11;;;:9;:11;;;:::i;:::-;;;;;;4666:42;4551:257;;;4739:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4768:22:1;;;;;;4793:4;4768:22;;;;;;;;:29;;-1:-1:-1;;4768:29:1;;;;;;4551:257;4817:5;:7;;;:5;:7;;;:::i;:::-;;;;;;3917:914;;;;;;:::o;4203:227:0:-;4281:7;4301:17;4320:18;4342:27;4353:4;4359:9;4342:10;:27::i;:::-;4300:69;;;;4379:18;4391:5;4379:11;:18::i;:::-;-1:-1:-1;4414:9:0;4203:227;-1:-1:-1;;;4203:227:0:o;7950:265::-;8149:58;;4704:66:2;8149:58:0;;;4692:79:2;4787:12;;;4780:28;;;8019:7:0;;4824:12:2;;8149:58:0;;;;;;;;;;;;8139:69;;;;;;8132:76;;7950:265;;;;:::o;2138:1279::-;2219:7;2228:12;2449:9;:16;2469:2;2449:22;2445:966;;;2738:4;2723:20;;2717:27;2787:4;2772:20;;2766:27;2844:4;2829:20;;2823:27;2487:9;2815:36;2885:25;2896:4;2815:36;2717:27;2766;2885:10;:25::i;:::-;2878:32;;;;;;;;;2445:966;2931:9;:16;2951:2;2931:22;2927:484;;;3200:4;3185:20;;3179:27;3250:4;3235:20;;3229:27;3290:23;3301:4;3179:27;3229;3290:10;:23::i;:::-;3283:30;;;;;;;;2927:484;-1:-1:-1;3360:1:0;;-1:-1:-1;3364:35:0;2927:484;2138:1279;;;;;:::o;443:631::-;520:20;511:5;:29;;;;;;-1:-1:-1;;;511:29:0;;;;;;;;;;507:561;;;556:7;;507:561;616:29;607:5;:38;;;;;;-1:-1:-1;;;607:38:0;;;;;;;;;;603:465;;;661:34;;-1:-1:-1;;;661:34:0;;5826:2:2;661:34:0;;;5808:21:2;5865:2;5845:18;;;5838:30;5904:26;5884:18;;;5877:54;5948:18;;661:34:0;5798:174:2;603:465:0;725:35;716:5;:44;;;;;;-1:-1:-1;;;716:44:0;;;;;;;;;;712:356;;;776:41;;-1:-1:-1;;;776:41:0;;6179:2:2;776:41:0;;;6161:21:2;6218:2;6198:18;;;6191:30;6257:33;6237:18;;;6230:61;6308:18;;776:41:0;6151:181:2;712:356:0;847:30;838:5;:39;;;;;;-1:-1:-1;;;838:39:0;;;;;;;;;;834:234;;;893:44;;-1:-1:-1;;;893:44:0;;7591:2:2;893:44:0;;;7573:21:2;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;-1:-1:-1;;;7720:18:2;;;7713:32;7762:19;;893:44:0;7563:224:2;834:234:0;967:30;958:5;:39;;;;;;-1:-1:-1;;;958:39:0;;;;;;;;;;954:114;;;1013:44;;-1:-1:-1;;;1013:44:0;;8348:2:2;1013:44:0;;;8330:21:2;8387:2;8367:18;;;8360:30;8426:34;8406:18;;;8399:62;-1:-1:-1;;;8477:18:2;;;8470:32;8519:19;;1013:44:0;8320:224:2;954:114:0;443:631;:::o;5654:1603::-;5780:7;;6704:66;6691:79;;6687:161;;;-1:-1:-1;6802:1:0;;-1:-1:-1;6806:30:0;6786:51;;6687:161;6861:1;:7;;6866:2;6861:7;;:18;;;;;6872:1;:7;;6877:2;6872:7;;6861:18;6857:100;;;-1:-1:-1;6911:1:0;;-1:-1:-1;6915:30:0;6895:51;;6857:100;7068:24;;;7051:14;7068:24;;;;;;;;;5448:25:2;;;5521:4;5509:17;;5489:18;;;5482:45;;;;5543:18;;;5536:34;;;5586:18;;;5579:34;;;7068:24:0;;5420:19:2;;7068:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7068:24:0;;-1:-1:-1;;7068:24:0;;;-1:-1:-1;;;;;;;7106:20:0;;7102:101;;7158:1;7162:29;7142:50;;;;;;;7102:101;7221:6;-1:-1:-1;7229:20:0;;-1:-1:-1;5654:1603:0;;;;;;;;:::o;4684:379::-;4794:7;;-1:-1:-1;;;;;4891:75:0;;4992:3;4988:12;;;5002:2;4984:21;5031:25;5042:4;4984:21;5051:1;4891:75;5031:10;:25::i;:::-;5024:32;;;;;;4684:379;;;;;;:::o;14:173:2:-;82:20;;-1:-1:-1;;;;;131:31:2;;121:42;;111:2;;177:1;174;167:12;192:1222;;274:4;318:3;313:2;305:6;301:15;297:25;287:2;;340:5;333;326:20;287:2;380:6;367:20;406:4;429:18;466:2;462;459:10;456:2;;;472:18;;:::i;:::-;512:37;545:2;540;536;532:11;528:20;512:37;:::i;:::-;583:15;;;614:12;;;;646:15;;;679:5;693:692;707:2;704:1;701:9;693:692;;;787:3;774:17;766:6;762:30;832:3;827:2;823;819:11;815:21;805:2;;854:5;847;840:20;805:2;906;902;898:11;885:25;933:2;958;954;951:10;948:2;;;964:18;;:::i;:::-;1012:51;1036:11;;;-1:-1:-1;;1032:25:2;1028:34;;1012:51;:::i;:::-;1092:2;1083:7;1076:19;1136:3;1131:2;1126;1122;1118:11;1114:20;1111:29;1108:2;;;1157:5;1150;1143:20;1108:2;1222;1217;1213;1209:11;1204:2;1195:7;1191:16;1178:47;1249:16;;;1245:25;;1238:40;;;-1:-1:-1;1291:20:2;;-1:-1:-1;1331:12:2;;;;1363;;;;725:1;718:9;693:692;;;-1:-1:-1;1403:5:2;;254:1160;-1:-1:-1;;;;;;;;;254:1160:2:o;1419:196::-;;1531:2;1519:9;1510:7;1506:23;1502:32;1499:2;;;1552:6;1544;1537:22;1499:2;1580:29;1599:9;1580:29;:::i;:::-;1570:39;1489:126;-1:-1:-1;;;1489:126:2:o;1620:689::-;;;;;1814:3;1802:9;1793:7;1789:23;1785:33;1782:2;;;1836:6;1828;1821:22;1782:2;1864:29;1883:9;1864:29;:::i;:::-;1854:39;;1943:2;1932:9;1928:18;1915:32;1990:5;1983:13;1976:21;1969:5;1966:32;1956:2;;2017:6;2009;2002:22;1956:2;2045:5;-1:-1:-1;2097:2:2;2082:18;;2069:32;;-1:-1:-1;2152:2:2;2137:18;;2124:32;2179:18;2168:30;;2165:2;;;2216:6;2208;2201:22;2165:2;2244:59;2295:7;2286:6;2275:9;2271:22;2244:59;:::i;:::-;2234:69;;;1772:537;;;;;;;:::o;2314:443::-;;;2477:2;2465:9;2456:7;2452:23;2448:32;2445:2;;;2498:6;2490;2483:22;2445:2;2539:9;2526:23;2516:33;;2600:2;2589:9;2585:18;2572:32;2627:18;2619:6;2616:30;2613:2;;;2664:6;2656;2649:22;2613:2;2692:59;2743:7;2734:6;2723:9;2719:22;2692:59;:::i;:::-;2682:69;;;2435:322;;;;;:::o;2762:511::-;;;;2942:2;2930:9;2921:7;2917:23;2913:32;2910:2;;;2963:6;2955;2948:22;2910:2;3004:9;2991:23;2981:33;;3061:2;3050:9;3046:18;3033:32;3023:42;;3116:2;3105:9;3101:18;3088:32;3143:18;3135:6;3132:30;3129:2;;;3180:6;3172;3165:22;3129:2;3208:59;3259:7;3250:6;3239:9;3235:22;3208:59;:::i;:::-;3198:69;;;2900:373;;;;;:::o;7792:349::-;7994:2;7976:21;;;8033:2;8013:18;;;8006:30;8072:27;8067:2;8052:18;;8045:55;8132:2;8117:18;;7966:175::o;9974:275::-;10045:2;10039:9;10110:2;10091:13;;-1:-1:-1;;10087:27:2;10075:40;;10145:18;10130:34;;10166:22;;;10127:62;10124:2;;;10192:18;;:::i;:::-;10228:2;10221:22;10019:230;;-1:-1:-1;10019:230:2:o;10254:136::-;;10321:5;10311:2;;10330:18;;:::i;:::-;-1:-1:-1;;;10366:18:2;;10301:89::o;10395:135::-;;-1:-1:-1;;10455:17:2;;10452:2;;;10475:18;;:::i;:::-;-1:-1:-1;10522:1:2;10511:13;;10442:88::o;10535:127::-;10596:10;10591:3;10587:20;10584:1;10577:31;10627:4;10624:1;10617:15;10651:4;10648:1;10641:15;10667:127;10728:10;10723:3;10719:20;10716:1;10709:31;10759:4;10756:1;10749:15;10783:4;10780:1;10773:15

Swarm Source

ipfs://8859070416ce9cbc252fdfbd56c8968d4b4423286bfe38c9b13a95efffa3db1e

Block Transaction Gas Used Reward
view all blocks validated

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.