Contract

0xEeEA0Cc8cf98b0e3A8B30B48A89E56a7250Ab159

Overview

M Balance

MemeCore LogoMemeCore LogoMemeCore Logo549,999,999.947949692 M

M Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute Tx9547642025-03-28 8:47:0526 days ago1743151625IN
0xEeEA0Cc8...7250Ab159
0 M0.109488291,502
Confirm Tx9547572025-03-28 8:46:1626 days ago1743151576IN
0xEeEA0Cc8...7250Ab159
0 M0.1321821,502
Submit Tx9540942025-03-28 7:28:5526 days ago1743146935IN
0xEeEA0Cc8...7250Ab159
0 M0.230825851,502
Execute Tx9540412025-03-28 7:22:4426 days ago1743146564IN
0xEeEA0Cc8...7250Ab159
0 M0.087384851,502
Submit Tx9540362025-03-28 7:22:0926 days ago1743146529IN
0xEeEA0Cc8...7250Ab159
0 M0.266747691,502
Execute Tx9540032025-03-28 7:18:1826 days ago1743146298IN
0xEeEA0Cc8...7250Ab159
0 M0.103677051,502
Submit Tx9539432025-03-28 7:11:1826 days ago1743145878IN
0xEeEA0Cc8...7250Ab159
0 M0.266747691,502
Execute Tx9539342025-03-28 7:10:1526 days ago1743145815IN
0xEeEA0Cc8...7250Ab159
0 M0.077369521,502
Submit Tx9539302025-03-28 7:09:4726 days ago1743145787IN
0xEeEA0Cc8...7250Ab159
0 M0.267090141,502
Submit Tx9539272025-03-28 7:09:2626 days ago1743145766IN
0xEeEA0Cc8...7250Ab159
0 M0.267090141,502
Execute Tx9539222025-03-28 7:08:5126 days ago1743145731IN
0xEeEA0Cc8...7250Ab159
0 M0.154528761,502
Execute Tx9539192025-03-28 7:08:3026 days ago1743145710IN
0xEeEA0Cc8...7250Ab159
0 M0.154528761,502
Submit Tx9539152025-03-28 7:08:0226 days ago1743145682IN
0xEeEA0Cc8...7250Ab159
0 M0.267090141,502
Submit Tx9539122025-03-28 7:07:4126 days ago1743145661IN
0xEeEA0Cc8...7250Ab159
0 M0.267090141,502
Execute Tx9533152025-03-28 5:58:0226 days ago1743141482IN
0xEeEA0Cc8...7250Ab159
0 M0.090490991,502
Submit Tx9531922025-03-28 5:43:4126 days ago1743140621IN
0xEeEA0Cc8...7250Ab159
0 M0.225382611,502
Transfer9531632025-03-28 5:40:1826 days ago1743140418IN
0xEeEA0Cc8...7250Ab159
649,999,999.94794969 M0.034196031,502

Latest 1 internal transaction

Parent Transaction Hash Block From To
9533152025-03-28 5:58:0226 days ago1743141482
0xEeEA0Cc8...7250Ab159
100,000,000 M
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x36d5b8E7...45bCa822D
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TimelockMultiSigWallet

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion
File 1 of 2 : TimelockMultiSigWallet.sol
// SPDX-License-Identifier: MIT

pragma solidity =0.8.28;

import {ITimelockMultiSigWallet} from "./ITimelockMultiSigWallet.sol";

