ETH Price: $2,000.71 (+0.31%)

Contract

0xC963c2F8F9Bf25341DeFab8b729Af651dA794008
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Swap221346322025-03-27 0:21:2317 hrs ago1743034883IN
0xC963c2F8...1dA794008
0 ETH0.00004130.5
Swap221183212025-03-24 17:41:113 days ago1742838071IN
0xC963c2F8...1dA794008
0 ETH0.000224371.32541967
Swap221135512025-03-24 1:43:233 days ago1742780603IN
0xC963c2F8...1dA794008
0 ETH0.000860291.21544575
Swap221129452025-03-23 23:42:113 days ago1742773331IN
0xC963c2F8...1dA794008
0 ETH0.000049560.6
Swap221078382025-03-23 6:35:594 days ago1742711759IN
0xC963c2F8...1dA794008
0 ETH0.000221110.86382861
Swap220731852025-03-18 10:31:599 days ago1742293919IN
0xC963c2F8...1dA794008
0 ETH0.000074340.9
Swap216974092025-01-24 22:40:2361 days ago1737758423IN
0xC963c2F8...1dA794008
0 ETH0.000711728.61633068
Swap197560892024-04-28 20:06:35332 days ago1714334795IN
0xC963c2F8...1dA794008
0 ETH0.000663058.02705173
Swap196966632024-04-20 12:36:11341 days ago1713616571IN
0xC963c2F8...1dA794008
0 ETH0.000504446.1069632
Swap196702012024-04-16 19:43:35344 days ago1713296615IN
0xC963c2F8...1dA794008
0 ETH0.000745299.02266358
Swap195587252024-04-01 4:49:59360 days ago1711946999IN
0xC963c2F8...1dA794008
0 ETH0.0021398215.32560472
Swap193311042024-02-29 5:31:11392 days ago1709184671IN
0xC963c2F8...1dA794008
0 ETH0.0079457146.08025281
Swap192698382024-02-20 15:35:35401 days ago1708443335IN
0xC963c2F8...1dA794008
0 ETH0.0841280468.76262357
Swap190679802024-01-23 7:46:47429 days ago1705996007IN
0xC963c2F8...1dA794008
0 ETH0.0008630610.44843852
Swap190669252024-01-23 4:12:59429 days ago1705983179IN
0xC963c2F8...1dA794008
0 ETH0.00074429.00952699
Swap190595312024-01-22 3:12:35430 days ago1705893155IN
0xC963c2F8...1dA794008
0 ETH0.0037928210.45906574
Swap190584852024-01-21 23:39:23430 days ago1705880363IN
0xC963c2F8...1dA794008
0 ETH0.0074190511.08683661
Swap190528322024-01-21 4:24:59431 days ago1705811099IN
0xC963c2F8...1dA794008
0 ETH0.0008578110.38494076
Swap189926652024-01-12 18:40:23439 days ago1705084823IN
0xC963c2F8...1dA794008
0 ETH0.0020342324.1667427
Swap189070402023-12-31 17:47:23452 days ago1704044843IN
0xC963c2F8...1dA794008
0 ETH0.0071914413.57611347
Swap189009692023-12-30 21:21:11452 days ago1703971271IN
0xC963c2F8...1dA794008
0 ETH0.0047811815.27531471
Swap188505502023-12-23 19:19:11459 days ago1703359151IN
0xC963c2F8...1dA794008
0 ETH0.0022526123.3960259
Swap188390432023-12-22 4:35:11461 days ago1703219711IN
0xC963c2F8...1dA794008
0 ETH0.0048613522.86318677
Swap187699182023-12-12 11:50:59471 days ago1702381859IN
0xC963c2F8...1dA794008
0 ETH0.0040962824.19742914
Swap185393642023-11-10 5:09:35503 days ago1699592975IN
0xC963c2F8...1dA794008
0 ETH0.0031721636.99408427
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:
TPLSwap

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

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

