Ape Curtis Testnet

Contract

0x0000000000a1793068B5b7e278dE7c641E9E75C8

Overview

APE Balance

Ape Curtis LogoApe Curtis LogoApe Curtis Logo0 APE

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy And Confi...150906142025-01-26 18:02:1312 days ago1737914533IN
0x00000000...41E9E75C8
0 APE0.000045990.01

Latest 5 internal transactions

Parent Transaction Hash Block From To
150906142025-01-26 18:02:1312 days ago1737914533
0x00000000...41E9E75C8
0 APE
150906142025-01-26 18:02:1312 days ago1737914533
0x00000000...41E9E75C8
0 APE
150906142025-01-26 18:02:1312 days ago1737914533
0x00000000...41E9E75C8
0 APE
150906142025-01-26 18:02:1312 days ago1737914533
0x00000000...41E9E75C8
0 APE
141007722024-12-21 1:58:3849 days ago1734746318  Contract Creation0 APE

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AuthorizedTransferSecurityRegistryCreator

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 9999999 runs

Other Settings:
cancun EvmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 3 : AuthorizedTransferSecurityRegistryCreator.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import {
    ImmutableCreate2FactoryInterface
} from "seaport-types/src/interfaces/ImmutableCreate2FactoryInterface.sol";

import {
    IAuthorizedTransferSecurityRegistry
} from "./interfaces/IAuthorizedTransferSecurityRegistry.sol";

/// @title AuthorizedTransferSecurityRegistryCreator
/// @dev Deploys and configures AuthorizedTransferSecurityRegistry contracts.
contract AuthorizedTransferSecurityRegistryCreator {
    ImmutableCreate2FactoryInterface private constant factory = (
        ImmutableCreate2FactoryInterface(
            0x0000000000FFe8B47B3e2130213B802212439497
        )
    );

    error UNAUTHORIZED();

    function _canDeploy() internal view returns (bool) {
        return 
            tx.origin == address(0x939C8d89EBC11fA45e576215E2353673AD0bA18A) ||
            tx.origin == address(0xe80a65eB7a3018DedA407e621Ef5fb5B416678CA) ||
            tx.origin == address(0x86D26897267711ea4b173C8C124a0A73612001da) ||
            tx.origin == address(0xbF81D02F3Ee59E79af3D9337a186F65c9faE39F3);
    }

    function deployAndConfigure(
        address initialOwner,
        bytes32 salt,
        bytes memory initializationCode,
        address[] memory authorizers,
        address[] memory operators
    ) external returns (address registry) {
        if (!_canDeploy()) {
            revert UNAUTHORIZED();
        }

        IAuthorizedTransferSecurityRegistry registryContract = (
            IAuthorizedTransferSecurityRegistry(
                factory.safeCreate2(salt, initializationCode)
            )
        );

        // Note: in provided init code, this contract must be supplied
        // as the default owner so that it can perform configuration and
        // reassign ownership of the default list to the supplied owner.
        if (authorizers.length > 0) {
            registryContract.addAuthorizers(0, authorizers);
        }
        if (operators.length > 0) {
            registryContract.addOperators(0, operators);
        }
        registryContract.reassignOwnershipOfList(0, initialOwner);

        return address(registryContract);
    }
}

File 2 of 3 : ImmutableCreate2FactoryInterface.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

/**
 * @title ImmutableCreate2FactoryInterface
 * @author 0age
 * @notice This contract provides a safeCreate2 function that takes a salt value
 *         and a block of initialization code as arguments and passes them into
 *         inline assembly. The contract prevents redeploys by maintaining a
 *         mapping of all contracts that have already been deployed, and
 *         prevents frontrunning or other collisions by requiring that the first
 *         20 bytes of the salt are equal to the address of the caller (this can
 *         be bypassed by setting the first 20 bytes to the null address). There
 *         is also a view function that computes the address of the contract
 *         that will be created when submitting a given salt or nonce along with
 *         a given block of initialization code.
 */
