ETH Price: $3,309.93 (-0.46%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Sign408185852026-01-14 21:35:175 hrs ago1768426517IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000260.001931
Sign408134002026-01-14 18:42:277 hrs ago1768416147IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000630.00466568
Sign408120672026-01-14 17:58:018 hrs ago1768413481IN
0x292b8e9B...f86Bcd52C
0 ETH0.0000010.00738305
Sign408096572026-01-14 16:37:4110 hrs ago1768408661IN
0x292b8e9B...f86Bcd52C
0 ETH0.000002830.02093471
Sign408004142026-01-14 11:29:3515 hrs ago1768390175IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000960.00713568
Sign407996102026-01-14 11:02:4715 hrs ago1768388567IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000840.00624988
Unstake407977122026-01-14 9:59:3116 hrs ago1768384771IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000260.00550984
Unstake407976792026-01-14 9:58:2516 hrs ago1768384705IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000260.00553783
Unstake407768702026-01-13 22:24:4728 hrs ago1768343087IN
0x292b8e9B...f86Bcd52C
0 ETH0.000002230.04727535
Unstake407768522026-01-13 22:24:1128 hrs ago1768343051IN
0x292b8e9B...f86Bcd52C
0 ETH0.000002060.04366386
Unstake407768362026-01-13 22:23:3928 hrs ago1768343019IN
0x292b8e9B...f86Bcd52C
0 ETH0.000002270.04814629
Unstake407768182026-01-13 22:23:0328 hrs ago1768342983IN
0x292b8e9B...f86Bcd52C
0 ETH0.000002870.06093418
Sign407764782026-01-13 22:11:4328 hrs ago1768342303IN
0x292b8e9B...f86Bcd52C
0 ETH0.000013130.09712885
Unstake407763982026-01-13 22:09:0328 hrs ago1768342143IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000340.00740178
Sign407759102026-01-13 21:52:4728 hrs ago1768341167IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000570.00409639
Sign407759002026-01-13 21:52:2728 hrs ago1768341147IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000550.0039869
Sign407758872026-01-13 21:52:0128 hrs ago1768341121IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000670.00482175
Sign407758592026-01-13 21:51:0528 hrs ago1768341065IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000580.00429007
Unstake407744882026-01-13 21:05:2329 hrs ago1768338323IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000250.00535441
Unstake407744842026-01-13 21:05:1529 hrs ago1768338315IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000250.00533388
Unstake407744812026-01-13 21:05:0929 hrs ago1768338309IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000250.00530001
Unstake407743062026-01-13 20:59:1929 hrs ago1768337959IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000280.00595209
Unstake407743032026-01-13 20:59:1329 hrs ago1768337953IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000280.00592178
Unstake407742962026-01-13 20:58:5929 hrs ago1768337939IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000340.0073469
Unstake407742902026-01-13 20:58:4729 hrs ago1768337927IN
0x292b8e9B...f86Bcd52C
0 ETH0.000000250.00541167
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
A0Signatures

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

// Contract for digital signature and staking
contract A0Signatures {
    // Instance of the A0T token (must be ERC20-compatible)
    IERC20 public immutable token;

    // Structure for digital signatures
    struct Signature {
        bytes32 identifier;
        bytes32 data;
        address signer;
        uint256 timestamp;
        uint256 stake;
        uint256 stakeLock;
    }

    // Mapping from signature identifier to stored Signature
    mapping(bytes32 => Signature) public signatures;

    // Event emitted when a new signature is recorded.
    event SignatureCreated(
        bytes32 indexed identifier,
        address indexed signer,
        uint256 timestamp
    );

    // Event emitted when a signature is unstaked.
    event SignatureUnstaked(
        bytes32 indexed identifier,
        address indexed signer,
        uint256 timestamp,
        uint256 unstakedAmount
    );

    // constructor to set the token instance
    constructor(address tokenAddress) {
        token = IERC20(tokenAddress);
    }

    // function to issue a digital signature, foundation for off-chain dApps
    // can be used for time-locking A0T tokens
    function sign(Signature[] calldata signaturesIn) external {
        uint256 totalStakeNeeded = 0;
        uint256 len = signaturesIn.length;
        for (uint256 i = 0; i < len; i++) {
            totalStakeNeeded += signaturesIn[i].stake;
        }

        // Transfer the total stake from the user to this contract using allowance.
        require(
            token.transferFrom(msg.sender, address(this), totalStakeNeeded),
            "Token transfer failed, check allowance and balance"
        );

        // Process each signature.
        for (uint256 i = 0; i < len; i++) {
            bytes32 id = signaturesIn[i].identifier;
            // Ensure the identifier has not been used yet.
            require(signatures[id].timestamp == 0, "Identifier already signed");

            Signature memory sig = signaturesIn[i];
            sig.signer = msg.sender;
            sig.timestamp = block.timestamp;
            // Store the signature.
            signatures[id] = sig;

            emit SignatureCreated(id, msg.sender, block.timestamp);
        }
    }

    // function to return staked tokens from signatures
    // can be used after stake is no longer needed and stakeLock timestamp has passed
    function unstake(bytes32[] calldata identifiers) external {
        uint256 totalToUnstake = 0;
        uint256 len = identifiers.length;

        for (uint256 i = 0; i < len; i++) {
            Signature storage sig = signatures[identifiers[i]];
            require(sig.timestamp != 0, "Signature does not exist");
            require(sig.signer == msg.sender, "Not the signature owner");
            require(sig.stake > 0, "No stake to unstake");
            require(sig.stakeLock <= block.timestamp, "Stake is still locked");

            totalToUnstake += sig.stake;
            uint256 stakedAmount = sig.stake;
            // Mark the signature's stake as claimed.
            sig.stake = 0;

            emit SignatureUnstaked(
                identifiers[i],
                msg.sender,
                block.timestamp,
                stakedAmount
            );
        }

        require(totalToUnstake > 0, "Nothing to unstake");
        require(
            token.transfer(msg.sender, totalToUnstake),
            "Token transfer failed"
        );
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"identifier","type":"bytes32"},{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SignatureCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"identifier","type":"bytes32"},{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakedAmount","type":"uint256"}],"name":"SignatureUnstaked","type":"event"},{"inputs":[{"components":[{"internalType":"bytes32","name":"identifier","type":"bytes32"},{"internalType":"bytes32","name":"data","type":"bytes32"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"stakeLock","type":"uint256"}],"internalType":"struct A0Signatures.Signature[]","name":"signaturesIn","type":"tuple[]"}],"name":"sign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"signatures","outputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32"},{"internalType":"bytes32","name":"data","type":"bytes32"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"stakeLock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"identifiers","type":"bytes32[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a0604052348015600e575f80fd5b50604051610a91380380610a91833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b608051610a0561008c5f395f8181610121015281816101e101526107030152610a055ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80632422224e1461004e5780638c6995aa146100f4578063b12c10f714610109578063fc0c546a1461011c575b5f80fd5b6100a761005c3660046107d4565b5f602081905290815260409020805460018201546002830154600384015460048501546005909501549394929373ffffffffffffffffffffffffffffffffffffffff90921692909186565b60408051968752602087019590955273ffffffffffffffffffffffffffffffffffffffff909316938501939093526060840152608083019190915260a082015260c0015b60405180910390f35b6101076101023660046107eb565b610168565b005b61010761011736600461085c565b610462565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100eb565b5f81815b818110156101a557848482818110610186576101866108bd565b905060c00201608001358361019b91906108d1565b925060010161016c565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af115801561023c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026091906108f6565b6102d75760405162461bcd60e51b815260206004820152603260248201527f546f6b656e207472616e73666572206661696c65642c20636865636b20616c6c60448201527f6f77616e636520616e642062616c616e6365000000000000000000000000000060648201526084015b60405180910390fd5b5f5b8181101561045b575f8585838181106102f4576102f46108bd565b60c00291909101355f8181526020819052604090206003015490925015905061035f5760405162461bcd60e51b815260206004820152601960248201527f4964656e74696669657220616c7265616479207369676e65640000000000000060448201526064016102ce565b5f868684818110610372576103726108bd565b905060c002018036038101906103889190610944565b33604082810182815242606085018181525f8881526020818152908590208751815581880151600182015593516002850180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055905160038401556080860151600484015560a08601516005909301929092559151918252929350909184917f99824c4b9387c6f8f10dd730fcd8568e01a8842521fd8d372c05b455f3e1bbff910160405180910390a350506001016102d9565b5050505050565b5f81815b8181101561067e575f805f878785818110610483576104836108bd565b9050602002013581526020019081526020015f20905080600301545f036104ec5760405162461bcd60e51b815260206004820152601860248201527f5369676e617475726520646f6573206e6f74206578697374000000000000000060448201526064016102ce565b600281015473ffffffffffffffffffffffffffffffffffffffff1633146105555760405162461bcd60e51b815260206004820152601760248201527f4e6f7420746865207369676e6174757265206f776e657200000000000000000060448201526064016102ce565b5f8160040154116105a85760405162461bcd60e51b815260206004820152601360248201527f4e6f207374616b6520746f20756e7374616b650000000000000000000000000060448201526064016102ce565b42816005015411156105fc5760405162461bcd60e51b815260206004820152601560248201527f5374616b65206973207374696c6c206c6f636b6564000000000000000000000060448201526064016102ce565b600481015461060b90856108d1565b6004820180545f9091559094503387878581811061062b5761062b6108bd565b905060200201357ff5867e3cc2b1e5abc30afd63bc326c6c3032f68ca4485656eaa9e815919e3e21428460405161066c929190918252602082015260400190565b60405180910390a35050600101610466565b505f82116106ce5760405162461bcd60e51b815260206004820152601260248201527f4e6f7468696e6720746f20756e7374616b65000000000000000000000000000060448201526064016102ce565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561075e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078291906108f6565b6107ce5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e207472616e73666572206661696c6564000000000000000000000060448201526064016102ce565b50505050565b5f602082840312156107e4575f80fd5b5035919050565b5f80602083850312156107fc575f80fd5b823567ffffffffffffffff811115610812575f80fd5b8301601f81018513610822575f80fd5b803567ffffffffffffffff811115610838575f80fd5b85602060c08302840101111561084c575f80fd5b6020919091019590945092505050565b5f806020838503121561086d575f80fd5b823567ffffffffffffffff811115610883575f80fd5b8301601f81018513610893575f80fd5b803567ffffffffffffffff8111156108a9575f80fd5b8560208260051b840101111561084c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b808201808211156108f057634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215610906575f80fd5b81518015158114610915575f80fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461093f575f80fd5b919050565b5f60c0828403128015610955575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561098557634e487b7160e01b5f52604160045260245ffd5b604090815283358252602080850135908301526109a390840161091c565b6040820152606083810135908201526080808401359082015260a092830135928101929092525091905056fea2646970667358221220bd966bf3971efada45be87b8fe30c7af94db9a7a099d77d6c1781a77d977fcdc64736f6c634300081a0033000000000000000000000000cc4adb618253ed0d4d8a188fb901d70c54735e03

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061004a575f3560e01c80632422224e1461004e5780638c6995aa146100f4578063b12c10f714610109578063fc0c546a1461011c575b5f80fd5b6100a761005c3660046107d4565b5f602081905290815260409020805460018201546002830154600384015460048501546005909501549394929373ffffffffffffffffffffffffffffffffffffffff90921692909186565b60408051968752602087019590955273ffffffffffffffffffffffffffffffffffffffff909316938501939093526060840152608083019190915260a082015260c0015b60405180910390f35b6101076101023660046107eb565b610168565b005b61010761011736600461085c565b610462565b6101437f000000000000000000000000cc4adb618253ed0d4d8a188fb901d70c54735e0381565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100eb565b5f81815b818110156101a557848482818110610186576101866108bd565b905060c00201608001358361019b91906108d1565b925060010161016c565b506040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000cc4adb618253ed0d4d8a188fb901d70c54735e0373ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af115801561023c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026091906108f6565b6102d75760405162461bcd60e51b815260206004820152603260248201527f546f6b656e207472616e73666572206661696c65642c20636865636b20616c6c60448201527f6f77616e636520616e642062616c616e6365000000000000000000000000000060648201526084015b60405180910390fd5b5f5b8181101561045b575f8585838181106102f4576102f46108bd565b60c00291909101355f8181526020819052604090206003015490925015905061035f5760405162461bcd60e51b815260206004820152601960248201527f4964656e74696669657220616c7265616479207369676e65640000000000000060448201526064016102ce565b5f868684818110610372576103726108bd565b905060c002018036038101906103889190610944565b33604082810182815242606085018181525f8881526020818152908590208751815581880151600182015593516002850180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055905160038401556080860151600484015560a08601516005909301929092559151918252929350909184917f99824c4b9387c6f8f10dd730fcd8568e01a8842521fd8d372c05b455f3e1bbff910160405180910390a350506001016102d9565b5050505050565b5f81815b8181101561067e575f805f878785818110610483576104836108bd565b9050602002013581526020019081526020015f20905080600301545f036104ec5760405162461bcd60e51b815260206004820152601860248201527f5369676e617475726520646f6573206e6f74206578697374000000000000000060448201526064016102ce565b600281015473ffffffffffffffffffffffffffffffffffffffff1633146105555760405162461bcd60e51b815260206004820152601760248201527f4e6f7420746865207369676e6174757265206f776e657200000000000000000060448201526064016102ce565b5f8160040154116105a85760405162461bcd60e51b815260206004820152601360248201527f4e6f207374616b6520746f20756e7374616b650000000000000000000000000060448201526064016102ce565b42816005015411156105fc5760405162461bcd60e51b815260206004820152601560248201527f5374616b65206973207374696c6c206c6f636b6564000000000000000000000060448201526064016102ce565b600481015461060b90856108d1565b6004820180545f9091559094503387878581811061062b5761062b6108bd565b905060200201357ff5867e3cc2b1e5abc30afd63bc326c6c3032f68ca4485656eaa9e815919e3e21428460405161066c929190918252602082015260400190565b60405180910390a35050600101610466565b505f82116106ce5760405162461bcd60e51b815260206004820152601260248201527f4e6f7468696e6720746f20756e7374616b65000000000000000000000000000060448201526064016102ce565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000cc4adb618253ed0d4d8a188fb901d70c54735e0373ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561075e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078291906108f6565b6107ce5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e207472616e73666572206661696c6564000000000000000000000060448201526064016102ce565b50505050565b5f602082840312156107e4575f80fd5b5035919050565b5f80602083850312156107fc575f80fd5b823567ffffffffffffffff811115610812575f80fd5b8301601f81018513610822575f80fd5b803567ffffffffffffffff811115610838575f80fd5b85602060c08302840101111561084c575f80fd5b6020919091019590945092505050565b5f806020838503121561086d575f80fd5b823567ffffffffffffffff811115610883575f80fd5b8301601f81018513610893575f80fd5b803567ffffffffffffffff8111156108a9575f80fd5b8560208260051b840101111561084c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b808201808211156108f057634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215610906575f80fd5b81518015158114610915575f80fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461093f575f80fd5b919050565b5f60c0828403128015610955575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561098557634e487b7160e01b5f52604160045260245ffd5b604090815283358252602080850135908301526109a390840161091c565b6040820152606083810135908201526080808401359082015260a092830135928101929092525091905056fea2646970667358221220bd966bf3971efada45be87b8fe30c7af94db9a7a099d77d6c1781a77d977fcdc64736f6c634300081a0033

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

000000000000000000000000cc4adb618253ed0d4d8a188fb901d70c54735e03

-----Decoded View---------------
Arg [0] : tokenAddress (address): 0xCc4ADB618253ED0d4d8A188fB901d70C54735e03

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cc4adb618253ed0d4d8a188fb901d70c54735e03


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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