Contract 0x87c06a8857c121c8096ba588865b344ae0c3703f

Contract Overview

Balance:
0 HT
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x2e851bfb17aa8642cc99aed92e431a0df78a20e0f317a7fda8ddd69981f988efReceive Request ...120048812022-01-23 2:36:1622 secs ago0x50a8acc1cc2a45dc9b2b85bee7179d5d1d3d34d3 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0xb272fca36e5e651f2b92653d7adf57b660ab9598c9884214b8a7fcad9bd0aeb4Receive Request ...120047672022-01-23 2:30:346 mins ago0x8ac272527dae883f82d7031901939f4a10e8881e IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824473
0xeae443eaee174e56a6e9033e573206a5319f87a8d34cbbe86b6c98f24bd84003Receive Request ...120047022022-01-23 2:27:199 mins ago0xa9248a9c0988eca5765bfff1f5d8c86a96e6bfa7 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824113
0x4f3d4e7790d0cf723dded607497cda2824431dceda17ea483155923c4a9045ffReceive Request ...120045832022-01-23 2:21:2215 mins ago0x6eb7e119f6e851d8dacf2f4b5c7bc254385b93cc IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0001402593
0x38ebf79e01d3ea9c9ef7a30c6520947cb52ea34f5465476441b098a9a40816f1Receive Request ...120045822022-01-23 2:21:1915 mins ago0x8ac272527dae883f82d7031901939f4a10e8881e IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824473
0xd89bcaae22c25e7861235db1ae5180a29d59493576eba6e7acf9be52bedb6e18Receive Request ...120043582022-01-23 2:10:0726 mins ago0x20c1ebfa7f3be3216ccdf381107a6c9666e94d23 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002880693
0xa98840ef917df78b59d0229f470d57d928afffb1764854b9840a27b7a2c7b2e0Receive Request ...120043072022-01-23 2:07:3429 mins ago0x1d622b1f0901590410dbb1c3fbbc95b3a642d92d IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0xa48aa365d77705dd23acf73ab4790432c30c5965e576a2d9bd14f6e72f27f9f8Receive Request ...120043022022-01-23 2:07:1929 mins ago0x8ac272527dae883f82d7031901939f4a10e8881e IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003336753
0x0f908d49090b3acc00b15878b7ca9cdaf0d4376284ce0846972e4d387d2acfa2Receive Request ...120042372022-01-23 2:04:0432 mins ago0x20c1ebfa7f3be3216ccdf381107a6c9666e94d23 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824473
0xa2b5b6046cd363a8a544370ae87879e323c9d441e6ed36fca0168f2967b745bbReceive Request ...120042182022-01-23 2:03:0733 mins ago0x8ac272527dae883f82d7031901939f4a10e8881e IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824473
0x0038ea64d099e8012684b78b9f0bfcf512ba2dc370302b109e1e7333268dbf5eReceive Request ...120041872022-01-23 2:01:3435 mins ago0x50a8acc1cc2a45dc9b2b85bee7179d5d1d3d34d3 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824473
0x3377acddd1f9dda7ed026b3fa9d8e2ec2f11f9ab80d69c95d7ee01e7df4760f4Receive Request ...120041432022-01-23 1:59:2237 mins ago0x20c1ebfa7f3be3216ccdf381107a6c9666e94d23 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003393693
0x64e3d74e45a6682cfb04e5bf79448eed14b2239e9854bb297e9de0775c0b81f2Receive Request ...120041262022-01-23 1:58:3138 mins ago0x50a8acc1cc2a45dc9b2b85bee7179d5d1d3d34d3 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003393333
0x3f60b204bc2a29df44391169e8ea90c8f54661261b2903fba492761cfb0a8fc8Receive Request ...120040772022-01-23 1:56:0440 mins ago0x1d622b1f0901590410dbb1c3fbbc95b3a642d92d IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0xaf202ae4ddf9ac3abfc5ac84dbc7c4b1c901de2efd08202c4cc5c1d00fa567fbReceive Request ...120039132022-01-23 1:47:5248 mins ago0x6eb7e119f6e851d8dacf2f4b5c7bc254385b93cc IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824473
0xe136e88a3e47f3edcc74191e3c62703dd1911b5b75db4756216108290c0708d8Receive Request ...120038772022-01-23 1:46:0450 mins ago0xa9248a9c0988eca5765bfff1f5d8c86a96e6bfa7 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0001402593
0x69d5e05fe9516b202f87a0be1978e022e231c1fde95930b409f1d57b6a13ef17Receive Request ...120038772022-01-23 1:46:0450 mins ago0x1d622b1f0901590410dbb1c3fbbc95b3a642d92d IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0x18078d85a7cb65e589576e4c14f15d4d809a1d733bee61dc454bcb5470e7f338Receive Request ...120037672022-01-23 1:40:3456 mins ago0x8ac272527dae883f82d7031901939f4a10e8881e IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0xd2e83fc91185440f247075d4e2641d1b481a5d65ea235c736c8bb7010a5fd875Receive Request ...120036622022-01-23 1:35:191 hr 1 min ago0xa9248a9c0988eca5765bfff1f5d8c86a96e6bfa7 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0002824113
0x50ef366f552a2f5d350737e40b8c730b870f7d500fab043dfb407bbdb265a0e9Receive Request ...120036272022-01-23 1:33:341 hr 3 mins ago0x8ac272527dae883f82d7031901939f4a10e8881e IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0x83eb9ba4957a07d81b0b8f36241a6e12363047f3228126f36c01019302dabc26Receive Request ...120035772022-01-23 1:31:041 hr 5 mins ago0x6eb7e119f6e851d8dacf2f4b5c7bc254385b93cc IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0xde1303e11353f88bf7453e4d38af72ca3dc8fbac30123abffc250c3a9ece25d9Receive Request ...120035222022-01-23 1:28:191 hr 8 mins ago0xa9248a9c0988eca5765bfff1f5d8c86a96e6bfa7 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003394053
0x53bff879ae0c535b440dfbf4f595911c93ec994e95159060e99f2b4b09c34778Receive Request ...120034882022-01-23 1:26:371 hr 10 mins ago0x20c1ebfa7f3be3216ccdf381107a6c9666e94d23 IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0x01f977c15df0c539f29d45f23e73290b8072257d99941eb9e587785402d6a33eReceive Request ...120034572022-01-23 1:25:041 hr 11 mins ago0x6eb7e119f6e851d8dacf2f4b5c7bc254385b93cc IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
0x6acb35e28b676bffd45eb8562a3eab189df0b0613e050a4de2bbaec5e83f65b7Receive Request ...120034022022-01-23 1:22:191 hr 14 mins ago0x1d622b1f0901590410dbb1c3fbbc95b3a642d92d IN 0x87c06a8857c121c8096ba588865b344ae0c3703f0 HT0.0003337473
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2e851bfb17aa8642cc99aed92e431a0df78a20e0f317a7fda8ddd69981f988ef120048812022-01-23 2:36:1622 secs ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0x2e851bfb17aa8642cc99aed92e431a0df78a20e0f317a7fda8ddd69981f988ef120048812022-01-23 2:36:1622 secs ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0xb272fca36e5e651f2b92653d7adf57b660ab9598c9884214b8a7fcad9bd0aeb4120047672022-01-23 2:30:346 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0xb272fca36e5e651f2b92653d7adf57b660ab9598c9884214b8a7fcad9bd0aeb4120047672022-01-23 2:30:346 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0xeae443eaee174e56a6e9033e573206a5319f87a8d34cbbe86b6c98f24bd84003120047022022-01-23 2:27:199 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0xeae443eaee174e56a6e9033e573206a5319f87a8d34cbbe86b6c98f24bd84003120047022022-01-23 2:27:199 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0x4f3d4e7790d0cf723dded607497cda2824431dceda17ea483155923c4a9045ff120045832022-01-23 2:21:2215 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0x4f3d4e7790d0cf723dded607497cda2824431dceda17ea483155923c4a9045ff120045832022-01-23 2:21:2215 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0x38ebf79e01d3ea9c9ef7a30c6520947cb52ea34f5465476441b098a9a40816f1120045822022-01-23 2:21:1915 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0x38ebf79e01d3ea9c9ef7a30c6520947cb52ea34f5465476441b098a9a40816f1120045822022-01-23 2:21:1915 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0xd89bcaae22c25e7861235db1ae5180a29d59493576eba6e7acf9be52bedb6e18120043582022-01-23 2:10:0726 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0xd1b2536eab9c1b20d088ed9cc02fd67ae7b324ff0 HT
0xd89bcaae22c25e7861235db1ae5180a29d59493576eba6e7acf9be52bedb6e18120043582022-01-23 2:10:0726 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0xa98840ef917df78b59d0229f470d57d928afffb1764854b9840a27b7a2c7b2e0120043072022-01-23 2:07:3429 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0xa98840ef917df78b59d0229f470d57d928afffb1764854b9840a27b7a2c7b2e0120043072022-01-23 2:07:3429 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0xa48aa365d77705dd23acf73ab4790432c30c5965e576a2d9bd14f6e72f27f9f8120043022022-01-23 2:07:1929 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0xa48aa365d77705dd23acf73ab4790432c30c5965e576a2d9bd14f6e72f27f9f8120043022022-01-23 2:07:1929 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0x0f908d49090b3acc00b15878b7ca9cdaf0d4376284ce0846972e4d387d2acfa2120042372022-01-23 2:04:0432 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0x0f908d49090b3acc00b15878b7ca9cdaf0d4376284ce0846972e4d387d2acfa2120042372022-01-23 2:04:0432 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0xa2b5b6046cd363a8a544370ae87879e323c9d441e6ed36fca0168f2967b745bb120042182022-01-23 2:03:0733 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0xa2b5b6046cd363a8a544370ae87879e323c9d441e6ed36fca0168f2967b745bb120042182022-01-23 2:03:0733 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0x0038ea64d099e8012684b78b9f0bfcf512ba2dc370302b109e1e7333268dbf5e120041872022-01-23 2:01:3435 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x89bb502d8d52b8b67454526ee2c9d50a0b8e97f60 HT
0x0038ea64d099e8012684b78b9f0bfcf512ba2dc370302b109e1e7333268dbf5e120041872022-01-23 2:01:3435 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0x3377acddd1f9dda7ed026b3fa9d8e2ec2f11f9ab80d69c95d7ee01e7df4760f4120041432022-01-23 1:59:2237 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0xd1b2536eab9c1b20d088ed9cc02fd67ae7b324ff0 HT
0x3377acddd1f9dda7ed026b3fa9d8e2ec2f11f9ab80d69c95d7ee01e7df4760f4120041432022-01-23 1:59:2237 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0x0f27404cc6495526e12d4e918c3d78e92a8c31540 HT
0x64e3d74e45a6682cfb04e5bf79448eed14b2239e9854bb297e9de0775c0b81f2120041262022-01-23 1:58:3138 mins ago 0x87c06a8857c121c8096ba588865b344ae0c3703f0xd1b2536eab9c1b20d088ed9cc02fd67ae7b324ff0 HT
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bridge

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at hecoinfo.com on 2021-12-25
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * @notice  List of registred nodes
 * 
 * @dev This should be implemented every part of bridge.
 */
