ETH Price: $2,631.02 (-1.53%)
Gas: 2 Gwei

Contract

0x05831537FF42aC82dDf89790F81Cb5c4664Be9C1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Assets142795602022-02-26 4:28:34896 days ago1645849714IN
0x05831537...4664Be9C1
0 ETH0.0007275122
Claim Assets125392832021-05-31 1:46:281167 days ago1622425588IN
0x05831537...4664Be9C1
0 ETH0.0016741916
Claim Assets125392822021-05-31 1:46:171167 days ago1622425577IN
0x05831537...4664Be9C1
0 ETH0.0016736816
Claim Assets123076512021-04-25 5:52:021203 days ago1619329922IN
0x05831537...4664Be9C1
0 ETH0.0037968736.3
Claim Assets120982012021-03-23 23:50:151235 days ago1616543415IN
0x05831537...4664Be9C1
0 ETH0.0120258120
Claim Assets119265422021-02-25 13:08:561261 days ago1614258536IN
0x05831537...4664Be9C1
0 ETH0.01532287152.9
Claim Assets117438022021-01-28 10:36:151289 days ago1611830175IN
0x05831537...4664Be9C1
0 ETH0.0056109256
Claim Assets117150432021-01-24 0:13:051294 days ago1611447185IN
0x05831537...4664Be9C1
0 ETH0.0056131656
Claim Assets116810012021-01-18 18:58:061299 days ago1610996286IN
0x05831537...4664Be9C1
0 ETH0.006012960
Claim Assets116744422021-01-17 18:49:341300 days ago1610909374IN
0x05831537...4664Be9C1
0 ETH0.0033055733
Claim Assets116685352021-01-16 20:53:271301 days ago1610830407IN
0x05831537...4664Be9C1
0 ETH0.0057129357.00000145
Claim Assets116611842021-01-15 17:46:051302 days ago1610732765IN
0x05831537...4664Be9C1
0 ETH0.0100203100
Claim Assets116610042021-01-15 17:07:431302 days ago1610730463IN
0x05831537...4664Be9C1
0 ETH0.0045106645
Claim Assets116609772021-01-15 17:02:251302 days ago1610730145IN
0x05831537...4664Be9C1
0 ETH0.0045091745.004
Claim Assets116606142021-01-15 15:49:041302 days ago1610725744IN
0x05831537...4664Be9C1
0 ETH0.0090191790
Claim Assets116595892021-01-15 12:05:071302 days ago1610712307IN
0x05831537...4664Be9C1
0 ETH0.004610946
Claim Assets116595112021-01-15 11:48:191302 days ago1610711299IN
0x05831537...4664Be9C1
0 ETH0.0036061536
Claim Assets116591392021-01-15 10:28:561302 days ago1610706536IN
0x05831537...4664Be9C1
0 ETH0.0045093145
Claim Assets116590832021-01-15 10:15:501302 days ago1610705750IN
0x05831537...4664Be9C1
0 ETH0.0055122655.00000145
Claim Assets116565612021-01-15 1:00:041303 days ago1610672404IN
0x05831537...4664Be9C1
0 ETH0.0056583756.45
Claim Assets116556302021-01-14 21:29:251303 days ago1610659765IN
0x05831537...4664Be9C1
0 ETH0.0057058256.9415
Claim Assets116549502021-01-14 18:55:261303 days ago1610650526IN
0x05831537...4664Be9C1
0 ETH0.004106641
Claim Assets116548552021-01-14 18:36:541303 days ago1610649414IN
0x05831537...4664Be9C1
0 ETH0.0089219889
Claim Assets116545962021-01-14 17:33:301303 days ago1610645610IN
0x05831537...4664Be9C1
0 ETH0.0057139657.0057
Claim Assets116529072021-01-14 11:18:511303 days ago1610623131IN
0x05831537...4664Be9C1
0 ETH0.0056771756.65
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:
AssetGiveaway

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license
File 1 of 6 : AssetGiveaway.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.7.5;

import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
import "./ClaimERC1155.sol";
import "../common/BaseWithStorage/WithAdmin.sol";

