Hoodi Testnet

Contract

0x49B3512c44891bef83F8967d075121Bd1b07a01B

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Execute Vote3918942025-05-14 14:18:4821 hrs ago1747232328IN
0x49B3512c...d1b07a01B
0 ETH0.000805351.09050272
Execute Vote3502912025-05-08 13:40:246 days ago1746711624IN
0x49B3512c...d1b07a01B
0 ETH0.034449793.98817221
Execute Vote3034872025-05-01 17:23:1213 days ago1746120192IN
0x49B3512c...d1b07a01B
0 ETH0.000508391.08098596
Assign Delegate2111662025-04-18 9:23:1227 days ago1744968192IN
0x49B3512c...d1b07a01B
0 ETH0.000121351.10102515
Execute Vote1853532025-04-14 15:31:3630 days ago1744644696IN
0x49B3512c...d1b07a01B
0 ETH0.000317850.99991362
Vote1852852025-04-14 15:16:3630 days ago1744643796IN
0x49B3512c...d1b07a01B
0 ETH0.000134041.14753445
Execute Vote1495782025-04-09 7:59:0036 days ago1744185540IN
0x49B3512c...d1b07a01B
0 ETH0.001361551.14822213
Vote1494992025-04-09 7:41:4836 days ago1744184508IN
0x49B3512c...d1b07a01B
0 ETH0.000117841.00882936
Execute Vote1189342025-04-04 15:10:2440 days ago1743779424IN
0x49B3512c...d1b07a01B
0 ETH0.000240951.04154366
Vote1188642025-04-04 14:55:0040 days ago1743778500IN
0x49B3512c...d1b07a01B
0 ETH0.000135251.17806272
Execute Vote1119622025-04-03 12:59:3641 days ago1743685176IN
0x49B3512c...d1b07a01B
0 ETH0.000238111.02924479
Vote1118442025-04-03 12:32:4841 days ago1743683568IN
0x49B3512c...d1b07a01B
0 ETH0.000182871.59289096
Execute Vote1113012025-04-03 10:19:2442 days ago1743675564IN
0x49B3512c...d1b07a01B
0 ETH0.000231551.00088491
Execute Vote1112842025-04-03 10:16:0042 days ago1743675360IN
0x49B3512c...d1b07a01B
0 ETH0.000239691.03610167
Vote1112352025-04-03 10:04:1242 days ago1743674652IN
0x49B3512c...d1b07a01B
0 ETH0.000128281.11741465
Vote1112212025-04-03 10:00:4842 days ago1743674448IN
0x49B3512c...d1b07a01B
0 ETH0.000116731.01681033
Execute Vote1048022025-04-02 9:48:1243 days ago1743587292IN
0x49B3512c...d1b07a01B
0 ETH0.000280461.21231708
Vote1047372025-04-02 9:33:3643 days ago1743586416IN
0x49B3512c...d1b07a01B
0 ETH0.000133741.16492518
Execute Vote660042025-03-27 10:01:2449 days ago1743069684IN
0x49B3512c...d1b07a01B
0 ETH0.000199671.15581897
Vote659332025-03-27 9:46:3649 days ago1743068796IN
0x49B3512c...d1b07a01B
0 ETH0.00012611.09836356
Execute Vote533732025-03-25 13:55:2450 days ago1742910924IN
0x49B3512c...d1b07a01B
0 ETH0.001014191.10126125
Vote533092025-03-25 13:41:2450 days ago1742910084IN
0x49B3512c...d1b07a01B
0 ETH0.000112710.98175208
Execute Vote201002025-03-20 14:27:2455 days ago1742480844IN
0x49B3512c...d1b07a01B
0 ETH0.000304711.0524647
Vote200302025-03-20 14:12:2455 days ago1742479944IN
0x49B3512c...d1b07a01B
0 ETH0.000112910.98350232
Execute Vote200022025-03-20 14:06:1255 days ago1742479572IN
0x49B3512c...d1b07a01B
0 ETH0.000522261.00826682
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Submit Proposal3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Add EVM Script F...3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Add EVM Script F...3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Add EVM Script F...3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Exec Script3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Get Script Execu...3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Execute Vote3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918942025-05-14 14:18:4821 hrs ago1747232328
0x49B3512c...d1b07a01B
0 ETH
Balance Of At3918352025-05-14 14:06:2422 hrs ago1747231584
0x49B3512c...d1b07a01B
0 ETH
Attempt Vote For3918352025-05-14 14:06:2422 hrs ago1747231584
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918352025-05-14 14:06:2422 hrs ago1747231584
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918352025-05-14 14:06:2422 hrs ago1747231584
0x49B3512c...d1b07a01B
0 ETH
Total Supply At3918192025-05-14 14:03:1222 hrs ago1747231392
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918192025-05-14 14:03:1222 hrs ago1747231392
0x49B3512c...d1b07a01B
0 ETH
New Vote3918192025-05-14 14:03:1222 hrs ago1747231392
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918192025-05-14 14:03:1222 hrs ago1747231392
0x49B3512c...d1b07a01B
0 ETH
Transfer*3918192025-05-14 14:03:1222 hrs ago1747231392
0x49B3512c...d1b07a01B
0 ETH
Check Time Befor...3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
Verify3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
Submit Proposal3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
Validate Voting ...3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
Proxy_change Adm...3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
Revoke Role3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
Revoke Role3502912025-05-08 13:40:246 days ago1746711624
0x49B3512c...d1b07a01B
0 ETH
View All Internal Transactions
Loading...
Loading

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

