ETH Price: $3,940.49 (+5.82%)

Contract

0x800b36df64834f7b9d2A5670d73A6C3ef2e9588B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Assets204779802024-08-07 16:46:23119 days ago1723049183IN
0x800b36df...ef2e9588B
0 ETH0.0016169814.35493598
Claim Assets200581192024-06-10 1:22:47178 days ago1717982567IN
0x800b36df...ef2e9588B
0 ETH0.000620995.51370521
Claim Assets199452412024-05-25 6:56:47194 days ago1716620207IN
0x800b36df...ef2e9588B
0 ETH0.000429493.81336324
Claim Assets183240672023-10-11 1:55:59421 days ago1696989359IN
0x800b36df...ef2e9588B
0 ETH0.000832117.38927645
Claim Assets181562582023-09-17 14:11:35444 days ago1694959895IN
0x800b36df...ef2e9588B
0 ETH0.0011775810.45280557
Claim Assets180784562023-09-06 16:00:47455 days ago1694016047IN
0x800b36df...ef2e9588B
0 ETH0.0038862334.50658113
Claim Assets178099662023-07-31 2:19:47493 days ago1690769987IN
0x800b36df...ef2e9588B
0 ETH0.0015771814.00456518
Claim Assets174280512023-06-07 10:58:23547 days ago1686135503IN
0x800b36df...ef2e9588B
0 ETH0.0021697319.25729574
Claim Assets173943462023-06-02 16:50:59551 days ago1685724659IN
0x800b36df...ef2e9588B
0 ETH0.0039994135.49263586
Claim Assets173755752023-05-31 1:23:35554 days ago1685496215IN
0x800b36df...ef2e9588B
0 ETH0.0032905529.21278299
Claim Assets171443512023-04-28 11:33:35587 days ago1682681615IN
0x800b36df...ef2e9588B
0 ETH0.003537531.40845899
Claim Assets169995912023-04-07 22:34:23607 days ago1680906863IN
0x800b36df...ef2e9588B
0 ETH0.0022774920.21263012
Claim Assets168301982023-03-15 1:59:47631 days ago1678845587IN
0x800b36df...ef2e9588B
0 ETH0.0025298222.45122203
Claim Assets168182492023-03-13 9:42:35633 days ago1678700555IN
0x800b36df...ef2e9588B
0 ETH0.0047966542.57906142
Claim Assets166482532023-02-17 11:52:23656 days ago1676634743IN
0x800b36df...ef2e9588B
0 ETH0.0024865922.07339489
Claim Assets166387232023-02-16 3:50:59658 days ago1676519459IN
0x800b36df...ef2e9588B
0 ETH0.0039705535.25153485
Claim Assets164373532023-01-19 0:44:59686 days ago1674089099IN
0x800b36df...ef2e9588B
0 ETH0.0026096723.1619017
Claim Assets164257232023-01-17 9:48:23688 days ago1673948903IN
0x800b36df...ef2e9588B
0 ETH0.002023817.96205331
Claim Assets163266342023-01-03 13:43:47701 days ago1672753427IN
0x800b36df...ef2e9588B
0 ETH0.0016244914.42466004
Claim Assets162280452022-12-20 19:38:11715 days ago1671565091IN
0x800b36df...ef2e9588B
0 ETH0.002496322.16321929
Claim Assets162234592022-12-20 4:16:59716 days ago1671509819IN
0x800b36df...ef2e9588B
0 ETH0.0013911312.35218337
Claim Assets148867182022-06-01 19:55:21917 days ago1654113321IN
0x800b36df...ef2e9588B
0 ETH0.0072341664.20269268
Claim Assets148458452022-05-26 4:02:20924 days ago1653537740IN
0x800b36df...ef2e9588B
0 ETH0.0040097835.59413416
Claim Assets146773982022-04-29 5:36:30951 days ago1651210590IN
0x800b36df...ef2e9588B
0 ETH0.0036854532.72384967
Claim Assets146646262022-04-27 5:26:13953 days ago1651037173IN
0x800b36df...ef2e9588B
0 ETH0.0034161330.32601179
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.8.2+commit.661d1103

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.8.2;

