ETH Price: $3,483.96 (+3.63%)
Gas: 2 Gwei

Contract

0x8Da5aC3A39D3B8BCaA1FC15A01506cf4F5e79830
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x60806040166244992023-02-14 4:05:47503 days ago1676347547IN
 Create: FactoryUpgradeGate
0 ETH0.0103137217.19115004

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
201844332024-06-27 17:11:353 days ago1719508295
0x8Da5aC3A...4F5e79830
0 ETH
197336942024-04-25 16:52:3566 days ago1714063955
0x8Da5aC3A...4F5e79830
0 ETH
197088132024-04-22 5:20:2370 days ago1713763223
0x8Da5aC3A...4F5e79830
0 ETH
196864712024-04-19 2:19:4773 days ago1713493187
0x8Da5aC3A...4F5e79830
0 ETH
196822852024-04-18 12:16:4773 days ago1713442607
0x8Da5aC3A...4F5e79830
0 ETH
193233952024-02-28 3:36:35124 days ago1709091395
0x8Da5aC3A...4F5e79830
0 ETH
193011952024-02-25 1:03:35127 days ago1708823015
0x8Da5aC3A...4F5e79830
0 ETH
192366062024-02-15 23:29:23136 days ago1708039763
0x8Da5aC3A...4F5e79830
0 ETH
191969612024-02-10 9:56:35141 days ago1707558995
0x8Da5aC3A...4F5e79830
0 ETH
191719082024-02-06 21:37:23145 days ago1707255443
0x8Da5aC3A...4F5e79830
0 ETH
191567282024-02-04 18:28:47147 days ago1707071327
0x8Da5aC3A...4F5e79830
0 ETH
191445122024-02-03 1:15:59149 days ago1706922959
0x8Da5aC3A...4F5e79830
0 ETH
191423612024-02-02 18:00:47149 days ago1706896847
0x8Da5aC3A...4F5e79830
0 ETH
190008892024-01-13 22:15:35169 days ago1705184135
0x8Da5aC3A...4F5e79830
0 ETH
189929132024-01-12 19:30:23170 days ago1705087823
0x8Da5aC3A...4F5e79830
0 ETH
189441502024-01-05 22:52:47177 days ago1704495167
0x8Da5aC3A...4F5e79830
0 ETH
189307062024-01-04 1:31:23179 days ago1704331883
0x8Da5aC3A...4F5e79830
0 ETH
189190872024-01-02 10:24:47180 days ago1704191087
0x8Da5aC3A...4F5e79830
0 ETH
188854752023-12-28 17:04:59185 days ago1703783099
0x8Da5aC3A...4F5e79830
0 ETH
188833512023-12-28 9:55:23185 days ago1703757323
0x8Da5aC3A...4F5e79830
0 ETH
188463882023-12-23 5:18:59191 days ago1703308739
0x8Da5aC3A...4F5e79830
0 ETH
188463872023-12-23 5:18:47191 days ago1703308727
0x8Da5aC3A...4F5e79830
0 ETH
188463732023-12-23 5:15:59191 days ago1703308559
0x8Da5aC3A...4F5e79830
0 ETH
188463702023-12-23 5:15:23191 days ago1703308523
0x8Da5aC3A...4F5e79830
0 ETH
188463682023-12-23 5:14:59191 days ago1703308499
0x8Da5aC3A...4F5e79830
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FactoryUpgradeGate

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion
File 1 of 4 : FactoryUpgradeGate.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

import {IFactoryUpgradeGate} from "./interfaces/IFactoryUpgradeGate.sol";
import {Ownable2Step} from "./utils/ownable/Ownable2Step.sol";

/**

 ________   _____   ____    ______      ____
/\_____  \ /\  __`\/\  _`\ /\  _  \    /\  _`\
\/____//'/'\ \ \/\ \ \ \L\ \ \ \L\ \   \ \ \/\ \  _ __   ___   _____     ____
     //'/'  \ \ \ \ \ \ ,  /\ \  __ \   \ \ \ \ \/\`'__\/ __`\/\ '__`\  /',__\
    //'/'___ \ \ \_\ \ \ \\ \\ \ \/\ \   \ \ \_\ \ \ \//\ \L\ \ \ \L\ \/\__, `\
    /\_______\\ \_____\ \_\ \_\ \_\ \_\   \ \____/\ \_\\ \____/\ \ ,__/\/\____/
    \/_______/ \/_____/\/_/\/ /\/_/\/_/    \/___/  \/_/ \/___/  \ \ \/  \/___/
                                                                 \ \_\
                                                                  \/_/

 */