interface ImmutableCreate2FactoryInterface {
    /**
     * @dev Create a contract using CREATE2 by submitting a given salt or nonce
     *      along with the initialization code for the contract. Note that the
     *      first 20 bytes of the salt must match those of the calling address,
     *      which prevents contract creation events from being submitted by
     *      unintended parties.
     *
     * @param salt               The nonce that will be passed into the CREATE2
     *                           call.
     * @param initializationCode The initialization code that will be passed
     *                           into the CREATE2 call.
     *
     * @return deploymentAddress Address of the contract that will be created.
     */
    function safeCreate2(
        bytes32 salt,
        bytes calldata initializationCode
    ) external payable returns (address deploymentAddress);

    /**
     * @dev Compute the address of the contract that will be created when
     *      submitting a given salt or nonce to the contract along with the
     *      contract's initialization code. The CREATE2 address is computed in
     *      accordance with EIP-1014, and adheres to the formula therein of
     *      `keccak256( 0xff ++ address ++ salt ++ keccak256(init_code)))[12:]`
     *      when performing the computation. The computed address is then
     *      checked for any existing contract code - if so, the null address
     *      will be returned instead.
     *
     * @param salt     The nonce passed into the CREATE2 address calculation.
     * @param initCode The contract initialization code to be used that will be
     *                 passed into the CREATE2 address calculation.
     *
     * @return deploymentAddress Address of the contract that will be created,
     *                           or the null address if a contract already
     *                           exists at that address.
     */
    function findCreate2Address(
        bytes32 salt,
        bytes calldata initCode
    ) external view returns (address deploymentAddress);

    /**
     * @dev Compute the address of the contract that will be created when
     *      submitting a given salt or nonce to the contract along with the
     *      keccak256 hash of the contract's initialization code. The CREATE2
     *      address is computed in accordance with EIP-1014, and adheres to the
     *      `keccak256( 0xff ++ address ++ salt ++ keccak256(init_code)))[12:]`
     *      formula when performing the computation. The computed address is
     *      then checked for any existing contract code - if so, the null
     *      address will be returned instead.
     *
     * @param salt         The nonce passed into the CREATE2 address
     *                     calculation.
     * @param initCodeHash The keccak256 hash of the initialization code that
     *                     will be passed into the CREATE2 address calculation.
     *
     * @return deploymentAddress Address of the contract that will be created,
     *                           or the null address if a contract already
     *                           exists at that address.
     */
    function findCreate2AddressViaHash(
        bytes32 salt,
        bytes32 initCodeHash
    ) external view returns (address deploymentAddress);

    /**
     * @dev Determine if a contract has already been deployed by the factory to
     *      a given address.
     *
     * @param deploymentAddress The contract address to check.
     *
     * @return True if the contract has been deployed, false otherwise.
     */
    function hasBeenDeployed(
        address deploymentAddress
    ) external view returns (bool);
}

File 3 of 3 : IAuthorizedTransferSecurityRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

enum ListTypes {
    AuthorizerList,
    OperatorList
}

/// @title IAuthorizedTransferSecurityRegistry
/// @dev Interface for the Authorized Transfer Security Registry, a simplified version of the Transfer
///      Security Registry that only supports authorizers and whitelisted operators, and assumes a
///      security level of OperatorWhitelistEnableOTC + authorizers for all collections that use it.
///      Note that a number of view functions on collections that add this validator will not work.
interface IAuthorizedTransferSecurityRegistry {
    event CreatedList(uint256 indexed id, string name);
    event AppliedListToCollection(address indexed collection, uint120 indexed id);
    event ReassignedListOwnership(uint256 indexed id, address indexed newOwner);
    event AddedAccountToList(ListTypes indexed kind, uint256 indexed id, address indexed account);
    event RemovedAccountFromList(ListTypes indexed kind, uint256 indexed id, address indexed account);

    error AuthorizedTransferSecurityRegistry__ListDoesNotExist();
    error AuthorizedTransferSecurityRegistry__CallerDoesNotOwnList();
    error AuthorizedTransferSecurityRegistry__ArrayLengthCannotBeZero();
    error AuthorizedTransferSecurityRegistry__CallerMustHaveElevatedPermissionsForSpecifiedNFT();
    error AuthorizedTransferSecurityRegistry__ListOwnershipCannotBeTransferredToZeroAddress();
    error AuthorizedTransferSecurityRegistry__ZeroAddressNotAllowed();
    error AuthorizedTransferSecurityRegistry__UnauthorizedTransfer();
    error AuthorizedTransferSecurityRegistry__CallerIsNotValidAuthorizer();

