Contract 0xF8e4eCac18B65Fd04569fF1f0D561F74effaA206

Contract Overview

Balance:
0 Ether

Token:
Txn Hash
Method
Block
From
To
Value
0x90f74cfa9e54cafd1f9f7176ea3bfbc8b99f8c4c97c9fbcca538bf27e0215089Safe Transfer Fr...120144992022-02-25 7:03:55216 days 1 hr ago0x93b328c301efb5182f5975b55f661527ed3ce3e6 IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0009631842
0x48e616e16e6283e599baf515bbe14a4190a122ecd9b65027a5ba694e46897845Add Operator119140272022-02-03 13:03:03237 days 19 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0047593100
0x2b28a9045d6eaff7f59ab2633768542083e3834af43076eb971b34b71286abe8__Operator Role_...115190492021-11-29 12:03:44303 days 20 hrs ago0x3f538e7d48ae93c73d5f0e6ec97667997821afe7 IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0002338211
0x5fb4853176e3b135ab1f757efe161fed801f59a0f2075e05b53199e1c97fbc8eAdd Operator115190302021-11-29 12:00:21303 days 20 hrs ago0x3f538e7d48ae93c73d5f0e6ec97667997821afe7 IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0002639211
0x905f3ded8b113014ba727f814a7de3864d80c6bdaf434e2ad982cd716087191fAdd Operator115190132021-11-29 11:57:32303 days 20 hrs ago0x3f538e7d48ae93c73d5f0e6ec97667997821afe7 IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0002639211
0x76724641cfb9d3d826b53ef2b114303f9184923f1e1ce8f679856d8606e6a094Add Operator104114482021-06-10 15:56:31475 days 17 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004759310
0x66d213a184bc1dc4bc93685e0e10356e5c51a7672d7cafec694ac62558710b70Add Operator90351182020-11-09 12:49:24688 days 20 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004569310
0xf7576c5163a5ce8f284ed027bb92e01be7630638df74831120d59a80067b138fAdd Operator90174472020-11-06 13:08:57691 days 19 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004569310
0x863a58caaf8fd026b3db304f5fee8c76a55d9ec6b7a11d611398009ed8c5c027Add Operator85342752020-08-20 9:41:39769 days 23 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004569310
0x3fcef0ee9fe25519c882c5a79c908351f72b84e1ecd3fb2333845e0c55c88ab6Add Operator85342362020-08-20 9:32:48769 days 23 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004569310
0x7f2faf59ef5ef06f7a650da23baa63c75c413866d8660e70de83272fc1da1b0eAdd Operator78884432020-05-12 18:37:31869 days 14 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004569310
0xf32341b0d10041b6b3a458d2a5e601db9777702a0c5d104f977ec5b6675c6c05Add Operator78283012020-05-02 5:09:47880 days 3 hrs ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether0.0004568110
0x1e385d063c8033ca3cc41df50933a53c69acdd913078ee687f5b906ae5d85e5f0x6080604078153802020-04-30 7:16:55882 days 1 hr ago0x6751c1ebdc4ab4e5cb103d5ceb84d26963a3377e IN  Create: TransferProxy0 Ether0.0150135725
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x27a42b7757b9513d7d116a932f367397618ecb4cf82301d1d3ac15c57cf34140129504132022-09-08 13:30:3620 days 19 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x27a42b7757b9513d7d116a932f367397618ecb4cf82301d1d3ac15c57cf34140129504132022-09-08 13:30:3620 days 19 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x0b9746054313004ca602cd2da1a7c6a0af44ddba656594a5e07f2d60c1d09c5e129504032022-09-08 13:27:2420 days 19 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x0b9746054313004ca602cd2da1a7c6a0af44ddba656594a5e07f2d60c1d09c5e129504032022-09-08 13:27:2420 days 19 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x407f7f737a5ee3a28c1b8466e4896bc0a60560240ee16af0c1f81dc8cfeeecd2129502812022-09-08 12:55:4820 days 20 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x407f7f737a5ee3a28c1b8466e4896bc0a60560240ee16af0c1f81dc8cfeeecd2129502812022-09-08 12:55:4820 days 20 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0xb81222846d654f609e20c6cbebe0f8d255bd8f7050058ea2d4cef3456b86da6f129484252022-09-08 4:52:4821 days 4 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0xb81222846d654f609e20c6cbebe0f8d255bd8f7050058ea2d4cef3456b86da6f129484252022-09-08 4:52:4821 days 4 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x3e73a99aac81b8720ee3decf07db623b72f17844c9fb1d29d8b7317b54194df0129484192022-09-08 4:51:2421 days 4 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x3e73a99aac81b8720ee3decf07db623b72f17844c9fb1d29d8b7317b54194df0129484192022-09-08 4:51:2421 days 4 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x13cd175ccd5cd4bd7c70c7b623978b24bea40fb32ca28d9ddf046eaa692da38a128890222022-08-29 14:08:4830 days 18 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x13cd175ccd5cd4bd7c70c7b623978b24bea40fb32ca28d9ddf046eaa692da38a128890222022-08-29 14:08:4830 days 18 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x594b058438dd54ed2cc105660e8211a56c46ad714772fc95d867ea7a2f259684128883522022-08-29 11:43:0030 days 21 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0x2aaa613bd84df223363c9c45ff792430f67320fa0 Ether
0x594b058438dd54ed2cc105660e8211a56c46ad714772fc95d867ea7a2f259684128883522022-08-29 11:43:0030 days 21 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x397f97b297e6da9e9253f9c784807e39da09e83674196d8e905b3831251608f7128883352022-08-29 11:39:1230 days 21 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x397f97b297e6da9e9253f9c784807e39da09e83674196d8e905b3831251608f7128883352022-08-29 11:39:1230 days 21 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x2988954583c33170170b68b75b1fc34849b9578cec88c9a3438d10a99185ecb7128883272022-08-29 11:37:3630 days 21 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0x2aaa613bd84df223363c9c45ff792430f67320fa0 Ether
0x2988954583c33170170b68b75b1fc34849b9578cec88c9a3438d10a99185ecb7128883272022-08-29 11:37:3630 days 21 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0xbac5ab97080bc58dd4642c1779a5d15d9beb09a408f04b5515bea0d813f6bc0a127941892022-08-15 14:32:2444 days 18 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0xbac5ab97080bc58dd4642c1779a5d15d9beb09a408f04b5515bea0d813f6bc0a127941892022-08-15 14:32:2444 days 18 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0x049a1a761e7aff6f52f7712fe892bc9b9821ce46315f6dc03f05150c997d2b20127941252022-08-15 14:19:2444 days 18 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0x049a1a761e7aff6f52f7712fe892bc9b9821ce46315f6dc03f05150c997d2b20127941252022-08-15 14:19:2444 days 18 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0xc967ddc712311a434334a0a24cac2ed97b8cd431ab10421df1d09d5588cd0454127941022022-08-15 14:14:3644 days 18 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
0xc967ddc712311a434334a0a24cac2ed97b8cd431ab10421df1d09d5588cd0454127941022022-08-15 14:14:3644 days 18 hrs ago 0x33aef288c093bf7b36fbe15c3190e616a993b0ad 0xf8e4ecac18b65fd04569ff1f0d561f74effaa2060 Ether
0xca51d8f6bf2e69749fd98c4fc48858bb569cdd13fa1f6c6ff15ec3a7def293b0127940702022-08-15 14:08:0044 days 18 hrs ago 0xf8e4ecac18b65fd04569ff1f0d561f74effaa206 0xdf5b1a360f64fa8a6702efa8fe41946972ba5a7a0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransferProxy

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
petersburg EvmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-02
*/