contract TimelockMultiSigWallet is ITimelockMultiSigWallet {
    uint256 public constant EXECUTED_TIMESTAMP = uint256(1);

    mapping(uint256 txId => Transaction) public transactions;
    mapping(uint256 txId => uint256) public timestamps;
    mapping(uint256 txId => mapping(address owner => bool)) public isConfirmed;
    mapping(address owner => bool) public isOwner;

    address[] public owners;
    uint256 public transactionCount;
    uint256 public requiredConfirmations;
    uint256 public minDelay;

    modifier onlyOwner() {
        require(isOwner[msg.sender], UnAuthorizedCaller(msg.sender));
        _;
    }

    modifier onlyWallet() {
        require(msg.sender == address(this), InvalidAccess(msg.sender));
        _;
    }

    modifier onlyNotConfirmed(uint256 _txId) {
        require(
            !isConfirmed[_txId][msg.sender],
            CallerAlreadyConfirmed({txId: _txId, caller: msg.sender})
        );
        _;
    }

    /**
     * Transaction status
     * submitted -> fullyConfirmed -> scheduled(watting, ready) -> executed
     */
    modifier onlySubmittedTx(uint256 _txId) {
        require(_txId < transactionCount, UnsubmittedTx(_txId));
        _;
    }

    modifier onlyFullyConfirmed(uint256 _txId) {
        require(isFullyConfirmed(_txId), NotFullyConfirmedTx(_txId));
        _;
    }

    modifier onlyUnscheduled(uint256 _txId) {
        require(
            getScheduleStatus(_txId) == ScheduleStatus.Unscheduled,
            UnexpectedScheduleState({
                txId: _txId,
                expectedState: _encodeStateBitmap(ScheduleStatus.Unscheduled)
            })
        );
        _;
    }

    constructor(
        address[] memory _owners,
        uint256 _requiredConfirmations,
        uint256 _minDelay
    ) {
        uint256 ownersLen = _owners.length;
        require(
            ownersLen > 0,
            OwnersLengthNotEnough({newLength: ownersLen, minimum: 1})
        );
        require(
            _requiredConfirmations > 0 && _requiredConfirmations <= ownersLen,
            InvalidRequiredConfirmations({
                newRequired: _requiredConfirmations,
                maximum: ownersLen
            })
        );
        for (uint256 i = 0; i < ownersLen; i++) {
            address owner = _owners[i];
            require(owner != address(0), InvalidZeroAddress());
            require(!isOwner[owner], DuplicateOwner(owner));
            isOwner[owner] = true;
        }
        owners = _owners;

        requiredConfirmations = _requiredConfirmations;
        minDelay = _minDelay;
    }

    receive() external payable {
        emit Deposit(msg.sender, msg.value, address(this).balance);
    }

    function submitTx(
        address _to,
        uint256 _value,
        bytes calldata _data,
        uint256 _delay
    ) external onlyOwner {
        require(
            _delay >= minDelay,
            InsufficientDelay({delay: _delay, minDelay: minDelay})
        );

        uint256 txId = transactionCount;
        transactions[txId] = Transaction({
            to: _to,
            value: _value,
            data: _data,
            delay: _delay
        });
        transactionCount++;
        emit SubmitTx({txId: txId, submittedBy: msg.sender});

        _confirmTx(txId);
        if (requiredConfirmations == 1) _scheduleTx(txId);
    }

    function confirmTx(
        uint256 _txId
    )
        external
        onlyOwner
        onlySubmittedTx(_txId)
        onlyNotConfirmed(_txId)
        onlyUnscheduled(_txId)
    {
        _confirmTx(_txId);
        if (isFullyConfirmed(_txId)) _scheduleTx(_txId);
    }

    function revokeConfirmation(
        uint256 _txId
    ) external onlyOwner onlySubmittedTx(_txId) onlyUnscheduled(_txId) {
        require(
            isConfirmed[_txId][msg.sender],
            CallerNotConfirmed({txId: _txId, caller: msg.sender})
        );
        isConfirmed[_txId][msg.sender] = false;
        emit RevokeConfirmation({txId: _txId, revokedBy: msg.sender});
    }

    /**
     * @dev Changes the transaction status to 'executed' to prevent further confirmation or execution
     */
    function cancelTx(uint256 _txId) public onlyWallet onlySubmittedTx(_txId) {
        require(
            !isScheduleExecuted(_txId),
            UnexpectedScheduleState({
                txId: _txId,
                expectedState: _encodeStateBitmap(ScheduleStatus.Unscheduled) |
                    _encodeStateBitmap(ScheduleStatus.Waiting) |
                    _encodeStateBitmap(ScheduleStatus.Ready)
            })
        );
        delete transactions[_txId];
        timestamps[_txId] = EXECUTED_TIMESTAMP;
        emit CancelTx({txId: _txId, canceledBy: msg.sender});
    }

    function executeTx(
        uint256 _txId
    ) public onlyOwner onlySubmittedTx(_txId) onlyFullyConfirmed(_txId) {
        Transaction storage transaction = transactions[_txId];
        uint256 value = transaction.value;
        uint256 balance = address(this).balance;
        require(
            balance >= value,
            NotEnoughBalance({have: balance, need: value})
        );

        _beforeCall(_txId);
        (bool success, bytes memory data) = transaction.to.call{value: value}(
            transaction.data
        );
        if (!success) {
            assembly {
                revert(add(data, 32), mload(data))
            }
        }
        _afterCall(_txId);

        emit ExecuteTx({txId: _txId, executedBy: msg.sender});
    }

    function _beforeCall(uint256 _txId) private view {
        require(
            isScheduleReady(_txId),
            UnexpectedScheduleState({
                txId: _txId,
                expectedState: _encodeStateBitmap(ScheduleStatus.Ready)
            })
        );
    }

    function _afterCall(uint256 _txId) private {
        require(
            isScheduleReady(_txId),
            UnexpectedScheduleState({
                txId: _txId,
                expectedState: _encodeStateBitmap(ScheduleStatus.Ready)
            })
        );
        timestamps[_txId] = EXECUTED_TIMESTAMP;
    }

    function addOwner(address _owner) external onlyWallet {
        require(_owner != address(0), InvalidZeroAddress());
        require(!isOwner[_owner], DuplicateOwner(_owner));

        isOwner[_owner] = true;
        owners.push(_owner);

        emit AddOwner(_owner);
    }

    function removeOwner(address _owner) external onlyWallet {
        require(isOwner[_owner], NotOwnerAddress(_owner));
        uint256 newOwnerLength = owners.length - 1;
        require(
            newOwnerLength >= requiredConfirmations,
            OwnersLengthNotEnough(newOwnerLength, requiredConfirmations)
        );

        isOwner[_owner] = false;
        uint256 len = owners.length;
        for (uint256 i = 0; i < len; i++) {
            if (owners[i] == _owner) {
                owners[i] = owners[len - 1];
                owners.pop();
                break;
            }
        }

        emit RemoveOwner(_owner);
    }

    function changeOwner(
        address _oldOwner,
        address _newOwner
    ) external onlyWallet {
        require(isOwner[_oldOwner], NotOwnerAddress(_oldOwner));
        require(!isOwner[_newOwner], DuplicateOwner(_newOwner));
        require(_newOwner != address(0), InvalidZeroAddress());

        isOwner[_oldOwner] = false;
        isOwner[_newOwner] = true;
        uint256 len = owners.length;
        for (uint256 i = 0; i < len; i++) {
            if (owners[i] == _oldOwner) {
                owners[i] = _newOwner;
                break;
            }
        }

        emit ChangeOwner(_oldOwner, _newOwner);
    }

    function changeRequiredConfirmations(uint8 _required) external onlyWallet {
        uint256 maximum = owners.length;
        require(
            _required > 0 && _required <= maximum,
            InvalidRequiredConfirmations({
                newRequired: _required,
                maximum: maximum
            })
        );
        requiredConfirmations = _required;
        emit ChangeRequiredConfirmations(_required);
    }

    function changeMinDelay(uint256 _newDelay) external onlyWallet {
        minDelay = _newDelay;
        emit ChangeMinDelay({oldDelay: minDelay, newDelay: _newDelay});
    }

    function _confirmTx(uint256 _txId) private {
        isConfirmed[_txId][msg.sender] = true;
        emit ConfirmTx({txId: _txId, confirmedBy: msg.sender});
    }

    function _scheduleTx(uint256 _txId) private {
        uint256 timestamp = block.timestamp + transactions[_txId].delay;
        timestamps[_txId] = timestamp;
        emit ScheduleTx({txId: _txId, timestamp: timestamp});
    }

    function isFullyConfirmed(uint256 _txId) public view returns (bool) {
        uint256 count = 0;
        uint256 len = owners.length;
        for (uint256 i = 0; i < len; i++) {
            if (isConfirmed[_txId][owners[i]]) {
                count += 1;
            }
            if (count == requiredConfirmations) {
                return true;
            }
        }
        return false;
    }

    function isSchedulePending(uint256 _txId) public view returns (bool) {
        ScheduleStatus state = getScheduleStatus(_txId);
        return state == ScheduleStatus.Waiting || state == ScheduleStatus.Ready;
    }

    function isScheduleReady(uint256 _txId) public view returns (bool) {
        return getScheduleStatus(_txId) == ScheduleStatus.Ready;
    }

    function isScheduleExecuted(uint256 _txId) public view returns (bool) {
        return getScheduleStatus(_txId) == ScheduleStatus.Executed;
    }

    function getConfirmCount(uint256 _txId) public view returns (uint256) {
        uint256 count = 0;
        uint256 len = owners.length;
        for (uint256 i = 0; i < len; i++) {
            if (isConfirmed[_txId][owners[i]]) {
                count += 1;
            }
        }
        return count;
    }

    function getScheduleStatus(
        uint256 _txId
    ) public view returns (ScheduleStatus) {
        uint256 timestamp = timestamps[_txId];
        if (timestamp == 0) {
            return ScheduleStatus.Unscheduled;
        } else if (timestamp == EXECUTED_TIMESTAMP) {
            return ScheduleStatus.Executed;
        } else if (timestamp > block.timestamp) {
            return ScheduleStatus.Waiting;
        } else {
            return ScheduleStatus.Ready;
        }
    }

    function getTransactionsInfo(
        uint256[] memory _txIds
    )
        external
        view
        returns (
            ScheduleStatus[] memory status,
            uint256[] memory confirmCounts,
            Transaction[] memory txs
        )
    {
        uint256 txIdsLength = _txIds.length;
        require(txIdsLength > 0);
        status = new ScheduleStatus[](txIdsLength);
        confirmCounts = new uint256[](txIdsLength);
        txs = new Transaction[](txIdsLength);

        for (uint256 i = 0; i < txIdsLength; i++) {
            uint256 id = _txIds[i];
            status[i] = getScheduleStatus(id);
            confirmCounts[i] = getConfirmCount(id);
            txs[i] = transactions[id];
        }
    }

    function getOwnersLen() external view returns (uint256) {
        return owners.length;
    }

    function getOwners() external view returns (address[] memory) {
        return owners;
    }

    /**
     * 0x000...1000
     *   ^^^^^^----- ...
     *         ^---- Executed
     *          ^--- Ready
     *           ^-- Waiting
     *            ^- Unscheduled
     */
    function _encodeStateBitmap(
        ScheduleStatus _scheduleStatus
    ) private pure returns (bytes32) {
        return bytes32(1 << uint8(_scheduleStatus));
    }
}

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

