S Price: $0.441696 (+0.55%)

Contract

0xF075cC8660B51D0b8a4474e3f47eDAC5fA034cFB

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Proxy66392422025-02-05 11:16:4117 hrs ago1738754201IN
0xF075cC86...5fA034cFB
0 S0.0627964755
Create Proxy66391122025-02-05 11:14:5017 hrs ago1738754090IN
0xF075cC86...5fA034cFB
0 S0.0623876555
Create Proxy66390472025-02-05 11:14:0117 hrs ago1738754041IN
0xF075cC86...5fA034cFB
0 S0.0623876555
Create Proxy66388902025-02-05 11:12:1117 hrs ago1738753931IN
0xF075cC86...5fA034cFB
0 S0.0623933755
Create Proxy66388412025-02-05 11:11:3017 hrs ago1738753890IN
0xF075cC86...5fA034cFB
0 S0.062393755
Create Proxy66388022025-02-05 11:11:0417 hrs ago1738753864IN
0xF075cC86...5fA034cFB
0 S0.062666555
Create Proxy66387612025-02-05 11:10:3817 hrs ago1738753838IN
0xF075cC86...5fA034cFB
0 S0.0626778355
Create Proxy66386682025-02-05 11:09:4317 hrs ago1738753783IN
0xF075cC86...5fA034cFB
0 S0.0637323856.19
Create Proxy64637782025-02-03 23:05:592 days ago1738623959IN
0xF075cC86...5fA034cFB
0 S0.0944656382.5
Create Proxy64637732025-02-03 23:05:572 days ago1738623957IN
0xF075cC86...5fA034cFB
0 S0.0924881182.5
Create Proxy64637662025-02-03 23:05:542 days ago1738623954IN
0xF075cC86...5fA034cFB
0 S0.0927738982.5
Create Proxy64637632025-02-03 23:05:512 days ago1738623951IN
0xF075cC86...5fA034cFB
0 S0.0935251382.5
Create Proxy64637582025-02-03 23:05:492 days ago1738623949IN
0xF075cC86...5fA034cFB
0 S0.0935251382.5
Create Proxy64637532025-02-03 23:05:462 days ago1738623946IN
0xF075cC86...5fA034cFB
0 S0.0920695882.5
Create Proxy64637462025-02-03 23:05:422 days ago1738623942IN
0xF075cC86...5fA034cFB
0 S0.0927898982.5
Create Proxy64637392025-02-03 23:05:402 days ago1738623940IN
0xF075cC86...5fA034cFB
0 S0.0926628482.5
Create Proxy64637332025-02-03 23:05:372 days ago1738623937IN
0xF075cC86...5fA034cFB
0 S0.093935982.5
Create Proxy62234662025-02-02 8:18:383 days ago1738484318IN
0xF075cC86...5fA034cFB
0 S0.0633992455.01
Create Proxy62234442025-02-02 8:18:153 days ago1738484295IN
0xF075cC86...5fA034cFB
0 S0.0633995755.01
Create Proxy62233912025-02-02 8:17:233 days ago1738484243IN
0xF075cC86...5fA034cFB
0 S0.0628078855.01
Create Proxy62233712025-02-02 8:16:573 days ago1738484217IN
0xF075cC86...5fA034cFB
0 S0.0636838155.01
Create Proxy62233342025-02-02 8:16:203 days ago1738484180IN
0xF075cC86...5fA034cFB
0 S0.0633885155.01
Create Proxy60122932025-01-31 12:02:445 days ago1738324964IN
0xF075cC86...5fA034cFB
0 S0.07773466
Set Upgrade Admi...56131682025-01-27 20:10:029 days ago1738008602IN
0xF075cC86...5fA034cFB
0 S0.0026121982.5
Set Implementati...53244572025-01-25 1:45:4012 days ago1737769540IN
0xF075cC86...5fA034cFB
0 S0.0040660274.9
View all transactions

Latest 23 internal transactions