Contract Name:
AppProxyUpgradeable

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
constantinople EvmVersion
pragma solidity 0.4.24;

import "./AppProxyBase.sol";


contract AppProxyUpgradeable is AppProxyBase {
    /**
    * @dev Initialize AppProxyUpgradeable (makes it an upgradeable Aragon app)
    * @param _kernel Reference to organization kernel for the app
    * @param _appId Identifier for app
    * @param _initializePayload Payload for call to be made after setup to initialize
    */
    constructor(IKernel _kernel, bytes32 _appId, bytes _initializePayload)
        AppProxyBase(_kernel, _appId, _initializePayload)
        public // solium-disable-line visibility-first
    {
        // solium-disable-previous-line no-empty-blocks
    }

    /**
     * @dev ERC897, the address the proxy would delegate calls to
     */
    function implementation() public view returns (address) {
        return getAppBase(appId());
    }

    /**
     * @dev ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy
     */
    function proxyType() public pure returns (uint256 proxyTypeId) {
        return UPGRADEABLE;
    }
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;


interface IACL {
    function initialize(address permissionsCreator) external;

    // TODO: this should be external
    // See https://github.com/ethereum/solidity/issues/4832
    function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool);
}

pragma solidity 0.4.24;

import "./AppStorage.sol";
import "../common/DepositableDelegateProxy.sol";
import "../kernel/KernelConstants.sol";
import "../kernel/IKernel.sol";