pragma solidity =0.8.28;

interface ITimelockMultiSigWallet {
    struct Transaction {
        address to;
        uint256 value;
        uint256 delay;
        bytes data;
    }

    enum ScheduleStatus {
        Unscheduled,
        Waiting,
        Ready,
        Executed
    }

    // events
    event SubmitTx(uint256 indexed txId, address indexed submittedBy);

    event ConfirmTx(uint256 indexed txId, address indexed confirmedBy);

    event RevokeConfirmation(uint256 indexed txId, address indexed revokedBy);

    event ScheduleTx(uint256 indexed txId, uint256 timestamp);

    event CancelTx(uint256 indexed txId, address indexed canceledBy);

    event AddOwner(address indexed owner);

    event ChangeMinDelay(uint256 oldDelay, uint256 newDelay);

    event ChangeOwner(address indexed oldOwner, address indexed newOwner);

    event ChangeRequiredConfirmations(uint8 required);

    event Deposit(address indexed sender, uint256 amount, uint256 balance);

    event ExecuteTx(uint256 indexed txId, address indexed executedBy);

    event RemoveOwner(address indexed revokedOwner);

    // errors
    error UnAuthorizedCaller(address caller);

    error InvalidAccess(address caller);

    error CallerAlreadyConfirmed(uint256 txId, address caller);

