ETH Price: $3,491.96 (+2.88%)
Gas: 4 Gwei

Contract

0x5Dcb742d09ade3Da6461024F91f53518bb309aD5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040168839962023-03-22 15:23:23485 days ago1679498603IN
 Create: ExecutorV2
0 ETH0.0465063232.96240046

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ExecutorV2

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 6 : Executorv2.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "./Initializable.sol";
import "./Pausable.sol";
import "./ECDSA.sol";
import "./Mutex.sol";

contract ExecutorV2 is Initializable, Pausable, Mutex {
    uint16 public chainId;
    address public protocolSigner;
    mapping(bytes32 => uint256) public hashes;

    event SignerUpdated(address sender, address oldSigner, address signer);

    function init(
        address admin_,
        uint16 chainId_,
        address signer_
    ) external whenNotInitialized {
        require(admin_ != address(0), "zero address");
        require(signer_ != address(0), "zero address");
        admin = admin_;
        pauser = admin_;
        chainId = chainId_;
        protocolSigner = signer_;
        isInited = true;
    }

    function updateSigner(address signer_) external whenInitialized onlyAdmin {
        require(signer_ != address(0), "zero address");
        emit SignerUpdated(msg.sender, protocolSigner, signer_);
        protocolSigner = signer_;
    }

    function execute(
        uint16 callerChainId_,
        uint16 executionChainId_,
        uint256 nonce_,
        string calldata txHash_,
        address contract_,
        bytes calldata callData_,
        bytes calldata signature_
    ) external whenNotPaused whenInitialized mutex returns (bytes memory) {
        require(chainId == executionChainId_, "uncompatible chain");
        require(contract_ != address(0), "zero address");

        bytes32 data = keccak256(
            abi.encodePacked(
                callerChainId_,
                executionChainId_,
                nonce_,
                bytes(txHash_).length,
                txHash_,
                contract_,
                callData_.length,
                callData_
            )
        );

        require(hashes[data] == 0, "duplicate data");
        require(
            ECDSA.recover(
                keccak256(
                    abi.encodePacked("\x19Ethereum Signed Message:\n32", data)
                ),
                signature_
            ) == protocolSigner,
            "only protocol signer"
        );
        hashes[data] = block.number;

        (bool success_, bytes memory data_) = contract_.call(callData_);
        if (success_) {
            return data_;
        } else {
            if (data_.length > 0) {
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(data_)
                    revert(add(32, data_), returndata_size)
                }
            } else {
                revert("no error");
            }
        }
    }
}

File 2 of 6 : Adminable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Adminable {
    event AdminUpdated(address sender, address oldAdmin, address admin);

    address public admin;

    modifier onlyAdmin() {
        require(admin == msg.sender, "only admin");
        _;
    }

    function updateAdmin(address admin_) external onlyAdmin {
        require(admin_ != address(0), "zero address");
        emit AdminUpdated(msg.sender, admin, admin_);
        admin = admin_;
    }
}

File 3 of 6 : ECDSA.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

library ECDSA {
    function recover(
        bytes32 hash_,
        bytes memory signature_
    ) internal pure returns (address) {
        require(signature_.length == 65, "standart signature only");

        bytes32 r;
        bytes32 s;
        uint8 v;
        assembly {
            r := mload(add(signature_, 32))
            s := mload(add(signature_, 64))
            v := byte(0, mload(add(signature_, 96)))
        }

        if (
            uint256(s) >
            0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0
        ) {
            revert("invalid signature 's' value");
        }
        if (v != 27 && v != 28) {
            revert("invalid signature 'v' value");
        }

        address signer = ecrecover(hash_, v, r, s);
        require(signer != address(0), "invalide signature");
        return signer;
    }
}

File 4 of 6 : Initializable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Initializable {
    bool internal isInited;

    modifier whenInitialized() {
        require(isInited, "not initialized");
        _;
    }

    modifier whenNotInitialized() {
        require(!isInited, "already initialized");
        _;
    }
}

File 5 of 6 : Mutex.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

abstract contract Mutex {
    bool private _lock;

    modifier mutex() {
        require(!_lock, "mutex lock");
        _lock = true;
        _;
        _lock = false;
    }
}

File 6 of 6 : Pausable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

import "./Adminable.sol";

