ETH Price: $3,368.25 (+0.39%)
Gas: 7 Gwei

Contract

0x5db2aab6c88931d59de519220FFD2e394E1C755f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Lock196125632024-04-08 17:54:2398 days ago1712598863IN
0x5db2aab6...94E1C755f
0 ETH0.0028838737.53088665
Release191619102024-02-05 11:56:23161 days ago1707134183IN
0x5db2aab6...94E1C755f
0 ETH0.0013306313.5211573
Release191610382024-02-05 8:58:47161 days ago1707123527IN
0x5db2aab6...94E1C755f
0 ETH0.002165813.74596529
Lock191003672024-01-27 20:44:11170 days ago1706388251IN
0x5db2aab6...94E1C755f
0 ETH0.0013306713.09600546
Release187957262023-12-16 2:39:59213 days ago1702694399IN
0x5db2aab6...94E1C755f
0 ETH0.0030830643.31728494
Lock187884102023-12-15 2:01:59214 days ago1702605719IN
0x5db2aab6...94E1C755f
0 ETH0.0020663936.32709043
Release187883832023-12-15 1:56:35214 days ago1702605395IN
0x5db2aab6...94E1C755f
0 ETH0.0020816129.24682853
Release187768172023-12-13 11:00:35215 days ago1702465235IN
0x5db2aab6...94E1C755f
0 ETH0.0044576330.72172694
Lock181266662023-09-13 10:02:59306 days ago1694599379IN
0x5db2aab6...94E1C755f
0 ETH0.001594228.01428649
Release176352282023-07-06 13:54:23375 days ago1688651663IN
0x5db2aab6...94E1C755f
0 ETH0.0018376833.97714496
Release176215952023-07-04 15:58:59377 days ago1688486339IN
0x5db2aab6...94E1C755f
0 ETH0.0013977219.63158428
Release176038672023-07-02 4:11:23380 days ago1688271083IN
0x5db2aab6...94E1C755f
0 ETH0.0007496913.85806376
Release176031522023-07-02 1:46:59380 days ago1688262419IN
0x5db2aab6...94E1C755f
0 ETH0.0009862611.78728541
Release175969722023-07-01 4:55:23381 days ago1688187323IN
0x5db2aab6...94E1C755f
0 ETH0.0013244315.40745164
Release173542312023-05-28 1:23:59415 days ago1685237039IN
0x5db2aab6...94E1C755f
0 ETH0.0023329423.69459124
Release170088072023-04-09 5:52:59464 days ago1681019579IN
0x5db2aab6...94E1C755f
0 ETH0.0010708919.80429235
Release170048062023-04-08 16:18:11464 days ago1680970691IN
0x5db2aab6...94E1C755f
0 ETH0.0010182718.82286788
Lock167454032023-03-03 3:47:47501 days ago1677815267IN
0x5db2aab6...94E1C755f
0 ETH0.0014527425.52848072
Lock167332412023-03-01 10:40:47502 days ago1677667247IN
0x5db2aab6...94E1C755f
0 ETH0.0014578525.62365689
Lock167140652023-02-26 18:03:59505 days ago1677434639IN
0x5db2aab6...94E1C755f
0 ETH0.0017108230.06985054
Lock167068632023-02-25 17:46:23506 days ago1677347183IN
0x5db2aab6...94E1C755f
0 ETH0.0013559123.83696417
Lock167067422023-02-25 17:21:59506 days ago1677345719IN
0x5db2aab6...94E1C755f
0 ETH0.0015357824.89313477
Lock167017172023-02-25 0:23:47507 days ago1677284627IN
0x5db2aab6...94E1C755f
0 ETH0.0014169222.96662879
Lock166801162023-02-21 23:22:35510 days ago1677021755IN
0x5db2aab6...94E1C755f
0 ETH0.0015871127.88969835
Release166162482023-02-13 0:26:47519 days ago1676248007IN
0x5db2aab6...94E1C755f
0 ETH0.0013629819.14686929
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MonstersBridgeLock

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 6 : MonstersBridgeLock.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/*
* ███▄ ▄███▓ ▒█████   ███▄    █   ██████ ▄▄▄█████▓▓█████  ██▀███
* ▓██▒▀█▀ ██▒▒██▒  ██▒ ██ ▀█   █ ▒██    ▒ ▓  ██▒ ▓▒▓█   ▀ ▓██ ▒ ██▒
* ▓██    ▓██░▒██░  ██▒▓██  ▀█ ██▒░ ▓██▄   ▒ ▓██░ ▒░▒███   ▓██ ░▄█ ▒
* ▒██    ▒██ ▒██   ██░▓██▒  ▐▌██▒  ▒   ██▒░ ▓██▓ ░ ▒▓█  ▄ ▒██▀▀█▄
* ▒██▒   ░██▒░ ████▓▒░▒██░   ▓██░▒██████▒▒  ▒██▒ ░ ░▒████▒░██▓ ▒██▒
* ░ ▒░   ░  ░░ ▒░▒░▒░ ░ ▒░   ▒ ▒ ▒ ▒▓▒ ▒ ░  ▒ ░░   ░░ ▒░ ░░ ▒▓ ░▒▓░
* ░  ░      ░  ░ ▒ ▒░ ░ ░░   ░ ▒░░ ░▒  ░ ░    ░     ░ ░  ░  ░▒ ░ ▒░
* ░      ░   ░ ░ ░ ▒     ░   ░ ░ ░  ░  ░    ░         ░     ░░   ░
* ░       ░ ░           ░       ░              ░  ░   ░
*
* ▄▄▄▄    ██▀███   ██▓▓█████▄   ▄████ ▓█████
* ▓█████▄ ▓██ ▒ ██▒▓██▒▒██▀ ██▌ ██▒ ▀█▒▓█   ▀
* ▒██▒ ▄██▓██ ░▄█ ▒▒██▒░██   █▌▒██░▄▄▄░▒███
* ▒██░█▀  ▒██▀▀█▄  ░██░░▓█▄   ▌░▓█  ██▓▒▓█  ▄
* ░▓█  ▀█▓░██▓ ▒██▒░██░░▒████▓ ░▒▓███▀▒░▒████▒
* ░▒▓███▀▒░ ▒▓ ░▒▓░░▓   ▒▒▓  ▒  ░▒   ▒ ░░ ▒░ ░
* ▒░▒   ░   ░▒ ░ ▒░ ▒ ░ ░ ▒  ▒   ░   ░  ░ ░  ░
* ░    ░   ░░   ░  ▒ ░ ░ ░  ░ ░ ░   ░    ░
* ░         ░      ░     ░          ░    ░  ░
* ░               ░
*/