interface ListNodeInterface {
    /**
    *  @notice Should has prmission for invoke bridge
    */
    function checkPermissionTrustList(address node) external view returns (bool);
}


/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}



/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}




abstract contract RelayRecipient is Context, Ownable {
   
    /*
     * Forwarder singleton we accept calls from
     */
    address private _trustedForwarder;

    function trustedForwarder() public virtual view returns (address){
        return _trustedForwarder;
    }

    function _setTrustedForwarder(address _forwarder) internal {
        _trustedForwarder = _forwarder;
    }

    function isTrustedForwarder(address forwarder) public virtual view returns(bool) {
        return forwarder == _trustedForwarder;
    }

    /**
     * return the sender of this call.
     * if the call came through our trusted forwarder, return the original sender.
     * otherwise, return `msg.sender`.
     * should be used in the contract anywhere instead of msg.sender
     */
    function _msgSender() internal override virtual view returns (address ret) {
        if (msg.data.length >= 20 && isTrustedForwarder(msg.sender)) {
            // At this point we know that the sender is a trusted forwarder,
            // so we trust that the last bytes of msg.data are the verified sender address.
            // extract sender address from the end of msg.data
            assembly {
                ret := shr(96,calldataload(sub(calldatasize(),20)))
            }
        } else {
            ret = msg.sender;
        }
    }

    /**
     * return the msg.data of this call.
     * if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes
     * of the msg.data - so this method will strip those 20 bytes off.
     * otherwise (if the call was made directly and not through the forwarder), return `msg.data`
     * should be used in the contract instead of msg.data, where this difference matters.
     */
    function _msgData() internal override virtual view returns (bytes calldata ret) {
        if (msg.data.length >= 20 && isTrustedForwarder(msg.sender)) {
            return msg.data[0:msg.data.length-20];
        } else {
            return msg.data;
        }
    }

}




