Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TransferManagerERC721
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 99999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import {TheTransferManager} from "../interface/TheTransferManager.sol"; /** * @title TransferManagerERC721 * @notice It allows the transfer of ERC721 tokens. */ contract TransferManagerERC721 is TheTransferManager { address public immutable UNEMETA_MARKET; /** * @notice Constructor * @param _unemetaMarket address of the Unemeta exchange */ constructor(address _unemetaMarket) { UNEMETA_MARKET = _unemetaMarket; } // // function transferNonFungibleToken // @Description: transfer nft // @param address // @param address // @param address // @param uint256 // @param uint256 // @return external // function transferNonFungibleToken( address collection, address from, address to, uint256 tokenId, uint256 ) external override { require(msg.sender == UNEMETA_MARKET, "Only Unemeta Market can call this function"); // https://docs.openzeppelin.com/contracts/2.x/api/token/erc721#IERC721-safeTransferFrom IERC721(collection).safeTransferFrom(from, to, tokenId); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; interface TheTransferManager { function transferNonFungibleToken( address collection, address from, address to, uint256 tokenId, uint256 amount ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// 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); }
{ "optimizer": { "enabled": true, "runs": 99999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_unemetaMarket","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"UNEMETA_MARKET","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferNonFungibleToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405161034438038061034483398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516102b4610090600039600081816055015260b801526102b46000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806333f2fa9f1461003b5780637f99d45114610050575b600080fd5b61004e610049366004610229565b6100a0565b005b6100777f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f6e6c7920556e656d657461204d61726b65742063616e2063616c6c2074686960448201527f732066756e6374696f6e00000000000000000000000000000000000000000000606482015260840160405180910390fd5b6040517f42842e0e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152604482018490528616906342842e0e90606401600060405180830381600087803b1580156101e157600080fd5b505af11580156101f5573d6000803e3d6000fd5b505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461022457600080fd5b919050565b600080600080600060a0868803121561024157600080fd5b61024a86610200565b945061025860208701610200565b935061026660408701610200565b9497939650939460608101359450608001359291505056fea2646970667358221220dfb1a1593ed924bc24e6325adc5f68f2c809f1eb4d45fd7f8c9f623cf81e035a64736f6c634300081100330000000000000000000000002445a4e934af7c786755931610af099554ba1354
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c806333f2fa9f1461003b5780637f99d45114610050575b600080fd5b61004e610049366004610229565b6100a0565b005b6100777f0000000000000000000000002445a4e934af7c786755931610af099554ba135481565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000002445a4e934af7c786755931610af099554ba13541614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f6e6c7920556e656d657461204d61726b65742063616e2063616c6c2074686960448201527f732066756e6374696f6e00000000000000000000000000000000000000000000606482015260840160405180910390fd5b6040517f42842e0e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152604482018490528616906342842e0e90606401600060405180830381600087803b1580156101e157600080fd5b505af11580156101f5573d6000803e3d6000fd5b505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461022457600080fd5b919050565b600080600080600060a0868803121561024157600080fd5b61024a86610200565b945061025860208701610200565b935061026660408701610200565b9497939650939460608101359450608001359291505056fea2646970667358221220dfb1a1593ed924bc24e6325adc5f68f2c809f1eb4d45fd7f8c9f623cf81e035a64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002445a4e934af7c786755931610af099554ba1354
-----Decoded View---------------
Arg [0] : _unemetaMarket (address): 0x2445A4E934AF7C786755931610Af099554Ba1354
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002445a4e934af7c786755931610af099554ba1354
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
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.