/// @notice This contract handles gating allowed upgrades for Zora drops contracts
contract FactoryUpgradeGate is IFactoryUpgradeGate, Ownable2Step {
    /// @notice Private mapping of valid upgrade paths
    mapping(address => mapping(address => bool)) private _validUpgradePaths;

    /// @notice Emitted when an upgrade path is added / registered
    event UpgradePathRegistered(address newImpl, address oldImpl);

    /// @notice Emitted when an upgrade path is removed
    event UpgradePathRemoved(address newImpl, address oldImpl);

    /// @notice Error for when not called from admin
    error Access_OnlyOwner();

    /// @notice Sets the owner and inits the contract
    /// @param _initialOwner owner of the contract
    constructor(address _initialOwner) Ownable2Step(_initialOwner) {}

    /// @notice Ensures the given upgrade path is valid and does not overwrite existing storage slots
    /// @param _newImpl The proposed implementation address
    /// @param _currentImpl The current implementation address
    function isValidUpgradePath(address _newImpl, address _currentImpl)
        external
        view
        returns (bool)
    {
        return _validUpgradePaths[_newImpl][_currentImpl];
    }

    /// @notice Registers a new safe upgrade path for an implementation
    /// @param _newImpl The new implementation
    /// @param _supportedPrevImpls Safe implementations that can upgrade to this new implementation
    function registerNewUpgradePath(
        address _newImpl,
        address[] calldata _supportedPrevImpls
    ) external onlyOwner {
        for (uint256 i = 0; i < _supportedPrevImpls.length; i++) {
            _validUpgradePaths[_newImpl][_supportedPrevImpls[i]] = true;
            emit UpgradePathRegistered(_newImpl, _supportedPrevImpls[i]);
        }
    }

    /// @notice Unregisters an upgrade path, in case of emergency
    /// @param _newImpl the newer implementation
    /// @param _prevImpl the older implementation
    function unregisterUpgradePath(address _newImpl, address _prevImpl)
        external
        onlyOwner
    {
        _validUpgradePaths[_newImpl][_prevImpl] = false;
        emit UpgradePathRemoved(_newImpl, _prevImpl);
    }
}

File 2 of 4 : IFactoryUpgradeGate.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

interface IFactoryUpgradeGate {
  function isValidUpgradePath(address _newImpl, address _currentImpl) external returns (bool);

  function registerNewUpgradePath(address _newImpl, address[] calldata _supportedPrevImpls) external;

  function unregisterUpgradePath(address _newImpl, address _prevImpl) external;
}

File 3 of 4 : IOwnable2Step.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/// @title IOwnable2Step
/// @author Rohan Kulkarni / Iain Nash
/// @notice The external Ownable events, errors, and functions
interface IOwnable2Step {
    ///                                                          ///
    ///                            EVENTS                        ///
    ///                                                          ///

    /// @notice Emitted when ownership has been updated
    /// @param prevOwner The previous owner address
    /// @param newOwner The new owner address
    event OwnerUpdated(address indexed prevOwner, address indexed newOwner);

    /// @notice Emitted when an ownership transfer is pending
    /// @param owner The current owner address
    /// @param pendingOwner The pending new owner address
    event OwnerPending(address indexed owner, address indexed pendingOwner);

    /// @notice Emitted when a pending ownership transfer has been canceled
    /// @param owner The current owner address
    /// @param canceledOwner The canceled owner address
    event OwnerCanceled(address indexed owner, address indexed canceledOwner);

    ///                                                          ///
    ///                            ERRORS                        ///
    ///                                                          ///

    /// @dev Reverts if an unauthorized user calls an owner function
    error ONLY_OWNER();

