S Price: $0.429765 (+0.64%)

Contract

0x92C946E6c5D3BcE4EEaC310f8C1eEea15BD4e368

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Confirm1907182024-12-08 0:47:3793 days ago1733618857IN
0x92C946E6...15BD4e368
0 S0.000182251.1
Create1907112024-12-08 0:47:1993 days ago1733618839IN
0x92C946E6...15BD4e368
0 S0.001187231.1
Confirm1906592024-12-08 0:45:0293 days ago1733618702IN
0x92C946E6...15BD4e368
0 S0.000140851.1
Create1906532024-12-08 0:44:4393 days ago1733618683IN
0x92C946E6...15BD4e368
0 S0.001177111.1
Confirm1906372024-12-08 0:43:5993 days ago1733618639IN
0x92C946E6...15BD4e368
0 S0.00049781.1
Create1906302024-12-08 0:43:4093 days ago1733618620IN
0x92C946E6...15BD4e368
0 S0.001211911.1
Confirm1905722024-12-08 0:41:0393 days ago1733618463IN
0x92C946E6...15BD4e368
0 S0.000210981.1
Create1905662024-12-08 0:40:4993 days ago1733618449IN
0x92C946E6...15BD4e368
0 S0.001174111.1
Create1905302024-12-08 0:39:1693 days ago1733618356IN
0x92C946E6...15BD4e368
0 S0.001173731.1

Latest 1 internal transaction

Parent Transaction Hash Block From To
1904762024-12-08 0:36:5293 days ago1733618212  Contract Creation0 S
Loading...
Loading

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

Contract Name:
AvoMultisigAdmin

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 10000000 runs

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

contract AvoMultisigAdminStructs {
    /// @notice Transaction represents a executeable transaction and it's multisig status
    struct Transaction {
        /// @notice The hash of the transaction, keccak(encodePacked(target, data)))
        bytes30 hash;
        /// @notice The number of confirmations for the transaction
        uint8 confirmation;
        /// @notice The number of revokes for the transaction
        uint8 revoke;
    }
}

contract AvoMultisigAdminErrors {
    /// @notice Error if input params are invalid
    error AvoMultisigAdmin__InvalidParams();

    /// @notice Error if msg.sender is not authorized
    error AvoMultisigAdmin__Unauthorized();

    /// @notice Error if signer is not a signer
    error AvoMultisigAdmin__InvalidSigner();

    /// @notice Error if transaction is already created
    error AvoMultisigAdmin__TransactionAlreadyCreated();

    /// @notice Error if transaction is already confirmed by the signer
    error AvoMultisigAdmin__TransactionAlreadyConfirmed();

    /// @notice Error if transaction is already revoked by the signer
    error AvoMultisigAdmin__TransactionAlreadyRevoked();

    /// @notice Error if transaction is already confirmed or revoked
    error AvoMultisigAdmin__TransactionError();

    /// @notice Error if transaction is not found
    error AvoMultisigAdmin__TransactionNotFoundError();
}

abstract contract AvoMultisigAdminConstants is AvoMultisigAdminErrors {
    /// @notice The number of signers required to confirm a transaction
    uint256 public immutable REQUIRED_CONFIRMATIONS;

    /// @notice Addresses for the signers
    address public immutable SIGNER_1;
    address public immutable SIGNER_2;
    address public immutable SIGNER_3;
    address public immutable SIGNER_4;
    address public immutable SIGNER_5;
    address public immutable SIGNER_6;

    /// @notice sets up the immutable vars: signers and required confirmations.
    constructor(
        address signer1_,
        address signer2_,
        address signer3_,
        address signer4_,
        address signer5_,
        address signer6_,
        uint256 requiredConfirmations_
    ) {
        if (
            signer1_ == address(0) ||
            signer2_ == address(0) ||
            signer3_ == address(0) ||
            signer4_ == address(0) ||
            signer5_ == address(0) ||
            signer6_ == address(0)
        ) {
            revert AvoMultisigAdmin__InvalidParams();
        }

        if (requiredConfirmations_ == 0 || requiredConfirmations_ > 6) {
            revert AvoMultisigAdmin__InvalidParams();
        }

        SIGNER_1 = signer1_;
        SIGNER_2 = signer2_;
        SIGNER_3 = signer3_;
        SIGNER_4 = signer4_;
        SIGNER_5 = signer5_;
        SIGNER_6 = signer6_;

        REQUIRED_CONFIRMATIONS = requiredConfirmations_;
    }
}