contract AppProxyBase is AppStorage, DepositableDelegateProxy, KernelNamespaceConstants {
    /**
    * @dev Initialize AppProxy
    * @param _kernel Reference to organization kernel for the app
    * @param _appId Identifier for app
    * @param _initializePayload Payload for call to be made after setup to initialize
    */
    constructor(IKernel _kernel, bytes32 _appId, bytes _initializePayload) public {
        setKernel(_kernel);
        setAppId(_appId);

        // Implicit check that kernel is actually a Kernel
        // The EVM doesn't actually provide a way for us to make sure, but we can force a revert to
        // occur if the kernel is set to 0x0 or a non-code address when we try to call a method on
        // it.
        address appCode = getAppBase(_appId);

        // If initialize payload is provided, it will be executed
        if (_initializePayload.length > 0) {
            require(isContract(appCode));
            // Cannot make delegatecall as a delegateproxy.delegatedFwd as it
            // returns ending execution context and halts contract deployment
            require(appCode.delegatecall(_initializePayload));
        }
    }

    function getAppBase(bytes32 _appId) internal view returns (address) {
        return kernel().getApp(KERNEL_APP_BASES_NAMESPACE, _appId);
    }
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;

import "../common/UnstructuredStorage.sol";
import "../kernel/IKernel.sol";


contract AppStorage {
    using UnstructuredStorage for bytes32;

    /* Hardcoded constants to save gas
    bytes32 internal constant KERNEL_POSITION = keccak256("aragonOS.appStorage.kernel");
    bytes32 internal constant APP_ID_POSITION = keccak256("aragonOS.appStorage.appId");
    */
    bytes32 internal constant KERNEL_POSITION = 0x4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b;
    bytes32 internal constant APP_ID_POSITION = 0xd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b;

    function kernel() public view returns (IKernel) {
        return IKernel(KERNEL_POSITION.getStorageAddress());
    }

    function appId() public view returns (bytes32) {
        return APP_ID_POSITION.getStorageBytes32();
    }

    function setKernel(IKernel _kernel) internal {
        KERNEL_POSITION.setStorageAddress(address(_kernel));
    }

    function setAppId(bytes32 _appId) internal {
        APP_ID_POSITION.setStorageBytes32(_appId);
    }
}

pragma solidity 0.4.24;

import "../common/IsContract.sol";
import "../lib/misc/ERCProxy.sol";


contract DelegateProxy is ERCProxy, IsContract {
    uint256 internal constant FWD_GAS_LIMIT = 10000;

    /**
    * @dev Performs a delegatecall and returns whatever the delegatecall returned (entire context execution will return!)
    * @param _dst Destination address to perform the delegatecall
    * @param _calldata Calldata for the delegatecall
    */
    function delegatedFwd(address _dst, bytes _calldata) internal {
        require(isContract(_dst));
        uint256 fwdGasLimit = FWD_GAS_LIMIT;

        assembly {
            let result := delegatecall(sub(gas, fwdGasLimit), _dst, add(_calldata, 0x20), mload(_calldata), 0, 0)
            let size := returndatasize
            let ptr := mload(0x40)
            returndatacopy(ptr, 0, size)

            // revert instead of invalid() bc if the underlying call failed with invalid() it already wasted gas.
            // if the call returned error data, forward it
            switch result case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }
}

File 6 of 13 : DepositableDelegateProxy.sol
pragma solidity 0.4.24;

import "./DelegateProxy.sol";
import "./DepositableStorage.sol";


contract DepositableDelegateProxy is DepositableStorage, DelegateProxy {
    event ProxyDeposit(address sender, uint256 value);

    function () external payable {
        uint256 forwardGasThreshold = FWD_GAS_LIMIT;
        bytes32 isDepositablePosition = DEPOSITABLE_POSITION;

        // Optimized assembly implementation to prevent EIP-1884 from breaking deposits, reference code in Solidity:
        // https://github.com/aragon/aragonOS/blob/v4.2.1/contracts/common/DepositableDelegateProxy.sol#L10-L20
        assembly {
            // Continue only if the gas left is lower than the threshold for forwarding to the implementation code,
            // otherwise continue outside of the assembly block.
            if lt(gas, forwardGasThreshold) {
                // Only accept the deposit and emit an event if all of the following are true:
                // the proxy accepts deposits (isDepositable), msg.data.length == 0, and msg.value > 0
                if and(and(sload(isDepositablePosition), iszero(calldatasize)), gt(callvalue, 0)) {
                    // Equivalent Solidity code for emitting the event:
                    // emit ProxyDeposit(msg.sender, msg.value);

                    let logData := mload(0x40) // free memory pointer
                    mstore(logData, caller) // add 'msg.sender' to the log data (first event param)
                    mstore(add(logData, 0x20), callvalue) // add 'msg.value' to the log data (second event param)

                    // Emit an event with one topic to identify the event: keccak256('ProxyDeposit(address,uint256)') = 0x15ee...dee1
                    log1(logData, 0x40, 0x15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1)

                    stop() // Stop. Exits execution context
                }

                // If any of above checks failed, revert the execution (if ETH was sent, it is returned to the sender)
                revert(0, 0)
            }
        }

        address target = implementation();
        delegatedFwd(target, msg.data);
    }
}

pragma solidity 0.4.24;

import "./UnstructuredStorage.sol";


contract DepositableStorage {
    using UnstructuredStorage for bytes32;

    // keccak256("aragonOS.depositableStorage.depositable")
    bytes32 internal constant DEPOSITABLE_POSITION = 0x665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea;

    function isDepositable() public view returns (bool) {
        return DEPOSITABLE_POSITION.getStorageBool();
    }

    function setDepositable(bool _depositable) internal {
        DEPOSITABLE_POSITION.setStorageBool(_depositable);
    }
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;


contract IsContract {
    /*
    * NOTE: this should NEVER be used for authentication
    * (see pitfalls: https://github.com/fergarrui/ethereum-security/tree/master/contracts/extcodesize).
    *
    * This is only intended to be used as a sanity check that an address is actually a contract,
    * RATHER THAN an address not being a contract.
    */
    function isContract(address _target) internal view returns (bool) {
        if (_target == address(0)) {
            return false;
        }

        uint256 size;
        assembly { size := extcodesize(_target) }
        return size > 0;
    }
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;


interface IVaultRecoverable {
    event RecoverToVault(address indexed vault, address indexed token, uint256 amount);

    function transferToVault(address token) external;

    function allowRecoverability(address token) external view returns (bool);
    function getRecoveryVault() external view returns (address);
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;


library UnstructuredStorage {
    function getStorageBool(bytes32 position) internal view returns (bool data) {
        assembly { data := sload(position) }
    }

    function getStorageAddress(bytes32 position) internal view returns (address data) {
        assembly { data := sload(position) }
    }

    function getStorageBytes32(bytes32 position) internal view returns (bytes32 data) {
        assembly { data := sload(position) }
    }

    function getStorageUint256(bytes32 position) internal view returns (uint256 data) {
        assembly { data := sload(position) }
    }

    function setStorageBool(bytes32 position, bool data) internal {
        assembly { sstore(position, data) }
    }

    function setStorageAddress(bytes32 position, address data) internal {
        assembly { sstore(position, data) }
    }

    function setStorageBytes32(bytes32 position, bytes32 data) internal {
        assembly { sstore(position, data) }
    }

    function setStorageUint256(bytes32 position, uint256 data) internal {
        assembly { sstore(position, data) }
    }
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;

import "../acl/IACL.sol";
import "../common/IVaultRecoverable.sol";


interface IKernelEvents {
    event SetApp(bytes32 indexed namespace, bytes32 indexed appId, address app);
}


// This should be an interface, but interfaces can't inherit yet :(
contract IKernel is IKernelEvents, IVaultRecoverable {
    function acl() public view returns (IACL);
    function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool);

    function setApp(bytes32 namespace, bytes32 appId, address app) public;
    function getApp(bytes32 namespace, bytes32 appId) public view returns (address);
}

File 12 of 13 : KernelConstants.sol
/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;


contract KernelAppIds {
    /* Hardcoded constants to save gas
    bytes32 internal constant KERNEL_CORE_APP_ID = apmNamehash("kernel");
    bytes32 internal constant KERNEL_DEFAULT_ACL_APP_ID = apmNamehash("acl");
    bytes32 internal constant KERNEL_DEFAULT_VAULT_APP_ID = apmNamehash("vault");
    */
    bytes32 internal constant KERNEL_CORE_APP_ID = 0x3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c;
    bytes32 internal constant KERNEL_DEFAULT_ACL_APP_ID = 0xe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a;
    bytes32 internal constant KERNEL_DEFAULT_VAULT_APP_ID = 0x7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d1;
}


contract KernelNamespaceConstants {
    /* Hardcoded constants to save gas
    bytes32 internal constant KERNEL_CORE_NAMESPACE = keccak256("core");
    bytes32 internal constant KERNEL_APP_BASES_NAMESPACE = keccak256("base");
    bytes32 internal constant KERNEL_APP_ADDR_NAMESPACE = keccak256("app");
    */
    bytes32 internal constant KERNEL_CORE_NAMESPACE = 0xc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8;
    bytes32 internal constant KERNEL_APP_BASES_NAMESPACE = 0xf1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f;
    bytes32 internal constant KERNEL_APP_ADDR_NAMESPACE = 0xd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb;
}

/*
 * SPDX-License-Identifier:    MIT
 */

pragma solidity ^0.4.24;


contract ERCProxy {
    uint256 internal constant FORWARDING = 1;
    uint256 internal constant UPGRADEABLE = 2;

    function proxyType() public pure returns (uint256 proxyTypeId);
    function implementation() public view returns (address codeAddr);
}

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

Contract ABI

API
[{"constant":true,"inputs":[],"name":"proxyType","outputs":[{"name":"proxyTypeId","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isDepositable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"appId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kernel","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kernel","type":"address"},{"name":"_appId","type":"bytes32"},{"name":"_initializePayload","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ProxyDeposit","type":"event"}]

Deployed Bytecode

0x6080604052600436106100505760003560e01c63ffffffff1680634555d5c91461010f57806348a0c8dd146101365780635c60da1b1461015f57806380afdea81461019d578063d4aae0c4146101b2575b6127107f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6000825a10156100c55760003411361583541616156100c0576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100cd6101c7565b905061010a816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101de945050505050565b505050005b34801561011b57600080fd5b5061012461021f565b60408051918252519081900360200190f35b34801561014257600080fd5b5061014b610224565b604080519115158252519081900360200190f35b34801561016b57600080fd5b506101746101c7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a957600080fd5b5061012461024f565b3480156101be57600080fd5b5061017461027a565b60006101d96101d461024f565b6102a5565b905090565b60006101e983610379565b15156101f457600080fd5b612710905060008083516020850186855a03f43d604051816000823e82801561021b578282f35b8282fd5b600290565b60006101d97f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea6103b3565b60006101d97fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6103b3565b60006101d97f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6103b3565b60006102af61027a565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d602081101561037157600080fd5b505192915050565b60008073ffffffffffffffffffffffffffffffffffffffff831615156103a257600091506103ad565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600a165627a7a723058201f7172bafbfd668d51a2f5278c487bd0c3ae1b874a501ce6d1eb7aa8dbccb1860029

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Loading...
Loading
[ 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.