/// @title AssetGiveaway contract
/// @notice This contract manages ERC1155 claims
contract AssetGiveaway is WithAdmin, ClaimERC1155 {
    bytes4 private constant ERC1155_RECEIVED = 0xf23a6e61;
    bytes4 private constant ERC1155_BATCH_RECEIVED = 0xbc197c81;
    uint256 internal immutable _expiryTime;
    mapping(address => bool) public claimed;

    constructor(
        address asset,
        address admin,
        bytes32 merkleRoot,
        address assetsHolder,
        uint256 expiryTime
    ) ClaimERC1155(IERC1155(asset), assetsHolder) {
        _admin = admin;
        _merkleRoot = merkleRoot;
        _expiryTime = expiryTime;
    }

    /// @notice Function to set the merkle root hash for the asset data, if it is 0
    /// @param merkleRoot The merkle root hash of the asset data
    function setMerkleRoot(bytes32 merkleRoot) external onlyAdmin {
        require(_merkleRoot == 0, "MERKLE_ROOT_ALREADY_SET");
        _merkleRoot = merkleRoot;
    }

    /// @notice Function to permit the claiming of an asset to a reserved address
    /// @param to The intended recipient (reserved address) of the ERC1155 tokens
    /// @param assetIds The array of IDs of the asset tokens
    /// @param assetValues The amounts of each token ID to transfer
    /// @param proof The proof submitted for verification
    /// @param salt The salt submitted for verification
    function claimAssets(
        address to,
        uint256[] calldata assetIds,
        uint256[] calldata assetValues,
        bytes32[] calldata proof,
        bytes32 salt
    ) external {
        require(block.timestamp < _expiryTime, "CLAIM_PERIOD_IS_OVER");
        require(to != address(0), "INVALID_TO_ZERO_ADDRESS");
        require(claimed[to] == false, "DESTINATION_ALREADY_CLAIMED");
        claimed[to] = true;
        _claimERC1155(to, assetIds, assetValues, proof, salt);
    }

    function onERC1155Received(
        address, /*operator*/
        address, /*from*/
        uint256, /*id*/
        uint256, /*value*/
        bytes calldata /*data*/
    ) external pure returns (bytes4) {
        return ERC1155_RECEIVED;
    }

    function onERC1155BatchReceived(
        address, /*operator*/
        address, /*from*/
        uint256[] calldata, /*ids*/
        uint256[] calldata, /*values*/
        bytes calldata /*data*/
    ) external pure returns (bytes4) {
        return ERC1155_BATCH_RECEIVED;
    }
}

File 2 of 6 : IERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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

pragma solidity ^0.7.0;

import "../../introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}

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

pragma solidity ^0.7.0;

import "../../introspection/IERC165.sol";