contract AvoMultisigAdminVariables {
    /// @notice The mapping of the hash of (targetAddress, data, salt) to the transaction
    mapping(bytes30 => AvoMultisigAdminStructs.Transaction) public hashToTransaction;

    /// @notice The mapping of signer to transaction hash to whether or not they've confirmed
    mapping(address => mapping(bytes30 => bool)) public signedTx;

    /// @notice The mapping of signer to transaction hash to whether or not they've revoked
    mapping(address => mapping(bytes30 => bool)) public revokeTx;
}

contract AvoMultisigAdminEvents {
    /// @notice Emitted when a transaction is created
    event TransactionCreated(bytes30 indexed hash, address indexed creator, address target, bytes data, bytes32 salt);

    /// @notice Emitted when a transaction is confirmed
    event TransactionConfirmed(bytes30 indexed hash, address indexed confirmator, uint8 newConfirmationCount);

    /// @notice Emitted when a transaction is revoked
    event TransactionRevoked(bytes30 indexed hash, address indexed revoker, uint8 newConfirmationCount);

    /// @notice Emitted when a transaction is executed
    event TransactionExecuted(bytes30 indexed hash, address indexed executor);

    /// @notice Emitted when a transaction fails
    event TransactionFailed(bytes30 indexed hash, address indexed executor, bytes returnData);
}