import "./ERC721Receiver.sol";
import "./Interfaces.sol";
import "./MerkleProof.sol";
import "./OwnableSafe.sol";

/**
 * @title Monsters Bridge Lock
 * @notice NFT locker for the ethereum side of the Monster Satoshibles Bridge
 * @author Aaron Hanson <[email protected]>
 * The bridge can be used at https://stacksbridge.com/
 */
contract MonstersBridgeLock is OwnableSafe, ERC721Receiver {

    /// Maximum number of tokens that can be locked/released in one tx
    uint256 public constant MAX_BATCH_SIZE = 50;

    /// Monster Satoshibles contract instance
    IERC721 public immutable MONSTER_SATOSHIBLES_CONTRACT;

    /// Bridge worker address
    address public worker;

    /// Whether the bridge is open overall
    bool public bridgeIsOpen;

    /// Whether the bridge is open to the public
    bool public bridgeIsOpenToPublic;

    /// Gas escrow fee paid per locked token, to cover gas when releasing
    uint256 public gasEscrowFee;

    /// Merkle root summarizing all accounts with early access
    bytes32 public earlyAccessMerkleRoot;

    /// Tracks number of early access tickets used per address
    mapping(address => uint256) public earlyAccessTicketsUsed;

    /**
     * @notice Emitted when the bridgeIsOpen flag changes
     * @param isOpen Whether the bridge is now open overall
     */
    event BridgeStateChanged(
        bool indexed isOpen
    );

    /**
     * @notice Emitted when the bridgeIsOpenToPublic flag changes
     * @param isOpenToPublic Whether the bridge is now open to the public
     */
    event BridgePublicStateChanged(
        bool indexed isOpenToPublic
    );

    /**
     * @notice Emitted when a monster satoshible is locked (bridging to Stacks)
     * @param tokenId The monster satoshible token ID
     * @param ethereumSender The sender's eth address
     * @param stacksReceiver The receiver's stacks address
     */
    event Locked(
        uint256 indexed tokenId,
        address indexed ethereumSender,
        string stacksReceiver
    );

    /**
     * @notice Requires the bridge to be open
     */
    modifier onlyWhenBridgeIsOpen()
    {
        require(
            bridgeIsOpen == true,
            "Bridge is not open"
        );
        _;
    }

    /**
     * @notice Requires the bridge to be open to the public
     */
    modifier onlyWhenBridgeIsOpenToPublic()
    {
        require(
            bridgeIsOpen == true && bridgeIsOpenToPublic == true,
            "Bridge is not open to public"
        );
        _;
    }

    /**
     * @notice Requires msg.sender to be the bridge worker address
     */
    modifier onlyWorker()
    {
        require(
             _msgSender() == worker,
            "Caller is not the worker"
        );
        _;
    }

    /**
     * @param _immutableMonsterSatoshibles The Monster Satoshibles contract address
     * @param _worker The bridge worker address
     * @param _earlyAccessMerkleRoot The initial early access merkle root
     */
    constructor(
        address _immutableMonsterSatoshibles,
        address _worker,
        bytes32 _earlyAccessMerkleRoot
    ) {
        MONSTER_SATOSHIBLES_CONTRACT = IERC721(
            _immutableMonsterSatoshibles
        );

        worker = _worker;
        earlyAccessMerkleRoot = _earlyAccessMerkleRoot;
        bridgeIsOpen = true;
    }

    /**
     * @notice Locks one or more monster satoshibles to bridge to Stacks
     * @param _tokenIds The monster satoshible token IDs
     * @param _stacksReceiver The stacks address to receive the monster satoshibles
     */
    function lock(
        uint256[] calldata _tokenIds,
        string calldata _stacksReceiver
    )
        external
        payable
        onlyWhenBridgeIsOpenToPublic
    {
        _lock(
            _tokenIds,
            _stacksReceiver
        );
    }

    /**
     * @notice Locks one or more monster satoshibles to bridge to Stacks (early access)
     * @param _tokenIds The monster satoshible token IDs
     * @param _stacksReceiver The stacks address to receive the monster satoshibles
     * @param _earlyAccessTickets The total early access tickets for _account
     * @param _proof The merkle proof to be verified
     */
    function lockEarlyAccess(
        uint256[] calldata _tokenIds,
        string calldata _stacksReceiver,
        uint256 _earlyAccessTickets,
        bytes32[] calldata _proof
    )
        external
        payable
        onlyWhenBridgeIsOpen
    {
        require(
            verifyEarlyAccessTickets(
                _msgSender(),
                _earlyAccessTickets,
                _proof
            ) == true,
            "Invalid early access proof"
        );

        unchecked {
            require(
                earlyAccessTicketsUsed[_msgSender()] + _tokenIds.length
                    <= _earlyAccessTickets,
                "Not enough tickets remaining"
            );

            earlyAccessTicketsUsed[_msgSender()] += _tokenIds.length;
        }

        _lock(
            _tokenIds,
            _stacksReceiver
        );
    }

    /**
     * @notice Releases one or more monster satoshibles after bridging from Stacks
     * @param _tokenIds The monster satoshible token IDs
     * @param _receiver The eth address to receive the monster satoshibles
     */
    function release(
        uint256[] calldata _tokenIds,
        address _receiver
    )
        external
        onlyWorker
        onlyWhenBridgeIsOpen
    {
        require(
            _tokenIds.length > 0,
            "No token IDs specified"
        );

        require(
            _tokenIds.length <= MAX_BATCH_SIZE,
            "Too many token IDs (max 50)"
        );

        unchecked {
            for (uint256 i = 0; i < _tokenIds.length; i++) {
                MONSTER_SATOSHIBLES_CONTRACT.safeTransferFrom(
                    address(this),
                    _receiver,
                    _tokenIds[i]
                );
            }
        }
    }

    /**
     * @notice Opens or closes the bridge overall
     * @param _isOpen Whether to open or close the bridge overall
     */
    function setBridgeIsOpen(
        bool _isOpen
    )
        external
        onlyOwner
    {
        bridgeIsOpen = _isOpen;

        emit BridgeStateChanged(
            _isOpen
        );
    }

    /**
     * @notice Opens or closes the bridge to the public
     * @param _isOpenToPublic Whether to open or close the bridge to the public
     */
    function setBridgeIsOpenToPublic(
        bool _isOpenToPublic
    )
        external
        onlyOwner
    {
        bridgeIsOpenToPublic = _isOpenToPublic;

        emit BridgePublicStateChanged(
            _isOpenToPublic
        );
    }

    /**
     * @notice Sets a new earlyAccessMerkleRoot
     * @param _newMerkleRoot The new merkle root
     */
    function setEarlyAccessMerkleRoot(
        bytes32 _newMerkleRoot
    )
        external
        onlyOwner
    {
        earlyAccessMerkleRoot = _newMerkleRoot;
    }

    /**
     * @notice Sets a new worker address
     * @param _newWorker The new worker address
     */
    function setWorker(
        address _newWorker
    )
        external
        onlyOwner
    {
        worker = _newWorker;
    }

    /**
     * @notice Sets a new gas escrow fee
     * @param _newGasEscrowFee The new gas escrow fee amount (in wei)
     */
    function setGasEscrowFee(
        uint256 _newGasEscrowFee
    )
        external
        onlyOwner
    {
        gasEscrowFee = _newGasEscrowFee;
    }

    /**
     * @notice Transfers gas escrow ether to worker address
     * @param _amount The amount to transfer (in wei)
     */
    function transferGasEscrowToWorker(
        uint256 _amount
    )
        external
        onlyOwner
    {
        payable(worker).transfer(
            _amount
        );
    }

    /**
     * @notice Withdraws any ERC20 tokens in case of accidental transfers
     * @dev WARNING: Double check token transfer function
     * @param _token The contract address of token
     * @param _to The address to which to withdraw
     * @param _amount The amount to withdraw
     * @param _hasVerifiedToken Must be true (sanity check)
     */
    function withdrawERC20(
        address _token,
        address _to,
        uint256 _amount,
        bool _hasVerifiedToken
    )
        external
        onlyOwner
    {
        require(
            _hasVerifiedToken == true,
            "Need to verify token"
        );

        IERC20(_token).transfer(
            _to,
            _amount
        );
    }

    /**
     * @notice Withdraws any ERC721 tokens in case of accidental transfers
     * @dev WARNING: Double check token safeTransferFrom function
     * @param _token The contract address of token
     * @param _to The address to which to withdraw
     * @param _tokenIds The token IDs to withdraw
     * @param _hasVerifiedToken Must be true (sanity check)
     */
    function withdrawERC721(
        address _token,
        address _to,
        uint256[] calldata _tokenIds,
        bool _hasVerifiedToken
    )
        external
        onlyOwner
    {
        require(
            _hasVerifiedToken == true,
            "Need to verify token"
        );

        unchecked {
            for (uint256 i = 0; i < _tokenIds.length; i++) {
                IERC721(_token).safeTransferFrom(
                    address(this),
                    _to,
                    _tokenIds[i]
                );
            }
        }
    }

    /**
     * @notice Verifies the merkle proof of an account's early access tickets
     * @param _account The account to verify
     * @param _earlyAccessTickets The total early access tickets for _account
     * @param _proof The merkle proof to be verified
     * @return isVerified True if the merkle proof is verified
     */
    function verifyEarlyAccessTickets(
        address _account,
        uint256 _earlyAccessTickets,
        bytes32[] calldata _proof
    )
        public
        view
        returns (bool isVerified)
    {
        bytes32 node = keccak256(
            abi.encodePacked(
                _account,
                _earlyAccessTickets
            )
        );

        isVerified = MerkleProof.verify(
            _proof,
            earlyAccessMerkleRoot,
            node
        );
    }

    /**
     * @dev Locks one or more monster satoshibles to bridge to Stacks
     * @param _tokenIds The monster satoshible token IDs
     * @param _stacksReceiver The stacks address to receive the monster satoshibles
     */
    function _lock(
        uint256[] calldata _tokenIds,
        string calldata _stacksReceiver
    )
        private
    {
        require(
            _tokenIds.length > 0,
            "No token IDs specified"
        );

        require(
            _tokenIds.length <= MAX_BATCH_SIZE,
            "Too many token IDs (max 50)"
        );

        unchecked {
            require(
                msg.value == gasEscrowFee * _tokenIds.length,
                "Incorrect gas escrow ether"
            );

            for (uint256 i = 0; i < _tokenIds.length; i++) {
                uint256 tokenId = _tokenIds[i];

                MONSTER_SATOSHIBLES_CONTRACT.safeTransferFrom(
                    _msgSender(),
                    address(this),
                    tokenId
                );

                emit Locked(
                    tokenId,
                    _msgSender(),
                    _stacksReceiver
                );
            }
        }
    }
}