pragma solidity ^0.5.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract OperatorRole is Context {
    using Roles for Roles.Role;

    event OperatorAdded(address indexed account);
    event OperatorRemoved(address indexed account);

    Roles.Role private _operators;

    constructor () internal {

    }

    modifier onlyOperator() {
        require(isOperator(_msgSender()), "OperatorRole: caller does not have the Operator role");
        _;
    }

    function isOperator(address account) public view returns (bool) {
        return _operators.has(account);
    }

    function _addOperator(address account) internal {
        _operators.add(account);
        emit OperatorAdded(account);
    }

    function _removeOperator(address account) internal {
        _operators.remove(account);
        emit OperatorRemoved(account);
    }
}

/**
 * @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);
}

/**
    @title ERC-1155 Multi Token Standard
    @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md
    Note: The ERC-165 identifier for this interface is 0xd9b67a26.
 */
contract IERC1155 is IERC165 {
    /**
        @dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
        The `_operator` argument MUST be msg.sender.
        The `_from` argument MUST be the address of the holder whose balance is decreased.
        The `_to` argument MUST be the address of the recipient whose balance is increased.
        The `_id` argument MUST be the token type being transferred.
        The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by.
        When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
        When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
    */
    event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value);

    /**
        @dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
        The `_operator` argument MUST be msg.sender.
        The `_from` argument MUST be the address of the holder whose balance is decreased.
        The `_to` argument MUST be the address of the recipient whose balance is increased.
        The `_ids` argument MUST be the list of tokens being transferred.
        The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by.
        When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
        When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
    */
    event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values);

    /**
        @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absense of an event assumes disabled).
    */
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /**
        @dev MUST emit when the URI is updated for a token ID.
        URIs are defined in RFC 3986.
        The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema".
    */
    event URI(string _value, uint256 indexed _id);

    /**
        @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call).
        @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
        MUST revert if `_to` is the zero address.
        MUST revert if balance of holder for token `_id` is lower than the `_value` sent.
        MUST revert on any other error.
        MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard).
        After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
        @param _from    Source address
        @param _to      Target address
        @param _id      ID of the token type
        @param _value   Transfer amount
        @param _data    Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to`
    */
    function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external;

    /**
        @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call).
        @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
        MUST revert if `_to` is the zero address.
        MUST revert if length of `_ids` is not the same as length of `_values`.
        MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient.
        MUST revert on any other error.
        MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard).
        Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
        After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
        @param _from    Source address
        @param _to      Target address
        @param _ids     IDs of each token type (order and length must match _values array)
        @param _values  Transfer amounts per token type (order and length must match _ids array)
        @param _data    Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to`
    */
    function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external;

    /**
        @notice Get the balance of an account's Tokens.
        @param _owner  The address of the token holder
        @param _id     ID of the Token
        @return        The _owner's balance of the Token type requested
     */
    function balanceOf(address _owner, uint256 _id) external view returns (uint256);

    /**
        @notice Get the balance of multiple account/token pairs
        @param _owners The addresses of the token holders
        @param _ids    ID of the Tokens
        @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)
     */
    function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory);

    /**
        @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens.
        @dev MUST emit the ApprovalForAll event on success.
        @param _operator  Address to add to the set of authorized operators
        @param _approved  True if the operator is approved, false to revoke approval
    */
    function setApprovalForAll(address _operator, bool _approved) external;

    /**
        @notice Queries the approval status of an operator for a given owner.
        @param _owner     The owner of the Tokens
        @param _operator  Address of authorized operator
        @return           True if the operator is approved, false if not
    */
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
contract IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of NFTs in `owner`'s account.
     */
    function balanceOf(address owner) public view returns (uint256 balance);

    /**
     * @dev Returns the owner of the NFT specified by `tokenId`.
     */
    function ownerOf(uint256 tokenId) public view returns (address owner);

    /**
     * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
     * another (`to`).
     *
     *
     *
     * Requirements:
     * - `from`, `to` cannot be zero.
     * - `tokenId` must be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this
     * NFT by either {approve} or {setApprovalForAll}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public;
    /**
     * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
     * another (`to`).
     *
     * Requirements:
     * - If the caller is not `from`, it must be approved to move this NFT by
     * either {approve} or {setApprovalForAll}.
     */
    function transferFrom(address from, address to, uint256 tokenId) public;
    function approve(address to, uint256 tokenId) public;
    function getApproved(uint256 tokenId) public view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) public;
    function isApprovedForAll(address owner, address operator) public view returns (bool);


    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;
}