/// @title   Static Multisignature Wallet Contract
/// @notice  This contract represents a multisignature wallet with a static configuration of hardcoded addresses for confirmation.
///          Each address can confirm or revoke a transaction on-chain.
contract AvoMultisigAdmin is
    AvoMultisigAdminStructs,
    AvoMultisigAdminErrors,
    AvoMultisigAdminConstants,
    AvoMultisigAdminVariables,
    AvoMultisigAdminEvents
{
    modifier onlySigner() {
        if (
            msg.sender != SIGNER_1 &&
            msg.sender != SIGNER_2 &&
            msg.sender != SIGNER_3 &&
            msg.sender != SIGNER_4 &&
            msg.sender != SIGNER_5 &&
            msg.sender != SIGNER_6
        ) revert AvoMultisigAdmin__InvalidSigner();
        _;
    }

    /// @notice constructor sets up the immutable vars: signers and required confirmations.
    constructor(
        address signer1_,
        address signer2_,
        address signer3_,
        address signer4_,
        address signer5_,
        address signer6_,
        uint256 requiredConfirmations_
    ) AvoMultisigAdminConstants(signer1_, signer2_, signer3_, signer4_, signer5_, signer6_, requiredConfirmations_) {}

    /// @notice          Create a new transaction
    /// @param target_   The address of the target contract or account for the transaction
    /// @param data_     The data payload of the transaction
    /// @param salt_     The salt used to make the transaction hash unique
    function create(address target_, bytes memory data_, bytes32 salt_) external onlySigner {
        bytes30 txHash_ = hashTransactionData(target_, data_, salt_);

        if (hashToTransaction[txHash_].hash != bytes30(0)) revert AvoMultisigAdmin__TransactionAlreadyCreated();

        hashToTransaction[txHash_] = Transaction(txHash_, 1, 0);
        signedTx[msg.sender][txHash_] = true;

        emit TransactionCreated(txHash_, msg.sender, target_, data_, salt_);
    }

    /// @notice          Confirm a transaction
    /// @dev             Confirming is not allowed if `confirmation` or `revoke` is already 3 (transaction executed or cancelled).
    /// @param target_   The address of the target contract or account for the transaction
    /// @param data_     The data payload of the transaction
    /// @param salt_     The salt used to make the transaction hash unique
    function confirm(address target_, bytes memory data_, bytes32 salt_) external onlySigner {
        bytes30 txHash_ = hashTransactionData(target_, data_, salt_);

        if (hashToTransaction[txHash_].hash == bytes30(0)) revert AvoMultisigAdmin__TransactionNotFoundError();

        if (signedTx[msg.sender][txHash_]) revert AvoMultisigAdmin__TransactionAlreadyConfirmed();

        Transaction memory txInfo_ = hashToTransaction[txHash_];

        if (txInfo_.confirmation == REQUIRED_CONFIRMATIONS || txInfo_.revoke == REQUIRED_CONFIRMATIONS)
            revert AvoMultisigAdmin__TransactionError();

        signedTx[msg.sender][txHash_] = true;
        hashToTransaction[txHash_].confirmation = ++txInfo_.confirmation;

        if (txInfo_.confirmation == REQUIRED_CONFIRMATIONS) {
            // Execute the transaction
            bool success_;
            bytes memory retData_;
            (success_, retData_) = target_.call(data_);
            if (success_) {
                emit TransactionExecuted(txHash_, msg.sender);
            } else {
                emit TransactionFailed(txHash_, msg.sender, retData_);
            }
        }

        emit TransactionConfirmed(txHash_, msg.sender, txInfo_.confirmation);
    }

    /// @notice          Revoke a transaction confirmation.
    /// @dev             Revoking is not allowed if `confirmation` or `revoke` is already 3 (transaction executed or cancelled).
    /// @param target_   The address of the target contract or account for the transaction
    /// @param data_     The data payload of the transaction
    /// @param salt_     The salt used to make the transaction hash unique
    function revoke(address target_, bytes memory data_, bytes32 salt_) external onlySigner {
        bytes30 txHash_ = hashTransactionData(target_, data_, salt_);

        if (hashToTransaction[txHash_].hash == bytes30(0)) revert AvoMultisigAdmin__TransactionNotFoundError();

        Transaction memory txInfo_ = hashToTransaction[txHash_];

        if (txInfo_.confirmation == REQUIRED_CONFIRMATIONS || txInfo_.revoke == REQUIRED_CONFIRMATIONS)
            revert AvoMultisigAdmin__TransactionError();

        hashToTransaction[txHash_].revoke = ++txInfo_.revoke;

        if (revokeTx[msg.sender][txInfo_.hash] == false) {
            revokeTx[msg.sender][txInfo_.hash] = true;
        } else {
            revert AvoMultisigAdmin__TransactionAlreadyRevoked();
        }

        emit TransactionRevoked(txHash_, msg.sender, txInfo_.revoke);
    }

    /// @notice          Hashes the transaction data
    /// @param target_   The address of the target contract or account for the transaction
    /// @param data_     The data payload of the transaction
    /// @param salt_     The salt used to make the transaction hash unique
    /// @return hash_    The unique hash representing this transaction
    function hashTransactionData(
        address target_,
        bytes memory data_,
        bytes32 salt_
    ) public pure returns (bytes30 hash_) {
        hash_ = bytes30(keccak256(abi.encodePacked(target_, data_, salt_)));
    }

    // Code for Multicall below directly taken from https://github.com/mds1/multicall/blob/main/src/Multicall3.sol#L98
    // Copyright (c) 2023 Matt Solomon
    struct Call3 {
        address target;
        bool allowFailure;
        bytes callData;
    }
    struct Result {
        bool success;
        bytes returnData;
    }

    /// @notice Aggregate calls, ensuring each returns success if required. Can only be called by self.
    /// @param calls An array of Call3 structs
    /// @return returnData An array of Result structs
    function aggregate3(Call3[] calldata calls) public returns (Result[] memory returnData) {
        // @dev check for only self is added to original code
        if (msg.sender != address(this)) {
            revert AvoMultisigAdmin__Unauthorized();
        }

        uint256 length = calls.length;
        returnData = new Result[](length);
        Call3 calldata calli;
        for (uint256 i = 0; i < length; ) {
            Result memory result = returnData[i];
            calli = calls[i];
            (result.success, result.returnData) = calli.target.call(calli.callData);
            assembly {
                // Revert if the call fails and failure is not allowed
                // `allowFailure := calldataload(add(calli, 0x20))` and `success := mload(result)`
                if iszero(or(calldataload(add(calli, 0x20)), mload(result))) {
                    // set "Error(string)" signature: bytes32(bytes4(keccak256("Error(string)")))
                    mstore(0x00, 0x08c379a000000000000000000000000000000000000000000000000000000000)
                    // set data offset
                    mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020)
                    // set length of revert string
                    mstore(0x24, 0x0000000000000000000000000000000000000000000000000000000000000017)
                    // set revert string: bytes32(abi.encodePacked("Multicall3: call failed"))
                    mstore(0x44, 0x4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000)
                    revert(0x00, 0x64)
                }
            }
            unchecked {
                ++i;
            }
        }
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"signer1_","type":"address"},{"internalType":"address","name":"signer2_","type":"address"},{"internalType":"address","name":"signer3_","type":"address"},{"internalType":"address","name":"signer4_","type":"address"},{"internalType":"address","name":"signer5_","type":"address"},{"internalType":"address","name":"signer6_","type":"address"},{"internalType":"uint256","name":"requiredConfirmations_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AvoMultisigAdmin__InvalidParams","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__InvalidSigner","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionAlreadyConfirmed","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionAlreadyCreated","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionAlreadyRevoked","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionError","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__TransactionNotFoundError","type":"error"},{"inputs":[],"name":"AvoMultisigAdmin__Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"confirmator","type":"address"},{"indexed":false,"internalType":"uint8","name":"newConfirmationCount","type":"uint8"}],"name":"TransactionConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"TransactionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"executor","type":"address"}],"name":"TransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"TransactionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes30","name":"hash","type":"bytes30"},{"indexed":true,"internalType":"address","name":"revoker","type":"address"},{"indexed":false,"internalType":"uint8","name":"newConfirmationCount","type":"uint8"}],"name":"TransactionRevoked","type":"event"},{"inputs":[],"name":"REQUIRED_CONFIRMATIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_5","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_6","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct AvoMultisigAdmin.Call3[]","name":"calls","type":"tuple[]"}],"name":"aggregate3","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct AvoMultisigAdmin.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"confirm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"create","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"hashToTransaction","outputs":[{"internalType":"bytes30","name":"hash","type":"bytes30"},{"internalType":"uint8","name":"confirmation","type":"uint8"},{"internalType":"uint8","name":"revoke","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"hashTransactionData","outputs":[{"internalType":"bytes30","name":"hash_","type":"bytes30"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"target_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"},{"internalType":"bytes32","name":"salt_","type":"bytes32"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"revokeTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes30","name":"","type":"bytes30"}],"name":"signedTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806382ad56cb11610097578063bd5da16811610066578063bd5da168146102d0578063e9d68520146102f7578063f74f19291461033b578063f8c401eb1461034e57600080fd5b806382ad56cb14610261578063998e323714610281578063aa16aa0314610296578063b009345a146102a957600080fd5b80636096e8fa116100d35780636096e8fa146101a757806363ecbd40146101e55780636f728fd11461020c5780636fef4db91461023a57600080fd5b80630da82f3d146100fa57806350901a891461014b578063587d812714610172575b600080fd5b6101217f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e9081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101217f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e9081565b6101997f000000000000000000000000000000000000000000000000000000000000000281565b604051908152602001610142565b6101d56101b53660046115e3565b600160209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610142565b6101217f0000000000000000000000009800020b610194dba52cf606e8aa142f9f25616681565b6101d561021a3660046115e3565b600260209081526000928352604080842090915290825290205460ff1681565b6101217f0000000000000000000000009f60699ce23f1ab86ec3e095b477ff79d4f409ad81565b61027461026f366004611616565b610401565b60405161014291906116f9565b61029461028f3660046117bc565b6105f2565b005b6102946102a43660046117bc565b6109a5565b6101217f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e81565b6101217f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e81565b61030a6103053660046117bc565b611036565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091168152602001610142565b6102946103493660046117bc565b61106c565b6103bf61035c3660046118a5565b600060208190529081526040902054601081901b9060ff7e0100000000000000000000000000000000000000000000000000000000000082048116917f010000000000000000000000000000000000000000000000000000000000000090041683565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416845260ff9283166020850152911690820152606001610142565b606033301461043c576040517f08a7543600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818067ffffffffffffffff8111156104565761045661178d565b60405190808252806020026020018201604052801561049c57816020015b6040805180820190915260008152606060208201528152602001906001900390816104745790505b5091503660005b828110156105e95760008482815181106104bf576104bf6118c7565b602002602001015190508686838181106104db576104db6118c7565b90506020028101906104ed91906118f6565b92506104fc6020840184611934565b73ffffffffffffffffffffffffffffffffffffffff1661051f604085018561194f565b60405161052d9291906119bb565b6000604051808303816000865af19150503d806000811461056a576040519150601f19603f3d011682016040523d82523d6000602084013e61056f565b606091505b5060208084019190915290151580835290840135176105e0577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b506001016104a3565b50505092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e90161480159061066e57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e1614155b80156106b057503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009800020b610194dba52cf606e8aa142f9f2561661614155b80156106f257503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009f60699ce23f1ab86ec3e095b477ff79d4f409ad1614155b801561073457503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e901614155b801561077657503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e1614155b156107ad576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107ba848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b161561082e576040517f6c58f7cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008316808252600160208084018281526000858701818152858252818452878220965187549351915160109190911c7fff00000000000000000000000000000000000000000000000000000000000000909416939093177e0100000000000000000000000000000000000000000000000000000000000060ff92831602177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000919093160291909117909455338085528282528585208486529091529284902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117905591519091907fa724cdca3f5a488f820d8dd1e6b7fe700fa485891df4a3fa4043c1182cb3be8b90610997908890889088906119cb565b60405180910390a350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e901614801590610a2157503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e1614155b8015610a6357503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009800020b610194dba52cf606e8aa142f9f2561661614155b8015610aa557503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009f60699ce23f1ab86ec3e095b477ff79d4f409ad1614155b8015610ae757503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e901614155b8015610b2957503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e1614155b15610b60576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b6d848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b16610be0576040517fd528864400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008516845290915290205460ff1615610c57576040517f44d7d3fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008082166000908152602081815260409182902082516060810184529054601081901b909416815260ff7e01000000000000000000000000000000000000000000000000000000000000850481169282018390527f0100000000000000000000000000000000000000000000000000000000000000909404909316918301919091527f00000000000000000000000000000000000000000000000000000000000000021480610d4c57507f0000000000000000000000000000000000000000000000000000000000000002816040015160ff16145b15610d83576040517ff9ed57d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602081815260408084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000087168552825290922080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909117905581018051610df590611a0a565b60ff908116918290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000841660009081526020818152604090912080547fff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e0100000000000000000000000000000000000000000000000000000000000090940293909317909255908201517f0000000000000000000000000000000000000000000000000000000000000002911603610fcd57600060608673ffffffffffffffffffffffffffffffffffffffff1686604051610ed39190611a50565b6000604051808303816000865af19150503d8060008114610f10576040519150601f19603f3d011682016040523d82523d6000602084013e610f15565b606091505b5090925090508115610f755760405133907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008616907f55a64b85796ea394dde2a8833e289d982ecca7f690a0154d4144980270a5251c90600090a3610fca565b3373ffffffffffffffffffffffffffffffffffffffff168461ffff19167ffdd0f27c4147583f33e21059b14f8d4be73b91944862f54cbf7359883a8fe63083604051610fc19190611a62565b60405180910390a35b50505b60208181015160405160ff909116815233917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008516917f82d42e37c41a74cf8e0d9362307c07a49bf37f19417315df22b5daf3b8bfeb4f91015b60405180910390a35050505050565b600083838360405160200161104d93929190611a75565b6040516020818303038152906040528051906020012090509392505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e9016148015906110e857503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e1614155b801561112a57503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009800020b610194dba52cf606e8aa142f9f2561661614155b801561116c57503373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009f60699ce23f1ab86ec3e095b477ff79d4f409ad1614155b80156111ae57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ca5872f6d6942320146f0c353857aa7952533e901614155b80156111f057503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000910e413dbf3f6276fe8213ff656726bdc142e08e1614155b15611227576040517fef4c5ee900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611234848484611036565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000080821660009081526020819052604090205491925060109190911b166112a7576040517fd528864400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008082166000908152602081815260409182902082516060810184529054601081901b909416815260ff7e01000000000000000000000000000000000000000000000000000000000000850481169282018390527f0100000000000000000000000000000000000000000000000000000000000000909404909316918301919091527f0000000000000000000000000000000000000000000000000000000000000002148061139c57507f0000000000000000000000000000000000000000000000000000000000000002816040015160ff16145b156113d3576040517ff9ed57d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060400180516113e290611a0a565b60ff908116918290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000084811660009081526020818152604080832080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000909702969096179095553382526002815284822086519093168252919091529182205416151590036114f95733600090815260026020908152604080832084517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561152b565b6040517f8a1644dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080820151905160ff909116815233907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008416907fa3ecce907670135c6cae05217f61effd6e4f814d8237b08ec889c26696d79cb990602001611027565b803573ffffffffffffffffffffffffffffffffffffffff811681146115ae57600080fd5b919050565b80357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000811681146115ae57600080fd5b600080604083850312156115f657600080fd5b6115ff8361158a565b915061160d602084016115b3565b90509250929050565b6000806020838503121561162957600080fd5b823567ffffffffffffffff8082111561164157600080fd5b818501915085601f83011261165557600080fd5b81358181111561166457600080fd5b8660208260051b850101111561167957600080fd5b60209290920196919550909350505050565b60005b838110156116a657818101518382015260200161168e565b50506000910152565b600081518084526116c781602086016020860161168b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561177f578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180511515845287015187840187905261176c878501826116af565b9588019593505090860190600101611720565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156117d157600080fd5b6117da8461158a565b9250602084013567ffffffffffffffff808211156117f757600080fd5b818601915086601f83011261180b57600080fd5b81358181111561181d5761181d61178d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156118635761186361178d565b8160405282815289602084870101111561187c57600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b6000602082840312156118b757600080fd5b6118c0826115b3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261192a57600080fd5b9190910192915050565b60006020828403121561194657600080fd5b6118c08261158a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261198457600080fd5b83018035915067ffffffffffffffff82111561199f57600080fd5b6020019150368190038213156119b457600080fd5b9250929050565b8183823760009101908152919050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006119fa60608301856116af565b9050826040830152949350505050565b600060ff821660ff8103611a47577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6000825161192a81846020870161168b565b6020815260006118c060208301846116af565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16815260008351611ab281601485016020880161168b565b6014920191820192909252603401939250505056fea2646970667358221220396d0366b95dcfae28e5e8ad5f21a960766eb46bdf30717ed74985c3742ffcea64736f6c63430008120033

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.