    /// Manage lists of authorizers & operators that can be applied to collections
    function createList(string calldata name) external returns (uint120);
    function createListCopy(string calldata name, uint120 sourceListId) external returns (uint120);
    function reassignOwnershipOfList(uint120 id, address newOwner) external;
    function renounceOwnershipOfList(uint120 id) external;
    function applyListToCollection(address collection, uint120 id) external;
    function listOwners(uint120 id) external view returns (address);

    /// Manage and query for authorizers on lists
    function addAuthorizers(uint120 id, address[] calldata accounts) external;
    function removeAuthorizers(uint120 id, address[] calldata accounts) external;
    function getAuthorizers(uint120 id) external view returns (address[] memory);
    function isAuthorizer(uint120 id, address account) external view returns (bool);
    function getAuthorizersByCollection(address collection) external view returns (address[] memory);
    function isAuthorizerByCollection(address collection, address account) external view returns (bool);

    /// Manage and query for operators on lists
    function addOperators(uint120 id, address[] calldata accounts) external;
    function removeOperators(uint120 id, address[] calldata accounts) external;
    function getOperators(uint120 id) external view returns (address[] memory);
    function isOperator(uint120 id, address account) external view returns (bool);
    function getOperatorsByCollection(address collection) external view returns (address[] memory);
    function isOperatorByCollection(address collection, address account) external view returns (bool);

    /// Ensure that a specific operator has been authorized to transfer tokens
    function validateTransfer(address caller, address from, address to) external view;

    /// Ensure that a transfer has been authorized for a specific tokenId
    function validateTransfer(address caller, address from, address to, uint256 tokenId) external view;

    /// Ensure that a transfer has been authorized for a specific amount of a specific tokenId, and
    /// reduce the transferable amount remaining
    function validateTransfer(address caller, address from, address to, uint256 tokenId, uint256 amount) external;

    /// Legacy alias for validateTransfer (address caller, address from, address to)
    function applyCollectionTransferPolicy(address caller, address from, address to) external view;

    /// Temporarily assign a specific allowed operator for a given collection
    function beforeAuthorizedTransfer(address operator, address token) external;

    /// Clear assignment of a specific allowed operator for a given collection
    function afterAuthorizedTransfer(address token) external;

    /// Temporarily allow a specific tokenId from a given collection to be transferred
    function beforeAuthorizedTransfer(address token, uint256 tokenId) external;

    /// Clear assignment of an specific tokenId's transfer allowance
    function afterAuthorizedTransfer(address token, uint256 tokenId) external;

    /// Temporarily allow a specific amount of a specific tokenId from a given collection to be transferred
    function beforeAuthorizedTransferWithAmount(address token, uint256 tokenId, uint256 amount) external;

    /// Clear assignment of a tokenId's transfer allowance for a specific amount
    function afterAuthorizedTransferWithAmount(address token, uint256 tokenId) external;
}