contract BridgeCore is RelayRecipient {

    /* hotfix: due error go run wrappers-builder/main.go --json "hardhat/artifacts/contracts/bridge"/Bridge.sol --pkg wrappers --out wrappers
     * FATA[0000] duplicated identifier "_owner"(normalized "Owner"), use --alias for renaming 
     * Should delete in future
     */
    //address public _owner;
    address public _listNode;

    /* bridge => nonce */
    mapping(address => mapping(address => uint256)) internal nonce;
    mapping(address => mapping(address => address)) internal contractBind;
    mapping(address => bool) private is_in;

    event OracleRequest(
        string  requestType,
        address bridge,
        bytes32 requestId,
        bytes   selector,
        address receiveSide,
        address oppositeBridge,
        uint chainid
    );

    event ReceiveRequest(bytes32 reqId, address receiveSide, address bridgeFrom, address senderSide);

    /*modifier onlyOwner() {
        require(msg.sender == _owner, "Ownable: caller is not the owner");
        _;
    }*/

    /**
       Mandatory for participants who wants to use a own contracts
       1. Contract A (chain A) should be bind with Contract B (chain B) only once! It's not allowed to  switch Contract A (chain A) to Contract C (chain B). This mandatory
       for prevent malicious behaviour.
       2. Contract A (chain A) could be bind with several contracts where every contract from another chain. For ex: Contract A (chain A) --> Contract B (chain B) + Contract A (chain A) --> Contract B' (chain B') ... etc
    */
    function addContractBind(address from, address oppositeBridge, address to) external {
        require(to   != address(0), "NULL ADDRESS TO");
        require(from != address(0), "NULL ADDRESS FROM");
        require(is_in[to] == false, "TO ALREADY EXIST");
        // for prevent malicious behaviour like switching between older and newer contracts
        require(contractBind[from][oppositeBridge] == address(0), "UPDATE DOES NOT ALLOWED");
        contractBind[from][oppositeBridge] = to;
        is_in[to] = true;

    }

    function prepareRqId(bytes memory  _selector, address oppositeBridge, uint256 chainId, address receiveSide) internal view returns (bytes32) {
        bytes32 requestId = keccak256(abi.encodePacked(nonce[oppositeBridge][receiveSide], _selector, chainId));
        return requestId;
    }
}