import "@openzeppelin/contracts-0.8/token/ERC1155/IERC1155.sol";
import "@openzeppelin/contracts-0.8/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 : IERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../../utils/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 3 of 6 : IERC1155Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../../utils/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 4 of 6 : IERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.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 5 of 6 : ClaimERC1155.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.2;

import "@openzeppelin/contracts-0.8/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;
    }

    /// @dev See for example AssetGiveaway.sol claimAssets.
    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
// solhint-disable-next-line compiler-version
pragma solidity 0.8.2;

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",
        "devdoc",
        "userdoc",
        "metadata",
        "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"}]

60e060405234801561001057600080fd5b50604051610ed3380380610ed383398101604081905261002f916100af565b6001600160601b0319606086901b1660805284826001600160a01b0381166100545750305b60601b6001600160601b03191660a05250600080546001600160a01b0319166001600160a01b0395909516949094179093555060015560c05250610105565b80516001600160a01b03811681146100aa57600080fd5b919050565b600080600080600060a086880312156100c6578081fd5b6100cf86610093565b94506100dd60208701610093565b9350604086015192506100f260608701610093565b9150608086015190509295509295909350565b60805160601c60a05160601c60c051610d9961013a60003960006101b701526000610741015260006107140152610d996000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f2839701161005b5780638f283970146100ca578063bc197c81146100dd578063c884ef8314610149578063f23a6e611461017c5761007d565b80631703e85c146100825780636e9960c3146100975780637cb64759146100b7575b600080fd5b610095610090366004610aaa565b6101b5565b005b6000546040516001600160a01b0390911681526020015b60405180910390f35b6100956100c5366004610b58565b610343565b6100956100d836600461095c565b6103f2565b6101186100eb36600461097d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ae565b61016c61015736600461095c565b60026020526000908152604090205460ff1681565b60405190151581526020016100ae565b61011861018a366004610a34565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000042106102295760405162461bcd60e51b815260206004820152601460248201527f434c41494d5f504552494f445f49535f4f56455200000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03881661027f5760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f544f5f5a45524f5f414444524553530000000000000000006044820152606401610220565b6001600160a01b03881660009081526002602052604090205460ff16156102e85760405162461bcd60e51b815260206004820152601b60248201527f44455354494e4154494f4e5f414c52454144595f434c41494d454400000000006044820152606401610220565b6001600160a01b038816600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561033988888888888888886104cd565b5050505050505050565b6000546001600160a01b0316331461039d5760405162461bcd60e51b815260206004820152600a60248201527f41444d494e5f4f4e4c59000000000000000000000000000000000000000000006044820152606401610220565b600154156103ed5760405162461bcd60e51b815260206004820152601760248201527f4d45524b4c455f524f4f545f414c52454144595f5345540000000000000000006044820152606401610220565b600155565b6000546001600160a01b0316331461044c5760405162461bcd60e51b815260206004820152601360248201527f41444d494e5f4143434553535f44454e494544000000000000000000000000006044820152606401610220565b600054604080516001600160a01b03928316815291831660208301527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61056e8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a91829185019084908082843760009201919091525050604080516020808b0282810182019093528a82529093508a925089918291850190849080828437600092019190915250889250610625915050565b6105dc8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a9182918501908490808284376000920191909152506106e492505050565b7f7197de5398384ebaa85c57406356f07bec2ea8a342960e5445ac084ae8fa26518888888888604051610613959493929190610cc3565b60405180910390a15050505050505050565b82518451146106765760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f494e505554000000000000000000000000000000000000006044820152606401610220565b6000610684868686856107a6565b905061069083826107df565b6106dc5760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f434c41494d000000000000000000000000000000000000006044820152606401610220565b505050505050565b6040517f2eb2c2d60000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632eb2c2d69061076f907f000000000000000000000000000000000000000000000000000000000000000090879087908790600401610c6b565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050505050565b6000848484846040516020016107bf9493929190610c1c565b604051602081830303815290604052805190602001209050949350505050565b600081815b84518110156108ab576000858281518110610828577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083101561086b576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610898565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806108a381610d05565b9150506107e4565b50600154149392505050565b80356001600160a01b03811681146108ce57600080fd5b919050565b60008083601f8401126108e4578182fd5b50813567ffffffffffffffff8111156108fb578182fd5b602083019150836020808302850101111561091557600080fd5b9250929050565b60008083601f84011261092d578182fd5b50813567ffffffffffffffff811115610944578182fd5b60208301915083602082850101111561091557600080fd5b60006020828403121561096d578081fd5b610976826108b7565b9392505050565b60008060008060008060008060a0898b031215610998578384fd5b6109a1896108b7565b97506109af60208a016108b7565b9650604089013567ffffffffffffffff808211156109cb578586fd5b6109d78c838d016108d3565b909850965060608b01359150808211156109ef578586fd5b6109fb8c838d016108d3565b909650945060808b0135915080821115610a13578384fd5b50610a208b828c0161091c565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610a4c578182fd5b610a55876108b7565b9550610a63602088016108b7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610a8c578283fd5b610a9889828a0161091c565b979a9699509497509295939492505050565b60008060008060008060008060a0898b031215610ac5578384fd5b610ace896108b7565b9750602089013567ffffffffffffffff80821115610aea578586fd5b610af68c838d016108d3565b909950975060408b0135915080821115610b0e578586fd5b610b1a8c838d016108d3565b909750955060608b0135915080821115610b32578485fd5b50610b3f8b828c016108d3565b999c989b50969995989497949560800135949350505050565b600060208284031215610b69578081fd5b5035919050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610ba1578081fd5b6020830280836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b83811015610bec57815187529582019590820190600101610bd0565b509495945050505050565b80516000906020808401838315610bec57815187529582019590820190600101610bd0565b60007fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b168252610c5c610c566014840187610bf7565b85610bf7565b92835250506020019392505050565b60006001600160a01b03808716835280861660208401525060a06040830152610c9760a0830185610bbd565b8281036060840152610ca98185610bbd565b838103608090940193909352508152602001949350505050565b60006001600160a01b038716825260606020830152610ce6606083018688610b70565b8281036040840152610cf9818587610b70565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d5c577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b506001019056fea264697066735822122079a96813b9a80513867ec971852e36c6270a7071f421c13cf70652b1947175c164736f6c63430008020033000000000000000000000000a342f5d851e866e18ff98f351f2c6637f4478db50000000000000000000000000000000000000000000000000000000000000000b1e1723338e0b226ea95dccf407b6480613cd4c8f4826fd36a02b00f2de21f1d0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638f2839701161005b5780638f283970146100ca578063bc197c81146100dd578063c884ef8314610149578063f23a6e611461017c5761007d565b80631703e85c146100825780636e9960c3146100975780637cb64759146100b7575b600080fd5b610095610090366004610aaa565b6101b5565b005b6000546040516001600160a01b0390911681526020015b60405180910390f35b6100956100c5366004610b58565b610343565b6100956100d836600461095c565b6103f2565b6101186100eb36600461097d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ae565b61016c61015736600461095c565b60026020526000908152604090205460ff1681565b60405190151581526020016100ae565b61011861018a366004610a34565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff42106102295760405162461bcd60e51b815260206004820152601460248201527f434c41494d5f504552494f445f49535f4f56455200000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03881661027f5760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f544f5f5a45524f5f414444524553530000000000000000006044820152606401610220565b6001600160a01b03881660009081526002602052604090205460ff16156102e85760405162461bcd60e51b815260206004820152601b60248201527f44455354494e4154494f4e5f414c52454144595f434c41494d454400000000006044820152606401610220565b6001600160a01b038816600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561033988888888888888886104cd565b5050505050505050565b6000546001600160a01b0316331461039d5760405162461bcd60e51b815260206004820152600a60248201527f41444d494e5f4f4e4c59000000000000000000000000000000000000000000006044820152606401610220565b600154156103ed5760405162461bcd60e51b815260206004820152601760248201527f4d45524b4c455f524f4f545f414c52454144595f5345540000000000000000006044820152606401610220565b600155565b6000546001600160a01b0316331461044c5760405162461bcd60e51b815260206004820152601360248201527f41444d494e5f4143434553535f44454e494544000000000000000000000000006044820152606401610220565b600054604080516001600160a01b03928316815291831660208301527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61056e8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a91829185019084908082843760009201919091525050604080516020808b0282810182019093528a82529093508a925089918291850190849080828437600092019190915250889250610625915050565b6105dc8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a9182918501908490808284376000920191909152506106e492505050565b7f7197de5398384ebaa85c57406356f07bec2ea8a342960e5445ac084ae8fa26518888888888604051610613959493929190610cc3565b60405180910390a15050505050505050565b82518451146106765760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f494e505554000000000000000000000000000000000000006044820152606401610220565b6000610684868686856107a6565b905061069083826107df565b6106dc5760405162461bcd60e51b815260206004820152600d60248201527f494e56414c49445f434c41494d000000000000000000000000000000000000006044820152606401610220565b505050505050565b6040517f2eb2c2d60000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000a342f5d851e866e18ff98f351f2c6637f4478db51690632eb2c2d69061076f907f000000000000000000000000800b36df64834f7b9d2a5670d73a6c3ef2e9588b90879087908790600401610c6b565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050505050565b6000848484846040516020016107bf9493929190610c1c565b604051602081830303815290604052805190602001209050949350505050565b600081815b84518110156108ab576000858281518110610828577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083101561086b576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610898565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806108a381610d05565b9150506107e4565b50600154149392505050565b80356001600160a01b03811681146108ce57600080fd5b919050565b60008083601f8401126108e4578182fd5b50813567ffffffffffffffff8111156108fb578182fd5b602083019150836020808302850101111561091557600080fd5b9250929050565b60008083601f84011261092d578182fd5b50813567ffffffffffffffff811115610944578182fd5b60208301915083602082850101111561091557600080fd5b60006020828403121561096d578081fd5b610976826108b7565b9392505050565b60008060008060008060008060a0898b031215610998578384fd5b6109a1896108b7565b97506109af60208a016108b7565b9650604089013567ffffffffffffffff808211156109cb578586fd5b6109d78c838d016108d3565b909850965060608b01359150808211156109ef578586fd5b6109fb8c838d016108d3565b909650945060808b0135915080821115610a13578384fd5b50610a208b828c0161091c565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610a4c578182fd5b610a55876108b7565b9550610a63602088016108b7565b94506040870135935060608701359250608087013567ffffffffffffffff811115610a8c578283fd5b610a9889828a0161091c565b979a9699509497509295939492505050565b60008060008060008060008060a0898b031215610ac5578384fd5b610ace896108b7565b9750602089013567ffffffffffffffff80821115610aea578586fd5b610af68c838d016108d3565b909950975060408b0135915080821115610b0e578586fd5b610b1a8c838d016108d3565b909750955060608b0135915080821115610b32578485fd5b50610b3f8b828c016108d3565b999c989b50969995989497949560800135949350505050565b600060208284031215610b69578081fd5b5035919050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610ba1578081fd5b6020830280836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b83811015610bec57815187529582019590820190600101610bd0565b509495945050505050565b80516000906020808401838315610bec57815187529582019590820190600101610bd0565b60007fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b168252610c5c610c566014840187610bf7565b85610bf7565b92835250506020019392505050565b60006001600160a01b03808716835280861660208401525060a06040830152610c9760a0830185610bbd565b8281036060840152610ca98185610bbd565b838103608090940193909352508152602001949350505050565b60006001600160a01b038716825260606020830152610ce6606083018688610b70565b8281036040840152610cf9818587610b70565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d5c577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b506001019056fea264697066735822122079a96813b9a80513867ec971852e36c6270a7071f421c13cf70652b1947175c164736f6c63430008020033

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

000000000000000000000000a342f5d851e866e18ff98f351f2c6637f4478db50000000000000000000000000000000000000000000000000000000000000000b1e1723338e0b226ea95dccf407b6480613cd4c8f4826fd36a02b00f2de21f1d0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

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

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000a342f5d851e866e18ff98f351f2c6637f4478db5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : b1e1723338e0b226ea95dccf407b6480613cd4c8f4826fd36a02b00f2de21f1d
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.