ETH Price: $2,926.36 (-0.90%)

Contract

0x78Df1CF5bf06a7f27f2ACc580B934238C1b80D50

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Create Proxy4041153622025-11-25 22:44:0160 days ago1764110641IN
Euler: eVault Factory
0 ETH0.000011410.010238
Create Proxy4037868192025-11-24 23:57:4061 days ago1764028660IN
Euler: eVault Factory
0 ETH0.000010830.01
Create Proxy4037868162025-11-24 23:57:3961 days ago1764028659IN
Euler: eVault Factory
0 ETH0.000010970.01
Create Proxy4019418442025-11-19 15:44:3367 days ago1763567073IN
Euler: eVault Factory
0 ETH0.000103770.092991
Create Proxy4019266192025-11-19 14:41:1667 days ago1763563276IN
Euler: eVault Factory
0 ETH0.000099680.091225
Create Proxy3921087972025-10-22 5:38:0595 days ago1761111485IN
Euler: eVault Factory
0 ETH0.000010990.01
Create Proxy3921087932025-10-22 5:38:0495 days ago1761111484IN
Euler: eVault Factory
0 ETH0.000010990.01
Create Proxy3835506662025-09-27 12:02:27120 days ago1758974547IN
Euler: eVault Factory
0 ETH0.000059840.054532
Create Proxy3780030832025-09-11 11:05:49136 days ago1757588749IN
Euler: eVault Factory
0 ETH0.000011160.01
Create Proxy3780030742025-09-11 11:05:47136 days ago1757588747IN
Euler: eVault Factory
0 ETH0.000010770.01
Create Proxy3780030702025-09-11 11:05:46136 days ago1757588746IN
Euler: eVault Factory
0 ETH0.000010850.01
Create Proxy3780030652025-09-11 11:05:45136 days ago1757588745IN
Euler: eVault Factory
0 ETH0.000010840.01
Create Proxy3753178802025-09-03 16:46:30143 days ago1756917990IN
Euler: eVault Factory
0 ETH0.000011110.01
Create Proxy3743306012025-08-31 20:17:24146 days ago1756671444IN
Euler: eVault Factory
0 ETH0.000011010.01
Create Proxy3743305902025-08-31 20:17:21146 days ago1756671441IN
Euler: eVault Factory
0 ETH0.000010780.01
Create Proxy3743253622025-08-31 19:55:33146 days ago1756670133IN
Euler: eVault Factory
0 ETH0.000011160.01
Create Proxy3743253582025-08-31 19:55:32146 days ago1756670132IN
Euler: eVault Factory
0 ETH0.000010940.01
Create Proxy3743253542025-08-31 19:55:31146 days ago1756670131IN
Euler: eVault Factory
0 ETH0.000010990.01
Create Proxy3743253502025-08-31 19:55:30146 days ago1756670130IN
Euler: eVault Factory
0 ETH0.000010820.01
Create Proxy3743253462025-08-31 19:55:29146 days ago1756670129IN
Euler: eVault Factory
0 ETH0.000010990.01
Create Proxy3743253422025-08-31 19:55:28146 days ago1756670128IN
Euler: eVault Factory
0 ETH0.000010940.01
Create Proxy3743253392025-08-31 19:55:27146 days ago1756670127IN
Euler: eVault Factory
0 ETH0.000010940.01
Create Proxy3743253362025-08-31 19:55:27146 days ago1756670127IN
Euler: eVault Factory
0 ETH0.000010940.01
Create Proxy3743253322025-08-31 19:55:26146 days ago1756670126IN
Euler: eVault Factory
0 ETH0.000010820.01
Create Proxy3743253292025-08-31 19:55:25146 days ago1756670125IN
Euler: eVault Factory
0 ETH0.000010990.01
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
4247344282026-01-24 13:08:4126 hrs ago1769260121
Euler: eVault Factory
 Contract Creation0 ETH
4247339712026-01-24 13:06:4626 hrs ago1769260006
Euler: eVault Factory
 Contract Creation0 ETH
4247334622026-01-24 13:04:3926 hrs ago1769259879
Euler: eVault Factory
 Contract Creation0 ETH
4247300592026-01-24 12:50:2826 hrs ago1769259028
Euler: eVault Factory
 Contract Creation0 ETH
4237748592026-01-21 18:29:093 days ago1769020149
Euler: eVault Factory
 Contract Creation0 ETH
4237748592026-01-21 18:29:093 days ago1769020149
Euler: eVault Factory
 Contract Creation0 ETH
4236681272026-01-21 11:06:084 days ago1768993568
Euler: eVault Factory
 Contract Creation0 ETH
4236681272026-01-21 11:06:084 days ago1768993568
Euler: eVault Factory
 Contract Creation0 ETH
4236347352026-01-21 8:47:204 days ago1768985240
Euler: eVault Factory
 Contract Creation0 ETH
4236345772026-01-21 8:46:414 days ago1768985201
Euler: eVault Factory
 Contract Creation0 ETH