Parent Transaction Hash Block From To
66392422025-02-05 11:16:4117 hrs ago1738754201
0xF075cC86...5fA034cFB
 Contract Creation0 S
66391122025-02-05 11:14:5017 hrs ago1738754090
0xF075cC86...5fA034cFB
 Contract Creation0 S
66390472025-02-05 11:14:0117 hrs ago1738754041
0xF075cC86...5fA034cFB
 Contract Creation0 S
66388902025-02-05 11:12:1117 hrs ago1738753931
0xF075cC86...5fA034cFB
 Contract Creation0 S
66388412025-02-05 11:11:3017 hrs ago1738753890
0xF075cC86...5fA034cFB
 Contract Creation0 S
66388022025-02-05 11:11:0417 hrs ago1738753864
0xF075cC86...5fA034cFB
 Contract Creation0 S
66387612025-02-05 11:10:3817 hrs ago1738753838
0xF075cC86...5fA034cFB
 Contract Creation0 S
66386682025-02-05 11:09:4317 hrs ago1738753783
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637782025-02-03 23:05:592 days ago1738623959
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637732025-02-03 23:05:572 days ago1738623957
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637662025-02-03 23:05:542 days ago1738623954
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637632025-02-03 23:05:512 days ago1738623951
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637582025-02-03 23:05:492 days ago1738623949
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637532025-02-03 23:05:462 days ago1738623946
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637462025-02-03 23:05:422 days ago1738623942
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637392025-02-03 23:05:402 days ago1738623940
0xF075cC86...5fA034cFB
 Contract Creation0 S
64637332025-02-03 23:05:372 days ago1738623937
0xF075cC86...5fA034cFB
 Contract Creation0 S
62234662025-02-02 8:18:383 days ago1738484318
0xF075cC86...5fA034cFB
 Contract Creation0 S
62234442025-02-02 8:18:153 days ago1738484295
0xF075cC86...5fA034cFB
 Contract Creation0 S
62233912025-02-02 8:17:233 days ago1738484243
0xF075cC86...5fA034cFB
 Contract Creation0 S
62233712025-02-02 8:16:573 days ago1738484217
0xF075cC86...5fA034cFB
 Contract Creation0 S
62233342025-02-02 8:16:203 days ago1738484180
0xF075cC86...5fA034cFB
 Contract Creation0 S
60122932025-01-31 12:02:445 days ago1738324964
0xF075cC86...5fA034cFB
 Contract Creation0 S
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
File 1 of 3 : GenericFactory.sol
// 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()) }
        }
    }
}

File 3 of 3 : MetaProxyDeployer.sol
// 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/native-token-transfers/evm:openzeppelin-contracts/contracts/=lib/native-token-transfers/evm/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/",
    "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/",
    "native-token-transfers/=lib/native-token-transfers/evm/src/",
    "@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/",
    "solidity-bytes-utils/=lib/native-token-transfers/evm/lib/solidity-bytes-utils/contracts/",
    "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/",
    "wormhole-solidity-sdk/=lib/native-token-transfers/evm/lib/wormhole-solidity-sdk/src/"
  ],
  "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

[{"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"}]

