Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 305 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 18699957 | 239 days ago | IN | 0 ETH | 0.00211224 | ||||
Unstake | 18411935 | 280 days ago | IN | 0 ETH | 0.00055012 | ||||
Unstake | 18160776 | 315 days ago | IN | 0 ETH | 0.00048076 | ||||
Unstake | 17847620 | 359 days ago | IN | 0 ETH | 0.00082891 | ||||
Unstake | 17758342 | 371 days ago | IN | 0 ETH | 0.00118047 | ||||
Unstake | 17705237 | 379 days ago | IN | 0 ETH | 0.00083817 | ||||
Unstake | 17660659 | 385 days ago | IN | 0 ETH | 0.00075643 | ||||
Unstake | 17637282 | 388 days ago | IN | 0 ETH | 0.00119921 | ||||
Unstake | 17569792 | 398 days ago | IN | 0 ETH | 0.00070405 | ||||
Unstake | 17146663 | 457 days ago | IN | 0 ETH | 0.0020232 | ||||
Unstake | 16953832 | 485 days ago | IN | 0 ETH | 0.00099021 | ||||
Unstake | 16704244 | 520 days ago | IN | 0 ETH | 0.00115896 | ||||
Unstake | 16505288 | 548 days ago | IN | 0 ETH | 0.00081625 | ||||
Unstake | 16374478 | 566 days ago | IN | 0 ETH | 0.00089239 | ||||
Unstake | 16299860 | 576 days ago | IN | 0 ETH | 0.00295478 | ||||
Unstake | 16260771 | 582 days ago | IN | 0 ETH | 0.00074436 | ||||
Stake | 16186324 | 592 days ago | IN | 0 ETH | 0.00131628 | ||||
Unstake | 16177444 | 593 days ago | IN | 0 ETH | 0.00175091 | ||||
Stake | 15848738 | 639 days ago | IN | 0 ETH | 0.00147713 | ||||
Unstake | 15496431 | 690 days ago | IN | 0 ETH | 0.00043526 | ||||
Unstake | 15439517 | 699 days ago | IN | 0 ETH | 0.00067342 | ||||
Stake | 15391965 | 706 days ago | IN | 0 ETH | 0.00180724 | ||||
Unstake | 15255960 | 728 days ago | IN | 0 ETH | 0.00057571 | ||||
Unstake | 15127141 | 748 days ago | IN | 0 ETH | 0.00075898 | ||||
Stake | 14907710 | 785 days ago | IN | 0 ETH | 0.00250115 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NFTBoosterVault
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-27 */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.5.17; // Part: IERC1155 interface IERC1155 { // Events /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferSingle( address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount ); /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferBatch( address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts ); /** * @dev MUST emit when an approval is updated */ 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 JSON Schema" */ event URI(string _amount, uint256 indexed _id); /** * @notice Transfers amount of an _id from the _from address to the _to address specified * @dev MUST emit TransferSingle event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if balance of sender for token `_id` is lower than the `_amount` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * @param _from Source address * @param _to Target address * @param _id ID of the token type * @param _amount Transfered amount * @param _data Additional data with no specified format, sent in call to `_to` */ function safeTransferFrom( address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data ) external; /** * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call) * @dev MUST emit TransferBatch event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if length of `_ids` is not the same as length of `_amounts` * MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc) * @param _from Source addresses * @param _to Target addresses * @param _ids IDs of each token type * @param _amounts Transfer amounts per token type * @param _data Additional data with no specified format, sent in call to `_to` */ function safeBatchTransferFrom( address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, 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 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 isOperator); } // Part: IERC1155TokenReceiver /** * @dev ERC-1155 interface for accepting safe transfers. */ interface IERC1155TokenReceiver { /** * @notice Handle the receipt of a single ERC1155 token type * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value MUST result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeTransferFrom` function * @param _from The address which previously owned the token * @param _id The id of the token being transferred * @param _amount The amount of tokens being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` */ function onERC1155Received( address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data ) external returns (bytes4); /** * @notice Handle the receipt of multiple ERC1155 token types * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value WILL result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeBatchTransferFrom` function * @param _from The address which previously owned the token * @param _ids An array containing ids of each token being transferred * @param _amounts An array containing amounts of each token being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` */ function onERC1155BatchReceived( address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data ) external returns (bytes4); /** * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types. * @param interfaceID The ERC-165 interface ID that is queried for support.s * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface. * This function MUST NOT consume more than 5,000 gas. * @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported. */ function supportsInterface(bytes4 interfaceID) external view returns (bool); } // Part: OpenZeppelin/[email protected]/Context /* * @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; } } // Part: OpenZeppelin/[email protected]/SafeMath /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // Part: OpenZeppelin/[email protected]/Ownable /** * @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; } } // File: NFTBoosterVault.sol contract NFTBoosterVault is IERC1155TokenReceiver, Ownable { using SafeMath for uint256; IERC1155 private nft; mapping(address => uint256) private stakedNFT; event Staked(address indexed user, uint256 indexed nftId); event Unstaked(address indexed user, uint256 indexed nftId); constructor(address _nft) public { nft = IERC1155(_nft); } function getNFTAddress() external view returns (address) { return address(nft); } function getStakedNFT(address user) external view returns (uint256) { return stakedNFT[user]; } function stake(uint256 _nftId) external { require(stakedNFT[msg.sender] == 0, "already staked"); stakedNFT[msg.sender] = _nftId; emit Staked(msg.sender, _nftId); nft.safeTransferFrom(msg.sender, address(this), _nftId, 1, ""); } function unstake() external { uint256 nftId = stakedNFT[msg.sender]; require(nftId != 0, "not staked"); stakedNFT[msg.sender] = 0; emit Unstaked(msg.sender, nftId); nft.safeTransferFrom(address(this), msg.sender, nftId, 1, ""); } function claimLockedNFTs( uint256[] calldata _ids, uint256[] calldata _amounts ) external onlyOwner { nft.safeBatchTransferFrom( address(this), msg.sender, _ids, _amounts, "" ); } function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external returns (bytes4) { // Accept only StakeDAO NFT if (msg.sender == address(nft)) { return 0xf23a6e61; } revert("nft not accepted"); } function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external returns (bytes4) { revert("batch transfer not accepted"); } function supportsInterface(bytes4 interfaceID) external view returns (bool) { if (interfaceID == 0x4e2312e0) { return true; } return false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_nft","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"nftId","type":"uint256"}],"name":"Unstaked","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"claimLockedNFTs","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getNFTAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getStakedNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_nftId","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610bba380380610bba8339818101604052602081101561003357600080fd5b505160006100486001600160e01b036100b716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100bb565b3390565b610af0806100ca6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a694fc3a11610071578063a694fc3a146101f0578063b0a1c6831461020d578063b961847814610245578063bc197c811461024d578063f23a6e6114610391578063f2fde38b14610424576100b4565b806301ffc9a7146100b95780632def6620146100f4578063679b0ea6146100fe578063715018a6146101bc5780638da5cb5b146101c45780638f32d59b146101e8575b600080fd5b6100e0600480360360208110156100cf57600080fd5b50356001600160e01b03191661044a565b604080519115158252519081900360200190f35b6100fc610476565b005b6100fc6004803603604081101561011457600080fd5b810190602081018135600160201b81111561012e57600080fd5b82018360208201111561014057600080fd5b803590602001918460208302840111600160201b8311171561016157600080fd5b919390929091602081019035600160201b81111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111600160201b831117156101b157600080fd5b509092509050610587565b6100fc6106d5565b6101cc610778565b604080516001600160a01b039092168252519081900360200190f35b6100e0610787565b6100fc6004803603602081101561020657600080fd5b50356107ab565b6102336004803603602081101561022357600080fd5b50356001600160a01b03166108a5565b60408051918252519081900360200190f35b6101cc6108c0565b610374600480360360a081101561026357600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111600160201b831117156102c957600080fd5b919390929091602081019035600160201b8111156102e657600080fd5b8201836020820111156102f857600080fd5b803590602001918460208302840111600160201b8311171561031957600080fd5b919390929091602081019035600160201b81111561033657600080fd5b82018360208201111561034857600080fd5b803590602001918460018302840111600160201b8311171561036957600080fd5b5090925090506108cf565b604080516001600160e01b03199092168252519081900360200190f35b610374600480360360a08110156103a757600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103e657600080fd5b8201836020820111156103f857600080fd5b803590602001918460018302840111600160201b8311171561041957600080fd5b50909250905061091e565b6100fc6004803603602081101561043a57600080fd5b50356001600160a01b031661098c565b6000630271189760e51b6001600160e01b03198316141561046d57506001610471565b5060005b919050565b33600090815260026020526040902054806104c5576040805162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b604482015290519081900360640190fd5b33600081815260026020526040808220829055518392917f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7591a36001805460408051637921219560e11b815230600482015233602482015260448101859052606481019390935260a06084840152600060a4840181905290516001600160a01b039092169263f242432a9260e4808301939282900301818387803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b5050505050565b61058f610787565b6105e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154604051631759616b60e11b81523060048201818152336024840181905260a06044850190815260a485018990526001600160a01b0390951694632eb2c2d69491928a928a928a928a929091906064810190608481019060c401886020890280828437600083820152601f01601f19169091018581038452868152602090810191508790870280828437600081840152601f19601f8201169050808301925050508481038252600081526020016020019950505050505050505050600060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b5050505050505050565b6106dd610787565b61072e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b031661079c6109f1565b6001600160a01b031614905090565b33600090815260026020526040902054156107fe576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481cdd185ad95960921b604482015290519081900360640190fd5b33600081815260026020526040808220849055518392917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d91a36001805460408051637921219560e11b815233600482015230602482015260448101859052606481019390935260a06084840152600060a4840181905290516001600160a01b039092169263f242432a9260e4808301939282900301818387803b15801561056c57600080fd5b6001600160a01b031660009081526002602052604090205490565b6001546001600160a01b031690565b6040805162461bcd60e51b815260206004820152601b60248201527f6261746368207472616e73666572206e6f7420616363657074656400000000006044820152905160009181900360640190fd5b6001546000906001600160a01b0316331415610942575063f23a6e6160e01b610982565b6040805162461bcd60e51b815260206004820152601060248201526f1b999d081b9bdd081858d8d95c1d195960821b604482015290519081900360640190fd5b9695505050505050565b610994610787565b6109e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6109ee816109f5565b50565b3390565b6001600160a01b038116610a3a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610a966026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582078c1a312e29a429c9c5e1366de3ea8afa51acb6ff6ffdc6f3b8090451892777f64736f6c63430005110032000000000000000000000000dd4f84e4f3cd31d6c91d80122b5a26cb4ae66bd5
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a694fc3a11610071578063a694fc3a146101f0578063b0a1c6831461020d578063b961847814610245578063bc197c811461024d578063f23a6e6114610391578063f2fde38b14610424576100b4565b806301ffc9a7146100b95780632def6620146100f4578063679b0ea6146100fe578063715018a6146101bc5780638da5cb5b146101c45780638f32d59b146101e8575b600080fd5b6100e0600480360360208110156100cf57600080fd5b50356001600160e01b03191661044a565b604080519115158252519081900360200190f35b6100fc610476565b005b6100fc6004803603604081101561011457600080fd5b810190602081018135600160201b81111561012e57600080fd5b82018360208201111561014057600080fd5b803590602001918460208302840111600160201b8311171561016157600080fd5b919390929091602081019035600160201b81111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111600160201b831117156101b157600080fd5b509092509050610587565b6100fc6106d5565b6101cc610778565b604080516001600160a01b039092168252519081900360200190f35b6100e0610787565b6100fc6004803603602081101561020657600080fd5b50356107ab565b6102336004803603602081101561022357600080fd5b50356001600160a01b03166108a5565b60408051918252519081900360200190f35b6101cc6108c0565b610374600480360360a081101561026357600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111600160201b831117156102c957600080fd5b919390929091602081019035600160201b8111156102e657600080fd5b8201836020820111156102f857600080fd5b803590602001918460208302840111600160201b8311171561031957600080fd5b919390929091602081019035600160201b81111561033657600080fd5b82018360208201111561034857600080fd5b803590602001918460018302840111600160201b8311171561036957600080fd5b5090925090506108cf565b604080516001600160e01b03199092168252519081900360200190f35b610374600480360360a08110156103a757600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103e657600080fd5b8201836020820111156103f857600080fd5b803590602001918460018302840111600160201b8311171561041957600080fd5b50909250905061091e565b6100fc6004803603602081101561043a57600080fd5b50356001600160a01b031661098c565b6000630271189760e51b6001600160e01b03198316141561046d57506001610471565b5060005b919050565b33600090815260026020526040902054806104c5576040805162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b604482015290519081900360640190fd5b33600081815260026020526040808220829055518392917f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7591a36001805460408051637921219560e11b815230600482015233602482015260448101859052606481019390935260a06084840152600060a4840181905290516001600160a01b039092169263f242432a9260e4808301939282900301818387803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b5050505050565b61058f610787565b6105e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154604051631759616b60e11b81523060048201818152336024840181905260a06044850190815260a485018990526001600160a01b0390951694632eb2c2d69491928a928a928a928a929091906064810190608481019060c401886020890280828437600083820152601f01601f19169091018581038452868152602090810191508790870280828437600081840152601f19601f8201169050808301925050508481038252600081526020016020019950505050505050505050600060405180830381600087803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b5050505050505050565b6106dd610787565b61072e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b031661079c6109f1565b6001600160a01b031614905090565b33600090815260026020526040902054156107fe576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481cdd185ad95960921b604482015290519081900360640190fd5b33600081815260026020526040808220849055518392917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d91a36001805460408051637921219560e11b815233600482015230602482015260448101859052606481019390935260a06084840152600060a4840181905290516001600160a01b039092169263f242432a9260e4808301939282900301818387803b15801561056c57600080fd5b6001600160a01b031660009081526002602052604090205490565b6001546001600160a01b031690565b6040805162461bcd60e51b815260206004820152601b60248201527f6261746368207472616e73666572206e6f7420616363657074656400000000006044820152905160009181900360640190fd5b6001546000906001600160a01b0316331415610942575063f23a6e6160e01b610982565b6040805162461bcd60e51b815260206004820152601060248201526f1b999d081b9bdd081858d8d95c1d195960821b604482015290519081900360640190fd5b9695505050505050565b610994610787565b6109e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6109ee816109f5565b50565b3390565b6001600160a01b038116610a3a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610a966026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582078c1a312e29a429c9c5e1366de3ea8afa51acb6ff6ffdc6f3b8090451892777f64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dd4f84e4f3cd31d6c91d80122b5a26cb4ae66bd5
-----Decoded View---------------
Arg [0] : _nft (address): 0xDD4f84e4f3cd31d6c91d80122b5a26Cb4ae66BD5
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dd4f84e4f3cd31d6c91d80122b5a26cb4ae66bd5
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.