/**
 * _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {

    /**
        @dev Handles the receipt of a single ERC1155 token type. This function is
        called at the end of a `safeTransferFrom` after the balance has been updated.
        To accept the transfer, this must return
        `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
        (i.e. 0xf23a6e61, or its own function selector).
        @param operator The address which initiated the transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param id The ID of the token being transferred
        @param value The amount of tokens being transferred
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    )
        external
        returns(bytes4);

    /**
        @dev Handles the receipt of a multiple ERC1155 token types. This function
        is called at the end of a `safeBatchTransferFrom` after the balances have
        been updated. To accept the transfer(s), this must return
        `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
        (i.e. 0xbc197c81, or its own function selector).
        @param operator The address which initiated the batch transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param ids An array containing ids of each token being transferred (order and length must match values array)
        @param values An array containing amounts of each token being transferred (order and length must match ids array)
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    )
        external
        returns(bytes4);
}

File 5 of 6 : ClaimERC1155.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.7.5;

import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";

contract ClaimERC1155 {
    bytes32 internal _merkleRoot;
    IERC1155 internal immutable _asset;
    address internal immutable _assetsHolder;
    event ClaimedAssets(address to, uint256[] assetIds, uint256[] assetValues);

    constructor(IERC1155 asset, address assetsHolder) {
        _asset = asset;
        if (assetsHolder == address(0)) {
            assetsHolder = address(this);
        }
        _assetsHolder = assetsHolder;
    }

    function _claimERC1155(
        address to,
        uint256[] calldata assetIds,
        uint256[] calldata assetValues,
        bytes32[] calldata proof,
        bytes32 salt
    ) internal {
        _checkValidity(to, assetIds, assetValues, proof, salt);
        _sendAssets(to, assetIds, assetValues);
        emit ClaimedAssets(to, assetIds, assetValues);
    }

    function _checkValidity(
        address to,
        uint256[] memory assetIds,
        uint256[] memory assetValues,
        bytes32[] memory proof,
        bytes32 salt
    ) internal view {
        require(assetIds.length == assetValues.length, "INVALID_INPUT");
        bytes32 leaf = _generateClaimHash(to, assetIds, assetValues, salt);
        require(_verify(proof, leaf), "INVALID_CLAIM");
    }

    function _generateClaimHash(
        address to,
        uint256[] memory assetIds,
        uint256[] memory assetValues,
        bytes32 salt
    ) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(to, assetIds, assetValues, salt));
    }

    function _verify(bytes32[] memory proof, bytes32 leaf) internal view returns (bool) {
        bytes32 computedHash = leaf;

        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));
            }
        }

        return computedHash == _merkleRoot;
    }

    function _sendAssets(
        address to,
        uint256[] memory assetIds,
        uint256[] memory assetValues
    ) internal {
        _asset.safeBatchTransferFrom(_assetsHolder, to, assetIds, assetValues, "");
    }
}

File 6 of 6 : WithAdmin.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.7.5;

contract WithAdmin {
    address internal _admin;

    /// @dev Emits when the contract administrator is changed.
    /// @param oldAdmin The address of the previous administrator.
    /// @param newAdmin The address of the new administrator.
    event AdminChanged(address oldAdmin, address newAdmin);

    modifier onlyAdmin() {
        require(msg.sender == _admin, "ADMIN_ONLY");
        _;
    }

    /// @dev Get the current administrator of this contract.
    /// @return The current administrator of this contract.
    function getAdmin() external view returns (address) {
        return _admin;
    }

    /// @dev Change the administrator to be `newAdmin`.
    /// @param newAdmin The address of the new administrator.
    function changeAdmin(address newAdmin) external {
        require(msg.sender == _admin, "ADMIN_ACCESS_DENIED");
        emit AdminChanged(_admin, newAdmin);
        _admin = newAdmin;
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"address","name":"assetsHolder","type":"address"},{"internalType":"uint256","name":"expiryTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"assetIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"assetValues","type":"uint256[]"}],"name":"ClaimedAssets","type":"event"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"assetIds","type":"uint256[]"},{"internalType":"uint256[]","name":"assetValues","type":"uint256[]"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"claimAssets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405234801561001057600080fd5b50604051610e3b380380610e3b833981810160405260a081101561003357600080fd5b508051602082015160408301516060808501516080958601519185901b6001600160601b0319169095529293919290919084826001600160a01b0381166100775750305b606081811b6001600160601b03191660a052600080546001600160a01b0319166001600160a01b0398891617815560019690965560c0849052608051901c965094909416935091610d5991506100e2903980610442525080610aa5525080610a765250610d596000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f2839701161005b5780638f283970146101e9578063bc197c811461020f578063c884ef8314610371578063f23a6e61146103ab5761007d565b80631703e85c146100825780636e9960c3146101a85780637cb64759146101cc575b600080fd5b6101a6600480360360a081101561009857600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c357600080fd5b8201836020820111156100d557600080fd5b803590602001918460208302840111640100000000831117156100f757600080fd5b91939092909160208101903564010000000081111561011557600080fd5b82018360208201111561012757600080fd5b8035906020019184602083028401116401000000008311171561014957600080fd5b91939092909160208101903564010000000081111561016757600080fd5b82018360208201111561017957600080fd5b8035906020019184602083028401116401000000008311171561019b57600080fd5b919350915035610440565b005b6101b06105d8565b604080516001600160a01b039092168252519081900360200190f35b6101a6600480360360208110156101e257600080fd5b50356105e7565b6101a6600480360360208110156101ff57600080fd5b50356001600160a01b03166106a0565b61033c600480360360a081101561022557600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561025957600080fd5b82018360208201111561026b57600080fd5b8035906020019184602083028401116401000000008311171561028d57600080fd5b9193909290916020810190356401000000008111156102ab57600080fd5b8201836020820111156102bd57600080fd5b803590602001918460208302840111640100000000831117156102df57600080fd5b9193909290916020810190356401000000008111156102fd57600080fd5b82018360208201111561030f57600080fd5b8035906020019184600183028401116401000000008311171561033157600080fd5b509092509050610781565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103976004803603602081101561038757600080fd5b50356001600160a01b03166107ae565b604080519115158252519081900360200190f35b61033c600480360360a08110156103c157600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561040157600080fd5b82018360208201111561041357600080fd5b8035906020019184600183028401116401000000008311171561043557600080fd5b5090925090506107c3565b7f000000000000000000000000000000000000000000000000000000000000000042106104b4576040805162461bcd60e51b815260206004820152601460248201527f434c41494d5f504552494f445f49535f4f564552000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03881661050f576040805162461bcd60e51b815260206004820152601760248201527f494e56414c49445f544f5f5a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b6001600160a01b03881660009081526002602052604090205460ff161561057d576040805162461bcd60e51b815260206004820152601b60248201527f44455354494e4154494f4e5f414c52454144595f434c41494d45440000000000604482015290519081900360640190fd5b6001600160a01b038816600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556105ce88888888888888886107ee565b5050505050505050565b6000546001600160a01b031690565b6000546001600160a01b03163314610646576040805162461bcd60e51b815260206004820152600a60248201527f41444d494e5f4f4e4c5900000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001541561069b576040805162461bcd60e51b815260206004820152601760248201527f4d45524b4c455f524f4f545f414c52454144595f534554000000000000000000604482015290519081900360640190fd5b600155565b6000546001600160a01b031633146106ff576040805162461bcd60e51b815260206004820152601360248201527f41444d494e5f4143434553535f44454e49454400000000000000000000000000604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9281900390910190a1600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b60026020526000908152604090205460ff1681565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61088f8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a91829185019084908082843760009201919091525050604080516020808b0282810182019093528a82529093508a9250899182918501908490808284376000920191909152508892506109ab915050565b6108fd8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a918291850190849080828437600092019190915250610a7492505050565b7f7197de5398384ebaa85c57406356f07bec2ea8a342960e5445ac084ae8fa2651888888888860405180866001600160a01b0316815260200180602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f1916909201829003995090975050505050505050a15050505050505050565b8251845114610a01576040805162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f494e50555400000000000000000000000000000000000000604482015290519081900360640190fd5b6000610a0f86868685610bd1565b9050610a1b8382610c78565b610a6c576040805162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f434c41494d00000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632eb2c2d67f00000000000000000000000000000000000000000000000000000000000000008585856040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b83811015610b3c578181015183820152602001610b24565b50505050905001848103835285818151815260200191508051906020019060200280838360005b83811015610b7b578181015183820152602001610b63565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b50505050505050565b60008484848460405160200180856001600160a01b031660601b8152601401848051906020019060200280838360005b83811015610c19578181015183820152602001610c01565b50505050905001838051906020019060200280838360005b83811015610c49578181015183820152602001610c31565b505050509190910192835250506040805180830381526020928301909152805191012098975050505050505050565b600081815b8451811015610d17576000858281518110610c9457fe5b6020026020010151905080831015610cdc5782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610d0e565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610c7d565b5060015414939250505056fea264697066735822122068184c1374d369fb58b799429ca7c834b9ec90926aeab24926699d5a7d1ea41864736f6c63430007050033000000000000000000000000067a1eb5e383ed24b66d72aaf80d8d7db3d299a800000000000000000000000000000000000000000000000000000000000000005fb1bbae8606b978826eefa4238897449bd526b0cbd470d4c3d28691221eef8a0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f2839701161005b5780638f283970146101e9578063bc197c811461020f578063c884ef8314610371578063f23a6e61146103ab5761007d565b80631703e85c146100825780636e9960c3146101a85780637cb64759146101cc575b600080fd5b6101a6600480360360a081101561009857600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c357600080fd5b8201836020820111156100d557600080fd5b803590602001918460208302840111640100000000831117156100f757600080fd5b91939092909160208101903564010000000081111561011557600080fd5b82018360208201111561012757600080fd5b8035906020019184602083028401116401000000008311171561014957600080fd5b91939092909160208101903564010000000081111561016757600080fd5b82018360208201111561017957600080fd5b8035906020019184602083028401116401000000008311171561019b57600080fd5b919350915035610440565b005b6101b06105d8565b604080516001600160a01b039092168252519081900360200190f35b6101a6600480360360208110156101e257600080fd5b50356105e7565b6101a6600480360360208110156101ff57600080fd5b50356001600160a01b03166106a0565b61033c600480360360a081101561022557600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561025957600080fd5b82018360208201111561026b57600080fd5b8035906020019184602083028401116401000000008311171561028d57600080fd5b9193909290916020810190356401000000008111156102ab57600080fd5b8201836020820111156102bd57600080fd5b803590602001918460208302840111640100000000831117156102df57600080fd5b9193909290916020810190356401000000008111156102fd57600080fd5b82018360208201111561030f57600080fd5b8035906020019184600183028401116401000000008311171561033157600080fd5b509092509050610781565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103976004803603602081101561038757600080fd5b50356001600160a01b03166107ae565b604080519115158252519081900360200190f35b61033c600480360360a08110156103c157600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561040157600080fd5b82018360208201111561041357600080fd5b8035906020019184600183028401116401000000008311171561043557600080fd5b5090925090506107c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff42106104b4576040805162461bcd60e51b815260206004820152601460248201527f434c41494d5f504552494f445f49535f4f564552000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03881661050f576040805162461bcd60e51b815260206004820152601760248201527f494e56414c49445f544f5f5a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b6001600160a01b03881660009081526002602052604090205460ff161561057d576040805162461bcd60e51b815260206004820152601b60248201527f44455354494e4154494f4e5f414c52454144595f434c41494d45440000000000604482015290519081900360640190fd5b6001600160a01b038816600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556105ce88888888888888886107ee565b5050505050505050565b6000546001600160a01b031690565b6000546001600160a01b03163314610646576040805162461bcd60e51b815260206004820152600a60248201527f41444d494e5f4f4e4c5900000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001541561069b576040805162461bcd60e51b815260206004820152601760248201527f4d45524b4c455f524f4f545f414c52454144595f534554000000000000000000604482015290519081900360640190fd5b600155565b6000546001600160a01b031633146106ff576040805162461bcd60e51b815260206004820152601360248201527f41444d494e5f4143434553535f44454e49454400000000000000000000000000604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9281900390910190a1600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b60026020526000908152604090205460ff1681565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61088f8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a91829185019084908082843760009201919091525050604080516020808b0282810182019093528a82529093508a9250899182918501908490808284376000920191909152508892506109ab915050565b6108fd8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a918291850190849080828437600092019190915250610a7492505050565b7f7197de5398384ebaa85c57406356f07bec2ea8a342960e5445ac084ae8fa2651888888888860405180866001600160a01b0316815260200180602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f1916909201829003995090975050505050505050a15050505050505050565b8251845114610a01576040805162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f494e50555400000000000000000000000000000000000000604482015290519081900360640190fd5b6000610a0f86868685610bd1565b9050610a1b8382610c78565b610a6c576040805162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f434c41494d00000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b7f000000000000000000000000067a1eb5e383ed24b66d72aaf80d8d7db3d299a86001600160a01b0316632eb2c2d67f00000000000000000000000005831537ff42ac82ddf89790f81cb5c4664be9c18585856040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b83811015610b3c578181015183820152602001610b24565b50505050905001848103835285818151815260200191508051906020019060200280838360005b83811015610b7b578181015183820152602001610b63565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b50505050505050565b60008484848460405160200180856001600160a01b031660601b8152601401848051906020019060200280838360005b83811015610c19578181015183820152602001610c01565b50505050905001838051906020019060200280838360005b83811015610c49578181015183820152602001610c31565b505050509190910192835250506040805180830381526020928301909152805191012098975050505050505050565b600081815b8451811015610d17576000858281518110610c9457fe5b6020026020010151905080831015610cdc5782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610d0e565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610c7d565b5060015414939250505056fea264697066735822122068184c1374d369fb58b799429ca7c834b9ec90926aeab24926699d5a7d1ea41864736f6c63430007050033

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

000000000000000000000000067a1eb5e383ed24b66d72aaf80d8d7db3d299a800000000000000000000000000000000000000000000000000000000000000005fb1bbae8606b978826eefa4238897449bd526b0cbd470d4c3d28691221eef8a0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

-----Decoded View---------------
Arg [0] : asset (address): 0x067a1Eb5E383eD24b66D72aAf80d8D7dB3d299A8
Arg [1] : admin (address): 0x0000000000000000000000000000000000000000
Arg [2] : merkleRoot (bytes32): 0x5fb1bbae8606b978826eefa4238897449bd526b0cbd470d4c3d28691221eef8a
Arg [3] : assetsHolder (address): 0x0000000000000000000000000000000000000000
Arg [4] : expiryTime (uint256): 115792089237316195423570985008687907853269984665640564039457584007913129639935

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000067a1eb5e383ed24b66d72aaf80d8d7db3d299a8
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 5fb1bbae8606b978826eefa4238897449bd526b0cbd470d4c3d28691221eef8a
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff


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.