608060405234801561000f575f80fd5b5060405161170538038061170583398101604081905261002e916100cc565b6040517f6bf6eaff5e9af8fbccb949f4c38cc016936f8775363ccf4224db160365785d52905f90a16001600160a01b03811661007d576040516306e1f36760e31b815260040160405180910390fd5b60015f81815581546001600160a01b0319166001600160a01b0384169081179092556040517f7b1ebd0f3ec81bf1cd5f478166ec87beaea1eee7f3bc2612295ae161048a239f9190a2506100f9565b5f602082840312156100dc575f80fd5b81516001600160a01b03811681146100f2575f80fd5b9392505050565b6115ff806101065f395ff3fe608060405234801562000010575f80fd5b5060043610620000c8575f3560e01c80639342f417116200007b578063c0e96df6116200005f578063c0e96df614620001e9578063c4d5608a146200020f578063d784d4261462000230575f80fd5b80639342f41714620001aa578063a20ea5c114620001c3575f80fd5b8063378cdb6211620000af578063378cdb6214620001355780635c60da1b146200017257806383e85b271462000193575f80fd5b80630a68b7ba14620000cc5780632971038814620000e2575b5f80fd5b6004546040519081526020015b60405180910390f35b62000124620000f336600462000bfc565b73ffffffffffffffffffffffffffffffffffffffff9081165f90815260036020526040902054610100900416151590565b6040519015158152602001620000d9565b6200014c6200014636600462000c1f565b62000247565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001620000d9565b6002546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b6200014c620001a436600462000c64565b6200027d565b620001c1620001bb36600462000bfc565b620005e2565b005b620001da620001d436600462000bfc565b620006e6565b604051620000d9919062000dcf565b62000200620001fa36600462000e1f565b62000812565b604051620000d9919062000e40565b6001546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b620001c16200024136600462000bfc565b62000987565b6004818154811062000257575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f60025f5403620002ba576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f8190555473ffffffffffffffffffffffffffffffffffffffff908116908516620002e5578094505b73ffffffffffffffffffffffffffffffffffffffff851615806200033557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156200036d576040517f3c02e77800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040515f9062000384908290869060200162000e9b565b60405160208183030381529060405290505f8515620003db5781604051620003ac9062000bca565b620003b8919062000ee4565b604051809103905ff080158015620003d2573d5f803e3d5ffd5b509050620003ea565b620003e7878362000adc565b90505b60408051606081018252871515815273ffffffffffffffffffffffffffffffffffffffff89811660208084019182528385018a81528684165f90815260039092529490208351815492517fffffffffffffffffffffff0000000000000000000000000000000000000000009093169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff1617610100929093169190910291909117815591519091906001820190620004a5908262000f9b565b5050600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040517fc4d66de80000000000000000000000000000000000000000000000000000000081523392810192909252915063c4d66de8906024015f604051808303815f87803b15801562000569575f80fd5b505af11580156200057c573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff167f04e664079117e113faa9684bc14aecb41651cbf098b14eda271248c6d0cda57c878988604051620005cc93929190620010c4565b60405180910390a260015f559695505050505050565b60025f54036200061e576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000674576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7b1ebd0f3ec81bf1cd5f478166ec87beaea1eee7f3bc2612295ae161048a239f905f90a25060015f55565b60408051606080820183525f808352602080840182905283850183905273ffffffffffffffffffffffffffffffffffffffff8681168352600382529185902085519384018652805460ff8116151585526101009004909216908301526001810180549394929391928401916200075c9062000ef8565b80601f01602080910402602001604051908101604052809291908181526020018280546200078a9062000ef8565b8015620007d95780601f10620007af57610100808354040283529160200191620007d9565b820191905f5260205f20905b815481529060010190602001808311620007bb57829003601f168201915b5050505050815250509050805f0151156200080d5760025473ffffffffffffffffffffffffffffffffffffffff1660208201525b919050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620008425760045491505b8282108062000852575060045482115b156200088a576040517fa66618e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000896838362001132565b67ffffffffffffffff811115620008b157620008b162000c37565b604051908082528060200260200182016040528015620008db578160200160208202803683370190505b5090505f5b620008ec848462001132565b811015620009805760046200090282866200114e565b8154811062000915576200091562001164565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811062000952576200095262001164565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101620008e0565b5092915050565b60025f5403620009c3576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000a19576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0362000a6a576040517f370f9b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fddebe6de740fe0dd01cc33ffa314d11c6ac6acbbe50b80513c4c360ae7aa4f04905f90a25060015f55565b5f806040518060400160405280602081526020017f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d73815250846040518060400160405280600d81526020017f5af43d3d93803e603457fd5bf3000000000000000000000000000000000000008152508560405160200162000b61949392919062001191565b60405160208183030381529060405290508051602082015ff0915073ffffffffffffffffffffffffffffffffffffffff821662000980576040517fbe4dab5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103bd806200120d83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200080d575f80fd5b5f6020828403121562000c0d575f80fd5b62000c188262000bd8565b9392505050565b5f6020828403121562000c30575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f6060848603121562000c77575f80fd5b62000c828462000bd8565b92506020840135801515811462000c97575f80fd5b9150604084013567ffffffffffffffff8082111562000cb4575f80fd5b818601915086601f83011262000cc8575f80fd5b81358181111562000cdd5762000cdd62000c37565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000d265762000d2662000c37565b8160405282815289602084870101111562000d3f575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f5b8381101562000d7c57818101518382015260200162000d62565b50505f910152565b5f815180845262000d9d81602086016020860162000d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281511515602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160608084015262000e17608084018262000d84565b949350505050565b5f806040838503121562000e31575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101562000e8f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000e5b565b50909695505050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f825162000ed681600485016020870162000d60565b919091016004019392505050565b602081525f62000c18602083018462000d84565b600181811c9082168062000f0d57607f821691505b60208210810362000f45577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111562000f9657805f5260205f20601f840160051c8101602085101562000f725750805b601f840160051c820191505b8181101562000f93575f815560010162000f7e565b50505b505050565b815167ffffffffffffffff81111562000fb85762000fb862000c37565b62000fd08162000fc9845462000ef8565b8462000f4b565b602080601f83116001811462001025575f841562000fee5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555620010bc565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620010735788860151825594840194600190910190840162001052565b5085821015620010b057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b831515815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f620010fc606083018462000d84565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111562001148576200114862001105565b92915050565b8082018082111562001148576200114862001105565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8551620011a4818460208a0162000d60565b80830190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528451620011e681601484016020890162000d60565b8451910190620011fe81601484016020880162000d60565b01601401969550505050505056fe610140604052348015610010575f80fd5b506040516103bd3803806103bd83398101604081905261002f91610119565b6040517f6bf6eaff5e9af8fbccb949f4c38cc016936f8775363ccf4224db160365785d52905f90a16080815111156100ad5760405162461bcd60e51b815260206004820152601660248201527f747261696c696e67206461746120746f6f206c6f6e6700000000000000000000604482015260640160405180910390fd5b3360808181527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5091909155815160a09081529082526100f1908201602083016101db565b610120526101005260e05260c0525061020e565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561012a575f80fd5b82516001600160401b0380821115610140575f80fd5b818501915085601f830112610153575f80fd5b81518181111561016557610165610105565b604051601f8201601f19908116603f0116810190838211818310171561018d5761018d610105565b8160405282815288868487010111156101a4575f80fd5b5f93505b828410156101c557848401860151818501870152928501926101a8565b5f86848301015280965050505050505092915050565b5f805f80608085870312156101ee575f80fd5b505082516020840151604085015160609095015191969095509092509050565b60805160a05160c05160e051610100516101205161016e61024f5f395f60d501525f60b301525f609101525f606f01525f604d01525f602b015261016e5ff3fe60806040527f5c60da1b000000000000000000000000000000000000000000000000000000005f9081527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090602090600481895afa5f51365f80378536528436602001528336604001528236606001525f803689015f845af49150503d5f803e808015610134573d5ff35b3d5ffdfea2646970667358221220cdf6b36f6cecd5d2c971b898d27051de7423520d4d8420ec611f4adc1c43221264736f6c63430008180033a26469706673582212205d2ba1dfe6853410bddbb7348a6bd0712d41269d74fba6a3ac84559d8e79cbc964736f6c63430008180033000000000000000000000000b49f50798b7014034bd7804912cc40dde9ef82a2