4236345772026-01-21 8:46:414 days ago1768985201
Euler: eVault Factory
 Contract Creation0 ETH
4236303202026-01-21 8:29:014 days ago1768984141
Euler: eVault Factory
 Contract Creation0 ETH
4236303202026-01-21 8:29:014 days ago1768984141
Euler: eVault Factory
 Contract Creation0 ETH
4232447302026-01-20 5:45:025 days ago1768887902
Euler: eVault Factory
 Contract Creation0 ETH
4232445542026-01-20 5:44:175 days ago1768887857
Euler: eVault Factory
 Contract Creation0 ETH
4232445542026-01-20 5:44:175 days ago1768887857
Euler: eVault Factory
 Contract Creation0 ETH
4219330472026-01-16 10:36:059 days ago1768559765
Euler: eVault Factory
 Contract Creation0 ETH
4219330472026-01-16 10:36:059 days ago1768559765
Euler: eVault Factory
 Contract Creation0 ETH
4215932542026-01-15 10:59:5010 days ago1768474790
Euler: eVault Factory
 Contract Creation0 ETH
4215920272026-01-15 10:54:4310 days ago1768474483
Euler: eVault Factory
 Contract Creation0 ETH
4215917712026-01-15 10:53:3910 days ago1768474419
Euler: eVault Factory
 Contract Creation0 ETH
4215906822026-01-15 10:49:0710 days ago1768474147
Euler: eVault Factory
 Contract Creation0 ETH
4212169522026-01-14 8:53:3011 days ago1768380810
Euler: eVault Factory
 Contract Creation0 ETH
4212169522026-01-14 8:53:3011 days ago1768380810
Euler: eVault Factory
 Contract Creation0 ETH
4212153502026-01-14 8:46:5011 days ago1768380410
Euler: eVault Factory
 Contract Creation0 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GenericFactory

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 20000 runs

Other Settings:
cancun EvmVersion
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

import {BeaconProxy} from "./BeaconProxy.sol";
import {MetaProxyDeployer} from "./MetaProxyDeployer.sol";

/// @title IComponent
/// @notice Minimal interface which must be implemented by the contract deployed by the factory
interface IComponent {
    /// @notice Function replacing the constructor in proxied contracts
    /// @param creator The new contract's creator address
    function initialize(address creator) external;
}