    /// @dev Reverts if an unauthorized user calls a pending owner function
    error ONLY_PENDING_OWNER();

    /// @dev Owner cannot be the zero/burn address
    error OWNER_CANNOT_BE_ZERO_ADDRESS();

    ///                                                          ///
    ///                           FUNCTIONS                      ///
    ///                                                          ///

    /// @notice The address of the owner
    function owner() external view returns (address);

    /// @notice The address of the pending owner
    function pendingOwner() external view returns (address);

    /// @notice Forces an ownership transfer
    /// @param newOwner The new owner address
    function transferOwnership(address newOwner) external;

    /// @notice Initiates a two-step ownership transfer
    /// @param newOwner The new owner address
    function safeTransferOwnership(address newOwner) external;

    /// @notice Accepts an ownership transfer
    function acceptOwnership() external;

    /// @notice Cancels a pending ownership transfer
    function cancelOwnershipTransfer() external;
}

File 4 of 4 : Ownable2Step.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import {IOwnable2Step} from "./IOwnable2Step.sol";

/// @title Ownable2Step
/// @author Iain Nash
/// @dev - Uses custom errors declared in IOwnable
/// @dev - Adds optional two-step ownership transfer (`safeTransferOwnership` + `acceptOwnership`)
abstract contract Ownable2Step is IOwnable2Step {
    /// @dev The address of the owner
    address internal _owner;

    /// @dev The address of the pending owner
    address internal _pendingOwner;

    constructor(address _defaultOwner) {
        _transferOwnership(_defaultOwner);
    }

    ///                                                          ///
    ///                            STORAGE                       ///
    ///                                                          ///

    /// @dev Modifier to check if the address argument is the zero/burn address
    modifier notZeroAddress(address check) {
        if (check == address(0)) {
            revert OWNER_CANNOT_BE_ZERO_ADDRESS();
        }
        _;
    }

    ///                                                          ///
    ///                           MODIFIERS                      ///
    ///                                                          ///

    /// @dev Ensures the caller is the owner
    modifier onlyOwner() {
        if (msg.sender != _owner) {
            revert ONLY_OWNER();
        }
        _;
    }

    /// @dev Ensures the caller is the pending owner
    modifier onlyPendingOwner() {
        if (msg.sender != _pendingOwner) {
            revert ONLY_PENDING_OWNER();
        }
        _;
    }

    ///                                                          ///
    ///                           FUNCTIONS                      ///
    ///                                                          ///

    /// @notice The address of the owner
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /// @notice The address of the pending owner
    function pendingOwner() public view returns (address) {
        return _pendingOwner;
    }

    /// @notice Forces an ownership transfer from the last owner
    /// @param _newOwner The new owner address
    function transferOwnership(address _newOwner)
        public
        notZeroAddress(_newOwner)
        onlyOwner
    {
        _transferOwnership(_newOwner);
    }

    /// @notice Forces an ownership transfer from any sender
    /// @param _newOwner New owner to transfer contract to
    /// @dev Ensure is called only from trusted internal code, no access control checks.
    function _transferOwnership(address _newOwner) internal {
        emit OwnerUpdated(_owner, _newOwner);

        _owner = _newOwner;

        if (_pendingOwner != address(0)) {
            delete _pendingOwner;
        }
    }

    /// @notice Initiates a two-step ownership transfer
    /// @param _newOwner The new owner address
    function safeTransferOwnership(address _newOwner)
        public
        notZeroAddress(_newOwner)
        onlyOwner
    {
        _pendingOwner = _newOwner;

        emit OwnerPending(_owner, _newOwner);
    }

    /// @notice Resign ownership of contract
    /// @dev only callably by the owner, dangerous call.
    function resignOwnership() public onlyOwner {
        _transferOwnership(address(0));
    }

    /// @notice Accepts an ownership transfer
    function acceptOwnership() public onlyPendingOwner {
        emit OwnerUpdated(_owner, msg.sender);

        _owner = _pendingOwner;

        delete _pendingOwner;
    }

    /// @notice Cancels a pending ownership transfer
    function cancelOwnershipTransfer() public onlyOwner {
        emit OwnerCanceled(_owner, _pendingOwner);

        delete _pendingOwner;
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "ERC721A-Upgradeable/=lib/ERC721A-Upgradeable/contracts/",
    "base64/=lib/base64/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc721a-upgradeable/=lib/ERC721A-Upgradeable/contracts/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 5000
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Access_OnlyOwner","type":"error"},{"inputs":[],"name":"ONLY_OWNER","type":"error"},{"inputs":[],"name":"ONLY_PENDING_OWNER","type":"error"},{"inputs":[],"name":"OWNER_CANNOT_BE_ZERO_ADDRESS","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"canceledOwner","type":"address"}],"name":"OwnerCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnerPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"prevOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newImpl","type":"address"},{"indexed":false,"internalType":"address","name":"oldImpl","type":"address"}],"name":"UpgradePathRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newImpl","type":"address"},{"indexed":false,"internalType":"address","name":"oldImpl","type":"address"}],"name":"UpgradePathRemoved","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newImpl","type":"address"},{"internalType":"address","name":"_currentImpl","type":"address"}],"name":"isValidUpgradePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newImpl","type":"address"},{"internalType":"address[]","name":"_supportedPrevImpls","type":"address[]"}],"name":"registerNewUpgradePath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resignOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"safeTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newImpl","type":"address"},{"internalType":"address","name":"_prevImpl","type":"address"}],"name":"unregisterUpgradePath","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610a65380380610a6583398101604081905261002f916100b6565b8061003981610040565b50506100e6565b600080546040516001600160a01b03808516939216917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7691a3600080546001600160a01b0319166001600160a01b038381169190911790915560015416156100b357600180546001600160a01b03191690555b50565b6000602082840312156100c857600080fd5b81516001600160a01b03811681146100df57600080fd5b9392505050565b610970806100f56000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638942865411610076578063e30c39781161005b578063e30c397814610184578063ed0c709114610195578063f2fde38b1461019d57600080fd5b8063894286541461014c5780638da5cb5b1461015f57600080fd5b806373995833116100a757806373995833146100e057806379ba5097146101315780638466a71c1461013957600080fd5b806323452b9c146100c3578063395db2cd146100cd575b600080fd5b6100cb6101b0565b005b6100cb6100db3660046107d1565b61025b565b61011c6100ee3660046107f3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b60405190151581526020015b60405180910390f35b6100cb61034a565b6100cb6101473660046107f3565b610405565b6100cb61015a366004610826565b6104d2565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610128565b6001546001600160a01b031661016c565b6100cb61062d565b6100cb6101ab3660046107d1565b61067d565b6000546001600160a01b031633146101f4576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600080546040516001600160a01b0393841693909116917f682679deecef4dcd49674845cc1e3a075fea9073680aa445a8207d5a4bdea3da91a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b806001600160a01b03811661029c576040517f2c4ec43e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031633146102e0576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691821790925560008054604051929316917f4f2638f5949b9614ef8d5e268cb51348ad7f434a34812bf64b6e95014fbd357e9190a35050565b6001546001600160a01b0316331461038e576040517f065cd53100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460405133926001600160a01b03909216917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7691a360018054600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03841617909155169055565b6000546001600160a01b03163314610449576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382811660008181526002602090815260408083209486168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581519283528201929092527fa3a0491075ec5f5949945a6f452fb9e0619a4dacc65a568ad2da3210cc91cdab910160405180910390a15050565b6000546001600160a01b03163314610516576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610627576001600160a01b038416600090815260026020526040812060019185858581811061054e5761054e6108ac565b905060200201602081019061056391906107d1565b6001600160a01b03168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790557f7acfb66a4ce41040d432f980d35151e6d37f3279e6f8dbf383b0f5112271462f848484848181106105dd576105dd6108ac565b90506020020160208101906105f291906107d1565b604080516001600160a01b0393841681529290911660208301520160405180910390a18061061f816108db565b915050610519565b50505050565b6000546001600160a01b03163314610671576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067b600061070f565b565b806001600160a01b0381166106be576040517f2c4ec43e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b03163314610702576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61070b8261070f565b5050565b600080546040516001600160a01b03808516939216917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7691a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560015416156107b257600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b50565b80356001600160a01b03811681146107cc57600080fd5b919050565b6000602082840312156107e357600080fd5b6107ec826107b5565b9392505050565b6000806040838503121561080657600080fd5b61080f836107b5565b915061081d602084016107b5565b90509250929050565b60008060006040848603121561083b57600080fd5b610844846107b5565b9250602084013567ffffffffffffffff8082111561086157600080fd5b818601915086601f83011261087557600080fd5b81358181111561088457600080fd5b8760208260051b850101111561089957600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220a124600e6ac4e05308139e6bb7d6caf6b96bb8b5e46e779fdfa56c0fc940bc1664736f6c63430008110033000000000000000000000000db392f4391462d60b8b4413ef72018ab595af9d0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100be5760003560e01c80638942865411610076578063e30c39781161005b578063e30c397814610184578063ed0c709114610195578063f2fde38b1461019d57600080fd5b8063894286541461014c5780638da5cb5b1461015f57600080fd5b806373995833116100a757806373995833146100e057806379ba5097146101315780638466a71c1461013957600080fd5b806323452b9c146100c3578063395db2cd146100cd575b600080fd5b6100cb6101b0565b005b6100cb6100db3660046107d1565b61025b565b61011c6100ee3660046107f3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b60405190151581526020015b60405180910390f35b6100cb61034a565b6100cb6101473660046107f3565b610405565b6100cb61015a366004610826565b6104d2565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610128565b6001546001600160a01b031661016c565b6100cb61062d565b6100cb6101ab3660046107d1565b61067d565b6000546001600160a01b031633146101f4576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600080546040516001600160a01b0393841693909116917f682679deecef4dcd49674845cc1e3a075fea9073680aa445a8207d5a4bdea3da91a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b806001600160a01b03811661029c576040517f2c4ec43e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031633146102e0576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691821790925560008054604051929316917f4f2638f5949b9614ef8d5e268cb51348ad7f434a34812bf64b6e95014fbd357e9190a35050565b6001546001600160a01b0316331461038e576040517f065cd53100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460405133926001600160a01b03909216917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7691a360018054600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03841617909155169055565b6000546001600160a01b03163314610449576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382811660008181526002602090815260408083209486168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581519283528201929092527fa3a0491075ec5f5949945a6f452fb9e0619a4dacc65a568ad2da3210cc91cdab910160405180910390a15050565b6000546001600160a01b03163314610516576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610627576001600160a01b038416600090815260026020526040812060019185858581811061054e5761054e6108ac565b905060200201602081019061056391906107d1565b6001600160a01b03168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790557f7acfb66a4ce41040d432f980d35151e6d37f3279e6f8dbf383b0f5112271462f848484848181106105dd576105dd6108ac565b90506020020160208101906105f291906107d1565b604080516001600160a01b0393841681529290911660208301520160405180910390a18061061f816108db565b915050610519565b50505050565b6000546001600160a01b03163314610671576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067b600061070f565b565b806001600160a01b0381166106be576040517f2c4ec43e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b03163314610702576040517fd238ed5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61070b8261070f565b5050565b600080546040516001600160a01b03808516939216917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7691a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911790915560015416156107b257600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b50565b80356001600160a01b03811681146107cc57600080fd5b919050565b6000602082840312156107e357600080fd5b6107ec826107b5565b9392505050565b6000806040838503121561080657600080fd5b61080f836107b5565b915061081d602084016107b5565b90509250929050565b60008060006040848603121561083b57600080fd5b610844846107b5565b9250602084013567ffffffffffffffff8082111561086157600080fd5b818601915086601f83011261087557600080fd5b81358181111561088457600080fd5b8760208260051b850101111561089957600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610933577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220a124600e6ac4e05308139e6bb7d6caf6b96bb8b5e46e779fdfa56c0fc940bc1664736f6c63430008110033

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

000000000000000000000000db392f4391462d60b8b4413ef72018ab595af9d0

-----Decoded View---------------
Arg [0] : _initialOwner (address): 0xDB392f4391462d60B8B4413ef72018Ab595Af9D0

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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