contract TransferProxy is Ownable, OperatorRole {

    function erc721safeTransferFrom(IERC721 token, address from, address to, uint256 tokenId) external onlyOperator {
        token.safeTransferFrom(from, to, tokenId);
    }

    function erc1155safeTransferFrom(IERC1155 token, address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external onlyOperator {
        token.safeTransferFrom(_from, _to, _id, _value, _data);
    }

    function addOperator(address account) public onlyOwner {
        _addOperator(account);
    }

    function removeOperator(address account) public onlyOwner {
        _removeOperator(account);
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC1155","name":"token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"erc1155safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC721","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"erc721safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610978806100796000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80639870d7fe116100665780639870d7fe146101085780639c1c2ee91461012e578063ac8a584a146101cb578063f2fde38b146101f1578063f709b9061461021757610093565b80636d70f7ae14610098578063715018a6146100d25780638da5cb5b146100dc5780638f32d59b14610100575b600080fd5b6100be600480360360208110156100ae57600080fd5b50356001600160a01b0316610253565b604080519115158252519081900360200190f35b6100da61026c565b005b6100e46102fd565b604080516001600160a01b039092168252519081900360200190f35b6100be61030c565b6100da6004803603602081101561011e57600080fd5b50356001600160a01b0316610330565b6100da600480360360c081101561014457600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359181019060c0810160a082013564010000000081111561018c57600080fd5b82018360208201111561019e57600080fd5b803590602001918460018302840111640100000000831117156101c057600080fd5b509092509050610383565b6100da600480360360208110156101e157600080fd5b50356001600160a01b03166104a5565b6100da6004803603602081101561020757600080fd5b50356001600160a01b03166104f5565b6100da6004803603608081101561022d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610545565b600061026660018363ffffffff61060316565b92915050565b61027461030c565b6102b3576040805162461bcd60e51b81526020600482018190526024820152600080516020610902833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b031661032161066a565b6001600160a01b031614905090565b61033861030c565b610377576040805162461bcd60e51b81526020600482018190526024820152600080516020610902833981519152604482015290519081900360640190fd5b6103808161066e565b50565b61039361038e61066a565b610253565b6103ce5760405162461bcd60e51b81526004018080602001828103825260348152602001806108ad6034913960400191505060405180910390fd5b866001600160a01b031663f242432a8787878787876040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561048457600080fd5b505af1158015610498573d6000803e3d6000fd5b5050505050505050505050565b6104ad61030c565b6104ec576040805162461bcd60e51b81526020600482018190526024820152600080516020610902833981519152604482015290519081900360640190fd5b610380816106b6565b6104fd61030c565b61053c576040805162461bcd60e51b81526020600482018190526024820152600080516020610902833981519152604482015290519081900360640190fd5b610380816106fe565b61055061038e61066a565b61058b5760405162461bcd60e51b81526004018080602001828103825260348152602001806108ad6034913960400191505060405180910390fd5b60408051632142170760e11b81526001600160a01b0385811660048301528481166024830152604482018490529151918616916342842e0e9160648082019260009290919082900301818387803b1580156105e557600080fd5b505af11580156105f9573d6000803e3d6000fd5b5050505050505050565b60006001600160a01b03821661064a5760405162461bcd60e51b81526004018080602001828103825260228152602001806109226022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b3390565b61067f60018263ffffffff61079e16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b6106c760018263ffffffff61081f16565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b6001600160a01b0381166107435760405162461bcd60e51b81526004018080602001828103825260268152602001806108876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6107a88282610603565b156107fa576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6108298282610603565b6108645760405162461bcd60e51b81526004018080602001828103825260218152602001806108e16021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f70657261746f72526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204f70657261746f7220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a72315820d1baaeb33e42bf5b7e278719657924f99afd4a129ee1e690b7a09bc3e586ddcb64736f6c63430005100032

Deployed ByteCode Sourcemap

15610:675:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15610:675:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4978:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4978:113:0;-1:-1:-1;;;;;4978:113:0;;:::i;:::-;;;;;;;;;;;;;;;;;;2826:140;;;:::i;:::-;;2015:79;;;:::i;:::-;;;;-1:-1:-1;;;;;2015:79:0;;;;;;;;;;;;;;2381:94;;;:::i;16078:95::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16078:95:0;-1:-1:-1;;;;;16078:95:0;;:::i;15847:223::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;15847:223:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15847:223:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15847:223:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;15847:223:0;;-1:-1:-1;15847:223:0;-1:-1:-1;15847:223:0;:::i;16181:101::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16181:101:0;-1:-1:-1;;;;;16181:101:0;;:::i;3121:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3121:109:0;-1:-1:-1;;;;;3121:109:0;;:::i;15667:172::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15667:172:0;;;;;;;;;;;;;;;;;;;;;;:::i;4978:113::-;5036:4;5060:23;:10;5075:7;5060:23;:14;:23;:::i;:::-;5053:30;4978:113;-1:-1:-1;;4978:113:0:o;2826:140::-;2227:9;:7;:9::i;:::-;2219:54;;;;;-1:-1:-1;;;2219:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2219:54:0;;;;;;;;;;;;;;;2925:1;2909:6;;2888:40;;-1:-1:-1;;;;;2909:6:0;;;;2888:40;;2925:1;;2888:40;2956:1;2939:19;;-1:-1:-1;;;;;;2939:19:0;;;2826:140::o;2015:79::-;2053:7;2080:6;-1:-1:-1;;;;;2080:6:0;2015:79;:::o;2381:94::-;2421:4;2461:6;;-1:-1:-1;;;;;2461:6:0;2445:12;:10;:12::i;:::-;-1:-1:-1;;;;;2445:22:0;;2438:29;;2381:94;:::o;16078:95::-;2227:9;:7;:9::i;:::-;2219:54;;;;;-1:-1:-1;;;2219:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2219:54:0;;;;;;;;;;;;;;;16144:21;16157:7;16144:12;:21::i;:::-;16078:95;:::o;15847:223::-;4869:24;4880:12;:10;:12::i;:::-;4869:10;:24::i;:::-;4861:89;;;;-1:-1:-1;;;4861:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16008:5;-1:-1:-1;;;;;16008:22:0;;16031:5;16038:3;16043;16048:6;16056:5;;16008:54;;;;;;;;;;;;;-1:-1:-1;;;;;16008:54:0;-1:-1:-1;;;;;16008:54:0;;;;;;-1:-1:-1;;;;;16008:54:0;-1:-1:-1;;;;;16008:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16008:54:0;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16008:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16008:54:0;;;;15847:223;;;;;;;:::o;16181:101::-;2227:9;:7;:9::i;:::-;2219:54;;;;;-1:-1:-1;;;2219:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2219:54:0;;;;;;;;;;;;;;;16250:24;16266:7;16250:15;:24::i;3121:109::-;2227:9;:7;:9::i;:::-;2219:54;;;;;-1:-1:-1;;;2219:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2219:54:0;;;;;;;;;;;;;;;3194:28;3213:8;3194:18;:28::i;15667:172::-;4869:24;4880:12;:10;:12::i;4869:24::-;4861:89;;;;-1:-1:-1;;;4861:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15790:41;;;-1:-1:-1;;;15790:41:0;;-1:-1:-1;;;;;15790:41:0;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;:41;;;;;-1:-1:-1;;15790:41:0;;;;;;;;-1:-1:-1;15790:22:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;15790:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15790:41:0;;;;15667:172;;;;:::o;4355:203::-;4427:4;-1:-1:-1;;;;;4452:21:0;;4444:68;;;;-1:-1:-1;;;4444:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4530:20:0;:11;:20;;;;;;;;;;;;;;;4355:203::o;806:98::-;886:10;806:98;:::o;5099:128::-;5158:23;:10;5173:7;5158:23;:14;:23;:::i;:::-;5197:22;;-1:-1:-1;;;;;5197:22:0;;;;;;;;5099:128;:::o;5235:136::-;5297:26;:10;5315:7;5297:26;:17;:26;:::i;:::-;5339:24;;-1:-1:-1;;;;;5339:24:0;;;;;;;;5235:136;:::o;3336:229::-;-1:-1:-1;;;;;3410:22:0;;3402:73;;;;-1:-1:-1;;;3402:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3512:6;;;3491:38;;-1:-1:-1;;;;;3491:38:0;;;;3512:6;;;3491:38;;;3540:6;:17;;-1:-1:-1;;;;;;3540:17:0;-1:-1:-1;;;;;3540:17:0;;;;;;;;;;3336:229::o;3819:178::-;3897:18;3901:4;3907:7;3897:3;:18::i;:::-;3896:19;3888:63;;;;;-1:-1:-1;;;3888:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3962:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;3962:27:0;3985:4;3962:27;;;3819:178::o;4077:183::-;4157:18;4161:4;4167:7;4157:3;:18::i;:::-;4149:64;;;;-1:-1:-1;;;4149:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4224:20:0;4247:5;4224:20;;;;;;;;;;;:28;;-1:-1:-1;;4224:28:0;;;4077:183::o

Swarm Source

bzzr://d1baaeb33e42bf5b7e278719657924f99afd4a129ee1e690b7a09bc3e586ddcb
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

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.