Deployed Bytecode

0x608060405234801562000010575f80fd5b5060043610620000c8575f3560e01c80639342f417116200007b578063c0e96df6116200005f578063c0e96df614620001e9578063c4d5608a146200020f578063d784d4261462000230575f80fd5b80639342f41714620001aa578063a20ea5c114620001c3575f80fd5b8063378cdb6211620000af578063378cdb6214620001355780635c60da1b146200017257806383e85b271462000193575f80fd5b80630a68b7ba14620000cc5780632971038814620000e2575b5f80fd5b6004546040519081526020015b60405180910390f35b62000124620000f336600462000bfc565b73ffffffffffffffffffffffffffffffffffffffff9081165f90815260036020526040902054610100900416151590565b6040519015158152602001620000d9565b6200014c6200014636600462000c1f565b62000247565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001620000d9565b6002546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b6200014c620001a436600462000c64565b6200027d565b620001c1620001bb36600462000bfc565b620005e2565b005b620001da620001d436600462000bfc565b620006e6565b604051620000d9919062000dcf565b62000200620001fa36600462000e1f565b62000812565b604051620000d9919062000e40565b6001546200014c9073ffffffffffffffffffffffffffffffffffffffff1681565b620001c16200024136600462000bfc565b62000987565b6004818154811062000257575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f60025f5403620002ba576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f8190555473ffffffffffffffffffffffffffffffffffffffff908116908516620002e5578094505b73ffffffffffffffffffffffffffffffffffffffff851615806200033557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156200036d576040517f3c02e77800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040515f9062000384908290869060200162000e9b565b60405160208183030381529060405290505f8515620003db5781604051620003ac9062000bca565b620003b8919062000ee4565b604051809103905ff080158015620003d2573d5f803e3d5ffd5b509050620003ea565b620003e7878362000adc565b90505b60408051606081018252871515815273ffffffffffffffffffffffffffffffffffffffff89811660208084019182528385018a81528684165f90815260039092529490208351815492517fffffffffffffffffffffff0000000000000000000000000000000000000000009093169015157fffffffffffffffffffffff0000000000000000000000000000000000000000ff1617610100929093169190910291909117815591519091906001820190620004a5908262000f9b565b5050600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040517fc4d66de80000000000000000000000000000000000000000000000000000000081523392810192909252915063c4d66de8906024015f604051808303815f87803b15801562000569575f80fd5b505af11580156200057c573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff167f04e664079117e113faa9684bc14aecb41651cbf098b14eda271248c6d0cda57c878988604051620005cc93929190620010c4565b60405180910390a260015f559695505050505050565b60025f54036200061e576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000674576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7b1ebd0f3ec81bf1cd5f478166ec87beaea1eee7f3bc2612295ae161048a239f905f90a25060015f55565b60408051606080820183525f808352602080840182905283850183905273ffffffffffffffffffffffffffffffffffffffff8681168352600382529185902085519384018652805460ff8116151585526101009004909216908301526001810180549394929391928401916200075c9062000ef8565b80601f01602080910402602001604051908101604052809291908181526020018280546200078a9062000ef8565b8015620007d95780601f10620007af57610100808354040283529160200191620007d9565b820191905f5260205f20905b815481529060010190602001808311620007bb57829003601f168201915b5050505050815250509050805f0151156200080d5760025473ffffffffffffffffffffffffffffffffffffffff1660208201525b919050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620008425760045491505b8282108062000852575060045482115b156200088a576040517fa66618e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000896838362001132565b67ffffffffffffffff811115620008b157620008b162000c37565b604051908082528060200260200182016040528015620008db578160200160208202803683370190505b5090505f5b620008ec848462001132565b811015620009805760046200090282866200114e565b8154811062000915576200091562001164565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811062000952576200095262001164565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101620008e0565b5092915050565b60025f5403620009c3576040517f74f3606300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f5560015473ffffffffffffffffffffffffffffffffffffffff16331462000a19576040517f08e2ce1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0362000a6a576040517f370f9b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fddebe6de740fe0dd01cc33ffa314d11c6ac6acbbe50b80513c4c360ae7aa4f04905f90a25060015f55565b5f806040518060400160405280602081526020017f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d73815250846040518060400160405280600d81526020017f5af43d3d93803e603457fd5bf3000000000000000000000000000000000000008152508560405160200162000b61949392919062001191565b60405160208183030381529060405290508051602082015ff0915073ffffffffffffffffffffffffffffffffffffffff821662000980576040517fbe4dab5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103bd806200120d83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200080d575f80fd5b5f6020828403121562000c0d575f80fd5b62000c188262000bd8565b9392505050565b5f6020828403121562000c30575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f6060848603121562000c77575f80fd5b62000c828462000bd8565b92506020840135801515811462000c97575f80fd5b9150604084013567ffffffffffffffff8082111562000cb4575f80fd5b818601915086601f83011262000cc8575f80fd5b81358181111562000cdd5762000cdd62000c37565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000d265762000d2662000c37565b8160405282815289602084870101111562000d3f575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f5b8381101562000d7c57818101518382015260200162000d62565b50505f910152565b5f815180845262000d9d81602086016020860162000d60565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281511515602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f604083015160608084015262000e17608084018262000d84565b949350505050565b5f806040838503121562000e31575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101562000e8f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000e5b565b50909695505050505050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681525f825162000ed681600485016020870162000d60565b919091016004019392505050565b602081525f62000c18602083018462000d84565b600181811c9082168062000f0d57607f821691505b60208210810362000f45577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111562000f9657805f5260205f20601f840160051c8101602085101562000f725750805b601f840160051c820191505b8181101562000f93575f815560010162000f7e565b50505b505050565b815167ffffffffffffffff81111562000fb85762000fb862000c37565b62000fd08162000fc9845462000ef8565b8462000f4b565b602080601f83116001811462001025575f841562000fee5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555620010bc565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620010735788860151825594840194600190910190840162001052565b5085821015620010b057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b831515815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f620010fc606083018462000d84565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111562001148576200114862001105565b92915050565b8082018082111562001148576200114862001105565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8551620011a4818460208a0162000d60565b80830190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528451620011e681601484016020890162000d60565b8451910190620011fe81601484016020880162000d60565b01601401969550505050505056fe610140604052348015610010575f80fd5b506040516103bd3803806103bd83398101604081905261002f91610119565b6040517f6bf6eaff5e9af8fbccb949f4c38cc016936f8775363ccf4224db160365785d52905f90a16080815111156100ad5760405162461bcd60e51b815260206004820152601660248201527f747261696c696e67206461746120746f6f206c6f6e6700000000000000000000604482015260640160405180910390fd5b3360808181527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5091909155815160a09081529082526100f1908201602083016101db565b610120526101005260e05260c0525061020e565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561012a575f80fd5b82516001600160401b0380821115610140575f80fd5b818501915085601f830112610153575f80fd5b81518181111561016557610165610105565b604051601f8201601f19908116603f0116810190838211818310171561018d5761018d610105565b8160405282815288868487010111156101a4575f80fd5b5f93505b828410156101c557848401860151818501870152928501926101a8565b5f86848301015280965050505050505092915050565b5f805f80608085870312156101ee575f80fd5b505082516020840151604085015160609095015191969095509092509050565b60805160a05160c05160e051610100516101205161016e61024f5f395f60d501525f60b301525f609101525f606f01525f604d01525f602b015261016e5ff3fe60806040527f5c60da1b000000000000000000000000000000000000000000000000000000005f9081527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090602090600481895afa5f51365f80378536528436602001528336604001528236606001525f803689015f845af49150503d5f803e808015610134573d5ff35b3d5ffdfea2646970667358221220cdf6b36f6cecd5d2c971b898d27051de7423520d4d8420ec611f4adc1c43221264736f6c63430008180033a26469706673582212205d2ba1dfe6853410bddbb7348a6bd0712d41269d74fba6a3ac84559d8e79cbc964736f6c63430008180033

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

000000000000000000000000b49f50798b7014034bd7804912cc40dde9ef82a2

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

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


Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

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

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