//TODO: onlyTrustedNode has worse filled data. I.e. In func NodeList#addNode the golang node registers himself
// and this means every node who wants to start up can add himself in onlyTrustedNode list.
contract Bridge is BridgeCore {
    string public versionRecipient = "2.2.3";

    constructor (address listNode, address forwarder) {
        _listNode = listNode;

        /* hotfix: due error go run wrappers-builder/main.go --json "hardhat/artifacts/contracts/bridge"/Bridge.sol --pkg wrappers --out wrappers
         * FATA[0000] duplicated identifier "_owner"(normalized "Owner"), use --alias for renaming 
         * Should delete in future
         */
        //_owner    = msg.sender; 
        _setTrustedForwarder(forwarder);
    }

    modifier onlyTrustedNode() {
        require(ListNodeInterface(_listNode).checkPermissionTrustList(msg.sender) == true, "Only trusted node can invoke");
        _;
    }

    modifier onlyTrustedContract(address receiveSide, address oppositeBridge) {
        require(contractBind[msg.sender][oppositeBridge] == receiveSide, "UNTRUSTED CONTRACT");
        _;
    }

    function setTrustedForwarder(address _forwarder) external onlyOwner {
       return _setTrustedForwarder(_forwarder);
    }

    function transmitRequestV2(
        bytes memory _selector,
        address receiveSide,
        address oppositeBridge,
        uint256 chainId
    )
        external
        onlyTrustedContract(receiveSide, oppositeBridge)
        returns (bytes32){

        bytes32 requestId = prepareRqId(_selector, oppositeBridge, chainId, receiveSide);
        nonce[oppositeBridge][receiveSide] = nonce[oppositeBridge][receiveSide] + 1;
        emit OracleRequest("setRequest", address(this), requestId, _selector, receiveSide, oppositeBridge, chainId);
        return requestId;
    }

    function receiveRequestV2(
        bytes32 reqId,
        bytes memory b,
        address receiveSide,
        address bridgeFrom
    ) external onlyTrustedNode {

        address senderSide = contractBind[receiveSide][bridgeFrom];
        bytes32 recreateReqId = keccak256(abi.encodePacked(nonce[bridgeFrom][senderSide], b, block.chainid));
        //TODO refactor check synced crosschain nonces
//        require(reqId == recreateReqId, 'CONSISTENCY FAILED');
        (bool success, bytes memory data) = receiveSide.call(b);
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'FAILED');
        nonce[bridgeFrom][senderSide] = nonce[bridgeFrom][senderSide] + 1;

        emit ReceiveRequest(reqId, receiveSide, bridgeFrom, senderSide);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"listNode","type":"address"},{"internalType":"address","name":"forwarder","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"requestType","type":"string"},{"indexed":false,"internalType":"address","name":"bridge","type":"address"},{"indexed":false,"internalType":"bytes32","name":"requestId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"selector","type":"bytes"},{"indexed":false,"internalType":"address","name":"receiveSide","type":"address"},{"indexed":false,"internalType":"address","name":"oppositeBridge","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainid","type":"uint256"}],"name":"OracleRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"reqId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiveSide","type":"address"},{"indexed":false,"internalType":"address","name":"bridgeFrom","type":"address"},{"indexed":false,"internalType":"address","name":"senderSide","type":"address"}],"name":"ReceiveRequest","type":"event"},{"inputs":[],"name":"_listNode","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"oppositeBridge","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"addContractBind","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"reqId","type":"bytes32"},{"internalType":"bytes","name":"b","type":"bytes"},{"internalType":"address","name":"receiveSide","type":"address"},{"internalType":"address","name":"bridgeFrom","type":"address"}],"name":"receiveRequestV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_forwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_selector","type":"bytes"},{"internalType":"address","name":"receiveSide","type":"address"},{"internalType":"address","name":"oppositeBridge","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"transmitRequestV2","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60c06040526005608081905264322e322e3360d81b60a09081526200002891600691906200014c565b503480156200003657600080fd5b50604051620011503803806200115083398101604081905262000059916200020a565b600062000065620000dd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b0319166001600160a01b038416179055620000d58162000113565b50506200027e565b600060143610801590620000f75750620000f73362000135565b156200010d575060131936013560601c62000110565b50335b90565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b038281169116145b919050565b8280546200015a9062000241565b90600052602060002090601f0160209004810192826200017e5760008555620001c9565b82601f106200019957805160ff1916838001178555620001c9565b82800160010185558215620001c9579182015b82811115620001c9578251825591602001919060010190620001ac565b50620001d7929150620001db565b5090565b5b80821115620001d75760008155600101620001dc565b80516001600160a01b03811681146200014757600080fd5b600080604083850312156200021d578182fd5b6200022883620001f2565b91506200023860208401620001f2565b90509250929050565b6002810460018216806200025657607f821691505b602082108114156200027857634e487b7160e01b600052602260045260246000fd5b50919050565b610ec2806200028e6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b1461012b578063aa764d7c14610133578063b37d24e81461013b578063da7422281461014e578063dc8958ba14610161578063f2fde38b14610174576100a9565b8063486ff0cd146100ae578063572b6c05146100cc5780636cebc9c2146100ec578063715018a61461010c5780637da0a87714610116575b600080fd5b6100b6610187565b6040516100c39190610bb8565b60405180910390f35b6100df6100da3660046109a7565b610215565b6040516100c39190610b7d565b6100ff6100fa366004610a90565b61022c565b6040516100c39190610b88565b610114610337565b005b61011e6103c0565b6040516100c39190610b69565b61011e6103d0565b61011e6103df565b610114610149366004610a2a565b6103ee565b61011461015c3660046109a7565b610636565b61011461016f3660046109c8565b610681565b6101146101823660046109a7565b61079f565b6006805461019490610e3b565b80601f01602080910402602001604051908101604052809291908181526020018280546101c090610e3b565b801561020d5780601f106101e25761010080835404028352916020019161020d565b820191906000526020600020905b8154815290600101906020018083116101f057829003601f168201915b505050505081565b6001546001600160a01b038281169116145b919050565b3360009081526004602090815260408083206001600160a01b03808716855292528220548591859181169083161461027f5760405162461bcd60e51b815260040161027690610ca9565b60405180910390fd5b600061028d8887878a61085f565b6001600160a01b038088166000908152600360209081526040808320938c16835292905220549091506102c1906001610de7565b6001600160a01b038088166000908152600360209081526040808320938c16835292905281902091909155517f5c3fb349179e8d8347e69078d6b9912b9724461c39bf776a56925267afc55aff9061032490309084908c908c908c908c90610d7e565b60405180910390a1979650505050505050565b61033f6108bd565b6001600160a01b03166103506103d0565b6001600160a01b0316146103765760405162461bcd60e51b815260040161027690610cd5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001546001600160a01b03165b90565b6000546001600160a01b031690565b6002546001600160a01b031681565b60025460405163461a42e760e01b81526001600160a01b039091169063461a42e79061041e903390600401610b69565b60206040518083038186803b15801561043657600080fd5b505afa15801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e9190610a0a565b151560011461048f5760405162461bcd60e51b815260040161027690610bf5565b6001600160a01b03808316600090815260046020908152604080832085851684528252808320546003835281842094168084529382528083205490516104d9928891469101610b3c565b604051602081830303815290604052805190602001209050600080856001600160a01b03168760405161050c9190610b20565b6000604051808303816000865af19150503d8060008114610549576040519150601f19603f3d011682016040523d82523d6000602084013e61054e565b606091505b50915091508180156105785750805115806105785750808060200190518101906105789190610a0a565b6105945760405162461bcd60e51b815260040161027690610d5e565b6001600160a01b038086166000908152600360209081526040808320938816835292905220546105c5906001610de7565b6001600160a01b038087166000908152600360209081526040808320938916835292905281902091909155517f87565ac85e588baf96cb01bd0fb239c4ab035e0d56eb65f9d1c3d68b80ccfd2990610624908a90899089908990610b91565b60405180910390a15050505050505050565b61063e6108bd565b6001600160a01b031661064f6103d0565b6001600160a01b0316146106755760405162461bcd60e51b815260040161027690610cd5565b61067e816108ed565b50565b6001600160a01b0381166106a75760405162461bcd60e51b815260040161027690610d35565b6001600160a01b0383166106cd5760405162461bcd60e51b815260040161027690610d0a565b6001600160a01b03811660009081526005602052604090205460ff16156107065760405162461bcd60e51b815260040161027690610bcb565b6001600160a01b0383811660009081526004602090815260408083208685168452909152902054161561074b5760405162461bcd60e51b815260040161027690610c72565b6001600160a01b03928316600090815260046020908152604080832094861683529381528382208054959093166001600160a01b03199095168517909255928352600590529020805460ff19166001179055565b6107a76108bd565b6001600160a01b03166107b86103d0565b6001600160a01b0316146107de5760405162461bcd60e51b815260040161027690610cd5565b6001600160a01b0381166108045760405162461bcd60e51b815260040161027690610c2c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808416600090815260036020908152604080832093851683529281528282205492519192839261089b928991889101610b3c565b60408051808303601f1901815291905280516020909101209695505050505050565b6000601436108015906108d457506108d433610215565b156108e8575060131936013560601c6103cd565b503390565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461022757600080fd5b600082601f830112610936578081fd5b813567ffffffffffffffff8082111561095157610951610e76565b604051601f8301601f19168101602001828111828210171561097557610975610e76565b60405282815284830160200186101561098c578384fd5b82602086016020830137918201602001929092529392505050565b6000602082840312156109b8578081fd5b6109c18261090f565b9392505050565b6000806000606084860312156109dc578182fd5b6109e58461090f565b92506109f36020850161090f565b9150610a016040850161090f565b90509250925092565b600060208284031215610a1b578081fd5b815180151581146109c1578182fd5b60008060008060808587031215610a3f578081fd5b84359350602085013567ffffffffffffffff811115610a5c578182fd5b610a6887828801610926565b935050610a776040860161090f565b9150610a856060860161090f565b905092959194509250565b60008060008060808587031215610aa5578384fd5b843567ffffffffffffffff811115610abb578485fd5b610ac787828801610926565b945050610ad66020860161090f565b9250610ae46040860161090f565b9396929550929360600135925050565b60008151808452610b0c816020860160208601610e0b565b601f01601f19169290920160200192915050565b60008251610b32818460208701610e0b565b9190910192915050565b60008482528351610b54816020850160208801610e0b565b60209201918201929092526040019392505050565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9384526001600160a01b039283166020850152908216604084015216606082015260800190565b6000602082526109c16020830184610af4565b60208082526010908201526f1513c8105314915051164811561254d560821b604082015260600190565b6020808252601c908201527f4f6e6c792074727573746564206e6f64652063616e20696e766f6b6500000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526017908201527f55504441544520444f4553204e4f5420414c4c4f574544000000000000000000604082015260600190565b602080825260129082015271155395149554d511510810d3d395149050d560721b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152704e554c4c20414444524553532046524f4d60781b604082015260600190565b6020808252600f908201526e4e554c4c204144445245535320544f60881b604082015260600190565b60208082526006908201526511905253115160d21b604082015260600190565b600060e08252600a60e0830152691cd95d14995c5d595cdd60b21b61010083015261012060018060a01b03808a166020850152886040850152816060850152610dc982850189610af4565b96811660808501529490941660a08301525060c00152509392505050565b60008219821115610e0657634e487b7160e01b81526011600452602481fd5b500190565b60005b83811015610e26578181015183820152602001610e0e565b83811115610e35576000848401525b50505050565b600281046001821680610e4f57607f821691505b60208210811415610e7057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220076b8bd8718b7fed012c719420806c04c9dcdd6ac702504460976974a449e83664736f6c634300080000330000000000000000000000000f27404cc6495526e12d4e918c3d78e92a8c31540000000000000000000000000000000000000000000000000000000000000000

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

0000000000000000000000000f27404cc6495526e12d4e918c3d78e92a8c31540000000000000000000000000000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000f27404cc6495526e12d4e918c3d78e92a8c3154
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

8202:2456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8239:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3878:137;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9274:590::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2913:148::-;;;:::i;:::-;;3646:108;;;:::i;:::-;;;;;;;:::i;2262:87::-;;;:::i;5918:24::-;;;:::i;9872:783::-;;;;;;:::i;:::-;;:::i;9141:125::-;;;;;;:::i;:::-;;:::i;7156:533::-;;;;;;:::i;:::-;;:::i;3216:244::-;;;;;;:::i;:::-;;:::i;8239:40::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3878:137::-;3990:17;;-1:-1:-1;;;;;3977:30:0;;;3990:17;;3977:30;3878:137;;;;:::o;9274:590::-;9048:10;9524:7;9035:24;;;:12;:24;;;;;;;;-1:-1:-1;;;;;9035:40:0;;;;;;;;;;9477:11;;9490:14;;9035:40;;:55;;;;9027:86;;;;-1:-1:-1;;;9027:86:0;;;;;;;:::i;:::-;;;;;;;;;9545:17:::1;9565:60;9577:9;9588:14;9604:7;9613:11;9565;:60::i;:::-;-1:-1:-1::0;;;;;9673:21:0;;::::1;;::::0;;;:5:::1;:21;::::0;;;;;;;:34;;::::1;::::0;;;;;;;9545:80;;-1:-1:-1;9673:38:0::1;::::0;9710:1:::1;9673:38;:::i;:::-;-1:-1:-1::0;;;;;9636:21:0;;::::1;;::::0;;;:5:::1;:21;::::0;;;;;;;:34;;::::1;::::0;;;;;;;;:75;;;;9727:102;::::1;::::0;::::1;::::0;9763:4:::1;::::0;9770:9;;9781;;9658:11;;9642:14;;9821:7;;9727:102:::1;:::i;:::-;;;;;;;;9847:9:::0;9274:590;-1:-1:-1;;;;;;;9274:590:0:o;2913:148::-;2493:12;:10;:12::i;:::-;-1:-1:-1;;;;;2482:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2482:23:0;;2474:68;;;;-1:-1:-1;;;2474:68:0;;;;;;;:::i;:::-;3020:1:::1;3004:6:::0;;2983:40:::1;::::0;-1:-1:-1;;;;;3004:6:0;;::::1;::::0;2983:40:::1;::::0;3020:1;;2983:40:::1;3051:1;3034:19:::0;;-1:-1:-1;;;;;;3034:19:0::1;::::0;;2913:148::o;3646:108::-;3729:17;;-1:-1:-1;;;;;3729:17:0;3646:108;;:::o;2262:87::-;2308:7;2335:6;-1:-1:-1;;;;;2335:6:0;2262:87;:::o;5918:24::-;;;-1:-1:-1;;;;;5918:24:0;;:::o;9872:783::-;8826:9;;8808:65;;-1:-1:-1;;;8808:65:0;;-1:-1:-1;;;;;8826:9:0;;;;8808:53;;:65;;8862:10;;8808:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;8877:4;8808:73;8800:114;;;;-1:-1:-1;;;8800:114:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10072:25:0;;::::1;10051:18;10072:25:::0;;;:12:::1;:25;::::0;;;;;;;:37;;::::1;::::0;;;;;;;;10171:5:::1;:17:::0;;;;;10072:37;::::1;10171:29:::0;;;;;;;;;;10154:65;;::::1;::::0;10202:1;;10205:13:::1;::::0;10154:65:::1;;:::i;:::-;;;;;;;;;;;;;10144:76;;;;;;10120:100;;10354:12;10368:17:::0;10389:11:::1;-1:-1:-1::0;;;;;10389:16:0::1;10406:1;10389:19;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10353:55;;;;10427:7;:57;;;;-1:-1:-1::0;10439:11:0;;:16;;:44:::1;;;10470:4;10459:24;;;;;;;;;;;;:::i;:::-;10419:76;;;;-1:-1:-1::0;;;10419:76:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10538:17:0;;::::1;;::::0;;;:5:::1;:17;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:33:::1;::::0;10570:1:::1;10538:33;:::i;:::-;-1:-1:-1::0;;;;;10506:17:0;;::::1;;::::0;;;:5:::1;:17;::::0;;;;;;;:29;;::::1;::::0;;;;;;;;:65;;;;10589:58;::::1;::::0;::::1;::::0;10604:5;;10611:11;;10512:10;;10524;;10589:58:::1;:::i;:::-;;;;;;;;8925:1;;;;9872:783:::0;;;;:::o;9141:125::-;2493:12;:10;:12::i;:::-;-1:-1:-1;;;;;2482:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2482:23:0;;2474:68;;;;-1:-1:-1;;;2474:68:0;;;;;;;:::i;:::-;9226:32:::1;9247:10;9226:20;:32::i;:::-;9141:125:::0;:::o;7156:533::-;-1:-1:-1;;;;;7259:18:0;;7251:46;;;;-1:-1:-1;;;7251:46:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7316:18:0;;7308:48;;;;-1:-1:-1;;;7308:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7375:9:0;;;;;;:5;:9;;;;;;;;:18;7367:47;;;;-1:-1:-1;;;7367:47:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7526:18:0;;;7572:1;7526:18;;;:12;:18;;;;;;;;:34;;;;;;;;;;;;:48;7518:84;;;;-1:-1:-1;;;7518:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7613:18:0;;;;;;;:12;:18;;;;;;;;:34;;;;;;;;;;;:39;;;;;;-1:-1:-1;;;;;;7613:39:0;;;;;;;;7663:9;;;:5;:9;;;;:16;;-1:-1:-1;;7663:16:0;7613:39;7663:16;;;7156:533::o;3216:244::-;2493:12;:10;:12::i;:::-;-1:-1:-1;;;;;2482:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2482:23:0;;2474:68;;;;-1:-1:-1;;;2474:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3305:22:0;::::1;3297:73;;;;-1:-1:-1::0;;;3297:73:0::1;;;;;;;:::i;:::-;3407:6;::::0;;3386:38:::1;::::0;-1:-1:-1;;;;;3386:38:0;;::::1;::::0;3407:6;::::1;::::0;3386:38:::1;::::0;::::1;3435:6;:17:::0;;-1:-1:-1;;;;;;3435:17:0::1;-1:-1:-1::0;;;;;3435:17:0;;;::::1;::::0;;;::::1;::::0;;3216:244::o;7697:289::-;-1:-1:-1;;;;;7895:21:0;;;7828:7;7895:21;;;:5;:21;;;;;;;;:34;;;;;;;;;;;;7878:72;;7828:7;;;;7878:72;;7931:9;;7942:7;;7878:72;;:::i;:::-;;;;;;;-1:-1:-1;;7878:72:0;;;;;;7868:83;;7878:72;7868:83;;;;;7697:289;-1:-1:-1;;;;;;7697:289:0:o;4275:558::-;4337:11;4384:2;4365:8;:21;;;;:55;;;4390:30;4409:10;4390:18;:30::i;:::-;4361:465;;;-1:-1:-1;;;4731:14:0;4727:22;4714:36;4711:2;4707:44;4681:85;;;-1:-1:-1;4804:10:0;4275:558;:::o;3762:108::-;3832:17;:30;;-1:-1:-1;;;;;;3832:30:0;-1:-1:-1;;;;;3832:30:0;;;;;;;;;;3762:108::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:712;;291:3;284:4;276:6;272:17;268:27;258:2;;313:5;306;299:20;258:2;353:6;340:20;379:18;416:2;412;409:10;406:2;;;422:18;;:::i;:::-;471:2;465:9;540:2;521:13;;-1:-1:-1;;517:27:1;505:40;;547:4;501:51;567:18;;;587:22;;;564:46;561:2;;;613:18;;:::i;:::-;649:2;642:22;673:18;;;710:15;;;727:4;706:26;703:35;-1:-1:-1;700:2:1;;;755:5;748;741:20;700:2;823;816:4;808:6;804:17;797:4;789:6;785:17;772:54;846:15;;;863:4;842:26;835:41;;;;850:6;248:658;-1:-1:-1;;;248:658:1:o;911:198::-;;1023:2;1011:9;1002:7;998:23;994:32;991:2;;;1044:6;1036;1029:22;991:2;1072:31;1093:9;1072:31;:::i;:::-;1062:41;981:128;-1:-1:-1;;;981:128:1:o;1114:350::-;;;;1260:2;1248:9;1239:7;1235:23;1231:32;1228:2;;;1281:6;1273;1266:22;1228:2;1309:31;1330:9;1309:31;:::i;:::-;1299:41;;1359:40;1395:2;1384:9;1380:18;1359:40;:::i;:::-;1349:50;;1418:40;1454:2;1443:9;1439:18;1418:40;:::i;:::-;1408:50;;1218:246;;;;;:::o;1469:297::-;;1589:2;1577:9;1568:7;1564:23;1560:32;1557:2;;;1610:6;1602;1595:22;1557:2;1647:9;1641:16;1700:5;1693:13;1686:21;1679:5;1676:32;1666:2;;1727:6;1719;1712:22;1771:563;;;;;1943:3;1931:9;1922:7;1918:23;1914:33;1911:2;;;1965:6;1957;1950:22;1911:2;2006:9;1993:23;1983:33;;2067:2;2056:9;2052:18;2039:32;2094:18;2086:6;2083:30;2080:2;;;2131:6;2123;2116:22;2080:2;2159:51;2202:7;2193:6;2182:9;2178:22;2159:51;:::i;:::-;2149:61;;;2229:40;2265:2;2254:9;2250:18;2229:40;:::i;:::-;2219:50;;2288:40;2324:2;2313:9;2309:18;2288:40;:::i;:::-;2278:50;;1901:433;;;;;;;:::o;2339:563::-;;;;;2511:3;2499:9;2490:7;2486:23;2482:33;2479:2;;;2533:6;2525;2518:22;2479:2;2578:9;2565:23;2611:18;2603:6;2600:30;2597:2;;;2648:6;2640;2633:22;2597:2;2676:51;2719:7;2710:6;2699:9;2695:22;2676:51;:::i;:::-;2666:61;;;2746:40;2782:2;2771:9;2767:18;2746:40;:::i;:::-;2736:50;;2805:40;2841:2;2830:9;2826:18;2805:40;:::i;:::-;2469:433;;;;-1:-1:-1;2795:50:1;;2892:2;2877:18;2864:32;;-1:-1:-1;;2469:433:1:o;2907:259::-;;2988:5;2982:12;3015:6;3010:3;3003:19;3031:63;3087:6;3080:4;3075:3;3071:14;3064:4;3057:5;3053:16;3031:63;:::i;:::-;3148:2;3127:15;-1:-1:-1;;3123:29:1;3114:39;;;;3155:4;3110:50;;2958:208;-1:-1:-1;;2958:208:1:o;3171:274::-;;3338:6;3332:13;3354:53;3400:6;3395:3;3388:4;3380:6;3376:17;3354:53;:::i;:::-;3423:16;;;;;3308:137;-1:-1:-1;;3308:137:1:o;3450:431::-;;3665:6;3660:3;3653:19;3701:6;3695:13;3717:60;3770:6;3765:2;3760:3;3756:12;3751:2;3743:6;3739:15;3717:60;:::i;:::-;3836:2;3796:16;;3828:11;;;3821:27;;;;3872:2;3864:11;;3643:238;-1:-1:-1;;;3643:238:1:o;3886:203::-;-1:-1:-1;;;;;4050:32:1;;;;4032:51;;4020:2;4005:18;;3987:102::o;4094:187::-;4259:14;;4252:22;4234:41;;4222:2;4207:18;;4189:92::o;4286:177::-;4432:25;;;4420:2;4405:18;;4387:76::o;4468:456::-;4699:25;;;-1:-1:-1;;;;;4798:15:1;;;4793:2;4778:18;;4771:43;4850:15;;;4845:2;4830:18;;4823:43;4902:15;4897:2;4882:18;;4875:43;4686:3;4671:19;;4653:271::o;4929:221::-;;5078:2;5067:9;5060:21;5098:46;5140:2;5129:9;5125:18;5117:6;5098:46;:::i;5155:340::-;5357:2;5339:21;;;5396:2;5376:18;;;5369:30;-1:-1:-1;;;5430:2:1;5415:18;;5408:46;5486:2;5471:18;;5329:166::o;5500:352::-;5702:2;5684:21;;;5741:2;5721:18;;;5714:30;5780;5775:2;5760:18;;5753:58;5843:2;5828:18;;5674:178::o;5857:402::-;6059:2;6041:21;;;6098:2;6078:18;;;6071:30;6137:34;6132:2;6117:18;;6110:62;-1:-1:-1;;;6203:2:1;6188:18;;6181:36;6249:3;6234:19;;6031:228::o;6264:347::-;6466:2;6448:21;;;6505:2;6485:18;;;6478:30;6544:25;6539:2;6524:18;;6517:53;6602:2;6587:18;;6438:173::o;6616:342::-;6818:2;6800:21;;;6857:2;6837:18;;;6830:30;-1:-1:-1;;;6891:2:1;6876:18;;6869:48;6949:2;6934:18;;6790:168::o;6963:356::-;7165:2;7147:21;;;7184:18;;;7177:30;7243:34;7238:2;7223:18;;7216:62;7310:2;7295:18;;7137:182::o;7324:341::-;7526:2;7508:21;;;7565:2;7545:18;;;7538:30;-1:-1:-1;;;7599:2:1;7584:18;;7577:47;7656:2;7641:18;;7498:167::o;7670:339::-;7872:2;7854:21;;;7911:2;7891:18;;;7884:30;-1:-1:-1;;;7945:2:1;7930:18;;7923:45;8000:2;7985:18;;7844:165::o;8014:329::-;8216:2;8198:21;;;8255:1;8235:18;;;8228:29;-1:-1:-1;;;8288:2:1;8273:18;;8266:36;8334:2;8319:18;;8188:155::o;8348:897::-;;8736:3;8725:9;8718:22;8777:2;8771:3;8760:9;8756:19;8749:31;-1:-1:-1;;;8811:3:1;8800:9;8796:19;8789:41;8849:3;8888:1;8884;8879:3;8875:11;8871:19;8940:2;8932:6;8928:15;8921:4;8910:9;8906:20;8899:45;8980:6;8975:2;8964:9;8960:18;8953:34;9023:2;9018;9007:9;9003:18;8996:30;9043:46;9085:2;9074:9;9070:18;9062:6;9043:46;:::i;:::-;9126:15;;;9120:3;9105:19;;9098:44;9179:15;;;;9173:3;9158:19;;9151:44;-1:-1:-1;9226:3:1;9211:19;9204:35;-1:-1:-1;9035:54:1;8708:537;-1:-1:-1;;;8708:537:1:o;9250:229::-;;9321:1;9317:6;9314:1;9311:13;9308:2;;;-1:-1:-1;;;9347:33:1;;9403:4;9400:1;9393:15;9433:4;9354:3;9421:17;9308:2;-1:-1:-1;9464:9:1;;9298:181::o;9484:258::-;9556:1;9566:113;9580:6;9577:1;9574:13;9566:113;;;9656:11;;;9650:18;9637:11;;;9630:39;9602:2;9595:10;9566:113;;;9697:6;9694:1;9691:13;9688:2;;;9732:1;9723:6;9718:3;9714:16;9707:27;9688:2;;9537:205;;;:::o;9747:380::-;9832:1;9822:12;;9879:1;9869:12;;;9890:2;;9944:4;9936:6;9932:17;9922:27;;9890:2;9997;9989:6;9986:14;9966:18;9963:38;9960:2;;;10043:10;10038:3;10034:20;10031:1;10024:31;10078:4;10075:1;10068:15;10106:4;10103:1;10096:15;9960:2;;9802:325;;;:::o;10132:127::-;10193:10;10188:3;10184:20;10181:1;10174:31;10224:4;10221:1;10214:15;10248:4;10245:1;10238:15

Swarm Source

ipfs://076b8bd8718b7fed012c719420806c04c9dcdd6ac702504460976974a449e836
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading