ETH Price: $2,417.52 (+1.95%)

Contract

0x581A804895ccFeE045f658A4fB7Ecb2FbD5F6724
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Release201355172024-06-20 21:08:1185 days ago1718917691IN
Satoshibles: Stacks Bridge
0 ETH0.000550265.29071863
Lock200263632024-06-05 14:56:11100 days ago1717599371IN
Satoshibles: Stacks Bridge
0 ETH0.0012884620.24512056
Lock200207632024-06-04 20:11:47101 days ago1717531907IN
Satoshibles: Stacks Bridge
0 ETH0.0011652913.62344815
Release199468072024-05-25 12:11:23111 days ago1716639083IN
Satoshibles: Stacks Bridge
0 ETH0.000406555.62508728
Lock197232962024-04-24 5:56:23143 days ago1713938183IN
Satoshibles: Stacks Bridge
0 ETH0.000500688.50878713
Lock197125632024-04-22 17:55:47144 days ago1713808547IN
Satoshibles: Stacks Bridge
0 ETH0.0007278412.36924556
Lock197095522024-04-22 7:49:47145 days ago1713772187IN
Satoshibles: Stacks Bridge
0 ETH0.0004377.42661477
Lock197038032024-04-21 12:33:35145 days ago1713702815IN
Satoshibles: Stacks Bridge
0 ETH0.000528818.98685406
Lock196690642024-04-16 15:54:11150 days ago1713282851IN
Satoshibles: Stacks Bridge
0 ETH0.000969816.48117751
Lock195377382024-03-29 6:00:23169 days ago1711692023IN
Satoshibles: Stacks Bridge
0 ETH0.0011757319.98083645
Lock195099472024-03-25 7:13:47173 days ago1711350827IN
Satoshibles: Stacks Bridge
0 ETH0.0008426514.32032555
Lock194544442024-03-17 12:03:47180 days ago1710677027IN
Satoshibles: Stacks Bridge
0 ETH0.0021060726.08594512
Lock193906312024-03-08 13:04:47189 days ago1709903087IN
Satoshibles: Stacks Bridge
0 ETH0.0029148649.53634675
Release193526762024-03-03 5:52:23195 days ago1709445143IN
Satoshibles: Stacks Bridge
0 ETH0.0027094837.48808193
Release191740322024-02-07 4:47:23220 days ago1707281243IN
Satoshibles: Stacks Bridge
0 ETH0.0023465326.62246317
Release191618802024-02-05 11:50:23221 days ago1707133823IN
Satoshibles: Stacks Bridge
0 ETH0.0008358515.14889043
Lock191003012024-01-27 20:30:23230 days ago1706387423IN
Satoshibles: Stacks Bridge
0 ETH0.000609410.35857032
Lock189944682024-01-13 0:43:23245 days ago1705106603IN
Satoshibles: Stacks Bridge
0 ETH0.0009665416.42577095
Lock189891682024-01-12 6:55:59246 days ago1705042559IN
Satoshibles: Stacks Bridge
0 ETH0.0008312314.12633871
Lock189662782024-01-09 1:54:11249 days ago1704765251IN
Satoshibles: Stacks Bridge
0 ETH0.0011079218.82847239
Lock189656692024-01-08 23:51:35249 days ago1704757895IN
Satoshibles: Stacks Bridge
0 ETH0.0010212417.35544139
Lock189260312024-01-03 9:46:11255 days ago1704275171IN
Satoshibles: Stacks Bridge
0 ETH0.001072318.22319144
Lock189185942024-01-02 8:44:59256 days ago1704185099IN
Satoshibles: Stacks Bridge
0 ETH0.0013731623.33609525
Lock188976872023-12-30 10:16:35259 days ago1703931395IN
Satoshibles: Stacks Bridge
0 ETH0.0007579212.88044062
Release188092562023-12-18 0:17:47271 days ago1702858667IN
Satoshibles: Stacks Bridge
0 ETH0.0023450732.45154342
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
155697282022-09-19 19:46:59725 days ago1663616819
Satoshibles: Stacks Bridge
3.97 ETH
144967862022-03-31 23:05:13897 days ago1648767913
Satoshibles: Stacks Bridge
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SatoshiblesStacksBridgeLock

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 10000 runs

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

pragma solidity ^0.8.10;

/**
 *      ____        _            _     _ _     _
 *     / ___|  __ _| |_ ___  ___| |__ (_) |__ | | ___  ___
 *     \___ \ / _` | __/ _ \/ __| '_ \| | '_ \| |/ _ \/ __|
 *      ___) | (_| | || (_) \__ \ | | | | |_) | |  __/\__ \
 *     |____/ \__,_|\__\___/|___/_| |_|_|_.__/|_|\___||___/
 *      ____  _             _        ____       _     _
 *     / ___|| |_ __ _  ___| | _____| __ ) _ __(_) __| | __ _  ___
 *     \___ \| __/ _` |/ __| |/ / __|  _ \| '__| |/ _` |/ _` |/ _ \
 *      ___) | || (_| | (__|   <\__ \ |_) | |  | | (_| | (_| |  __/
 *     |____/ \__\__,_|\___|_|\_\___/____/|_|  |_|\__,_|\__, |\___|
 *                                                      |___/
 */

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

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

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

    /// Satoshibles contract instance
    IERC721 public immutable SATOSHIBLE_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 Satoshible is locked (bridging to Stacks)
     * @param tokenId The 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 _immutableSatoshible The Satoshible contract address
     * @param _worker The bridge worker address
     * @param _earlyAccessMerkleRoot The initial early access merkle root
     */
    constructor(
        address _immutableSatoshible,
        address _worker,
        bytes32 _earlyAccessMerkleRoot
    ) {
        SATOSHIBLE_CONTRACT = IERC721(
            _immutableSatoshible
        );

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

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

    /**
     * @notice Locks one or more satoshibles to bridge to Stacks (early access)
     * @param _tokenIds The satoshible token IDs
     * @param _stacksReceiver The stacks address to receive the 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 satoshibles after bridging from Stacks
     * @param _tokenIds The satoshible token IDs
     * @param _receiver The eth address to receive the 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++) {
                SATOSHIBLE_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 satoshibles to bridge to Stacks
     * @param _tokenIds The satoshible token IDs
     * @param _stacksReceiver The stacks address to receive the 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];

                SATOSHIBLE_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":"_immutableSatoshible","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":"SATOSHIBLE_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"}]

60a06040523480156200001157600080fd5b5060405162001bbb38038062001bbb8339810160408190526200003491620000e3565b6200003f3362000076565b6001600160a01b03928316608052600180546003929092556001600160a81b03199091169190921617600160a01b17905562000124565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000de57600080fd5b919050565b600080600060608486031215620000f957600080fd5b6200010484620000c6565b92506200011460208501620000c6565b9150604084015190509250925092565b608051611a6d6200014e6000396000818161019701528181610db201526113520152611a6d6000f3fe6080604052600436106101805760003560e01c8063a302d51a116100d6578063ce5ad3a91161007f578063d67d394111610059578063d67d3941146104ca578063d94dd5ed146104ea578063f2fde38b1461050a57600080fd5b8063ce5ad3a914610475578063cfdbf25414610495578063d3d704cf146104aa57600080fd5b8063be644cd4116100b0578063be644cd414610415578063c26f6d4414610435578063c677dede1461045557600080fd5b8063a302d51a146103d9578063a62aee0f146103ec578063ae55545c146103ff57600080fd5b80634d547ada11610138578063702ac60411610112578063702ac6041461036e5780638da5cb5b1461038e578063a2e1e421146103b957600080fd5b80634d547ada146102e257806364f4f0a01461030f57806367ce337d1461034157600080fd5b806326a66a4c1161016957806326a66a4c146102595780633533b8e01461029c57806343b6330b146102c057600080fd5b806306f44b6a14610185578063150b7a02146101e3575b600080fd5b34801561019157600080fd5b506101b97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ef57600080fd5b506102286101fe36600461160a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101da565b34801561026557600080fd5b5060015461028c907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101da565b3480156102a857600080fd5b506102b260035481565b6040519081526020016101da565b3480156102cc57600080fd5b506102e06102db3660046116cc565b61052a565b005b3480156102ee57600080fd5b506001546101b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031b57600080fd5b5060015461028c9074010000000000000000000000000000000000000000900460ff1681565b34801561034d57600080fd5b506102b261035c366004611745565b60046020526000908152604090205481565b34801561037a57600080fd5b506102e0610389366004611767565b6106cb565b34801561039a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101b9565b3480156103c557600080fd5b506102e06103d4366004611780565b610737565b6102e06103e73660046117cf565b610890565b6102e06103fa36600461183b565b61093b565b34801561040b57600080fd5b506102b260025481565b34801561042157600080fd5b506102e06104303660046118df565b610a91565b34801561044157600080fd5b506102e0610450366004611745565b610b6e565b34801561046157600080fd5b506102e06104703660046118fc565b610c1c565b34801561048157600080fd5b506102e0610490366004611767565b610ea0565b3480156104a157600080fd5b506102b2603281565b3480156104b657600080fd5b506102e06104c5366004611767565b610f52565b3480156104d657600080fd5b5061028c6104e5366004611950565b610fbe565b3480156104f657600080fd5b506102e06105053660046118df565b61105f565b34801561051657600080fd5b506102e0610525366004611745565b61113b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001811515146105e85760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b60005b828110156106c3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e30878787868181106106235761062361199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b5050600190920191506105eb9050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600255565b60005473ffffffffffffffffffffffffffffffffffffffff16331461079e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b6001811515146107f05760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015610865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088991906119cd565b5050505050565b6001805474010000000000000000000000000000000000000000900460ff1615151480156108dd5750600180547501000000000000000000000000000000000000000000900460ff161515145b6109295760405162461bcd60e51b815260206004820152601c60248201527f427269646765206973206e6f74206f70656e20746f207075626c696300000000604482015260640161058d565b61093584848484611237565b50505050565b6001805474010000000000000000000000000000000000000000900460ff161515146109a95760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b6109b533848484610fbe565b1515600114610a065760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206561726c79206163636573732070726f6f66000000000000604482015260640161058d565b336000908152600460205260409020548601831015610a675760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f756768207469636b6574732072656d61696e696e6700000000604482015260640161058d565b336000908152600460205260409020805487019055610a8887878787611237565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515908102919091179091556040517ffdf0435ec5189e55b237df0d515c8152640284923bd57ecdbb5fc161d97345ea90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bd55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c995760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f742074686520776f726b65720000000000000000604482015260640161058d565b6001805474010000000000000000000000000000000000000000900460ff16151514610d075760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b81610d545760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b6032821115610da55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b60005b82811015610935577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342842e0e3084878786818110610e0057610e0061199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505060019092019150610da89050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b60015460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610f4e573d6000803e3d6000fd5b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fb95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600355565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015260348101849052600090819060540160405160208183030381529060405280519060200120905061105584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600354915084905061147e565b9695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515908102919091179091556040517f1f9db46e4b9d0b955c20133ba10fa2412a9d43a5b06f8f51d65d9c3098d3643d90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b73ffffffffffffffffffffffffffffffffffffffff811661122b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161058d565b61123481611523565b50565b826112845760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b60328311156112d55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b600254830234146113285760405162461bcd60e51b815260206004820152601a60248201527f496e636f72726563742067617320657363726f77206574686572000000000000604482015260640161058d565b60005b838110156108895760008585838181106113475761134761199e565b9050602002013590507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342842e0e6113933390565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260448101849052606401600060405180830381600087803b15801561140657600080fd5b505af115801561141a573d6000803e3d6000fd5b505050506114253390565b73ffffffffffffffffffffffffffffffffffffffff16817fe88f694ce77b5c884db7382c7f22ba8c0a5dc6f65f60a346c0209b532b6459e8868660405161146d9291906119ea565b60405180910390a35060010161132b565b600081815b85518110156115185760008682815181106114a0576114a061199e565b602002602001015190508083116114e257604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061150f565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50600101611483565b509092149392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115bc57600080fd5b919050565b60008083601f8401126115d357600080fd5b50813567ffffffffffffffff8111156115eb57600080fd5b60208301915083602082850101111561160357600080fd5b9250929050565b60008060008060006080868803121561162257600080fd5b61162b86611598565b945061163960208701611598565b935060408601359250606086013567ffffffffffffffff81111561165c57600080fd5b611668888289016115c1565b969995985093965092949392505050565b60008083601f84011261168b57600080fd5b50813567ffffffffffffffff8111156116a357600080fd5b6020830191508360208260051b850101111561160357600080fd5b801515811461123457600080fd5b6000806000806000608086880312156116e457600080fd5b6116ed86611598565b94506116fb60208701611598565b9350604086013567ffffffffffffffff81111561171757600080fd5b61172388828901611679565b9094509250506060860135611737816116be565b809150509295509295909350565b60006020828403121561175757600080fd5b61176082611598565b9392505050565b60006020828403121561177957600080fd5b5035919050565b6000806000806080858703121561179657600080fd5b61179f85611598565b93506117ad60208601611598565b92506040850135915060608501356117c4816116be565b939692955090935050565b600080600080604085870312156117e557600080fd5b843567ffffffffffffffff808211156117fd57600080fd5b61180988838901611679565b9096509450602087013591508082111561182257600080fd5b5061182f878288016115c1565b95989497509550505050565b60008060008060008060006080888a03121561185657600080fd5b873567ffffffffffffffff8082111561186e57600080fd5b61187a8b838c01611679565b909950975060208a013591508082111561189357600080fd5b61189f8b838c016115c1565b909750955060408a0135945060608a01359150808211156118bf57600080fd5b506118cc8a828b01611679565b989b979a50959850939692959293505050565b6000602082840312156118f157600080fd5b8135611760816116be565b60008060006040848603121561191157600080fd5b833567ffffffffffffffff81111561192857600080fd5b61193486828701611679565b9094509250611947905060208501611598565b90509250925092565b6000806000806060858703121561196657600080fd5b61196f85611598565b935060208501359250604085013567ffffffffffffffff81111561199257600080fd5b61182f87828801611679565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156119df57600080fd5b8151611760816116be565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010191905056fea26469706673582212205f92c513ab6d02bc462bdc4e2bfdf6f681e62e2c013ef39ae0dff7ed3523de1b64736f6c634300080a00330000000000000000000000000b0b186841c55d8a09d53db48dc8cab9dbf4dbd600000000000000000000000000f879b1e26a3b6575061f80f241d28a66e835f2a28d5a6417b932ca5c582b8df875f434c1b206283ed932e7959b47be734da3fe

Deployed Bytecode

0x6080604052600436106101805760003560e01c8063a302d51a116100d6578063ce5ad3a91161007f578063d67d394111610059578063d67d3941146104ca578063d94dd5ed146104ea578063f2fde38b1461050a57600080fd5b8063ce5ad3a914610475578063cfdbf25414610495578063d3d704cf146104aa57600080fd5b8063be644cd4116100b0578063be644cd414610415578063c26f6d4414610435578063c677dede1461045557600080fd5b8063a302d51a146103d9578063a62aee0f146103ec578063ae55545c146103ff57600080fd5b80634d547ada11610138578063702ac60411610112578063702ac6041461036e5780638da5cb5b1461038e578063a2e1e421146103b957600080fd5b80634d547ada146102e257806364f4f0a01461030f57806367ce337d1461034157600080fd5b806326a66a4c1161016957806326a66a4c146102595780633533b8e01461029c57806343b6330b146102c057600080fd5b806306f44b6a14610185578063150b7a02146101e3575b600080fd5b34801561019157600080fd5b506101b97f0000000000000000000000000b0b186841c55d8a09d53db48dc8cab9dbf4dbd681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ef57600080fd5b506102286101fe36600461160a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101da565b34801561026557600080fd5b5060015461028c907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101da565b3480156102a857600080fd5b506102b260035481565b6040519081526020016101da565b3480156102cc57600080fd5b506102e06102db3660046116cc565b61052a565b005b3480156102ee57600080fd5b506001546101b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031b57600080fd5b5060015461028c9074010000000000000000000000000000000000000000900460ff1681565b34801561034d57600080fd5b506102b261035c366004611745565b60046020526000908152604090205481565b34801561037a57600080fd5b506102e0610389366004611767565b6106cb565b34801561039a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101b9565b3480156103c557600080fd5b506102e06103d4366004611780565b610737565b6102e06103e73660046117cf565b610890565b6102e06103fa36600461183b565b61093b565b34801561040b57600080fd5b506102b260025481565b34801561042157600080fd5b506102e06104303660046118df565b610a91565b34801561044157600080fd5b506102e0610450366004611745565b610b6e565b34801561046157600080fd5b506102e06104703660046118fc565b610c1c565b34801561048157600080fd5b506102e0610490366004611767565b610ea0565b3480156104a157600080fd5b506102b2603281565b3480156104b657600080fd5b506102e06104c5366004611767565b610f52565b3480156104d657600080fd5b5061028c6104e5366004611950565b610fbe565b3480156104f657600080fd5b506102e06105053660046118df565b61105f565b34801561051657600080fd5b506102e0610525366004611745565b61113b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001811515146105e85760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b60005b828110156106c3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e30878787868181106106235761062361199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b5050600190920191506105eb9050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600255565b60005473ffffffffffffffffffffffffffffffffffffffff16331461079e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b6001811515146107f05760405162461bcd60e51b815260206004820152601460248201527f4e65656420746f2076657269667920746f6b656e000000000000000000000000604482015260640161058d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015610865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088991906119cd565b5050505050565b6001805474010000000000000000000000000000000000000000900460ff1615151480156108dd5750600180547501000000000000000000000000000000000000000000900460ff161515145b6109295760405162461bcd60e51b815260206004820152601c60248201527f427269646765206973206e6f74206f70656e20746f207075626c696300000000604482015260640161058d565b61093584848484611237565b50505050565b6001805474010000000000000000000000000000000000000000900460ff161515146109a95760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b6109b533848484610fbe565b1515600114610a065760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206561726c79206163636573732070726f6f66000000000000604482015260640161058d565b336000908152600460205260409020548601831015610a675760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f756768207469636b6574732072656d61696e696e6700000000604482015260640161058d565b336000908152600460205260409020805487019055610a8887878787611237565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000831515908102919091179091556040517ffdf0435ec5189e55b237df0d515c8152640284923bd57ecdbb5fc161d97345ea90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bd55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c995760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f742074686520776f726b65720000000000000000604482015260640161058d565b6001805474010000000000000000000000000000000000000000900460ff16151514610d075760405162461bcd60e51b815260206004820152601260248201527f427269646765206973206e6f74206f70656e0000000000000000000000000000604482015260640161058d565b81610d545760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b6032821115610da55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b60005b82811015610935577f0000000000000000000000000b0b186841c55d8a09d53db48dc8cab9dbf4dbd673ffffffffffffffffffffffffffffffffffffffff166342842e0e3084878786818110610e0057610e0061199e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505060019092019150610da89050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b60015460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610f4e573d6000803e3d6000fd5b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fb95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600355565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602082015260348101849052600090819060540160405160208183030381529060405280519060200120905061105584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600354915084905061147e565b9695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146110c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000831515908102919091179091556040517f1f9db46e4b9d0b955c20133ba10fa2412a9d43a5b06f8f51d65d9c3098d3643d90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b73ffffffffffffffffffffffffffffffffffffffff811661122b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161058d565b61123481611523565b50565b826112845760405162461bcd60e51b815260206004820152601660248201527f4e6f20746f6b656e204944732073706563696669656400000000000000000000604482015260640161058d565b60328311156112d55760405162461bcd60e51b815260206004820152601b60248201527f546f6f206d616e7920746f6b656e2049447320286d6178203530290000000000604482015260640161058d565b600254830234146113285760405162461bcd60e51b815260206004820152601a60248201527f496e636f72726563742067617320657363726f77206574686572000000000000604482015260640161058d565b60005b838110156108895760008585838181106113475761134761199e565b9050602002013590507f0000000000000000000000000b0b186841c55d8a09d53db48dc8cab9dbf4dbd673ffffffffffffffffffffffffffffffffffffffff166342842e0e6113933390565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260448101849052606401600060405180830381600087803b15801561140657600080fd5b505af115801561141a573d6000803e3d6000fd5b505050506114253390565b73ffffffffffffffffffffffffffffffffffffffff16817fe88f694ce77b5c884db7382c7f22ba8c0a5dc6f65f60a346c0209b532b6459e8868660405161146d9291906119ea565b60405180910390a35060010161132b565b600081815b85518110156115185760008682815181106114a0576114a061199e565b602002602001015190508083116114e257604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061150f565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50600101611483565b509092149392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115bc57600080fd5b919050565b60008083601f8401126115d357600080fd5b50813567ffffffffffffffff8111156115eb57600080fd5b60208301915083602082850101111561160357600080fd5b9250929050565b60008060008060006080868803121561162257600080fd5b61162b86611598565b945061163960208701611598565b935060408601359250606086013567ffffffffffffffff81111561165c57600080fd5b611668888289016115c1565b969995985093965092949392505050565b60008083601f84011261168b57600080fd5b50813567ffffffffffffffff8111156116a357600080fd5b6020830191508360208260051b850101111561160357600080fd5b801515811461123457600080fd5b6000806000806000608086880312156116e457600080fd5b6116ed86611598565b94506116fb60208701611598565b9350604086013567ffffffffffffffff81111561171757600080fd5b61172388828901611679565b9094509250506060860135611737816116be565b809150509295509295909350565b60006020828403121561175757600080fd5b61176082611598565b9392505050565b60006020828403121561177957600080fd5b5035919050565b6000806000806080858703121561179657600080fd5b61179f85611598565b93506117ad60208601611598565b92506040850135915060608501356117c4816116be565b939692955090935050565b600080600080604085870312156117e557600080fd5b843567ffffffffffffffff808211156117fd57600080fd5b61180988838901611679565b9096509450602087013591508082111561182257600080fd5b5061182f878288016115c1565b95989497509550505050565b60008060008060008060006080888a03121561185657600080fd5b873567ffffffffffffffff8082111561186e57600080fd5b61187a8b838c01611679565b909950975060208a013591508082111561189357600080fd5b61189f8b838c016115c1565b909750955060408a0135945060608a01359150808211156118bf57600080fd5b506118cc8a828b01611679565b989b979a50959850939692959293505050565b6000602082840312156118f157600080fd5b8135611760816116be565b60008060006040848603121561191157600080fd5b833567ffffffffffffffff81111561192857600080fd5b61193486828701611679565b9094509250611947905060208501611598565b90509250925092565b6000806000806060858703121561196657600080fd5b61196f85611598565b935060208501359250604085013567ffffffffffffffff81111561199257600080fd5b61182f87828801611679565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156119df57600080fd5b8151611760816116be565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010191905056fea26469706673582212205f92c513ab6d02bc462bdc4e2bfdf6f681e62e2c013ef39ae0dff7ed3523de1b64736f6c634300080a0033

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

0000000000000000000000000b0b186841c55d8a09d53db48dc8cab9dbf4dbd600000000000000000000000000f879b1e26a3b6575061f80f241d28a66e835f2a28d5a6417b932ca5c582b8df875f434c1b206283ed932e7959b47be734da3fe

-----Decoded View---------------
Arg [0] : _immutableSatoshible (address): 0x0B0b186841C55D8a09d53Db48dc8cab9dbf4Dbd6
Arg [1] : _worker (address): 0x00f879b1e26A3B6575061F80F241D28A66e835f2
Arg [2] : _earlyAccessMerkleRoot (bytes32): 0xa28d5a6417b932ca5c582b8df875f434c1b206283ed932e7959b47be734da3fe

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000b0b186841c55d8a09d53db48dc8cab9dbf4dbd6
Arg [1] : 00000000000000000000000000f879b1e26a3b6575061f80f241d28a66e835f2
Arg [2] : a28d5a6417b932ca5c582b8df875f434c1b206283ed932e7959b47be734da3fe


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Satoshibles are a series of 5000 algorithmically generated crypto collectible NFTs that have been hand illustrated. Each one is unique.

Validator Index Block Amount
View All Withdrawals

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

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