    error CallerNotConfirmed(uint256 txId, address caller);

    error UnsubmittedTx(uint256 txId);

    error NotFullyConfirmedTx(uint256 txId);

    error UnexpectedScheduleState(uint256 txId, bytes32 expectedState);

    error NotEnoughBalance(uint256 have, uint256 need);

    error InvalidZeroAddress();

    error NotOwnerAddress(address addr);

    error DuplicateOwner(address addr);

    error OwnersLengthNotEnough(uint256 newLength, uint256 minimum);

    error InvalidRequiredConfirmations(uint256 newRequired, uint256 maximum);

    error InsufficientDelay(uint256 delay, uint256 minDelay);

    // functions
    receive() external payable;

    function EXECUTED_TIMESTAMP() external view returns (uint256);

    function addOwner(address _owner) external;

    function cancelTx(uint256 _txId) external;

    function changeMinDelay(uint256 _newDelay) external;

    function changeOwner(address _oldOwner, address _newOwner) external;

    function changeRequiredConfirmations(uint8 _required) external;

    function confirmTx(uint256 _txId) external;

    function executeTx(uint256 _txId) external;

    function getConfirmCount(uint256 _txId) external view returns (uint256);

    function getOwners() external view returns (address[] memory);

    function getOwnersLen() external view returns (uint256);

    function getScheduleStatus(
        uint256 _txId
    ) external view returns (ITimelockMultiSigWallet.ScheduleStatus);

    function isConfirmed(
        uint256 txId,
        address owner
    ) external view returns (bool);

    function isFullyConfirmed(uint256 _txId) external view returns (bool);

    function isOwner(address owner) external view returns (bool);

    function isScheduleExecuted(uint256 _txId) external view returns (bool);

    function isSchedulePending(uint256 _txId) external view returns (bool);

    function isScheduleReady(uint256 _txId) external view returns (bool);

    function minDelay() external view returns (uint256);

    function owners(uint256) external view returns (address);

    function removeOwner(address _owner) external;

    function requiredConfirmations() external view returns (uint256);

    function revokeConfirmation(uint256 _txId) external;

    function submitTx(
        address _to,
        uint256 _value,
        bytes memory _data,
        uint256 _delay
    ) external;

    function timestamps(uint256 txId) external view returns (uint256);

    function transactionCount() external view returns (uint256);

    function transactions(
        uint256 txId
    )
        external
        view
        returns (address to, uint256 value, uint256 delay, bytes memory data);