File 2 of 6 : OwnableSafe.sol
// SPDX-License-Identifier: MIT
// Based on OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)
// With renounceOwnership() removed

pragma solidity ^0.8.10;

import "./ContextSimple.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract OwnableSafe is ContextSimple {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 6 : MerkleProof.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

library MerkleProof {
    /**
     * @dev Verifies a merkle proof for a root and leaf node
     * @param _proof The merkle proof to verify
     * @param _root The merkle root
     * @param _leaf The leaf node
     * @return isVerified True if the merkle proof is verified
     */
    function verify(
        bytes32[] memory _proof,
        bytes32 _root,
        bytes32 _leaf
    )
        internal
        pure
        returns (bool isVerified)
    {
        bytes32 computedHash = _leaf;

        unchecked {
            for (uint256 i = 0; i < _proof.length; i++) {
                bytes32 proofElement = _proof[i];

                if (computedHash <= proofElement) {
                    computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
                } else {
                    computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
                }
            }
        }

        isVerified = computedHash == _root;
    }
}

File 4 of 6 : Interfaces.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

interface IERC20 {
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);
}

interface IERC721 {
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
}

File 5 of 6 : ERC721Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/**
 * @notice ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
contract ERC721Receiver {

    /**
     * @notice ERC721 token receiver interface
     * @dev Interface for any contract that wants to support safeTransfers
     * from ERC721 asset contracts.
     */
    function onERC721Received(
        address _operator,
        address _from,
        uint256 _tokenId,
        bytes calldata _data
    )
        external
        pure
        returns (bytes4)
    {
        return 0x150b7a02;
    }
}