/// @title GenericFactory
/// @custom:security-contact [email protected]
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice The factory allows permissionless creation of upgradeable or non-upgradeable proxy contracts and serves as a
/// beacon for the upgradeable ones
contract GenericFactory is MetaProxyDeployer {
    // Constants

    uint256 internal constant REENTRANCYLOCK__UNLOCKED = 1;
    uint256 internal constant REENTRANCYLOCK__LOCKED = 2;

    // State

    /// @title ProxyConfig
    /// @notice This struct is used to store the configuration of a proxy deployed by the factory
    struct ProxyConfig {
        // If true, proxy is an instance of the BeaconProxy
        bool upgradeable;
        // Address of the implementation contract
        // May be an out-of-date value, if upgradeable (handled by getProxyConfig)
        address implementation;
        // The metadata attached to every call passing through the proxy
        bytes trailingData;
    }

    uint256 private reentrancyLock;

    /// @notice Address of the account authorized to upgrade the implementation contract
    address public upgradeAdmin;
    /// @notice Address of the implementation contract, which the deployed proxies will delegate-call to
    /// @dev The contract must implement the `IComponent` interface
    address public implementation;
    /// @notice A lookup for configurations of the proxy contracts deployed by the factory
    mapping(address proxy => ProxyConfig) internal proxyLookup;
    /// @notice An array of addresses of all the proxies deployed by the factory
    address[] public proxyList;

    // Events

    /// @notice The factory is created
    event Genesis();

    /// @notice A new proxy is created
    /// @param proxy Address of the new proxy
    /// @param upgradeable If true, proxy is an instance of the BeaconProxy. If false, the proxy is a minimal meta proxy
    /// @param implementation Address of the implementation contract, at the time the proxy was deployed
    /// @param trailingData The metadata that will be attached to every call passing through the proxy
    event ProxyCreated(address indexed proxy, bool upgradeable, address implementation, bytes trailingData);

    /// @notice Set a new implementation contract. All the BeaconProxies are upgraded to the new logic
    /// @param newImplementation Address of the new implementation contract
    event SetImplementation(address indexed newImplementation);

    /// @notice Set a new upgrade admin
    /// @param newUpgradeAdmin Address of the new admin
    event SetUpgradeAdmin(address indexed newUpgradeAdmin);

    // Errors

    error E_Reentrancy();
    error E_Unauthorized();
    error E_Implementation();
    error E_BadAddress();
    error E_BadQuery();

    // Modifiers

    modifier nonReentrant() {
        if (reentrancyLock == REENTRANCYLOCK__LOCKED) revert E_Reentrancy();

        reentrancyLock = REENTRANCYLOCK__LOCKED;
        _;
        reentrancyLock = REENTRANCYLOCK__UNLOCKED;
    }

    modifier adminOnly() {
        if (msg.sender != upgradeAdmin) revert E_Unauthorized();
        _;
    }

    constructor(address admin) {
        emit Genesis();

        if (admin == address(0)) revert E_BadAddress();

        reentrancyLock = REENTRANCYLOCK__UNLOCKED;

        upgradeAdmin = admin;

        emit SetUpgradeAdmin(admin);
    }

    /// @notice A permissionless funtion to deploy new proxies
    /// @param desiredImplementation Address of the implementation contract expected to be registered in the factory
    /// during proxy creation
    /// @param upgradeable If true, the proxy will be an instance of the BeaconProxy. If false, a minimal meta proxy
    /// will be deployed
    /// @param trailingData Metadata to be attached to every call passing through the new proxy
    /// @return The address of the new proxy
    /// @dev The desired implementation serves as a protection against (unintentional) front-running of upgrades
    function createProxy(address desiredImplementation, bool upgradeable, bytes memory trailingData)
        external
        nonReentrant
        returns (address)
    {
        address _implementation = implementation;
        if (desiredImplementation == address(0)) desiredImplementation = _implementation;

        if (desiredImplementation == address(0) || desiredImplementation != _implementation) revert E_Implementation();

        // The provided trailing data is prefixed with 4 zero bytes to avoid potential selector clashing in case the
        // proxy is called with empty calldata.
        bytes memory prefixTrailingData = abi.encodePacked(bytes4(0), trailingData);
        address proxy;

        if (upgradeable) {
            proxy = address(new BeaconProxy(prefixTrailingData));
        } else {
            proxy = deployMetaProxy(desiredImplementation, prefixTrailingData);
        }

        proxyLookup[proxy] =
            ProxyConfig({upgradeable: upgradeable, implementation: desiredImplementation, trailingData: trailingData});

        proxyList.push(proxy);

        IComponent(proxy).initialize(msg.sender);

        emit ProxyCreated(proxy, upgradeable, desiredImplementation, trailingData);

        return proxy;
    }

    // EVault beacon upgrade

    /// @notice Set a new implementation contract
    /// @param newImplementation Address of the new implementation contract
    /// @dev Upgrades all existing BeaconProxies to the new logic immediately
    function setImplementation(address newImplementation) external nonReentrant adminOnly {
        if (newImplementation.code.length == 0) revert E_BadAddress();
        implementation = newImplementation;
        emit SetImplementation(newImplementation);
    }

    // Admin role

    /// @notice Transfer admin rights to a new address
    /// @param newUpgradeAdmin Address of the new admin
    /// @dev For creating non upgradeable factories, or to finalize all upgradeable proxies to current implementation,
    /// @dev set the admin to zero address.
    /// @dev If setting to address zero, make sure the implementation contract is already set
    function setUpgradeAdmin(address newUpgradeAdmin) external nonReentrant adminOnly {
        upgradeAdmin = newUpgradeAdmin;
        emit SetUpgradeAdmin(newUpgradeAdmin);
    }

    // Proxy getters

    /// @notice Get current proxy configuration
    /// @param proxy Address of the proxy to query
    /// @return config The proxy's configuration, including current implementation
    function getProxyConfig(address proxy) external view returns (ProxyConfig memory config) {
        config = proxyLookup[proxy];
        if (config.upgradeable) config.implementation = implementation;
    }

    /// @notice Check if an address is a proxy deployed with this factory
    /// @param proxy Address to check
    /// @return True if the address is a proxy
    function isProxy(address proxy) external view returns (bool) {
        return proxyLookup[proxy].implementation != address(0);
    }

    /// @notice Fetch the length of the deployed proxies list
    /// @return The length of the proxy list array
    function getProxyListLength() external view returns (uint256) {
        return proxyList.length;
    }

    /// @notice Get a slice of the deployed proxies array
    /// @param start Start index of the slice
    /// @param end End index of the slice
    /// @return list An array containing the slice of the proxy list
    function getProxyListSlice(uint256 start, uint256 end) external view returns (address[] memory list) {
        if (end == type(uint256).max) end = proxyList.length;
        if (end < start || end > proxyList.length) revert E_BadQuery();

        list = new address[](end - start);
        for (uint256 i; i < end - start; ++i) {
            list[i] = proxyList[start + i];
        }
    }
}

File 2 of 3 : BeaconProxy.sol
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

