Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60a06040 | 15118769 | 774 days ago | IN | 0 ETH | 0.00203659 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TransferManagerERC721
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {ITransferManager} from "../interfaces/ITransferManager.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; contract TransferManagerERC721 is ITransferManager { address public immutable exchange; constructor(address _exchange) { exchange = _exchange; } function transferNFT( address collection, uint256 tokenId, uint256, /* amount */ address from, address to ) external override { require(msg.sender == exchange, "TM721: caller is not exchange"); IERC721Upgradeable(collection).safeTransferFrom(from, to, tokenId); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface ITransferManager { function transferNFT( address collection, uint256 tokenId, uint256 amount, address from, address to ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165Upgradeable.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721Upgradeable is IERC165Upgradeable { /** * @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 be 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 IERC165Upgradeable { /** * @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": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_exchange","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"exchange","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"transferNFT","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516102b93803806102b983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516102296100906000396000818160550152609e01526102296000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806399f0d6c51461003b578063d2f7265a14610050575b600080fd5b61004e61004936600461019c565b610093565b005b6100777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461010f5760405162461bcd60e51b815260206004820152601d60248201527f544d3732313a2063616c6c6572206973206e6f742065786368616e6765000000604482015260640160405180910390fd5b604051632142170760e11b81526001600160a01b0383811660048301528281166024830152604482018690528616906342842e0e90606401600060405180830381600087803b15801561016157600080fd5b505af1158015610175573d6000803e3d6000fd5b505050505050505050565b80356001600160a01b038116811461019757600080fd5b919050565b600080600080600060a086880312156101b457600080fd5b6101bd86610180565b945060208601359350604086013592506101d960608701610180565b91506101e760808701610180565b9050929550929590935056fea264697066735822122050fbb1b15e3e792b4fe4e0fa1fc0510cd7dd51d29553eb5bd6455a12947a307164736f6c634300080f0033000000000000000000000000eb4f8a88c81a688b141c419b40a8e2f0411dec10
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c806399f0d6c51461003b578063d2f7265a14610050575b600080fd5b61004e61004936600461019c565b610093565b005b6100777f000000000000000000000000eb4f8a88c81a688b141c419b40a8e2f0411dec1081565b6040516001600160a01b03909116815260200160405180910390f35b336001600160a01b037f000000000000000000000000eb4f8a88c81a688b141c419b40a8e2f0411dec10161461010f5760405162461bcd60e51b815260206004820152601d60248201527f544d3732313a2063616c6c6572206973206e6f742065786368616e6765000000604482015260640160405180910390fd5b604051632142170760e11b81526001600160a01b0383811660048301528281166024830152604482018690528616906342842e0e90606401600060405180830381600087803b15801561016157600080fd5b505af1158015610175573d6000803e3d6000fd5b505050505050505050565b80356001600160a01b038116811461019757600080fd5b919050565b600080600080600060a086880312156101b457600080fd5b6101bd86610180565b945060208601359350604086013592506101d960608701610180565b91506101e760808701610180565b9050929550929590935056fea264697066735822122050fbb1b15e3e792b4fe4e0fa1fc0510cd7dd51d29553eb5bd6455a12947a307164736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000eb4f8a88c81a688b141c419b40a8e2f0411dec10
-----Decoded View---------------
Arg [0] : _exchange (address): 0xEb4f8a88C81a688B141C419b40A8e2F0411DeC10
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000eb4f8a88c81a688b141c419b40a8e2f0411dec10
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.