File 6 of 6 : ContextSimple.sol
// SPDX-License-Identifier: MIT
// Based on OpenZeppelin Contracts v4.4.0 (utils/Context.sol)
// With _msgData() removed

pragma solidity ^0.8.10;

/**
 * @dev Provides the msg.sender in the current execution context.
 */
abstract contract ContextSimple {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_immutableMonsterSatoshibles","type":"address"},{"internalType":"address","name":"_worker","type":"address"},{"internalType":"bytes32","name":"_earlyAccessMerkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"isOpenToPublic","type":"bool"}],"name":"BridgePublicStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"isOpen","type":"bool"}],"name":"BridgeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"ethereumSender","type":"address"},{"indexed":false,"internalType":"string","name":"stacksReceiver","type":"string"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MONSTER_SATOSHIBLES_CONTRACT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridgeIsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridgeIsOpenToPublic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyAccessMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"earlyAccessTicketsUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasEscrowFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"string","name":"_stacksReceiver","type":"string"}],"name":"lock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"string","name":"_stacksReceiver","type":"string"},{"internalType":"uint256","name":"_earlyAccessTickets","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"lockEarlyAccess","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isOpen","type":"bool"}],"name":"setBridgeIsOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isOpenToPublic","type":"bool"}],"name":"setBridgeIsOpenToPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_newMerkleRoot","type":"bytes32"}],"name":"setEarlyAccessMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newGasEscrowFee","type":"uint256"}],"name":"setGasEscrowFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWorker","type":"address"}],"name":"setWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferGasEscrowToWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_earlyAccessTickets","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"verifyEarlyAccessTickets","outputs":[{"internalType":"bool","name":"isVerified","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_hasVerifiedToken","type":"bool"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"bool","name":"_hasVerifiedToken","type":"bool"}],"name":"withdrawERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"worker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a06040523480156200001157600080fd5b5060405162001bbb38038062001bbb8339810160408190526200003491620000e3565b6200003f3362000076565b6001600160a01b03928316608052600180546003929092556001600160a81b03199091169190921617600160a01b17905562000124565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000de57600080fd5b919050565b600080600060608486031215620000f957600080fd5b6200010484620000c6565b92506200011460208501620000c6565b9150604084015190509250925092565b608051611a6d6200014e6000396000818161036c01528181610db201526113520152611a6d6000f3fe6080604052600436106101805760003560e01c8063a302d51a116100d6578063ce5ad3a91161007f578063d67d394111610059578063d67d3941146104ca578063d94dd5ed146104ea578063f2fde38b1461050a57600080fd5b8063ce5ad3a914610475578063cfdbf25414610495578063d3d704cf146104aa57600080fd5b8063be644cd4116100b0578063be644cd414610415578063c26f6d4414610435578063c677dede1461045557600080fd5b8063a302d51a146103d9578063a62aee0f146103ec578063ae55545c146103ff57600080fd5b806364f4f0a0116101385780637137180711610112578063713718071461035a5780638da5cb5b1461038e578063a2e1e421146103b957600080fd5b806364f4f0a0146102db57806367ce337d1461030d578063702ac6041461033a57600080fd5b80633533b8e0116101695780633533b8e01461024357806343b6330b146102675780634d547ada1461028957600080fd5b8063150b7a021461018557806326a66a4c14610200575b600080fd5b34801561019157600080fd5b506101ca6101a036600461160a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b34801561020c57600080fd5b50600154610233907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101f7565b34801561024f57600080fd5b5061025960035481565b6040519081526020016101f7565b34801561027357600080fd5b506102876102823660046116cc565b61052a565b005b34801561029557600080fd5b506001546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f7565b3480156102e757600080fd5b506001546102339074010000000000000000000000000000000000000000900460ff1681565b34801561031957600080fd5b50610259610328366004611745565b60046020526000908152604090205481565b34801561034657600080fd5b50610287610355366004611767565b6106cb565b34801561036657600080fd5b506102b67f000000000000000000000000000000000000000000000000000000000000000081565b34801561039a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b3480156103c557600080fd5b506102876103d4366004611780565b610737565b6102876103e73660046117cf565b610890565b6102876103fa36600461183b565b61093b565b34801561040b57600080fd5b5061025960025481565b34801561042157600080fd5b506102876104303660046118df565b610a91565b34801561044157600080fd5b50610287610450366004611745565b610b6e565b34801561046157600080fd5b506102876104703660046118fc565b610c1c565b34801561048157600080fd5b50610287610490366004611767565b610ea0565b3480156104a157600080fd5b50610259603281565b3480156104b657600080fd5b506102876104c5366004611767565b610f52565b3480156104d657600080fd5b506102336104e5366004611950565b610fbe565b3480156104f657600080fd5b506102876105053660046118df565b61105f565b34801561051657600080fd5b50610287610525366004611745565b61113b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001811515146105e85760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b60005b828110156106c3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e30878787868181106106235761062361199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b5050600190920191506105eb9050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600255565b60005473ffffffffffffffffffffffffffffffffffffffff16331461079e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b6001811515146107f05760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015610865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088991906119cd565b5050505050565b6001805474010000000000000000000000000000000000000000900460ff1615151480156108dd5750600180547501000000000000000000000000000000000000000000900460ff161515145b6109295760405162461bcd60e51b815260206004820152601c60248201527f427269646765206973206e6f74206f70656e20746f207075626c696300000000604482015260640161058d565b61093584848484611237565b50505050565b6001805474010000000000000000000000000000000000000000900460ff161515146109a95760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b6109b533848484610fbe565b1515600114610a065760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206561726c79206163636573732070726f6f66000000000000604482015260640161058d565b336000908152600460205260409020548601831015610a675760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f756768207469636b6574732072656d61696e696e6700000000604482015260640161058d565b336000908152600460205260409020805487019055610a8887878787611237565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515908102919091179091556040517ffdf0435ec5189e55b237df0d515c8152640284923bd57ecdbb5fc161d97345ea90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bd55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c995760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f742074686520776f726b65720000000000000000604482015260640161058d565b6001805474010000000000000000000000000000000000000000900460ff16151514610d075760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b81610d545760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b6032821115610da55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b60005b82811015610935577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342842e0e3084878786818110610e0057610e0061199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505060019092019150610da89050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b60015460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610f4e573d6000803e3d6000fd5b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fb95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600355565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015260348101849052600090819060540160405160208183030381529060405280519060200120905061105584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600354915084905061147e565b9695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515908102919091179091556040517f1f9db46e4b9d0b955c20133ba10fa2412a9d43a5b06f8f51d65d9c3098d3643d90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b73ffffffffffffffffffffffffffffffffffffffff811661122b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161058d565b61123481611523565b50565b826112845760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b60328311156112d55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b600254830234146113285760405162461bcd60e51b815260206004820152601a60248201527f496e636f72726563742067617320657363726f77206574686572000000000000604482015260640161058d565b60005b838110156108895760008585838181106113475761134761199e565b9050602002013590507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342842e0e6113933390565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260448101849052606401600060405180830381600087803b15801561140657600080fd5b505af115801561141a573d6000803e3d6000fd5b505050506114253390565b73ffffffffffffffffffffffffffffffffffffffff16817fe88f694ce77b5c884db7382c7f22ba8c0a5dc6f65f60a346c0209b532b6459e8868660405161146d9291906119ea565b60405180910390a35060010161132b565b600081815b85518110156115185760008682815181106114a0576114a061199e565b602002602001015190508083116114e257604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061150f565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50600101611483565b509092149392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115bc57600080fd5b919050565b60008083601f8401126115d357600080fd5b50813567ffffffffffffffff8111156115eb57600080fd5b60208301915083602082850101111561160357600080fd5b9250929050565b60008060008060006080868803121561162257600080fd5b61162b86611598565b945061163960208701611598565b935060408601359250606086013567ffffffffffffffff81111561165c57600080fd5b611668888289016115c1565b969995985093965092949392505050565b60008083601f84011261168b57600080fd5b50813567ffffffffffffffff8111156116a357600080fd5b6020830191508360208260051b850101111561160357600080fd5b801515811461123457600080fd5b6000806000806000608086880312156116e457600080fd5b6116ed86611598565b94506116fb60208701611598565b9350604086013567ffffffffffffffff81111561171757600080fd5b61172388828901611679565b9094509250506060860135611737816116be565b809150509295509295909350565b60006020828403121561175757600080fd5b61176082611598565b9392505050565b60006020828403121561177957600080fd5b5035919050565b6000806000806080858703121561179657600080fd5b61179f85611598565b93506117ad60208601611598565b92506040850135915060608501356117c4816116be565b939692955090935050565b600080600080604085870312156117e557600080fd5b843567ffffffffffffffff808211156117fd57600080fd5b61180988838901611679565b9096509450602087013591508082111561182257600080fd5b5061182f878288016115c1565b95989497509550505050565b60008060008060008060006080888a03121561185657600080fd5b873567ffffffffffffffff8082111561186e57600080fd5b61187a8b838c01611679565b909950975060208a013591508082111561189357600080fd5b61189f8b838c016115c1565b909750955060408a0135945060608a01359150808211156118bf57600080fd5b506118cc8a828b01611679565b989b979a50959850939692959293505050565b6000602082840312156118f157600080fd5b8135611760816116be565b60008060006040848603121561191157600080fd5b833567ffffffffffffffff81111561192857600080fd5b61193486828701611679565b9094509250611947905060208501611598565b90509250925092565b6000806000806060858703121561196657600080fd5b61196f85611598565b935060208501359250604085013567ffffffffffffffff81111561199257600080fd5b61182f87828801611679565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156119df57600080fd5b8151611760816116be565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010191905056fea2646970667358221220dd196757a35dd4186b43292bf9cb440d73420fbd269a6bb982f4018ed129478e64736f6c634300080a0033000000000000000000000000ecfcf35750129322c6d746b37d6399fe9cf17e8b0000000000000000000000000000000000000000000000000000000000000000a6ba5e3f3bd2d354e80d545b1c6dbbac588184ae2dbff7b573c6c46002384500

Deployed Bytecode

0x6080604052600436106101805760003560e01c8063a302d51a116100d6578063ce5ad3a91161007f578063d67d394111610059578063d67d3941146104ca578063d94dd5ed146104ea578063f2fde38b1461050a57600080fd5b8063ce5ad3a914610475578063cfdbf25414610495578063d3d704cf146104aa57600080fd5b8063be644cd4116100b0578063be644cd414610415578063c26f6d4414610435578063c677dede1461045557600080fd5b8063a302d51a146103d9578063a62aee0f146103ec578063ae55545c146103ff57600080fd5b806364f4f0a0116101385780637137180711610112578063713718071461035a5780638da5cb5b1461038e578063a2e1e421146103b957600080fd5b806364f4f0a0146102db57806367ce337d1461030d578063702ac6041461033a57600080fd5b80633533b8e0116101695780633533b8e01461024357806343b6330b146102675780634d547ada1461028957600080fd5b8063150b7a021461018557806326a66a4c14610200575b600080fd5b34801561019157600080fd5b506101ca6101a036600461160a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b34801561020c57600080fd5b50600154610233907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101f7565b34801561024f57600080fd5b5061025960035481565b6040519081526020016101f7565b34801561027357600080fd5b506102876102823660046116cc565b61052a565b005b34801561029557600080fd5b506001546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f7565b3480156102e757600080fd5b506001546102339074010000000000000000000000000000000000000000900460ff1681565b34801561031957600080fd5b50610259610328366004611745565b60046020526000908152604090205481565b34801561034657600080fd5b50610287610355366004611767565b6106cb565b34801561036657600080fd5b506102b67f000000000000000000000000ecfcf35750129322c6d746b37d6399fe9cf17e8b81565b34801561039a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b3480156103c557600080fd5b506102876103d4366004611780565b610737565b6102876103e73660046117cf565b610890565b6102876103fa36600461183b565b61093b565b34801561040b57600080fd5b5061025960025481565b34801561042157600080fd5b506102876104303660046118df565b610a91565b34801561044157600080fd5b50610287610450366004611745565b610b6e565b34801561046157600080fd5b506102876104703660046118fc565b610c1c565b34801561048157600080fd5b50610287610490366004611767565b610ea0565b3480156104a157600080fd5b50610259603281565b3480156104b657600080fd5b506102876104c5366004611767565b610f52565b3480156104d657600080fd5b506102336104e5366004611950565b610fbe565b3480156104f657600080fd5b506102876105053660046118df565b61105f565b34801561051657600080fd5b50610287610525366004611745565b61113b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001811515146105e85760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b60005b828110156106c3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e30878787868181106106235761062361199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b5050600190920191506105eb9050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600255565b60005473ffffffffffffffffffffffffffffffffffffffff16331461079e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b6001811515146107f05760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015610865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088991906119cd565b5050505050565b6001805474010000000000000000000000000000000000000000900460ff1615151480156108dd5750600180547501000000000000000000000000000000000000000000900460ff161515145b6109295760405162461bcd60e51b815260206004820152601c60248201527f427269646765206973206e6f74206f70656e20746f207075626c696300000000604482015260640161058d565b61093584848484611237565b50505050565b6001805474010000000000000000000000000000000000000000900460ff161515146109a95760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b6109b533848484610fbe565b1515600114610a065760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206561726c79206163636573732070726f6f66000000000000604482015260640161058d565b336000908152600460205260409020548601831015610a675760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f756768207469636b6574732072656d61696e696e6700000000604482015260640161058d565b336000908152600460205260409020805487019055610a8887878787611237565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515908102919091179091556040517ffdf0435ec5189e55b237df0d515c8152640284923bd57ecdbb5fc161d97345ea90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bd55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c995760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f742074686520776f726b65720000000000000000604482015260640161058d565b6001805474010000000000000000000000000000000000000000900460ff16151514610d075760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b81610d545760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b6032821115610da55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b60005b82811015610935577f000000000000000000000000ecfcf35750129322c6d746b37d6399fe9cf17e8b73ffffffffffffffffffffffffffffffffffffffff166342842e0e3084878786818110610e0057610e0061199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505060019092019150610da89050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b60015460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610f4e573d6000803e3d6000fd5b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fb95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600355565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015260348101849052600090819060540160405160208183030381529060405280519060200120905061105584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600354915084905061147e565b9695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515908102919091179091556040517f1f9db46e4b9d0b955c20133ba10fa2412a9d43a5b06f8f51d65d9c3098d3643d90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b73ffffffffffffffffffffffffffffffffffffffff811661122b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161058d565b61123481611523565b50565b826112845760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b60328311156112d55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b600254830234146113285760405162461bcd60e51b815260206004820152601a60248201527f496e636f72726563742067617320657363726f77206574686572000000000000604482015260640161058d565b60005b838110156108895760008585838181106113475761134761199e565b9050602002013590507f000000000000000000000000ecfcf35750129322c6d746b37d6399fe9cf17e8b73ffffffffffffffffffffffffffffffffffffffff166342842e0e6113933390565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260448101849052606401600060405180830381600087803b15801561140657600080fd5b505af115801561141a573d6000803e3d6000fd5b505050506114253390565b73ffffffffffffffffffffffffffffffffffffffff16817fe88f694ce77b5c884db7382c7f22ba8c0a5dc6f65f60a346c0209b532b6459e8868660405161146d9291906119ea565b60405180910390a35060010161132b565b600081815b85518110156115185760008682815181106114a0576114a061199e565b602002602001015190508083116114e257604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061150f565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50600101611483565b509092149392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115bc57600080fd5b919050565b60008083601f8401126115d357600080fd5b50813567ffffffffffffffff8111156115eb57600080fd5b60208301915083602082850101111561160357600080fd5b9250929050565b60008060008060006080868803121561162257600080fd5b61162b86611598565b945061163960208701611598565b935060408601359250606086013567ffffffffffffffff81111561165c57600080fd5b611668888289016115c1565b969995985093965092949392505050565b60008083601f84011261168b57600080fd5b50813567ffffffffffffffff8111156116a357600080fd5b6020830191508360208260051b850101111561160357600080fd5b801515811461123457600080fd5b6000806000806000608086880312156116e457600080fd5b6116ed86611598565b94506116fb60208701611598565b9350604086013567ffffffffffffffff81111561171757600080fd5b61172388828901611679565b9094509250506060860135611737816116be565b809150509295509295909350565b60006020828403121561175757600080fd5b61176082611598565b9392505050565b60006020828403121561177957600080fd5b5035919050565b6000806000806080858703121561179657600080fd5b61179f85611598565b93506117ad60208601611598565b92506040850135915060608501356117c4816116be565b939692955090935050565b600080600080604085870312156117e557600080fd5b843567ffffffffffffffff808211156117fd57600080fd5b61180988838901611679565b9096509450602087013591508082111561182257600080fd5b5061182f878288016115c1565b95989497509550505050565b60008060008060008060006080888a03121561185657600080fd5b873567ffffffffffffffff8082111561186e57600080fd5b61187a8b838c01611679565b909950975060208a013591508082111561189357600080fd5b61189f8b838c016115c1565b909750955060408a0135945060608a01359150808211156118bf57600080fd5b506118cc8a828b01611679565b989b979a50959850939692959293505050565b6000602082840312156118f157600080fd5b8135611760816116be565b60008060006040848603121561191157600080fd5b833567ffffffffffffffff81111561192857600080fd5b61193486828701611679565b9094509250611947905060208501611598565b90509250925092565b6000806000806060858703121561196657600080fd5b61196f85611598565b935060208501359250604085013567ffffffffffffffff81111561199257600080fd5b61182f87828801611679565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156119df57600080fd5b8151611760816116be565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010191905056fea2646970667358221220dd196757a35dd4186b43292bf9cb440d73420fbd269a6bb982f4018ed129478e64736f6c634300080a0033

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

000000000000000000000000ecfcf35750129322c6d746b37d6399fe9cf17e8b0000000000000000000000000000000000000000000000000000000000000000a6ba5e3f3bd2d354e80d545b1c6dbbac588184ae2dbff7b573c6c46002384500

-----Decoded View---------------
Arg [0] : _immutableMonsterSatoshibles (address): 0xeCfcf35750129322C6D746b37d6399FE9cF17e8b
Arg [1] : _worker (address): 0x0000000000000000000000000000000000000000
Arg [2] : _earlyAccessMerkleRoot (bytes32): 0xa6ba5e3f3bd2d354e80d545b1c6dbbac588184ae2dbff7b573c6c46002384500

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ecfcf35750129322c6d746b37d6399fe9cf17e8b
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : a6ba5e3f3bd2d354e80d545b1c6dbbac588184ae2dbff7b573c6c46002384500


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.