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 Source Code Verified (Exact Match)
Contract Name:
TransferProxy
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; import "./OperatorRole.sol"; import "./interfaces/INftTransferProxy.sol"; contract TransferProxy is INftTransferProxy, Initializable, OperatorRole { function __TransferProxy_init() external initializer { __Ownable_init(); } function erc721safeTransferFrom( IERC721Upgradeable token, address from, address to, uint256 tokenId ) external override onlyOperator { token.safeTransferFrom(from, to, tokenId); } function erc1155safeTransferFrom( IERC1155Upgradeable token, address from, address to, uint256 id, uint256 value, bytes calldata data ) external override onlyOperator { token.safeTransferFrom(from, to, id, value, data); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/ContextUpgradeable.sol"; import "../proxy/Initializable.sol"; /** * @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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * 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. */ abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } uint256[49] private __gap; }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <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); }
// SPDX-License-Identifier: MIT // solhint-disable-next-line compiler-version pragma solidity >=0.4.24 <0.8.0; import "../utils/AddressUpgradeable.sol"; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {UpgradeableProxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || _isConstructor() || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function _isConstructor() private view returns (bool) { return !AddressUpgradeable.isContract(address(this)); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; import "../../introspection/IERC165Upgradeable.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 IERC1155Upgradeable is IERC165Upgradeable { /** * @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; }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; import "../../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`, 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 Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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 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); /** * @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; }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ library AddressUpgradeable { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../proxy/Initializable.sol"; /* * @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. */ abstract contract ContextUpgradeable is Initializable { function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer { } function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } uint256[50] private __gap; }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; contract OperatorRole is OwnableUpgradeable { mapping(address => bool) operators; function __OperatorRole_init() external initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function addOperator(address operator) external onlyOwner { operators[operator] = true; } function removeOperator(address operator) external onlyOwner { operators[operator] = false; } modifier onlyOperator() { require(operators[_msgSender()], "OperatorRole: caller is not the operator"); _; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; pragma abicoder v2; import "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol"; /** * @dev interface for transfering ERC721 adn ERC1155 tokens, * contracts that implement this interface must support * erc721safeTransferFrom and erc1155safeTransferFrom functions */ interface INftTransferProxy { function erc721safeTransferFrom( IERC721Upgradeable token, address from, address to, uint256 tokenId ) external; function erc1155safeTransferFrom( IERC1155Upgradeable token, address from, address to, uint256 id, uint256 value, bytes calldata data ) external; }
{ "evmVersion": "istanbul", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 100 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"__OperatorRole_init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"__TransferProxy_init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"addOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC1155Upgradeable","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721Upgradeable","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610aa2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c80632ff26a0a14610088578063495edf8614610092578063715018a61461009a5780638da5cb5b146100a25780639870d7fe146100c65780639c1c2ee9146100ec578063ac8a584a14610189578063f2fde38b146101af578063f709b906146101d5575b600080fd5b610090610211565b005b6100906102c3565b610090610358565b6100aa6103f2565b604080516001600160a01b039092168252519081900360200190f35b610090600480360360208110156100dc57600080fd5b50356001600160a01b0316610401565b610090600480360360c081101561010257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359181019060c0810160a082013564010000000081111561014a57600080fd5b82018360208201111561015c57600080fd5b8035906020019184600183028401116401000000008311171561017e57600080fd5b509092509050610487565b6100906004803603602081101561019f57600080fd5b50356001600160a01b03166105b0565b610090600480360360208110156101c557600080fd5b50356001600160a01b0316610633565b610090600480360360808110156101eb57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610724565b600054610100900460ff168061022a575061022a61080e565b80610238575060005460ff16155b6102735760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561029e576000805460ff1961ff0019909116610100171660011790555b6102a661081f565b6102ae6108bf565b80156102c0576000805461ff00191690555b50565b600054610100900460ff16806102dc57506102dc61080e565b806102ea575060005460ff16155b6103255760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff16158015610350576000805460ff1961ff0019909116610100171660011790555b6102ae610211565b6103606109a6565b6001600160a01b03166103716103f2565b6001600160a01b0316146103ba576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020610a25833981519152908390a3603380546001600160a01b0319169055565b6033546001600160a01b031690565b6104096109a6565b6001600160a01b031661041a6103f2565b6001600160a01b031614610463576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152606560205260409020805460ff19166001179055565b606560006104936109a6565b6001600160a01b0316815260208101919091526040016000205460ff166104eb5760405162461bcd60e51b8152600401808060200182810382526028815260200180610a456028913960400191505060405180910390fd5b866001600160a01b031663f242432a8787878787876040518763ffffffff1660e01b815260040180876001600160a01b03168152602001866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561058f57600080fd5b505af11580156105a3573d6000803e3d6000fd5b5050505050505050505050565b6105b86109a6565b6001600160a01b03166105c96103f2565b6001600160a01b031614610612576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152606560205260409020805460ff19169055565b61063b6109a6565b6001600160a01b031661064c6103f2565b6001600160a01b031614610695576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6001600160a01b0381166106da5760405162461bcd60e51b81526004018080602001828103825260268152602001806109b16026913960400191505060405180910390fd5b6033546040516001600160a01b03808416921690600080516020610a2583398151915290600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b606560006107306109a6565b6001600160a01b0316815260208101919091526040016000205460ff166107885760405162461bcd60e51b8152600401808060200182810382526028815260200180610a456028913960400191505060405180910390fd5b836001600160a01b03166342842e0e8484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156107f057600080fd5b505af1158015610804573d6000803e3d6000fd5b5050505050505050565b6000610819306109aa565b15905090565b600054610100900460ff1680610838575061083861080e565b80610846575060005460ff16155b6108815760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff161580156102ae576000805460ff1961ff00199091166101001716600117905580156102c0576000805461ff001916905550565b600054610100900460ff16806108d857506108d861080e565b806108e6575060005460ff16155b6109215760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561094c576000805460ff1961ff0019909116610100171660011790555b60006109566109a6565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610a25833981519152908290a35080156102c0576000805461ff001916905550565b3390565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04f70657261746f72526f6c653a2063616c6c6572206973206e6f7420746865206f70657261746f72a2646970667358221220dc1206169dc4445952ed4983d65fecdfdf09c0f07f2304568bad95a9c0ef578864736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100835760003560e01c80632ff26a0a14610088578063495edf8614610092578063715018a61461009a5780638da5cb5b146100a25780639870d7fe146100c65780639c1c2ee9146100ec578063ac8a584a14610189578063f2fde38b146101af578063f709b906146101d5575b600080fd5b610090610211565b005b6100906102c3565b610090610358565b6100aa6103f2565b604080516001600160a01b039092168252519081900360200190f35b610090600480360360208110156100dc57600080fd5b50356001600160a01b0316610401565b610090600480360360c081101561010257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359181019060c0810160a082013564010000000081111561014a57600080fd5b82018360208201111561015c57600080fd5b8035906020019184600183028401116401000000008311171561017e57600080fd5b509092509050610487565b6100906004803603602081101561019f57600080fd5b50356001600160a01b03166105b0565b610090600480360360208110156101c557600080fd5b50356001600160a01b0316610633565b610090600480360360808110156101eb57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610724565b600054610100900460ff168061022a575061022a61080e565b80610238575060005460ff16155b6102735760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561029e576000805460ff1961ff0019909116610100171660011790555b6102a661081f565b6102ae6108bf565b80156102c0576000805461ff00191690555b50565b600054610100900460ff16806102dc57506102dc61080e565b806102ea575060005460ff16155b6103255760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff16158015610350576000805460ff1961ff0019909116610100171660011790555b6102ae610211565b6103606109a6565b6001600160a01b03166103716103f2565b6001600160a01b0316146103ba576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020610a25833981519152908390a3603380546001600160a01b0319169055565b6033546001600160a01b031690565b6104096109a6565b6001600160a01b031661041a6103f2565b6001600160a01b031614610463576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152606560205260409020805460ff19166001179055565b606560006104936109a6565b6001600160a01b0316815260208101919091526040016000205460ff166104eb5760405162461bcd60e51b8152600401808060200182810382526028815260200180610a456028913960400191505060405180910390fd5b866001600160a01b031663f242432a8787878787876040518763ffffffff1660e01b815260040180876001600160a01b03168152602001866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561058f57600080fd5b505af11580156105a3573d6000803e3d6000fd5b5050505050505050505050565b6105b86109a6565b6001600160a01b03166105c96103f2565b6001600160a01b031614610612576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152606560205260409020805460ff19169055565b61063b6109a6565b6001600160a01b031661064c6103f2565b6001600160a01b031614610695576040805162461bcd60e51b81526020600482018190526024820152600080516020610a05833981519152604482015290519081900360640190fd5b6001600160a01b0381166106da5760405162461bcd60e51b81526004018080602001828103825260268152602001806109b16026913960400191505060405180910390fd5b6033546040516001600160a01b03808416921690600080516020610a2583398151915290600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b606560006107306109a6565b6001600160a01b0316815260208101919091526040016000205460ff166107885760405162461bcd60e51b8152600401808060200182810382526028815260200180610a456028913960400191505060405180910390fd5b836001600160a01b03166342842e0e8484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156107f057600080fd5b505af1158015610804573d6000803e3d6000fd5b5050505050505050565b6000610819306109aa565b15905090565b600054610100900460ff1680610838575061083861080e565b80610846575060005460ff16155b6108815760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff161580156102ae576000805460ff1961ff00199091166101001716600117905580156102c0576000805461ff001916905550565b600054610100900460ff16806108d857506108d861080e565b806108e6575060005460ff16155b6109215760405162461bcd60e51b815260040180806020018281038252602e8152602001806109d7602e913960400191505060405180910390fd5b600054610100900460ff1615801561094c576000805460ff1961ff0019909116610100171660011790555b60006109566109a6565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610a25833981519152908290a35080156102c0576000805461ff001916905550565b3390565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e04f70657261746f72526f6c653a2063616c6c6572206973206e6f7420746865206f70657261746f72a2646970667358221220dc1206169dc4445952ed4983d65fecdfdf09c0f07f2304568bad95a9c0ef578864736f6c63430007060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.