Settings
{
  "remappings": [
    "seaport-core/=lib/seaport-core/",
    "seaport-types/=lib/seaport-types/",
    "seaport-sol/=lib/seaport-sol/src/",
    "seaport-deploy/=lib/seaport-deploy/src/",
    "solady/=lib/solady/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@limitbreak/creator-token-standards/=lib/creator-token-standards/src/",
    "@rari-capital/solmate/=lib/seaport-sol/lib/seaport/lib/solmate/",
    "ERC721A/=lib/creator-token-standards/lib/ERC721A/contracts/",
    "creator-token-standards/=lib/creator-token-standards/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/seaport-sol/lib/seaport/lib/openzeppelin-contracts/lib/erc4626-tests/",
    "erc721a/=lib/creator-token-standards/lib/ERC721A/",
    "forge-std/=lib/forge-std/src/",
    "murky/=lib/creator-token-standards/lib/murky/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "seaport/=lib/seaport-sol/lib/seaport/contracts/",
    "solarray/=lib/seaport-sol/lib/solarray/src/",
    "solmate/=lib/seaport-sol/lib/seaport/lib/solmate/src/",
    "tstorish/=lib/tstorish/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 9999999
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false,
  "libraries": {}
}

Contract ABI

[{"inputs":[],"name":"UNAUTHORIZED","type":"error"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initializationCode","type":"bytes"},{"internalType":"address[]","name":"authorizers","type":"address[]"},{"internalType":"address[]","name":"operators","type":"address[]"}],"name":"deployAndConfigure","outputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b506106c18061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063e8a2ee9d1461002d575b5f80fd5b61004061003b366004610476565b610069565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f6100726102d9565b6100a8576040517f075fd2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f64e030870000000000000000000000000000000000000000000000000000000081525f906effe8b47b3e2130213b802212439497906364e03087906100f79089908990600401610582565b6020604051808303815f875af1158015610113573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013791906105f4565b8451909150156101c3576040517f755b6fd700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063755b6fd790610195905f908890600401610616565b5f604051808303815f87803b1580156101ac575f80fd5b505af11580156101be573d5f803e3d5ffd5b505050505b82511561024c576040517fa5ce71f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063a5ce71f59061021e905f908790600401610616565b5f604051808303815f87803b158015610235575f80fd5b505af1158015610247573d5f803e3d5ffd5b505050505b6040517f6bfab91d0000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff8881166024830152821690636bfab91d906044015f604051808303815f87803b1580156102b8575f80fd5b505af11580156102ca573d5f803e3d5ffd5b50929998505050505050505050565b5f3273939c8d89ebc11fa45e576215e2353673ad0ba18a148061030f57503273e80a65eb7a3018deda407e621ef5fb5b416678ca145b8061032d5750327386d26897267711ea4b173c8c124a0a73612001da145b8061034b57503273bf81d02f3ee59e79af3d9337a186f65c9fae39f3145b905090565b73ffffffffffffffffffffffffffffffffffffffff81168114610371575f80fd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e8576103e8610374565b604052919050565b5f82601f8301126103ff575f80fd5b8135602067ffffffffffffffff82111561041b5761041b610374565b8160051b61042a8282016103a1565b9283528481018201928281019087851115610443575f80fd5b83870192505b8483101561046b57823561045c81610350565b82529183019190830190610449565b979650505050505050565b5f805f805f60a0868803121561048a575f80fd5b853561049581610350565b94506020868101359450604087013567ffffffffffffffff808211156104b9575f80fd5b818901915089601f8301126104cc575f80fd5b8135818111156104de576104de610374565b61050e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103a1565b8181528b85838601011115610521575f80fd5b81858501868301375f9181019094015291945060608801359180831115610546575f80fd5b6105528a848b016103f0565b94506080890135925080831115610567575f80fd5b5050610575888289016103f0565b9150509295509295909350565b8281525f60206040602084015283518060408501525f5b818110156105b557858101830151858201606001528201610599565b505f6060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b5f60208284031215610604575f80fd5b815161060f81610350565b9392505050565b5f604082016effffffffffffffffffffffffffffff851683526020604060208501528185518084526060860191506020870193505f5b8181101561067e57845173ffffffffffffffffffffffffffffffffffffffff168352938301939183019160010161064c565b509097965050505050505056fea26469706673582212202a38376c0d6ab3a62226ed1dc3e1cea45bbe803f813125912b2426d1df57649d64736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063e8a2ee9d1461002d575b5f80fd5b61004061003b366004610476565b610069565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b5f6100726102d9565b6100a8576040517f075fd2b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f64e030870000000000000000000000000000000000000000000000000000000081525f906effe8b47b3e2130213b802212439497906364e03087906100f79089908990600401610582565b6020604051808303815f875af1158015610113573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013791906105f4565b8451909150156101c3576040517f755b6fd700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063755b6fd790610195905f908890600401610616565b5f604051808303815f87803b1580156101ac575f80fd5b505af11580156101be573d5f803e3d5ffd5b505050505b82511561024c576040517fa5ce71f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063a5ce71f59061021e905f908790600401610616565b5f604051808303815f87803b158015610235575f80fd5b505af1158015610247573d5f803e3d5ffd5b505050505b6040517f6bfab91d0000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff8881166024830152821690636bfab91d906044015f604051808303815f87803b1580156102b8575f80fd5b505af11580156102ca573d5f803e3d5ffd5b50929998505050505050505050565b5f3273939c8d89ebc11fa45e576215e2353673ad0ba18a148061030f57503273e80a65eb7a3018deda407e621ef5fb5b416678ca145b8061032d5750327386d26897267711ea4b173c8c124a0a73612001da145b8061034b57503273bf81d02f3ee59e79af3d9337a186f65c9fae39f3145b905090565b73ffffffffffffffffffffffffffffffffffffffff81168114610371575f80fd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e8576103e8610374565b604052919050565b5f82601f8301126103ff575f80fd5b8135602067ffffffffffffffff82111561041b5761041b610374565b8160051b61042a8282016103a1565b9283528481018201928281019087851115610443575f80fd5b83870192505b8483101561046b57823561045c81610350565b82529183019190830190610449565b979650505050505050565b5f805f805f60a0868803121561048a575f80fd5b853561049581610350565b94506020868101359450604087013567ffffffffffffffff808211156104b9575f80fd5b818901915089601f8301126104cc575f80fd5b8135818111156104de576104de610374565b61050e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103a1565b8181528b85838601011115610521575f80fd5b81858501868301375f9181019094015291945060608801359180831115610546575f80fd5b6105528a848b016103f0565b94506080890135925080831115610567575f80fd5b5050610575888289016103f0565b9150509295509295909350565b8281525f60206040602084015283518060408501525f5b818110156105b557858101830151858201606001528201610599565b505f6060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b5f60208284031215610604575f80fd5b815161060f81610350565b9392505050565b5f604082016effffffffffffffffffffffffffffff851683526020604060208501528185518084526060860191506020870193505f5b8181101561067e57845173ffffffffffffffffffffffffffffffffffffffff168352938301939183019160010161064c565b509097965050505050505056fea26469706673582212202a38376c0d6ab3a62226ed1dc3e1cea45bbe803f813125912b2426d1df57649d64736f6c63430008180033

Deployed Bytecode Sourcemap

425:1725:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:1060;;;;;;:::i;:::-;;:::i;:::-;;;3153:42:3;3141:55;;;3123:74;;3111:2;3096:18;1088:1060:1;;;;;;;;1307:16;1340:12;:10;:12::i;:::-;1335:65;;1375:14;;;;;;;;;;;;;;1335:65;1532:45;;;;;1410:52;;598:42;;1532:19;;:45;;1552:4;;1558:18;;1532:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1833:18;;1410:191;;-1:-1:-1;1833:22:1;1829:100;;1871:47;;;;;:31;;;;;;:47;;1903:1;;1906:11;;1871:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1829:100;1942:16;;:20;1938:94;;1978:43;;;;;:29;;;;;;:43;;2008:1;;2011:9;;1978:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1938:94;2041:57;;;;;2082:1;2041:57;;;5131:64:3;2041:40:1;5231:55:3;;;5211:18;;;5204:83;2041:40:1;;;;;5104:18:3;;2041:57:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2124:16:1;;1088:1060;-1:-1:-1;;;;;;;;;1088:1060:1:o;690:392::-;735:4;771:9;792:42;771:64;;:144;;-1:-1:-1;851:9:1;872:42;851:64;771:144;:224;;;-1:-1:-1;931:9:1;952:42;931:64;771:224;:304;;;-1:-1:-1;1011:9:1;1032:42;1011:64;771:304;751:324;;690:392;:::o;14:154:3:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:184::-;225:77;222:1;215:88;322:4;319:1;312:15;346:4;343:1;336:15;362:334;433:2;427:9;489:2;479:13;;494:66;475:86;463:99;;592:18;577:34;;613:22;;;574:62;571:88;;;639:18;;:::i;:::-;675:2;668:22;362:334;;-1:-1:-1;362:334:3:o;701:787::-;755:5;808:3;801:4;793:6;789:17;785:27;775:55;;826:1;823;816:12;775:55;862:6;849:20;888:4;911:18;907:2;904:26;901:52;;;933:18;;:::i;:::-;979:2;976:1;972:10;1002:28;1026:2;1022;1018:11;1002:28;:::i;:::-;1064:15;;;1134;;;1130:24;;;1095:12;;;;1166:15;;;1163:35;;;1194:1;1191;1184:12;1163:35;1230:2;1222:6;1218:15;1207:26;;1242:217;1258:6;1253:3;1250:15;1242:217;;;1338:3;1325:17;1355:31;1380:5;1355:31;:::i;:::-;1399:18;;1275:12;;;;1437;;;;1242:217;;;1477:5;701:787;-1:-1:-1;;;;;;;701:787:3:o;1493:1479::-;1647:6;1655;1663;1671;1679;1732:3;1720:9;1711:7;1707:23;1703:33;1700:53;;;1749:1;1746;1739:12;1700:53;1788:9;1775:23;1807:31;1832:5;1807:31;:::i;:::-;1857:5;-1:-1:-1;1881:2:3;1915:18;;;1902:32;;-1:-1:-1;1985:2:3;1970:18;;1957:32;2008:18;2038:14;;;2035:34;;;2065:1;2062;2055:12;2035:34;2103:6;2092:9;2088:22;2078:32;;2148:7;2141:4;2137:2;2133:13;2129:27;2119:55;;2170:1;2167;2160:12;2119:55;2206:2;2193:16;2228:2;2224;2221:10;2218:36;;;2234:18;;:::i;:::-;2276:112;2384:2;2315:66;2308:4;2304:2;2300:13;2296:86;2292:95;2276:112;:::i;:::-;2411:2;2404:5;2397:17;2451:7;2446:2;2441;2437;2433:11;2429:20;2426:33;2423:53;;;2472:1;2469;2462:12;2423:53;2527:2;2522;2518;2514:11;2509:2;2502:5;2498:14;2485:45;2571:1;2550:14;;;2546:23;;;2539:34;2554:5;;-1:-1:-1;2650:2:3;2635:18;;2622:32;;2666:16;;;2663:36;;;2695:1;2692;2685:12;2663:36;2718:63;2773:7;2762:8;2751:9;2747:24;2718:63;:::i;:::-;2708:73;;2834:3;2823:9;2819:19;2806:33;2790:49;;2864:2;2854:8;2851:16;2848:36;;;2880:1;2877;2870:12;2848:36;;;2903:63;2958:7;2947:8;2936:9;2932:24;2903:63;:::i;:::-;2893:73;;;1493:1479;;;;;;;;:::o;3208:676::-;3383:6;3372:9;3365:25;3346:4;3409:2;3447;3442;3431:9;3427:18;3420:30;3479:6;3473:13;3522:6;3517:2;3506:9;3502:18;3495:34;3547:1;3557:140;3571:6;3568:1;3565:13;3557:140;;;3666:14;;;3662:23;;3656:30;3632:17;;;3651:2;3628:26;3621:66;3586:10;;3557:140;;;3561:3;3746:1;3741:2;3732:6;3721:9;3717:22;3713:31;3706:42;3875:2;3805:66;3800:2;3792:6;3788:15;3784:88;3773:9;3769:104;3765:113;3757:121;;;;3208:676;;;;;:::o;3889:251::-;3959:6;4012:2;4000:9;3991:7;3987:23;3983:32;3980:52;;;4028:1;4025;4018:12;3980:52;4060:9;4054:16;4079:31;4104:5;4079:31;:::i;:::-;4129:5;3889:251;-1:-1:-1;;;3889:251:3:o;4145:799::-;4323:4;4371:2;4360:9;4356:18;4413:32;4405:6;4401:45;4390:9;4383:64;4466:2;4504;4499;4488:9;4484:18;4477:30;4527:6;4562;4556:13;4593:6;4585;4578:22;4631:2;4620:9;4616:18;4609:25;;4669:2;4661:6;4657:15;4643:29;;4690:1;4700:218;4714:6;4711:1;4708:13;4700:218;;;4779:13;;4794:42;4775:62;4763:75;;4893:15;;;;4858:12;;;;4736:1;4729:9;4700:218;;;-1:-1:-1;4935:3:3;;4145:799;-1:-1:-1;;;;;;;4145:799:3:o

Swarm Source

ipfs://2a38376c0d6ab3a62226ed1dc3e1cea45bbe803f813125912b2426d1df57649d

Block Transaction Difficulty 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.