/// @title BeaconProxy
/// @custom:security-contact [email protected]
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A proxy contract, forwarding all calls to an implementation contract, fetched from a beacon
/// @dev The proxy attaches up to 128 bytes of metadata to the delegated call data.
contract BeaconProxy {
    // ERC-1967 beacon address slot. bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)
    bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
    // Beacon implementation() selector
    bytes32 internal constant IMPLEMENTATION_SELECTOR =
        0x5c60da1b00000000000000000000000000000000000000000000000000000000;
    // Max trailing data length, 4 immutable slots
    uint256 internal constant MAX_TRAILING_DATA_LENGTH = 128;

    address internal immutable beacon;
    uint256 internal immutable metadataLength;
    bytes32 internal immutable metadata0;
    bytes32 internal immutable metadata1;
    bytes32 internal immutable metadata2;
    bytes32 internal immutable metadata3;

    event Genesis();

    constructor(bytes memory trailingData) {
        emit Genesis();

        require(trailingData.length <= MAX_TRAILING_DATA_LENGTH, "trailing data too long");

        // Beacon is always the proxy creator; store it in immutable
        beacon = msg.sender;

        // Store the beacon address in ERC-1967 slot for compatibility with block explorers
        assembly {
            sstore(BEACON_SLOT, caller())
        }

        // Record length as immutable
        metadataLength = trailingData.length;

        // Pad length with uninitialized memory so the decode will succeed
        assembly {
            mstore(trailingData, MAX_TRAILING_DATA_LENGTH)
        }
        (metadata0, metadata1, metadata2, metadata3) = abi.decode(trailingData, (bytes32, bytes32, bytes32, bytes32));
    }

    fallback() external payable {
        address beacon_ = beacon;
        uint256 metadataLength_ = metadataLength;
        bytes32 metadata0_ = metadata0;
        bytes32 metadata1_ = metadata1;
        bytes32 metadata2_ = metadata2;
        bytes32 metadata3_ = metadata3;

        assembly {
            // Fetch implementation address from the beacon
            mstore(0, IMPLEMENTATION_SELECTOR)
            // Implementation call is trusted not to revert and to return an address
            let result := staticcall(gas(), beacon_, 0, 4, 0, 32)
            let implementation := mload(0)

            // delegatecall to the implementation with trailing metadata
            calldatacopy(0, 0, calldatasize())
            mstore(calldatasize(), metadata0_)
            mstore(add(32, calldatasize()), metadata1_)
            mstore(add(64, calldatasize()), metadata2_)
            mstore(add(96, calldatasize()), metadata3_)
            result := delegatecall(gas(), implementation, 0, add(metadataLength_, calldatasize()), 0, 0)
            returndatacopy(0, 0, returndatasize())

            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

/// @title MetaProxyDeployer
/// @custom:security-contact [email protected]
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice Contract for deploying minimal proxies with metadata, based on EIP-3448.
/// @dev The metadata of the proxies does not include the data length as defined by EIP-3448, saving gas at a cost of
/// supporting variable size data.
contract MetaProxyDeployer {
    error E_DeploymentFailed();

    // Meta proxy bytecode from EIP-3488 https://eips.ethereum.org/EIPS/eip-3448
    bytes constant BYTECODE_HEAD = hex"600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d73";
    bytes constant BYTECODE_TAIL = hex"5af43d3d93803e603457fd5bf3";

    /// @dev Creates a proxy for `targetContract` with metadata from `metadata`.
    /// @return addr A non-zero address if successful.
    function deployMetaProxy(address targetContract, bytes memory metadata) internal returns (address addr) {
        bytes memory code = abi.encodePacked(BYTECODE_HEAD, targetContract, BYTECODE_TAIL, metadata);

        assembly ("memory-safe") {
            addr := create(0, add(code, 32), mload(code))
        }

        if (addr == address(0)) revert E_DeploymentFailed();
    }
}

Settings
{
  "remappings": [
    "lib/euler-price-oracle:@openzeppelin/contracts/=lib/euler-price-oracle/lib/openzeppelin-contracts/contracts/",
    "lib/euler-earn:@openzeppelin/=lib/euler-earn/lib/openzeppelin-contracts/",
    "lib/euler-earn:@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/",
    "lib/euler-earn:ethereum-vault-connector/=lib/euler-earn/lib/ethereum-vault-connector/src/",
    "lib/layerzero-devtools/packages/oft-evm/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts/contracts/",
    "lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "lib/layerzero-devtools/packages/oapp-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@layerzerolabs/oft-evm/=lib/layerzero-devtools/packages/oft-evm/",
    "@layerzerolabs/oapp-evm/=lib/layerzero-devtools/packages/oapp-evm/",
    "@layerzerolabs/oapp-evm-upgradeable/=lib/layerzero-devtools/packages/oapp-evm-upgradeable/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/protocol/",
    "@layerzerolabs/lz-evm-messagelib-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/messagelib/",
    "@layerzerolabs/lz-evm-oapp-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/oapp/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "ethereum-vault-connector/=lib/ethereum-vault-connector/src/",
    "evc/=lib/ethereum-vault-connector/src/",
    "evk/=lib/euler-vault-kit/src/",
    "evk-test/=lib/euler-vault-kit/test/",
    "euler-price-oracle/=lib/euler-price-oracle/src/",
    "euler-price-oracle-test/=lib/euler-price-oracle/test/",
    "fee-flow/=lib/fee-flow/src/",
    "reward-streams/=lib/reward-streams/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "euler-earn/=lib/euler-earn/src/",
    "layerzero/oft-evm/=lib/layerzero-devtools/packages/oft-evm/contracts/",
    "layerzero/oft-evm-upgradeable/=lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts/",
    "solidity-bytes-utils/=lib/solidity-bytes-utils/",
    "@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@pendle/core-v2/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
    "@pyth/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
    "@redstone/evm-connector/=lib/euler-price-oracle/lib/redstone-oracles-monorepo/packages/evm-connector/contracts/",
    "@solady/=lib/euler-price-oracle/lib/solady/src/",
    "@uniswap/v3-core/=lib/euler-price-oracle/lib/v3-core/",
    "@uniswap/v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/",
    "ERC4626/=lib/euler-earn/lib/properties/lib/ERC4626/contracts/",
    "crytic-properties/=lib/euler-earn/lib/properties/contracts/",
    "ds-test/=lib/ethereum-vault-connector/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "euler-vault-kit/=lib/euler-vault-kit/",
    "forge-gas-snapshot/=lib/euler-vault-kit/lib/permit2/lib/forge-gas-snapshot/src/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "layerzero-devtools/=lib/layerzero-devtools/packages/toolbox-foundry/src/",
    "layerzero-v2/=lib/layerzero-v2/",
    "openzeppelin/=lib/ethereum-vault-connector/lib/openzeppelin-contracts/contracts/",
    "pendle-core-v2-public/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
    "permit2/=lib/euler-vault-kit/lib/permit2/",
    "properties/=lib/euler-earn/lib/properties/contracts/",
    "pyth-sdk-solidity/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
    "redstone-oracles-monorepo/=lib/euler-price-oracle/lib/",
    "solady/=lib/euler-price-oracle/lib/solady/src/",
    "solmate/=lib/fee-flow/lib/solmate/src/",
    "v3-core/=lib/euler-price-oracle/lib/v3-core/contracts/",
    "v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 20000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"E_BadAddress","type":"error"},{"inputs":[],"name":"E_BadQuery","type":"error"},{"inputs":[],"name":"E_DeploymentFailed","type":"error"},{"inputs":[],"name":"E_Implementation","type":"error"},{"inputs":[],"name":"E_Reentrancy","type":"error"},{"inputs":[],"name":"E_Unauthorized","type":"error"},{"anonymous":false,"inputs":[],"name":"Genesis","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proxy","type":"address"},{"indexed":false,"internalType":"bool","name":"upgradeable","type":"bool"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"bytes","name":"trailingData","type":"bytes"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"SetImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newUpgradeAdmin","type":"address"}],"name":"SetUpgradeAdmin","type":"event"},{"inputs":[{"internalType":"address","name":"desiredImplementation","type":"address"},{"internalType":"bool","name":"upgradeable","type":"bool"},{"internalType":"bytes","name":"trailingData","type":"bytes"}],"name":"createProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"proxy","type":"address"}],"name":"getProxyConfig","outputs":[{"components":[{"internalType":"bool","name":"upgradeable","type":"bool"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"trailingData","type":"bytes"}],"internalType":"struct GenericFactory.ProxyConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProxyListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getProxyListSlice","outputs":[{"internalType":"address[]","name":"list","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proxy","type":"address"}],"name":"isProxy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proxyList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newUpgradeAdmin","type":"address"}],"name":"setUpgradeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b5060405161170538038061170583398101604081905261002e916100cc565b6040517f6bf6eaff5e9af8fbccb949f4c38cc016936f8775363ccf4224db160365785d52905f90a16001600160a01b03811661007d576040516306e1f36760e31b815260040160405180910390fd5b60015f81815581546001600160a01b0319166001600160a01b0384169081179092556040517f7b1ebd0f3ec81bf1cd5f478166ec87beaea1eee7f3bc2612295ae161048a239f9190a2506100f9565b5f602082840312156100dc575f80fd5b81516001600160a01b03811681146100f2575f80fd5b9392505050565b6115ff806101065f395ff3fe608060405234801562000010575f80fd5b5060043610620000c8575f3560e01c80639342f417116200007b578063c0e96df6116200005f578063c0e96df614620001e9578063c4d5608a146200020f578063d784d4261462000230575f80fd5b80639342f41714620001aa578063a20ea5c114620001c3575f80fd5b8063378cdb6211620000af578063378cdb6214620001355780635c60da1b146200017257806383e85b271462000193575f80fd5b80630a68b7ba14620000cc5780632971038814620000e2575b5f80fd5b6004546040519081526020015b60405180910390f35b62000124620000f336600462000bfc565b73ffffffffffffffffffffffffffffffffffffffff9081165f90815260036020526040902054610100900416151590565b6040519015158152602001620000d9565b6200014c6200014636600462000c1f565b62000247565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001620000d9565b6002546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b6200014c620001a436600462000c64565b6200027d565b620001c1620001bb36600462000bfc565b620005e2565b005b620001da620001d436600462000bfc565b620006e6565b604051620000d9919062000dcf565b62000200620001fa36600462000e1f565b62000812565b604051620000d9919062000e40565b6001546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b620001c16200024136600462000bfc565b62000987565b6004818154811062000257575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f60025f5403620002ba576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f8190555473ffffffffffffffffffffffffffffffffffffffff908116908516620002e5578094505b73ffffffffffffffffffffffffffffffffffffffff851615806200033557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156200036d576040517f3c02e77800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040515f9062000384908290869060200162000e9b565b60405160208183030381529060405290505f8515620003db5781604051620003ac9062000bca565b620003b8919062000ee4565b604051809103905ff080158015620003d2573d5f803e3d5ffd5b509050620003ea565b620003e7878362000adc565b90505b60408051606081018252871515815273ffffffffffffffffffffffffffffffffffffffff89811660208084019182528385018a81528684165f90815260039092529490208351815492517fffffffffffffffffffffff0000000000000000000000000000000000000000009093169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff1617610100929093169190910291909117815591519091906001820190620004a5908262000f9b565b5050600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040517fc4d66de80000000000000000000000000000000000000000000000000000000081523392810192909252915063c4d66de8906024015f604051808303815f87803b15801562000569575f80fd5b505af11580156200057c573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff167f04e664079117e113faa9684bc14aecb41651cbf098b14eda271248c6d0cda57c878988604051620005cc93929190620010c4565b60405180910390a260015f559695505050505050565b60025f54036200061e576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000674576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7b1ebd0f3ec81bf1cd5f478166ec87beaea1eee7f3bc2612295ae161048a239f905f90a25060015f55565b60408051606080820183525f808352602080840182905283850183905273ffffffffffffffffffffffffffffffffffffffff8681168352600382529185902085519384018652805460ff8116151585526101009004909216908301526001810180549394929391928401916200075c9062000ef8565b80601f01602080910402602001604051908101604052809291908181526020018280546200078a9062000ef8565b8015620007d95780601f10620007af57610100808354040283529160200191620007d9565b820191905f5260205f20905b815481529060010190602001808311620007bb57829003601f168201915b5050505050815250509050805f0151156200080d5760025473ffffffffffffffffffffffffffffffffffffffff1660208201525b919050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620008425760045491505b8282108062000852575060045482115b156200088a576040517fa66618e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000896838362001132565b67ffffffffffffffff811115620008b157620008b162000c37565b604051908082528060200260200182016040528015620008db578160200160208202803683370190505b5090505f5b620008ec848462001132565b811015620009805760046200090282866200114e565b8154811062000915576200091562001164565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811062000952576200095262001164565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101620008e0565b5092915050565b60025f5403620009c3576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000a19576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0362000a6a576040517f370f9b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fddebe6de740fe0dd01cc33ffa314d11c6ac6acbbe50b80513c4c360ae7aa4f04905f90a25060015f55565b5f806040518060400160405280602081526020017f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d73815250846040518060400160405280600d81526020017f5af43d3d93803e603457fd5bf3000000000000000000000000000000000000008152508560405160200162000b61949392919062001191565b60405160208183030381529060405290508051602082015ff0915073ffffffffffffffffffffffffffffffffffffffff821662000980576040517fbe4dab5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103bd806200120d83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200080d575f80fd5b5f6020828403121562000c0d575f80fd5b62000c188262000bd8565b9392505050565b5f6020828403121562000c30575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f6060848603121562000c77575f80fd5b62000c828462000bd8565b92506020840135801515811462000c97575f80fd5b9150604084013567ffffffffffffffff8082111562000cb4575f80fd5b818601915086601f83011262000cc8575f80fd5b81358181111562000cdd5762000cdd62000c37565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000d265762000d2662000c37565b8160405282815289602084870101111562000d3f575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f5b8381101562000d7c57818101518382015260200162000d62565b50505f910152565b5f815180845262000d9d81602086016020860162000d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281511515602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160608084015262000e17608084018262000d84565b949350505050565b5f806040838503121562000e31575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101562000e8f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000e5b565b50909695505050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f825162000ed681600485016020870162000d60565b919091016004019392505050565b602081525f62000c18602083018462000d84565b600181811c9082168062000f0d57607f821691505b60208210810362000f45577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111562000f9657805f5260205f20601f840160051c8101602085101562000f725750805b601f840160051c820191505b8181101562000f93575f815560010162000f7e565b50505b505050565b815167ffffffffffffffff81111562000fb85762000fb862000c37565b62000fd08162000fc9845462000ef8565b8462000f4b565b602080601f83116001811462001025575f841562000fee5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555620010bc565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620010735788860151825594840194600190910190840162001052565b5085821015620010b057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b831515815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f620010fc606083018462000d84565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111562001148576200114862001105565b92915050565b8082018082111562001148576200114862001105565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8551620011a4818460208a0162000d60565b80830190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528451620011e681601484016020890162000d60565b8451910190620011fe81601484016020880162000d60565b01601401969550505050505056fe610140604052348015610010575f80fd5b506040516103bd3803806103bd83398101604081905261002f91610119565b6040517f6bf6eaff5e9af8fbccb949f4c38cc016936f8775363ccf4224db160365785d52905f90a16080815111156100ad5760405162461bcd60e51b815260206004820152601660248201527f747261696c696e67206461746120746f6f206c6f6e6700000000000000000000604482015260640160405180910390fd5b3360808181527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5091909155815160a09081529082526100f1908201602083016101db565b610120526101005260e05260c0525061020e565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561012a575f80fd5b82516001600160401b0380821115610140575f80fd5b818501915085601f830112610153575f80fd5b81518181111561016557610165610105565b604051601f8201601f19908116603f0116810190838211818310171561018d5761018d610105565b8160405282815288868487010111156101a4575f80fd5b5f93505b828410156101c557848401860151818501870152928501926101a8565b5f86848301015280965050505050505092915050565b5f805f80608085870312156101ee575f80fd5b505082516020840151604085015160609095015191969095509092509050565b60805160a05160c05160e051610100516101205161016e61024f5f395f60d501525f60b301525f609101525f606f01525f604d01525f602b015261016e5ff3fe60806040527f5c60da1b000000000000000000000000000000000000000000000000000000005f9081527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090602090600481895afa5f51365f80378536528436602001528336604001528236606001525f803689015f845af49150503d5f803e808015610134573d5ff35b3d5ffdfea2646970667358221220790fe9d1cd064f0c23daceddb779ebd37b1955af4ff80f2c522d35fb2eb695d864736f6c63430008180033a26469706673582212204f7a7fe27ed0169c2b0d837cc6670a55e63ba1b5a4b524e28ce95fbda16551e364736f6c63430008180033000000000000000000000000aee4e2e8024c1b58f4686d1cb1646a6d5755f05c

Deployed Bytecode

0x608060405234801562000010575f80fd5b5060043610620000c8575f3560e01c80639342f417116200007b578063c0e96df6116200005f578063c0e96df614620001e9578063c4d5608a146200020f578063d784d4261462000230575f80fd5b80639342f41714620001aa578063a20ea5c114620001c3575f80fd5b8063378cdb6211620000af578063378cdb6214620001355780635c60da1b146200017257806383e85b271462000193575f80fd5b80630a68b7ba14620000cc5780632971038814620000e2575b5f80fd5b6004546040519081526020015b60405180910390f35b62000124620000f336600462000bfc565b73ffffffffffffffffffffffffffffffffffffffff9081165f90815260036020526040902054610100900416151590565b6040519015158152602001620000d9565b6200014c6200014636600462000c1f565b62000247565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001620000d9565b6002546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b6200014c620001a436600462000c64565b6200027d565b620001c1620001bb36600462000bfc565b620005e2565b005b620001da620001d436600462000bfc565b620006e6565b604051620000d9919062000dcf565b62000200620001fa36600462000e1f565b62000812565b604051620000d9919062000e40565b6001546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b620001c16200024136600462000bfc565b62000987565b6004818154811062000257575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f60025f5403620002ba576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f8190555473ffffffffffffffffffffffffffffffffffffffff908116908516620002e5578094505b73ffffffffffffffffffffffffffffffffffffffff851615806200033557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156200036d576040517f3c02e77800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040515f9062000384908290869060200162000e9b565b60405160208183030381529060405290505f8515620003db5781604051620003ac9062000bca565b620003b8919062000ee4565b604051809103905ff080158015620003d2573d5f803e3d5ffd5b509050620003ea565b620003e7878362000adc565b90505b60408051606081018252871515815273ffffffffffffffffffffffffffffffffffffffff89811660208084019182528385018a81528684165f90815260039092529490208351815492517fffffffffffffffffffffff0000000000000000000000000000000000000000009093169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff1617610100929093169190910291909117815591519091906001820190620004a5908262000f9b565b5050600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040517fc4d66de80000000000000000000000000000000000000000000000000000000081523392810192909252915063c4d66de8906024015f604051808303815f87803b15801562000569575f80fd5b505af11580156200057c573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff167f04e664079117e113faa9684bc14aecb41651cbf098b14eda271248c6d0cda57c878988604051620005cc93929190620010c4565b60405180910390a260015f559695505050505050565b60025f54036200061e576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000674576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7b1ebd0f3ec81bf1cd5f478166ec87beaea1eee7f3bc2612295ae161048a239f905f90a25060015f55565b60408051606080820183525f808352602080840182905283850183905273ffffffffffffffffffffffffffffffffffffffff8681168352600382529185902085519384018652805460ff8116151585526101009004909216908301526001810180549394929391928401916200075c9062000ef8565b80601f01602080910402602001604051908101604052809291908181526020018280546200078a9062000ef8565b8015620007d95780601f10620007af57610100808354040283529160200191620007d9565b820191905f5260205f20905b815481529060010190602001808311620007bb57829003601f168201915b5050505050815250509050805f0151156200080d5760025473ffffffffffffffffffffffffffffffffffffffff1660208201525b919050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620008425760045491505b8282108062000852575060045482115b156200088a576040517fa66618e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000896838362001132565b67ffffffffffffffff811115620008b157620008b162000c37565b604051908082528060200260200182016040528015620008db578160200160208202803683370190505b5090505f5b620008ec848462001132565b811015620009805760046200090282866200114e565b8154811062000915576200091562001164565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811062000952576200095262001164565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101620008e0565b5092915050565b60025f5403620009c3576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000a19576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0362000a6a576040517f370f9b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fddebe6de740fe0dd01cc33ffa314d11c6ac6acbbe50b80513c4c360ae7aa4f04905f90a25060015f55565b5f806040518060400160405280602081526020017f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d73815250846040518060400160405280600d81526020017f5af43d3d93803e603457fd5bf3000000000000000000000000000000000000008152508560405160200162000b61949392919062001191565b60405160208183030381529060405290508051602082015ff0915073ffffffffffffffffffffffffffffffffffffffff821662000980576040517fbe4dab5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103bd806200120d83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200080d575f80fd5b5f6020828403121562000c0d575f80fd5b62000c188262000bd8565b9392505050565b5f6020828403121562000c30575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f6060848603121562000c77575f80fd5b62000c828462000bd8565b92506020840135801515811462000c97575f80fd5b9150604084013567ffffffffffffffff8082111562000cb4575f80fd5b818601915086601f83011262000cc8575f80fd5b81358181111562000cdd5762000cdd62000c37565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000d265762000d2662000c37565b8160405282815289602084870101111562000d3f575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f5b8381101562000d7c57818101518382015260200162000d62565b50505f910152565b5f815180845262000d9d81602086016020860162000d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281511515602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160608084015262000e17608084018262000d84565b949350505050565b5f806040838503121562000e31575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101562000e8f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000e5b565b50909695505050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f825162000ed681600485016020870162000d60565b919091016004019392505050565b602081525f62000c18602083018462000d84565b600181811c9082168062000f0d57607f821691505b60208210810362000f45577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111562000f9657805f5260205f20601f840160051c8101602085101562000f725750805b601f840160051c820191505b8181101562000f93575f815560010162000f7e565b50505b505050565b815167ffffffffffffffff81111562000fb85762000fb862000c37565b62000fd08162000fc9845462000ef8565b8462000f4b565b602080601f83116001811462001025575f841562000fee5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555620010bc565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620010735788860151825594840194600190910190840162001052565b5085821015620010b057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b831515815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f620010fc606083018462000d84565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111562001148576200114862001105565b92915050565b8082018082111562001148576200114862001105565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8551620011a4818460208a0162000d60565b80830190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528451620011e681601484016020890162000d60565b8451910190620011fe81601484016020880162000d60565b01601401969550505050505056fe610140604052348015610010575f80fd5b506040516103bd3803806103bd83398101604081905261002f91610119565b6040517f6bf6eaff5e9af8fbccb949f4c38cc016936f8775363ccf4224db160365785d52905f90a16080815111156100ad5760405162461bcd60e51b815260206004820152601660248201527f747261696c696e67206461746120746f6f206c6f6e6700000000000000000000604482015260640160405180910390fd5b3360808181527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5091909155815160a09081529082526100f1908201602083016101db565b610120526101005260e05260c0525061020e565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561012a575f80fd5b82516001600160401b0380821115610140575f80fd5b818501915085601f830112610153575f80fd5b81518181111561016557610165610105565b604051601f8201601f19908116603f0116810190838211818310171561018d5761018d610105565b8160405282815288868487010111156101a4575f80fd5b5f93505b828410156101c557848401860151818501870152928501926101a8565b5f86848301015280965050505050505092915050565b5f805f80608085870312156101ee575f80fd5b505082516020840151604085015160609095015191969095509092509050565b60805160a05160c05160e051610100516101205161016e61024f5f395f60d501525f60b301525f609101525f606f01525f604d01525f602b015261016e5ff3fe60806040527f5c60da1b000000000000000000000000000000000000000000000000000000005f9081527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090602090600481895afa5f51365f80378536528436602001528336604001528236606001525f803689015f845af49150503d5f803e808015610134573d5ff35b3d5ffdfea2646970667358221220790fe9d1cd064f0c23daceddb779ebd37b1955af4ff80f2c522d35fb2eb695d864736f6c63430008180033a26469706673582212204f7a7fe27ed0169c2b0d837cc6670a55e63ba1b5a4b524e28ce95fbda16551e364736f6c63430008180033

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

000000000000000000000000aee4e2e8024c1b58f4686d1cb1646a6d5755f05c

-----Decoded View---------------
Arg [0] : admin (address): 0xAeE4e2E8024C1B58f4686d1CB1646a6d5755F05C

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


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  ]
[ 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.