    function getTransactionsInfo(
        uint256[] memory _txIds
    )
        external
        view
        returns (
            ScheduleStatus[] memory status,
            uint256[] memory confirmCounts,
            Transaction[] memory txs
        );
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "shanghai",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_requiredConfirmations","type":"uint256"},{"internalType":"uint256","name":"_minDelay","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"},{"internalType":"address","name":"caller","type":"address"}],"name":"CallerAlreadyConfirmed","type":"error"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"},{"internalType":"address","name":"caller","type":"address"}],"name":"CallerNotConfirmed","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"DuplicateOwner","type":"error"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"minDelay","type":"uint256"}],"name":"InsufficientDelay","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"InvalidAccess","type":"error"},{"inputs":[{"internalType":"uint256","name":"newRequired","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"InvalidRequiredConfirmations","type":"error"},{"inputs":[],"name":"InvalidZeroAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"need","type":"uint256"}],"name":"NotEnoughBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"}],"name":"NotFullyConfirmedTx","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"NotOwnerAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"newLength","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"OwnersLengthNotEnough","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"UnAuthorizedCaller","type":"error"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"},{"internalType":"bytes32","name":"expectedState","type":"bytes32"}],"name":"UnexpectedScheduleState","type":"error"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"}],"name":"UnsubmittedTx","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"AddOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"},{"indexed":true,"internalType":"address","name":"canceledBy","type":"address"}],"name":"CancelTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"ChangeMinDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ChangeOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"required","type":"uint8"}],"name":"ChangeRequiredConfirmations","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"},{"indexed":true,"internalType":"address","name":"confirmedBy","type":"address"}],"name":"ConfirmTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"},{"indexed":true,"internalType":"address","name":"executedBy","type":"address"}],"name":"ExecuteTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"revokedOwner","type":"address"}],"name":"RemoveOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"},{"indexed":true,"internalType":"address","name":"revokedBy","type":"address"}],"name":"RevokeConfirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ScheduleTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"},{"indexed":true,"internalType":"address","name":"submittedBy","type":"address"}],"name":"SubmitTx","type":"event"},{"inputs":[],"name":"EXECUTED_TIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"addOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"cancelTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDelay","type":"uint256"}],"name":"changeMinDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oldOwner","type":"address"},{"internalType":"address","name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_required","type":"uint8"}],"name":"changeRequiredConfirmations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"confirmTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"executeTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"getConfirmCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnersLen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"getScheduleStatus","outputs":[{"internalType":"enum ITimelockMultiSigWallet.ScheduleStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_txIds","type":"uint256[]"}],"name":"getTransactionsInfo","outputs":[{"internalType":"enum ITimelockMultiSigWallet.ScheduleStatus[]","name":"status","type":"uint8[]"},{"internalType":"uint256[]","name":"confirmCounts","type":"uint256[]"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ITimelockMultiSigWallet.Transaction[]","name":"txs","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"isConfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"isFullyConfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"isScheduleExecuted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"isSchedulePending","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"isScheduleReady","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"removeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredConfirmations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_delay","type":"uint256"}],"name":"submitTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"}],"name":"timestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"txId","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c806380be9696116100e7578063a452304211610087578063d0b6a17d11610062578063d0b6a17d14610556578063f00d4b5d14610575578063f079630414610594578063fc5616f8146105a8575f5ffd5b8063a45230421461050d578063b77bf6001461052c578063c63c4e9b14610541575f5ffd5b80638bc33af3116100c25780638bc33af3146104735780639749b3681461049e5780639ace38c2146104bd578063a0e67e2b146104ec575f5ffd5b806380be96961461040657806380f59a651461042557806382e717f71461045e575f5ffd5b80634d07ffd11161015257806366670bc91161012d57806366670bc91461038a5780636e7afa34146103a95780637065cb48146103c8578063801be060146103e7575f5ffd5b80634d07ffd11461032057806354b5fe801461034c57806357b055bc1461036b575f5ffd5b8063173825d91161018d578063173825d91461028e57806319089490146102af57806320ea8d86146102c35780632f54bf6e146102e2575f5ffd5b8063025e7c27146101f7578063088440bf1461023357806309a3c07814610260575f5ffd5b366101f3576040805134815247602082015233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2005b5f5ffd5b348015610202575f5ffd5b50610216610211366004611a63565b6105c7565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023e575f5ffd5b5061025261024d366004611a63565b6105ef565b60405190815260200161022a565b34801561026b575f5ffd5b5061027f61027a366004611a8e565b61066f565b60405161022a93929190611c5b565b348015610299575f5ffd5b506102ad6102a8366004611d11565b610925565b005b3480156102ba575f5ffd5b50600454610252565b3480156102ce575f5ffd5b506102ad6102dd366004611a63565b610b30565b3480156102ed575f5ffd5b506103106102fc366004611d11565b60036020525f908152604090205460ff1681565b604051901515815260200161022a565b34801561032b575f5ffd5b5061033f61033a366004611a63565b610c86565b60405161022a9190611d2a565b348015610357575f5ffd5b506102ad610366366004611a63565b610cd4565b348015610376575f5ffd5b506102ad610385366004611a63565b610e65565b348015610395575f5ffd5b506103106103a4366004611a63565b610f8a565b3480156103b4575f5ffd5b506103106103c3366004611a63565b610faf565b3480156103d3575f5ffd5b506102ad6103e2366004611d11565b611044565b3480156103f2575f5ffd5b506102ad610401366004611a63565b61116c565b348015610411575f5ffd5b50610310610420366004611a63565b61129c565b348015610430575f5ffd5b5061031061043f366004611d3e565b600260209081525f928352604080842090915290825290205460ff1681565b348015610469575f5ffd5b5061025260065481565b34801561047e575f5ffd5b5061025261048d366004611a63565b60016020525f908152604090205481565b3480156104a9575f5ffd5b506102ad6104b8366004611a63565b6112e1565b3480156104c8575f5ffd5b506104dc6104d7366004611a63565b611350565b60405161022a9493929190611d68565b3480156104f7575f5ffd5b5061050061140a565b60405161022a9190611d94565b348015610518575f5ffd5b506102ad610527366004611ddf565b61146a565b348015610537575f5ffd5b5061025260055481565b34801561054c575f5ffd5b5061025260075481565b348015610561575f5ffd5b506102ad610570366004611dff565b61151e565b348015610580575f5ffd5b506102ad61058f366004611e89565b6116a8565b34801561059f575f5ffd5b50610252600181565b3480156105b3575f5ffd5b506103106105c2366004611a63565b611897565b600481815481106105d6575f80fd5b5f918252602090912001546001600160a01b0316905081565b6004545f908190815b81811015610666575f858152600260205260408120600480549192918490811061062457610624611eb1565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561065e5761065b600184611ed9565b92505b6001016105f8565b50909392505050565b60608060605f845190505f8111610684575f5ffd5b8067ffffffffffffffff81111561069d5761069d611a7a565b6040519080825280602002602001820160405280156106c6578160200160208202803683370190505b5093508067ffffffffffffffff8111156106e2576106e2611a7a565b60405190808252806020026020018201604052801561070b578160200160208202803683370190505b5092508067ffffffffffffffff81111561072757610727611a7a565b60405190808252806020026020018201604052801561078957816020015b61077660405180608001604052805f6001600160a01b031681526020015f81526020015f8152602001606081525090565b8152602001906001900390816107455790505b5091505f5b8181101561091c575f8682815181106107a9576107a9611eb1565b602002602001015190506107bc81610c86565b8683815181106107ce576107ce611eb1565b602002602001019060038111156107e7576107e7611b56565b908160038111156107fa576107fa611b56565b905250610806816105ef565b85838151811061081857610818611eb1565b6020908102919091018101919091525f828152808252604090819020815160808101835281546001600160a01b0316815260018201549381019390935260028101549183019190915260038101805460608401919061087690611eec565b80601f01602080910402602001604051908101604052809291908181526020018280546108a290611eec565b80156108ed5780601f106108c4576101008083540402835291602001916108ed565b820191905f5260205f20905b8154815290600101906020018083116108d057829003601f168201915b50505050508152505084838151811061090857610908611eb1565b60209081029190910101525060010161078e565b50509193909250565b33308114610957576040516384fa6f7160e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b506001600160a01b0381165f90815260036020526040902054819060ff1661099e5760405163a5a3ffb960e01b81526001600160a01b03909116600482015260240161094e565b506004545f906109b090600190611f1e565b6006549091508190808210156109e25760405163144e1ce760e21b81526004810192909252602482015260440161094e565b50506001600160a01b0382165f908152600360205260408120805460ff19169055600454905b81811015610af757836001600160a01b031660048281548110610a2d57610a2d611eb1565b5f918252602090912001546001600160a01b031603610aef576004610a53600184611f1e565b81548110610a6357610a63611eb1565b5f91825260209091200154600480546001600160a01b039092169183908110610a8e57610a8e611eb1565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506004805480610aca57610aca611f31565b5f8281526020902081015f1990810180546001600160a01b0319169055019055610af7565b600101610a08565b506040516001600160a01b038416907fac6e8398676cf37429d530b81144d7079e99f4fe9d28b0d88c4a749ceccbe8cd905f90a2505050565b335f8181526003602052604090205460ff16610b6b57604051630b104a5b60e01b81526001600160a01b03909116600482015260240161094e565b508060055481108190610b9457604051630f2b9c6360e41b815260040161094e91815260200190565b50815f610ba082610c86565b6003811115610bb157610bb1611b56565b1481610bbc5f61189f565b9091610be45760405163c7af9e5d60e01b81526004810192909252602482015260440161094e565b50505f8381526002602090815260408083203380855292529091205484919060ff16610c355760405163123c4d5760e11b815260048101929092526001600160a01b0316602482015260440161094e565b50505f838152600260209081526040808320338085529252808320805460ff1916905551909185917f7f8ce8e4f5a5b480ff78c18404639350996fd63efc83ace55b1d6a3e12158e249190a3505050565b5f81815260016020526040812054808203610ca357505f92915050565b60018103610cb45750600392915050565b42811115610cc55750600192915050565b50600292915050565b50919050565b335f8181526003602052604090205460ff16610d0f57604051630b104a5b60e01b81526001600160a01b03909116600482015260240161094e565b508060055481108190610d3857604051630f2b9c6360e41b815260040161094e91815260200190565b5081610d4381610faf565b8190610d6557604051636fc639ef60e01b815260040161094e91815260200190565b505f838152602081905260409020600181015447808280821015610da557604051634787a10360e11b81526004810192909252602482015260440161094e565b5050610db0866118c1565b82546040515f9182916001600160a01b03909116908590610dd5906003890190611f45565b5f6040518083038185875af1925050503d805f8114610e0f576040519150601f19603f3d011682016040523d82523d5f602084013e610e14565b606091505b509150915081610e2657805160208201fd5b610e2f88611902565b604051339089907fd4e99b6d5236f3c2f82c63c57342d13eb032719450bf3ca7680839cc7fdc24c9905f90a35050505050505050565b33308114610e92576040516384fa6f7160e01b81526001600160a01b03909116600482015260240161094e565b508060055481108190610ebb57604051630f2b9c6360e41b815260040161094e91815260200190565b50610ec582611897565b1582610ed1600261189f565b610edb600161189f565b610ee45f61189f565b17179091610f0e5760405163c7af9e5d60e01b81526004810192909252602482015260440161094e565b50505f82815260208190526040812080546001600160a01b0319168155600181018290556002810182905590610f476003830182611a11565b50505f8281526001602081905260408083209190915551339184917fe0246fa20caffde99aa81aaa27d0eb4993a6e5caae34ac12c7e513aed1ae0abe9190a35050565b5f60025b610f9783610c86565b6003811115610fa857610fa8611b56565b1492915050565b6004545f908190815b8181101561103a575f8581526002602052604081206004805491929184908110610fe457610fe4611eb1565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561101e5761101b600184611ed9565b92505b600654830361103257506001949350505050565b600101610fb8565b505f949350505050565b33308114611071576040516384fa6f7160e01b81526001600160a01b03909116600482015260240161094e565b506001600160a01b0381166110995760405163f6b2911f60e01b815260040160405180910390fd5b6001600160a01b0381165f90815260036020526040902054819060ff16156110e057604051632029bc6560e01b81526001600160a01b03909116600482015260240161094e565b506001600160a01b0381165f81815260036020526040808220805460ff1916600190811790915560048054918201815583527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191684179055517fac1e9ef41b54c676ccf449d83ae6f2624bcdce8f5b93a6b48ce95874c332693d9190a250565b335f8181526003602052604090205460ff166111a757604051630b104a5b60e01b81526001600160a01b03909116600482015260240161094e565b5080600554811081906111d057604051630f2b9c6360e41b815260040161094e91815260200190565b505f828152600260209081526040808320338085529252909120548391829160ff16156112225760405163140415cb60e01b815260048101929092526001600160a01b0316602482015260440161094e565b508390505f61123082610c86565b600381111561124157611241611b56565b148161124c5f61189f565b90916112745760405163c7af9e5d60e01b81526004810192909252602482015260440161094e565b505061127f84611953565b61128884610faf565b1561129657611296846119a3565b50505050565b5f5f6112a783610c86565b905060018160038111156112bd576112bd611b56565b14806112da575060028160038111156112d8576112d8611b56565b145b9392505050565b3330811461130e576040516384fa6f7160e01b81526001600160a01b03909116600482015260240161094e565b50600781905560408051828152602081018390527f0c5ff76c31d24175d9e84ef46e328eafbcaeb2aa67a2333035eb082dd34324f1910160405180910390a150565b5f6020819052908152604090208054600182015460028301546003840180546001600160a01b0390941694929391929161138990611eec565b80601f01602080910402602001604051908101604052809291908181526020018280546113b590611eec565b80156114005780601f106113d757610100808354040283529160200191611400565b820191905f5260205f20905b8154815290600101906020018083116113e357829003601f168201915b5050505050905084565b6060600480548060200260200160405190810160405280929190818152602001828054801561146057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611442575b5050505050905090565b33308114611497576040516384fa6f7160e01b81526001600160a01b03909116600482015260240161094e565b5060045460ff8216158015906114b05750808260ff1611155b828290916114dc5760405163389a26c160e21b815260ff9092166004830152602482015260440161094e565b505060ff821660068190556040519081527f588dc25a3a4ef20c1e02fa5c2a887c852caf685c49563793b7b4bef9a5a169a19060200160405180910390a15050565b335f8181526003602052604090205460ff1661155957604051630b104a5b60e01b81526001600160a01b03909116600482015260240161094e565b50600754819080821015611589576040516348b6d3db60e01b81526004810192909252602482015260440161094e565b50505f60055490506040518060800160405280876001600160a01b0316815260200186815260200183815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250508381526020818152604091829020845181546001600160a01b0319166001600160a01b03909116178155908401516001820155908301516002820155606083015190915060038201906116419082612001565b50506005805491505f611653836120bc565b9091555050604051339082907fd5e71018e2b150e81bc29178fcd2d986031492eb90f4f87287c251f3c41aea72905f90a361168d81611953565b6006546001036116a0576116a0816119a3565b505050505050565b333081146116d5576040516384fa6f7160e01b81526001600160a01b03909116600482015260240161094e565b506001600160a01b0382165f90815260036020526040902054829060ff1661171c5760405163a5a3ffb960e01b81526001600160a01b03909116600482015260240161094e565b506001600160a01b0381165f90815260036020526040902054819060ff161561176457604051632029bc6560e01b81526001600160a01b03909116600482015260240161094e565b506001600160a01b03811661178c5760405163f6b2911f60e01b815260040160405180910390fd5b6001600160a01b038083165f90815260036020526040808220805460ff19908116909155928416825281208054909216600117909155600454905b8181101561185157836001600160a01b0316600482815481106117ec576117ec611eb1565b5f918252602090912001546001600160a01b03160361184957826004828154811061181957611819611eb1565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611851565b6001016117c7565b50816001600160a01b0316836001600160a01b03167f9aecf86140d81442289f667eb72e1202a8fbb3478a686659952e145e8531965660405160405180910390a3505050565b5f6003610f8e565b5f8160038111156118b2576118b2611b56565b600160ff919091161b92915050565b6118ca81610f8a565b816118d5600261189f565b90916118fd5760405163c7af9e5d60e01b81526004810192909252602482015260440161094e565b505050565b61190b81610f8a565b81611916600261189f565b909161193e5760405163c7af9e5d60e01b81526004810192909252602482015260440161094e565b50505f90815260016020819052604090912055565b5f818152600260209081526040808320338085529252808320805460ff1916600117905551909183917f6e5d64ddafdd31fc9a91822d05f1eaa7b8cefdd22ecca7786b2132dac74edf199190a350565b5f818152602081905260408120600201546119be9042611ed9565b5f83815260016020526040908190208290555190915082907f193d02e3f35c67d210003621d4b64601dc382c6a91d9b6430109303b540fb9af90611a059084815260200190565b60405180910390a25050565b508054611a1d90611eec565b5f825580601f10611a2c575050565b601f0160209004905f5260205f2090810190611a489190611a4b565b50565b5b80821115611a5f575f8155600101611a4c565b5090565b5f60208284031215611a73575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611a9e575f5ffd5b813567ffffffffffffffff811115611ab4575f5ffd5b8201601f81018413611ac4575f5ffd5b803567ffffffffffffffff811115611ade57611ade611a7a565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611b0b57611b0b611a7a565b604052918252602081840181019290810187841115611b28575f5ffd5b6020850194505b83851015611b4b57843580825260209586019590935001611b2f565b509695505050505050565b634e487b7160e01b5f52602160045260245ffd5b60048110611b8657634e487b7160e01b5f52602160045260245ffd5b9052565b5f81518084525f5b81811015611bae57602081850181015186830182015201611b92565b505f602082860101526020601f19601f83011685010191505092915050565b5f82825180855260208501945060208160051b830101602085015f5b83811015611c4f57848303601f19018852815180516001600160a01b031684526020808201519085015260408082015190850152606090810151608091850182905290611c3890850182611b8a565b6020998a0199909450929092019150600101611be9565b50909695505050505050565b606080825284519082018190525f9060208601906080840190835b81811015611c9c57611c89838551611b6a565b6020938401939290920191600101611c76565b5050838103602080860191909152865180835291810192508601905f5b81811015611cd7578251845260209384019390920191600101611cb9565b5050508281036040840152611cec8185611bcd565b9695505050505050565b80356001600160a01b0381168114611d0c575f5ffd5b919050565b5f60208284031215611d21575f5ffd5b6112da82611cf6565b60208101611d388284611b6a565b92915050565b5f5f60408385031215611d4f575f5ffd5b82359150611d5f60208401611cf6565b90509250929050565b60018060a01b0385168152836020820152826040820152608060608201525f611cec6080830184611b8a565b602080825282518282018190525f918401906040840190835b81811015611dd45783516001600160a01b0316835260209384019390920191600101611dad565b509095945050505050565b5f60208284031215611def575f5ffd5b813560ff811681146112da575f5ffd5b5f5f5f5f5f60808688031215611e13575f5ffd5b611e1c86611cf6565b945060208601359350604086013567ffffffffffffffff811115611e3e575f5ffd5b8601601f81018813611e4e575f5ffd5b803567ffffffffffffffff811115611e64575f5ffd5b886020828401011115611e75575f5ffd5b959894975060200195606001359392505050565b5f5f60408385031215611e9a575f5ffd5b611ea383611cf6565b9150611d5f60208401611cf6565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d3857611d38611ec5565b600181811c90821680611f0057607f821691505b602082108103610cce57634e487b7160e01b5f52602260045260245ffd5b81810381811115611d3857611d38611ec5565b634e487b7160e01b5f52603160045260245ffd5b5f5f8354611f5281611eec565b600182168015611f695760018114611f7e57611fab565b60ff1983168652811515820286019350611fab565b865f5260205f205f5b83811015611fa357815488820152600190910190602001611f87565b505081860193505b509195945050505050565b601f8211156118fd57805f5260205f20601f840160051c81016020851015611fdb5750805b601f840160051c820191505b81811015611ffa575f8155600101611fe7565b5050505050565b815167ffffffffffffffff81111561201b5761201b611a7a565b61202f816120298454611eec565b84611fb6565b6020601f821160018114612061575f831561204a5750848201515b5f19600385901b1c1916600184901b178455611ffa565b5f84815260208120601f198516915b828110156120905787850151825560209485019460019092019101612070565b50848210156120ad57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f600182016120cd576120cd611ec5565b506001019056fea26469706673582212205443c3aa322077444f601667ea26d71fb6def75206a157778f0a8edfb27447d764736f6c634300081c0033

Block Transaction 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
[ Download: CSV Export  ]
[ 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.