import {ERC165, IERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol";
import {IERC1155Receiver} from "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";

import {ITPLRevealedParts} from "./TPLRevealedParts/ITPLRevealedParts.sol";

/// @title TPLSwap
/// @author CyberBrokers
/// @author dev by @dievardump
/// @notice Contract allowing to swap unrevealed TPL Mech Parts against revealed TPL Mech Parts
contract TPLSwap is IERC1155Receiver, ERC165 {
    error UnknownContract();

    address public immutable UNREVEALED_PARTS;
    address public immutable REVEALED_PARTS;

    modifier onlyKnownContract() {
        if (msg.sender != UNREVEALED_PARTS) {
            revert UnknownContract();
        }
        _;
    }

    constructor(address unrevealed, address revealed) {
        UNREVEALED_PARTS = unrevealed;
        REVEALED_PARTS = revealed;
    }

    /////////////////////////////////////////////////////////
    // Getters                                             //
    /////////////////////////////////////////////////////////

    function supportsInterface(bytes4 interfaceId) public view override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);
    }

    /////////////////////////////////////////////////////////
    // Interaction                                         //
    /////////////////////////////////////////////////////////

    /// @notice Allows an user to swap `amounts` of unrevealed parts of `ids` and get as many TPLRevealedParts
    /// @dev the user must have approved the current contract on TPLUnrevealedParts
    /// @param ids the unrevealed parts ids to swap
    /// @param amounts the amounts to swap
    function swap(uint256[] calldata ids, uint256[] calldata amounts) external {
        IERC1155Burnable(UNREVEALED_PARTS).burnBatch(msg.sender, ids, amounts);

        uint256 length = ids.length;
        for (uint256 i; i < length; i++) {
            _mintBodyPartFrom(msg.sender, ids[i], amounts[i]);
        }
    }

    /////////////////////////////////////////////////////////
    // Callbacks / Hooks                                   //
    /////////////////////////////////////////////////////////

    /// @dev hook allowing users to directly send TPLUnrevealedPartsIds to this contract in order to swap
    /// @dev tests have shown that this method will be more expensive to use than approval then swap
    function onERC1155Received(
        address, /*operator*/
        address from,
        uint256 id,
        uint256 value,
        bytes calldata
    ) external onlyKnownContract returns (bytes4) {
        // burn
        IERC1155Burnable(msg.sender).burn(address(this), id, value);

        // mint
        _mintBodyPartFrom(from, id, value);

        // ACK
        return this.onERC1155Received.selector;
    }

    /// @dev hook allowing users to directly send TPLUnrevealedPartsIds in batch to this contract in order to swap
    /// @dev tests have shown that this method will be more expensive to use than approval then swap
    function onERC1155BatchReceived(
        address, /* operator */
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata
    ) external onlyKnownContract returns (bytes4) {
        // burn
        IERC1155Burnable(msg.sender).burnBatch(address(this), ids, values);

        // mint
        uint256 length = ids.length;
        for (uint256 i; i < length; i++) {
            _mintBodyPartFrom(from, ids[i], values[i]);
        }

        // ACK
        return this.onERC1155BatchReceived.selector;
    }

    /////////////////////////////////////////////////////////
    // Internals                                           //
    /////////////////////////////////////////////////////////

    /// @dev this function mint & reveals the body part wanted from the unrevealed `id`
    /// @param to the account receiving the part
    /// @param id the unrevealed part id
    /// @param amount the amount of part wanted
    function _mintBodyPartFrom(
        address to,
        uint256 id,
        uint256 amount
    ) internal {
        // most left 12 bits are the original unrevealed id
        // most right 12 bits is the "generation" of the part. Here all parts are Genesis parts
        uint24 packedData = uint24((id << 12) | 1);

        // mint `amount` revealed parts to `to` with `packedData`
        ITPLRevealedParts(REVEALED_PARTS).mintTo(to, amount, packedData);
    }
}

interface IERC1155Burnable {
    function burn(
        address account,
        uint256 id,
        uint256 value
    ) external;

    function burnBatch(
        address account,
        uint256[] memory ids,
        uint256[] memory values
    ) external;
}

File 2 of 6 : IERC1155Receiver.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)

pragma solidity ^0.8.0;

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