abstract contract Pausable is Adminable {
    event Paused(address account);
    event Unpaused(address account);
    event PauserUpdated(address sender, address oldPauser, address pauser);

    bool public isPaused;
    address public pauser;

    constructor() {
        isPaused = false;
    }

    modifier whenNotPaused() {
        require(!isPaused, "paused");
        _;
    }

    modifier whenPaused() {
        require(isPaused, "not paused");
        _;
    }

    modifier onlyPauser() {
        require(pauser == msg.sender, "only pauser");
        _;
    }

    function pause() external whenNotPaused onlyPauser {
        isPaused = true;
        emit Paused(msg.sender);
    }

    function unpause() external whenPaused onlyPauser {
        isPaused = false;
        emit Unpaused(msg.sender);
    }

    function updatePauser(address pauser_) external onlyAdmin {
        require(pauser_ != address(0), "zero address");
        emit PauserUpdated(msg.sender, pauser, pauser_);
        pauser = pauser_;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldPauser","type":"address"},{"indexed":false,"internalType":"address","name":"pauser","type":"address"}],"name":"PauserUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":false,"internalType":"address","name":"signer","type":"address"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"callerChainId_","type":"uint16"},{"internalType":"uint16","name":"executionChainId_","type":"uint16"},{"internalType":"uint256","name":"nonce_","type":"uint256"},{"internalType":"string","name":"txHash_","type":"string"},{"internalType":"address","name":"contract_","type":"address"},{"internalType":"bytes","name":"callData_","type":"bytes"},{"internalType":"bytes","name":"signature_","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"hashes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"uint16","name":"chainId_","type":"uint16"},{"internalType":"address","name":"signer_","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"}],"name":"updateAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pauser_","type":"address"}],"name":"updatePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer_","type":"address"}],"name":"updateSigner","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506000805460ff60a81b191690556118d88061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80639fd0506d1161008c578063d658d2e911610066578063d658d2e91461020d578063dfd383c91461023b578063e2f273bd1461025b578063f851a4401461026e57600080fd5b80639fd0506d1461017f578063a7ecd37e146101c4578063b187bd26146101d757600080fd5b80637f18311b116100bd5780637f18311b146101145780638456cb591461013d5780639a8a05921461014557600080fd5b80633f4ba83a146100e4578063402a1c4f146100ee578063554bab3c14610101575b600080fd5b6100ec610293565b005b6100ec6100fc3660046115e5565b6103fc565b6100ec61010f366004611628565b610657565b610127610122366004611693565b6107fa565b604051610134919061176e565b60405180910390f35b6100ec610de9565b60015461016c907501000000000000000000000000000000000000000000900461ffff1681565b60405161ffff9091168152602001610134565b60015461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610134565b6100ec6101d2366004611628565b610f60565b6000546101fd907501000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610134565b61022d61021b3660046117da565b60036020526000908152604090205481565b604051908152602001610134565b60025461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ec610269366004611628565b61116f565b60005461019f90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6000547501000000000000000000000000000000000000000000900460ff1661031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207061757365640000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16331461039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60005460ff1615610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff83166104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b600080546001805473ffffffffffffffffffffffffffffffffffffffff9687167fffffffffffffffffff0000ff00000000000000000000000000000000000000009091168117750100000000000000000000000000000000000000000061ffff9790971696909602959095178155600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001694909616939093179094557fffffffffffffffffffffff0000000000000000000000000000000000000000009093166101009092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691909117179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff811661075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6001546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f9b3d82621a55ae56941a49b01b3111acf42e49f89b2af1a6dea8fb9886d3520c9181900360600190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000546060907501000000000000000000000000000000000000000000900460ff1615610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60005460ff166108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b60015474010000000000000000000000000000000000000000900460ff1615610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017908190557501000000000000000000000000000000000000000000900461ffff908116908b1614610a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f756e636f6d70617469626c6520636861696e00000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8616610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b604051600090610ae1908d908d908d908c908e9082908e908d908f9082906020016117f3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915015610b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6475706c696361746520646174610000000000000000000000000000000000006044820152606401610314565b6002546040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810183905273ffffffffffffffffffffffffffffffffffffffff90911690610c3390605c016040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061131c92505050565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c792070726f746f636f6c207369676e65720000000000000000000000006044820152606401610314565b60008181526003602052604080822043905551819073ffffffffffffffffffffffffffffffffffffffff8a1690610cea908a908a90611892565b6000604051808303816000865af19150503d8060008114610d27576040519150601f19603f3d011682016040523d82523d6000602084013e610d2c565b606091505b50915091508115610d41579250610db3915050565b805115610d515780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f206572726f720000000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690559a9950505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff1615610e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016103f2565b60005460ff16610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff81166110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6002546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f138664d729004ff3df437e29920fe415a1c078a8ec492dea367b98e5702070489181900360600190a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6000546040805133815273ffffffffffffffffffffffffffffffffffffffff6101009093048316602082015291831682820152517f9f6130d220a6021d90d78c7ed17b7cfb79f530974405b174fef75f671205513c9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60008151604114611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f7374616e64617274207369676e6174757265206f6e6c790000000000000000006044820152606401610314565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202773272076616c756500000000006044820152606401610314565b8060ff16601b1415801561143d57508060ff16601c14155b156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202776272076616c756500000000006044820152606401610314565b6040805160008082526020820180845289905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156114f8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696465207369676e617475726500000000000000000000000000006044820152606401610314565b9695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ce57600080fd5b919050565b803561ffff811681146115ce57600080fd5b6000806000606084860312156115fa57600080fd5b611603846115aa565b9250611611602085016115d3565b915061161f604085016115aa565b90509250925092565b60006020828403121561163a57600080fd5b611643826115aa565b9392505050565b60008083601f84011261165c57600080fd5b50813567ffffffffffffffff81111561167457600080fd5b60208301915083602082850101111561168c57600080fd5b9250929050565b60008060008060008060008060008060e08b8d0312156116b257600080fd5b6116bb8b6115d3565b99506116c960208c016115d3565b985060408b0135975060608b013567ffffffffffffffff808211156116ed57600080fd5b6116f98e838f0161164a565b909950975087915061170d60808e016115aa565b965060a08d013591508082111561172357600080fd5b61172f8e838f0161164a565b909650945060c08d013591508082111561174857600080fd5b506117558d828e0161164a565b915080935050809150509295989b9194979a5092959850565b600060208083528351808285015260005b8181101561179b5785810183015185820160400152820161177f565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000602082840312156117ec57600080fd5b5035919050565b60007fffff000000000000000000000000000000000000000000000000000000000000808d60f01b168352808c60f01b16600284015250896004830152886024830152868860448401378682017fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b166044820152856058820152838560788301376000930160780192835250909a9950505050505050505050565b818382376000910190815291905056fea2646970667358221220ac2c3fc44705ff4ce136f0dcd62d42f528bbd2156d8e0e275e0b0699b6e13b0164736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80639fd0506d1161008c578063d658d2e911610066578063d658d2e91461020d578063dfd383c91461023b578063e2f273bd1461025b578063f851a4401461026e57600080fd5b80639fd0506d1461017f578063a7ecd37e146101c4578063b187bd26146101d757600080fd5b80637f18311b116100bd5780637f18311b146101145780638456cb591461013d5780639a8a05921461014557600080fd5b80633f4ba83a146100e4578063402a1c4f146100ee578063554bab3c14610101575b600080fd5b6100ec610293565b005b6100ec6100fc3660046115e5565b6103fc565b6100ec61010f366004611628565b610657565b610127610122366004611693565b6107fa565b604051610134919061176e565b60405180910390f35b6100ec610de9565b60015461016c907501000000000000000000000000000000000000000000900461ffff1681565b60405161ffff9091168152602001610134565b60015461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610134565b6100ec6101d2366004611628565b610f60565b6000546101fd907501000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610134565b61022d61021b3660046117da565b60036020526000908152604090205481565b604051908152602001610134565b60025461019f9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ec610269366004611628565b61116f565b60005461019f90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6000547501000000000000000000000000000000000000000000900460ff1661031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207061757365640000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16331461039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60005460ff1615610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff83166104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b600080546001805473ffffffffffffffffffffffffffffffffffffffff9687167fffffffffffffffffff0000ff00000000000000000000000000000000000000009091168117750100000000000000000000000000000000000000000061ffff9790971696909602959095178155600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001694909616939093179094557fffffffffffffffffffffff0000000000000000000000000000000000000000009093166101009092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691909117179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff811661075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6001546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f9b3d82621a55ae56941a49b01b3111acf42e49f89b2af1a6dea8fb9886d3520c9181900360600190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000546060907501000000000000000000000000000000000000000000900460ff1615610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60005460ff166108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b60015474010000000000000000000000000000000000000000900460ff1615610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6d75746578206c6f636b000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017908190557501000000000000000000000000000000000000000000900461ffff908116908b1614610a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f756e636f6d70617469626c6520636861696e00000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8616610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b604051600090610ae1908d908d908d908c908e9082908e908d908f9082906020016117f3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915015610b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6475706c696361746520646174610000000000000000000000000000000000006044820152606401610314565b6002546040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c810183905273ffffffffffffffffffffffffffffffffffffffff90911690610c3390605c016040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061131c92505050565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c792070726f746f636f6c207369676e65720000000000000000000000006044820152606401610314565b60008181526003602052604080822043905551819073ffffffffffffffffffffffffffffffffffffffff8a1690610cea908a908a90611892565b6000604051808303816000865af19150503d8060008114610d27576040519150601f19603f3d011682016040523d82523d6000602084013e610d2c565b606091505b50915091508115610d41579250610db3915050565b805115610d515780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f206572726f720000000000000000000000000000000000000000000000006044820152606401610314565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690559a9950505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff1615610e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f70617573656400000000000000000000000000000000000000000000000000006044820152606401610314565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207061757365720000000000000000000000000000000000000000006044820152606401610314565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016103f2565b60005460ff16610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610314565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff81166110cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6002546040805133815273ffffffffffffffffffffffffffffffffffffffff928316602082015291831682820152517f138664d729004ff3df437e29920fe415a1c078a8ec492dea367b98e5702070489181900360600190a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1633146111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610314565b73ffffffffffffffffffffffffffffffffffffffff8116611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f206164647265737300000000000000000000000000000000000000006044820152606401610314565b6000546040805133815273ffffffffffffffffffffffffffffffffffffffff6101009093048316602082015291831682820152517f9f6130d220a6021d90d78c7ed17b7cfb79f530974405b174fef75f671205513c9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60008151604114611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f7374616e64617274207369676e6174757265206f6e6c790000000000000000006044820152606401610314565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202773272076616c756500000000006044820152606401610314565b8060ff16601b1415801561143d57508060ff16601c14155b156114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964207369676e6174757265202776272076616c756500000000006044820152606401610314565b6040805160008082526020820180845289905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156114f8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696465207369676e617475726500000000000000000000000000006044820152606401610314565b9695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ce57600080fd5b919050565b803561ffff811681146115ce57600080fd5b6000806000606084860312156115fa57600080fd5b611603846115aa565b9250611611602085016115d3565b915061161f604085016115aa565b90509250925092565b60006020828403121561163a57600080fd5b611643826115aa565b9392505050565b60008083601f84011261165c57600080fd5b50813567ffffffffffffffff81111561167457600080fd5b60208301915083602082850101111561168c57600080fd5b9250929050565b60008060008060008060008060008060e08b8d0312156116b257600080fd5b6116bb8b6115d3565b99506116c960208c016115d3565b985060408b0135975060608b013567ffffffffffffffff808211156116ed57600080fd5b6116f98e838f0161164a565b909950975087915061170d60808e016115aa565b965060a08d013591508082111561172357600080fd5b61172f8e838f0161164a565b909650945060c08d013591508082111561174857600080fd5b506117558d828e0161164a565b915080935050809150509295989b9194979a5092959850565b600060208083528351808285015260005b8181101561179b5785810183015185820160400152820161177f565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000602082840312156117ec57600080fd5b5035919050565b60007fffff000000000000000000000000000000000000000000000000000000000000808d60f01b168352808c60f01b16600284015250896004830152886024830152868860448401378682017fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b166044820152856058820152838560788301376000930160780192835250909a9950505050505050505050565b818382376000910190815291905056fea2646970667358221220ac2c3fc44705ff4ce136f0dcd62d42f528bbd2156d8e0e275e0b0699b6e13b0164736f6c63430008120033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.