Contract

0x74696D9ed2885A1335A914f1Ea53445187012EEe

Overview

M Balance

MemeCore LogoMemeCore LogoMemeCore Logo925,966,069 M

M Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute Tx11984412025-04-17 2:36:046 days ago1744857364IN
0x74696D9e...187012EEe
0 M0.102262161,502
Confirm Tx11984382025-04-17 2:35:436 days ago1744857343IN
0x74696D9e...187012EEe
0 M0.139325521,502
Submit Tx11983842025-04-17 2:29:256 days ago1744856965IN
0x74696D9e...187012EEe
0 M0.163758551,502
Execute Tx11149902025-04-10 8:20:0713 days ago1744273207IN
0x74696D9e...187012EEe
0 M0.095118651,502
Confirm Tx11149812025-04-10 8:19:0413 days ago1744273144IN
0x74696D9e...187012EEe
0 M0.1321821,502
Submit Tx11149452025-04-10 8:14:5213 days ago1744272892IN
0x74696D9e...187012EEe
0 M0.163776571,502
Execute Tx11148562025-04-10 8:04:2913 days ago1744272269IN
0x74696D9e...187012EEe
0 M0.132668651,502
Confirm Tx11147672025-04-10 7:54:0613 days ago1744271646IN
0x74696D9e...187012EEe
0 M0.1321821,502
Submit Tx11144182025-04-10 7:13:2313 days ago1744269203IN
0x74696D9e...187012EEe
0 M0.163776571,502
Execute Tx9547622025-03-28 8:46:5126 days ago1743151611IN
0x74696D9e...187012EEe
0 M0.109488291,502
Confirm Tx9547502025-03-28 8:45:2726 days ago1743151527IN
0x74696D9e...187012EEe
0 M0.1321821,502
Submit Tx9541712025-03-28 7:37:5426 days ago1743147474IN
0x74696D9e...187012EEe
0 M0.230825851,502
Execute Tx9541662025-03-28 7:37:1926 days ago1743147439IN
0x74696D9e...187012EEe
0 M0.087384851,502
Submit Tx9541592025-03-28 7:36:3026 days ago1743147390IN
0x74696D9e...187012EEe
0 M0.266747691,502
Submit Tx9541532025-03-28 7:35:4826 days ago1743147348IN
0x74696D9e...187012EEe
0 M0.266747691,502
Execute Tx9541462025-03-28 7:34:5926 days ago1743147299IN
0x74696D9e...187012EEe
0 M0.154528761,502
Execute Tx9541422025-03-28 7:34:3126 days ago1743147271IN
0x74696D9e...187012EEe
0 M0.154510741,502
Submit Tx9541382025-03-28 7:34:0326 days ago1743147243IN
0x74696D9e...187012EEe
0 M0.267090141,502
Submit Tx9541352025-03-28 7:33:4226 days ago1743147222IN
0x74696D9e...187012EEe
0 M0.292774341,502

Latest 4 internal transactions

Parent Transaction Hash Block From To
11984412025-04-17 2:36:046 days ago1744857364
0x74696D9e...187012EEe
1,000,000 M
11149902025-04-10 8:20:0713 days ago1744273207
0x74696D9e...187012EEe
20,000 M
11148562025-04-10 8:04:2913 days ago1744272269
0x74696D9e...187012EEe
10,000 M
9535782025-03-28 6:28:4326 days ago1743143323
0x74696D9e...187012EEe
926,996,069 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.