/**
 * @dev _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.
     *
     * NOTE: 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.
     *
     * NOTE: 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 3 of 6 : ERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 4 of 6 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

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 : ITPLRevealedParts.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

import {IBase721A} from "../../utils/tokens/ERC721/IBase721A.sol";

/// @title ITPLRevealedParts
/// @author CyberBrokers
/// @author dev by @dievardump
/// @notice Interface for the Revealed Parts contract.
interface ITPLRevealedParts is IBase721A {
    struct TokenData {
        uint256 generation;
        uint256 originalId;
        uint256 bodyPart;
        uint256 model;
        uint256[] stats;
    }

    /// @notice verifies that `account` owns all `tokenIds`
    /// @param account the account
    /// @param tokenIds the token ids to check
    /// @return if account owns all tokens
    function isOwnerOfBatch(address account, uint256[] calldata tokenIds) external view returns (bool);

    /// @notice returns a Mech Part data (body part and original id)
    /// @param tokenId the tokenId to check
    /// @return the Mech Part data (body part and original id)
    function partData(uint256 tokenId) external view returns (TokenData memory);

    /// @notice returns a list of Mech Part data (body part and original id)
    /// @param tokenIds the tokenIds to knoMechParts type of
    /// @return a list of Mech Part data (body part and original id)
    function partDataBatch(uint256[] calldata tokenIds) external view returns (TokenData[] memory);

    /// @notice Allows to burn tokens in batch
    /// @param tokenIds the tokens to burn
    function burnBatch(uint256[] calldata tokenIds) external;
}

File 6 of 6 : IBase721A.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

interface IBase721A {
    /// @notice Allows a `minter` to mint `amount` tokens to `to` with `extraData_`
    /// @param to to whom we need to mint
    /// @param amount how many to mint
    /// @param extraData extraData for these items
    function mintTo(
        address to,
        uint256 amount,
        uint24 extraData
    ) external;
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"unrevealed","type":"address"},{"internalType":"address","name":"revealed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"UnknownContract","type":"error"},{"inputs":[],"name":"REVEALED_PARTS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNREVEALED_PARTS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b5060405161091338038061091383398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a05161083f6100d46000396000818160e8015261047801526000818160a901528181610197015281816102760152610384015261083f6000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a7146100675780630a3cb72e1461008f57806337a0fde1146100a45780635dbe16c4146100e3578063bc197c811461010a578063f23a6e6114610136575b600080fd5b61007a6100753660046104dc565b610149565b60405190151581526020015b60405180910390f35b6100a261009d366004610559565b610180565b005b6100cb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610086565b6100cb7f000000000000000000000000000000000000000000000000000000000000000081565b61011d610118366004610623565b610269565b6040516001600160e01b03199091168152602001610086565b61011d6101443660046106de565b610377565b60006001600160e01b03198216630271189760e51b148061017a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b604051631ac8311560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636b20c454906101d49033908890889088908890600401610788565b600060405180830381600087803b1580156101ee57600080fd5b505af1158015610202573d6000803e3d6000fd5b5085925060009150505b818110156102615761024f3387878481811061022a5761022a6107cc565b90506020020135868685818110610243576102436107cc565b9050602002013561043e565b80610259816107e2565b91505061020c565b505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102b4576040516392c84d8160e01b815260040160405180910390fd5b604051631ac8311560e21b81523390636b20c454906102df9030908b908b908b908b90600401610788565b600060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b5088925060009150505b818110156103605761034e8a8a8a84818110610335576103356107cc565b90506020020135898985818110610243576102436107cc565b80610358816107e2565b915050610317565b5063bc197c8160e01b9a9950505050505050505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c2576040516392c84d8160e01b815260040160405180910390fd5b604051637a94c56560e11b81523060048201526024810186905260448101859052339063f5298aca90606401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5050505061042b86868661043e565b5063f23a6e6160e01b9695505050505050565b604051633f69c97760e21b81526001600160a01b038481166004830152602482018390526001600c85901b1762ffffff81166044840152917f00000000000000000000000000000000000000000000000000000000000000009091169063fda725dc90606401600060405180830381600087803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b5050505050505050565b6000602082840312156104ee57600080fd5b81356001600160e01b03198116811461050657600080fd5b9392505050565b60008083601f84011261051f57600080fd5b50813567ffffffffffffffff81111561053757600080fd5b6020830191508360208260051b850101111561055257600080fd5b9250929050565b6000806000806040858703121561056f57600080fd5b843567ffffffffffffffff8082111561058757600080fd5b6105938883890161050d565b909650945060208701359150808211156105ac57600080fd5b506105b98782880161050d565b95989497509550505050565b80356001600160a01b03811681146105dc57600080fd5b919050565b60008083601f8401126105f357600080fd5b50813567ffffffffffffffff81111561060b57600080fd5b60208301915083602082850101111561055257600080fd5b60008060008060008060008060a0898b03121561063f57600080fd5b610648896105c5565b975061065660208a016105c5565b9650604089013567ffffffffffffffff8082111561067357600080fd5b61067f8c838d0161050d565b909850965060608b013591508082111561069857600080fd5b6106a48c838d0161050d565b909650945060808b01359150808211156106bd57600080fd5b506106ca8b828c016105e1565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156106f757600080fd5b610700876105c5565b955061070e602088016105c5565b94506040870135935060608701359250608087013567ffffffffffffffff81111561073857600080fd5b61074489828a016105e1565b979a9699509497509295939492505050565b81835260006001600160fb1b0383111561076f57600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03861681526060602082018190526000906107ad9083018688610756565b82810360408401526107c0818587610756565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161080257634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122005abf3e5a1b365c1b44d6535698b2a90074c026a8e0b6b6606234f3944045f9964736f6c63430008110033000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f751540000000000000000000000007bc1e07cdfa283db7cf3c680d16ca7f161a64046

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a7146100675780630a3cb72e1461008f57806337a0fde1146100a45780635dbe16c4146100e3578063bc197c811461010a578063f23a6e6114610136575b600080fd5b61007a6100753660046104dc565b610149565b60405190151581526020015b60405180910390f35b6100a261009d366004610559565b610180565b005b6100cb7f000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f7515481565b6040516001600160a01b039091168152602001610086565b6100cb7f0000000000000000000000007bc1e07cdfa283db7cf3c680d16ca7f161a6404681565b61011d610118366004610623565b610269565b6040516001600160e01b03199091168152602001610086565b61011d6101443660046106de565b610377565b60006001600160e01b03198216630271189760e51b148061017a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b604051631ac8311560e21b81526001600160a01b037f000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f751541690636b20c454906101d49033908890889088908890600401610788565b600060405180830381600087803b1580156101ee57600080fd5b505af1158015610202573d6000803e3d6000fd5b5085925060009150505b818110156102615761024f3387878481811061022a5761022a6107cc565b90506020020135868685818110610243576102436107cc565b9050602002013561043e565b80610259816107e2565b91505061020c565b505050505050565b6000336001600160a01b037f000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f7515416146102b4576040516392c84d8160e01b815260040160405180910390fd5b604051631ac8311560e21b81523390636b20c454906102df9030908b908b908b908b90600401610788565b600060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b5088925060009150505b818110156103605761034e8a8a8a84818110610335576103356107cc565b90506020020135898985818110610243576102436107cc565b80610358816107e2565b915050610317565b5063bc197c8160e01b9a9950505050505050505050565b6000336001600160a01b037f000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f7515416146103c2576040516392c84d8160e01b815260040160405180910390fd5b604051637a94c56560e11b81523060048201526024810186905260448101859052339063f5298aca90606401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5050505061042b86868661043e565b5063f23a6e6160e01b9695505050505050565b604051633f69c97760e21b81526001600160a01b038481166004830152602482018390526001600c85901b1762ffffff81166044840152917f0000000000000000000000007bc1e07cdfa283db7cf3c680d16ca7f161a640469091169063fda725dc90606401600060405180830381600087803b1580156104be57600080fd5b505af11580156104d2573d6000803e3d6000fd5b5050505050505050565b6000602082840312156104ee57600080fd5b81356001600160e01b03198116811461050657600080fd5b9392505050565b60008083601f84011261051f57600080fd5b50813567ffffffffffffffff81111561053757600080fd5b6020830191508360208260051b850101111561055257600080fd5b9250929050565b6000806000806040858703121561056f57600080fd5b843567ffffffffffffffff8082111561058757600080fd5b6105938883890161050d565b909650945060208701359150808211156105ac57600080fd5b506105b98782880161050d565b95989497509550505050565b80356001600160a01b03811681146105dc57600080fd5b919050565b60008083601f8401126105f357600080fd5b50813567ffffffffffffffff81111561060b57600080fd5b60208301915083602082850101111561055257600080fd5b60008060008060008060008060a0898b03121561063f57600080fd5b610648896105c5565b975061065660208a016105c5565b9650604089013567ffffffffffffffff8082111561067357600080fd5b61067f8c838d0161050d565b909850965060608b013591508082111561069857600080fd5b6106a48c838d0161050d565b909650945060808b01359150808211156106bd57600080fd5b506106ca8b828c016105e1565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156106f757600080fd5b610700876105c5565b955061070e602088016105c5565b94506040870135935060608701359250608087013567ffffffffffffffff81111561073857600080fd5b61074489828a016105e1565b979a9699509497509295939492505050565b81835260006001600160fb1b0383111561076f57600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03861681526060602082018190526000906107ad9083018688610756565b82810360408401526107c0818587610756565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161080257634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122005abf3e5a1b365c1b44d6535698b2a90074c026a8e0b6b6606234f3944045f9964736f6c63430008110033

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

000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f751540000000000000000000000007bc1e07cdfa283db7cf3c680d16ca7f161a64046

-----Decoded View---------------
Arg [0] : unrevealed (address): 0xf4baCB2375654Ef2459f427C8c6cF34573f75154
Arg [1] : revealed (address): 0x7bC1e07cdFA283db7cF3C680D16ca7F161a64046

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f4bacb2375654ef2459f427c8c6cf34573f75154
Arg [1] : 0000000000000000000000007bc1e07cdfa283db7cf3c680d16ca7f161a64046


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.