Source Code
Latest 25 from a total of 45 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Batch Unstaking | 16718984 | 1129 days ago | IN | 0 ETH | 0.00159584 | ||||
| Batch Staking | 16672802 | 1135 days ago | IN | 0 ETH | 0.01306985 | ||||
| Batch Staking | 16672788 | 1135 days ago | IN | 0 ETH | 0.01032823 | ||||
| Batch Unstaking | 16516837 | 1157 days ago | IN | 0 ETH | 0.00223858 | ||||
| Batch Unstaking | 16430838 | 1169 days ago | IN | 0 ETH | 0.00173048 | ||||
| Batch Unstaking | 16281761 | 1190 days ago | IN | 0 ETH | 0.0012349 | ||||
| Batch Staking | 16218223 | 1199 days ago | IN | 0 ETH | 0.00217811 | ||||
| Batch Unstaking | 16045664 | 1223 days ago | IN | 0 ETH | 0.00522663 | ||||
| Batch Unstaking | 16031566 | 1225 days ago | IN | 0 ETH | 0.00144514 | ||||
| Batch Unstaking | 16026135 | 1226 days ago | IN | 0 ETH | 0.00131774 | ||||
| Batch Staking | 16019219 | 1227 days ago | IN | 0 ETH | 0.00249236 | ||||
| Batch Unstaking | 15996334 | 1230 days ago | IN | 0 ETH | 0.00118377 | ||||
| Batch Staking | 15993657 | 1230 days ago | IN | 0 ETH | 0.00457005 | ||||
| Batch Unstaking | 15991227 | 1231 days ago | IN | 0 ETH | 0.0017251 | ||||
| Batch Unstaking | 15988982 | 1231 days ago | IN | 0 ETH | 0.00424903 | ||||
| Batch Unstaking | 15986866 | 1231 days ago | IN | 0 ETH | 0.001415 | ||||
| Batch Unstaking | 15986853 | 1231 days ago | IN | 0 ETH | 0.00118379 | ||||
| Batch Unstaking | 15986844 | 1231 days ago | IN | 0 ETH | 0.00116165 | ||||
| Batch Unstaking | 15986708 | 1231 days ago | IN | 0 ETH | 0.0011305 | ||||
| Batch Staking | 15981215 | 1232 days ago | IN | 0 ETH | 0.00257491 | ||||
| Batch Unstaking | 15979327 | 1232 days ago | IN | 0 ETH | 0.00312722 | ||||
| Batch Staking | 15932653 | 1239 days ago | IN | 0 ETH | 0.00450886 | ||||
| Batch Staking | 15889133 | 1245 days ago | IN | 0 ETH | 0.00294511 | ||||
| Batch Staking | 15881740 | 1246 days ago | IN | 0 ETH | 0.00202925 | ||||
| Batch Staking | 15881679 | 1246 days ago | IN | 0 ETH | 0.00224313 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
RoseInvasionStake
Compiler Version
v0.8.10+commit.fc410830
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.10;
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract RoseInvasionStake is Ownable, ReentrancyGuard, IERC721Receiver {
event Staking(address indexed account, uint256 tokenId);
event Unstaking(address indexed account, uint256 tokenId);
mapping(uint256 => StakingInfo[]) public allStakeInfos;
IERC721 public immutable roseInvasionNFT;
uint256 public minStakingDuration;
mapping(address => uint256) public balances; // users staking token balance
mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
mapping(uint256 => uint256) private _ownedTokensIndex;
struct StakingInfo {
address owner;
uint256 tokenId;
uint256 startTime;
uint256 endTime;
}
constructor (address roseInvasionNFT_) {
roseInvasionNFT = IERC721(roseInvasionNFT_);
minStakingDuration = 1 days;
}
function batchStaking(uint256[] memory tokenIds) external nonReentrant {
for (uint i = 0; i < tokenIds.length; i++) {
staking(tokenIds[i]);
}
}
function batchUnstaking(uint256[] memory tokenIds) external nonReentrant {
for (uint i = 0; i < tokenIds.length; i++) {
unstaking(tokenIds[i]);
}
}
function batchGetLastTokenStakeInfo(uint256[] calldata tokenIds) public view returns(StakingInfo[] memory) {
StakingInfo[] memory infos = new StakingInfo[](tokenIds.length);
for (uint256 i = 0; i < tokenIds.length; i++) {
infos[i] = getLastTokenStakeInfo(tokenIds[i]);
}
return infos;
}
function getLastTokenStakeInfo(uint256 tokenId) public view returns(StakingInfo memory) {
StakingInfo[] memory stakedInfos = allStakeInfos[tokenId];
require(stakedInfos.length > 0, "no history");
return stakedInfos[stakedInfos.length - 1];
}
function getAllTokenStakeInfo(uint256 tokenId) public view returns(StakingInfo[] memory) {
return allStakeInfos[tokenId];
}
function staking(uint256 tokenId) internal {
require(roseInvasionNFT.ownerOf(tokenId) == msg.sender, "only owner");
_staking(msg.sender, tokenId);
}
function unstaking(uint256 tokenId) internal {
require(roseInvasionNFT.ownerOf(tokenId) == address(this), "already unstaked");
StakingInfo storage info = allStakeInfos[tokenId][allStakeInfos[tokenId].length - 1];
require(info.owner == msg.sender && info.owner != address(0) , "only owner");
require(info.endTime == 0, "already unstaked");
require(info.startTime + minStakingDuration < block.timestamp, "min duration");
info.endTime = block.timestamp;
_unstaking(msg.sender, tokenId);
}
function _staking(address account, uint256 tokenId) internal {
roseInvasionNFT.safeTransferFrom(account, address(this), tokenId);
StakingInfo memory info;
info.owner = account;
info.tokenId = tokenId;
info.startTime = block.timestamp;
allStakeInfos[tokenId].push(info);
_addTokenToOwner(account, tokenId);
emit Staking(account, tokenId);
}
function _unstaking(address account, uint256 tokenId) internal {
roseInvasionNFT.safeTransferFrom(address(this), account, tokenId);
_removeTokenFromOwner(account, tokenId);
emit Unstaking(account, tokenId);
}
function setMinStakingDuration(uint256 duration) external onlyOwner {
minStakingDuration = duration;
}
function tokensOfOwner(address account, uint _from, uint _to) public view returns(uint256[] memory) {
require(_to < balances[account], "Wrong max array value");
require((_to - _from) <= balances[account], "Wrong array range");
uint256[] memory tokens = new uint256[](_to - _from + 1);
uint index = 0;
for (uint i = _from; i <= _to; i++) {
tokens[index] = _ownedTokens[account][i];
index++;
}
return (tokens);
}
function _removeTokenFromOwner(address from, uint256 tokenId) private {
uint256 lastTokenIndex = balances[from] - 1;
uint256 tokenIndex = _ownedTokensIndex[tokenId];
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId;
_ownedTokensIndex[lastTokenId] = tokenIndex;
}
delete _ownedTokensIndex[tokenId];
delete _ownedTokens[from][lastTokenIndex];
balances[from]--;
}
function _addTokenToOwner(address to, uint256 tokenId) private {
uint256 length = balances[to];
_ownedTokens[to][length] = tokenId;
_ownedTokensIndex[tokenId] = length;
balances[to]++;
}
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4) {
return IERC721Receiver.onERC721Received.selector;
}
}// 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with 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 Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}// 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 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.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 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() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
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 {
_transferOwnership(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");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}{
"remappings": [],
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "london",
"libraries": {},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"roseInvasionNFT_","type":"address"}],"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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Staking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Unstaking","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"allStakeInfos","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchGetLastTokenStakeInfo","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"internalType":"struct RoseInvasionStake.StakingInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchUnstaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getAllTokenStakeInfo","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"internalType":"struct RoseInvasionStake.StakingInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getLastTokenStakeInfo","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"internalType":"struct RoseInvasionStake.StakingInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roseInvasionNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405161155c38038061155c83398101604081905261002f916100a4565b61003833610054565b600180556001600160a01b0316608052620151806003556100d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100b657600080fd5b81516001600160a01b03811681146100cd57600080fd5b9392505050565b60805161145161010b600039600081816102580152818161090201528181610bc201528181610ca60152610d7f01526114516000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806376e0e6f611610097578063bcf73f6811610066578063bcf73f6814610253578063c0c015901461027a578063c839fe941461028d578063f2fde38b146102ad57600080fd5b806376e0e6f6146101e85780638a2ff9a2146101fb5780638da5cb5b1461020e5780639802a9b31461023357600080fd5b806327e235e3116100d357806327e235e31461018b578063295f21be146101ab57806332384d2c146101cb578063715018a6146101e057600080fd5b806308ae7e54146100fa578063150b7a02146101165780631ce690121461014e575b600080fd5b61010360035481565b6040519081526020015b60405180910390f35b610135610124366004611014565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161010d565b61016161015c3660046110b3565b6102c0565b604080516001600160a01b039095168552602085019390935291830152606082015260800161010d565b6101036101993660046110d5565b60046020526000908152604090205481565b6101be6101b93660046110f9565b610310565b60405161010d919061116e565b6101de6101d93660046111f9565b6103cf565b005b6101de610474565b6101be6101f63660046112b7565b610488565b6101de6102093660046112b7565b610525565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161010d565b6102466102413660046112b7565b610532565b60405161010d91906112d0565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b6101de6102883660046111f9565b610636565b6102a061029b366004611304565b6106ce565b60405161010d9190611339565b6101de6102bb3660046110d5565b610869565b600260205281600052604060002081815481106102dc57600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169450925084565b606060008267ffffffffffffffff81111561032d5761032d6111e3565b60405190808252806020026020018201604052801561036657816020015b610353610fce565b81526020019060019003908161034b5790505b50905060005b838110156103c55761039585858381811061038957610389611371565b90506020020135610532565b8282815181106103a7576103a7611371565b602002602001018190525080806103bd9061139d565b91505061036c565b5090505b92915050565b600260015414156104275760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015560005b815181101561046c5761045a82828151811061044d5761044d611371565b60200260200101516108e2565b806104648161139d565b91505061042f565b505060018055565b61047c610af8565b6104866000610b52565b565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561051a576000848152602090819020604080516080810182526004860290920180546001600160a01b031683526001808201548486015260028201549284019290925260030154606083015290835290920191016104bd565b505050509050919050565b61052d610af8565b600355565b61053a610fce565b600082815260026020908152604080832080548251818502810185019093528083529192909190849084015b828210156105c3576000848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610566565b50505050905060008151116106075760405162461bcd60e51b815260206004820152600a6024820152696e6f20686973746f727960b01b604482015260640161041e565b806001825161061691906113b8565b8151811061062657610626611371565b6020026020010151915050919050565b600260015414156106895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161041e565b600260015560005b815181101561046c576106bc8282815181106106af576106af611371565b6020026020010151610ba2565b806106c68161139d565b915050610691565b6001600160a01b03831660009081526004602052604090205460609082106107305760405162461bcd60e51b815260206004820152601560248201527457726f6e67206d61782061727261792076616c756560581b604482015260640161041e565b6001600160a01b03841660009081526004602052604090205461075384846113b8565b11156107955760405162461bcd60e51b815260206004820152601160248201527057726f6e672061727261792072616e676560781b604482015260640161041e565b60006107a184846113b8565b6107ac9060016113cf565b67ffffffffffffffff8111156107c4576107c46111e3565b6040519080825280602002602001820160405280156107ed578160200160208202803683370190505b5090506000845b84811161085e576001600160a01b0387166000908152600560209081526040808320848452909152902054835184908490811061083357610833611371565b6020908102919091010152816108488161139d565b92505080806108569061139d565b9150506107f4565b509095945050505050565b610871610af8565b6001600160a01b0381166108d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041e565b6108df81610b52565b50565b6040516331a9108f60e11b81526004810182905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d91906113e7565b6001600160a01b0316146109b65760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481d5b9cdd185ad95960821b604482015260640161041e565b600081815260026020526040812080546109d2906001906113b8565b815481106109e2576109e2611371565b6000918252602090912060049091020180549091506001600160a01b031633148015610a17575080546001600160a01b031615155b610a505760405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015260640161041e565b600381015415610a955760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481d5b9cdd185ad95960821b604482015260640161041e565b426003548260020154610aa891906113cf565b10610ae45760405162461bcd60e51b815260206004820152600c60248201526b36b4b710323ab930ba34b7b760a11b604482015260640161041e565b426003820155610af43383610c7a565b5050565b6000546001600160a01b031633146104865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d91906113e7565b6001600160a01b031614610c705760405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015260640161041e565b6108df3382610d53565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e90606401600060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b50505050610d0c8282610ea8565b816001600160a01b03167ff2619dcba9802bb8ec071016f659320c48304701ba220f0420bed16f87139a6682604051610d4791815260200190565b60405180910390a25050565b604051632142170760e11b81526001600160a01b038381166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e90606401600060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b50505050610de3610fce565b6001600160a01b03838116825260208083018481524260408086019182526000878152600280865291812080546001808201835591835295909120875160049096020180546001600160a01b031916959096169490941785559151928401929092559051908201556060820151600390910155610e608383610f73565b826001600160a01b03167fb831f69f1cebc12b23cd864ce5bfea2669d01956050a0147d71d418074559c2183604051610e9b91815260200190565b60405180910390a2505050565b6001600160a01b038216600090815260046020526040812054610ecd906001906113b8565b600083815260066020526040902054909150808214610f20576001600160a01b03841660009081526005602090815260408083208584528252808320548484528184208190558352600690915290208190555b60008381526006602090815260408083208390556001600160a01b038716808452600583528184208685528352818420849055835260049091528120805491610f6883611404565b919050555050505050565b6001600160a01b0382166000818152600460208181526040808420805460058452828620818752845282862088905587865260068452918520829055948452919052825490929091610fc48361139d565b9190505550505050565b604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b6001600160a01b03811681146108df57600080fd5b60008060008060006080868803121561102c57600080fd5b853561103781610fff565b9450602086013561104781610fff565b935060408601359250606086013567ffffffffffffffff8082111561106b57600080fd5b818801915088601f83011261107f57600080fd5b81358181111561108e57600080fd5b8960208285010111156110a057600080fd5b9699959850939650602001949392505050565b600080604083850312156110c657600080fd5b50508035926020909101359150565b6000602082840312156110e757600080fd5b81356110f281610fff565b9392505050565b6000806020838503121561110c57600080fd5b823567ffffffffffffffff8082111561112457600080fd5b818501915085601f83011261113857600080fd5b81358181111561114757600080fd5b8660208260051b850101111561115c57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156111d7576111c483855180516001600160a01b031682526020808201519083015260408082015190830152606090810151910152565b928401926080929092019160010161118a565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561120c57600080fd5b823567ffffffffffffffff8082111561122457600080fd5b818501915085601f83011261123857600080fd5b81358181111561124a5761124a6111e3565b8060051b604051601f19603f8301168101818110858211171561126f5761126f6111e3565b60405291825284820192508381018501918883111561128d57600080fd5b938501935b828510156112ab57843584529385019392850192611292565b98975050505050505050565b6000602082840312156112c957600080fd5b5035919050565b81516001600160a01b03168152602080830151908201526040808301519082015260608083015190820152608081016103c9565b60008060006060848603121561131957600080fd5b833561132481610fff565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156111d757835183529284019291840191600101611355565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156113b1576113b1611387565b5060010190565b6000828210156113ca576113ca611387565b500390565b600082198211156113e2576113e2611387565b500190565b6000602082840312156113f957600080fd5b81516110f281610fff565b60008161141357611413611387565b50600019019056fea2646970667358221220bfc6759a7a350b0ceade926e1d62179a4cf48639fb55a1aa6be5418edfe3953c64736f6c634300080a003300000000000000000000000059485114d8e7791741f76da3f4317b78c8471c32
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806376e0e6f611610097578063bcf73f6811610066578063bcf73f6814610253578063c0c015901461027a578063c839fe941461028d578063f2fde38b146102ad57600080fd5b806376e0e6f6146101e85780638a2ff9a2146101fb5780638da5cb5b1461020e5780639802a9b31461023357600080fd5b806327e235e3116100d357806327e235e31461018b578063295f21be146101ab57806332384d2c146101cb578063715018a6146101e057600080fd5b806308ae7e54146100fa578063150b7a02146101165780631ce690121461014e575b600080fd5b61010360035481565b6040519081526020015b60405180910390f35b610135610124366004611014565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161010d565b61016161015c3660046110b3565b6102c0565b604080516001600160a01b039095168552602085019390935291830152606082015260800161010d565b6101036101993660046110d5565b60046020526000908152604090205481565b6101be6101b93660046110f9565b610310565b60405161010d919061116e565b6101de6101d93660046111f9565b6103cf565b005b6101de610474565b6101be6101f63660046112b7565b610488565b6101de6102093660046112b7565b610525565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161010d565b6102466102413660046112b7565b610532565b60405161010d91906112d0565b61021b7f00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c3281565b6101de6102883660046111f9565b610636565b6102a061029b366004611304565b6106ce565b60405161010d9190611339565b6101de6102bb3660046110d5565b610869565b600260205281600052604060002081815481106102dc57600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169450925084565b606060008267ffffffffffffffff81111561032d5761032d6111e3565b60405190808252806020026020018201604052801561036657816020015b610353610fce565b81526020019060019003908161034b5790505b50905060005b838110156103c55761039585858381811061038957610389611371565b90506020020135610532565b8282815181106103a7576103a7611371565b602002602001018190525080806103bd9061139d565b91505061036c565b5090505b92915050565b600260015414156104275760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015560005b815181101561046c5761045a82828151811061044d5761044d611371565b60200260200101516108e2565b806104648161139d565b91505061042f565b505060018055565b61047c610af8565b6104866000610b52565b565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561051a576000848152602090819020604080516080810182526004860290920180546001600160a01b031683526001808201548486015260028201549284019290925260030154606083015290835290920191016104bd565b505050509050919050565b61052d610af8565b600355565b61053a610fce565b600082815260026020908152604080832080548251818502810185019093528083529192909190849084015b828210156105c3576000848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610566565b50505050905060008151116106075760405162461bcd60e51b815260206004820152600a6024820152696e6f20686973746f727960b01b604482015260640161041e565b806001825161061691906113b8565b8151811061062657610626611371565b6020026020010151915050919050565b600260015414156106895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161041e565b600260015560005b815181101561046c576106bc8282815181106106af576106af611371565b6020026020010151610ba2565b806106c68161139d565b915050610691565b6001600160a01b03831660009081526004602052604090205460609082106107305760405162461bcd60e51b815260206004820152601560248201527457726f6e67206d61782061727261792076616c756560581b604482015260640161041e565b6001600160a01b03841660009081526004602052604090205461075384846113b8565b11156107955760405162461bcd60e51b815260206004820152601160248201527057726f6e672061727261792072616e676560781b604482015260640161041e565b60006107a184846113b8565b6107ac9060016113cf565b67ffffffffffffffff8111156107c4576107c46111e3565b6040519080825280602002602001820160405280156107ed578160200160208202803683370190505b5090506000845b84811161085e576001600160a01b0387166000908152600560209081526040808320848452909152902054835184908490811061083357610833611371565b6020908102919091010152816108488161139d565b92505080806108569061139d565b9150506107f4565b509095945050505050565b610871610af8565b6001600160a01b0381166108d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041e565b6108df81610b52565b50565b6040516331a9108f60e11b81526004810182905230906001600160a01b037f00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c321690636352211e90602401602060405180830381865afa158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d91906113e7565b6001600160a01b0316146109b65760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481d5b9cdd185ad95960821b604482015260640161041e565b600081815260026020526040812080546109d2906001906113b8565b815481106109e2576109e2611371565b6000918252602090912060049091020180549091506001600160a01b031633148015610a17575080546001600160a01b031615155b610a505760405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015260640161041e565b600381015415610a955760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481d5b9cdd185ad95960821b604482015260640161041e565b426003548260020154610aa891906113cf565b10610ae45760405162461bcd60e51b815260206004820152600c60248201526b36b4b710323ab930ba34b7b760a11b604482015260640161041e565b426003820155610af43383610c7a565b5050565b6000546001600160a01b031633146104865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516331a9108f60e11b81526004810182905233906001600160a01b037f00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c321690636352211e90602401602060405180830381865afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d91906113e7565b6001600160a01b031614610c705760405162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015260640161041e565b6108df3382610d53565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390527f00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c3216906342842e0e90606401600060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b50505050610d0c8282610ea8565b816001600160a01b03167ff2619dcba9802bb8ec071016f659320c48304701ba220f0420bed16f87139a6682604051610d4791815260200190565b60405180910390a25050565b604051632142170760e11b81526001600160a01b038381166004830152306024830152604482018390527f00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c3216906342842e0e90606401600060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b50505050610de3610fce565b6001600160a01b03838116825260208083018481524260408086019182526000878152600280865291812080546001808201835591835295909120875160049096020180546001600160a01b031916959096169490941785559151928401929092559051908201556060820151600390910155610e608383610f73565b826001600160a01b03167fb831f69f1cebc12b23cd864ce5bfea2669d01956050a0147d71d418074559c2183604051610e9b91815260200190565b60405180910390a2505050565b6001600160a01b038216600090815260046020526040812054610ecd906001906113b8565b600083815260066020526040902054909150808214610f20576001600160a01b03841660009081526005602090815260408083208584528252808320548484528184208190558352600690915290208190555b60008381526006602090815260408083208390556001600160a01b038716808452600583528184208685528352818420849055835260049091528120805491610f6883611404565b919050555050505050565b6001600160a01b0382166000818152600460208181526040808420805460058452828620818752845282862088905587865260068452918520829055948452919052825490929091610fc48361139d565b9190505550505050565b604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b6001600160a01b03811681146108df57600080fd5b60008060008060006080868803121561102c57600080fd5b853561103781610fff565b9450602086013561104781610fff565b935060408601359250606086013567ffffffffffffffff8082111561106b57600080fd5b818801915088601f83011261107f57600080fd5b81358181111561108e57600080fd5b8960208285010111156110a057600080fd5b9699959850939650602001949392505050565b600080604083850312156110c657600080fd5b50508035926020909101359150565b6000602082840312156110e757600080fd5b81356110f281610fff565b9392505050565b6000806020838503121561110c57600080fd5b823567ffffffffffffffff8082111561112457600080fd5b818501915085601f83011261113857600080fd5b81358181111561114757600080fd5b8660208260051b850101111561115c57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156111d7576111c483855180516001600160a01b031682526020808201519083015260408082015190830152606090810151910152565b928401926080929092019160010161118a565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561120c57600080fd5b823567ffffffffffffffff8082111561122457600080fd5b818501915085601f83011261123857600080fd5b81358181111561124a5761124a6111e3565b8060051b604051601f19603f8301168101818110858211171561126f5761126f6111e3565b60405291825284820192508381018501918883111561128d57600080fd5b938501935b828510156112ab57843584529385019392850192611292565b98975050505050505050565b6000602082840312156112c957600080fd5b5035919050565b81516001600160a01b03168152602080830151908201526040808301519082015260608083015190820152608081016103c9565b60008060006060848603121561131957600080fd5b833561132481610fff565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156111d757835183529284019291840191600101611355565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156113b1576113b1611387565b5060010190565b6000828210156113ca576113ca611387565b500390565b600082198211156113e2576113e2611387565b500190565b6000602082840312156113f957600080fd5b81516110f281610fff565b60008161141357611413611387565b50600019019056fea2646970667358221220bfc6759a7a350b0ceade926e1d62179a4cf48639fb55a1aa6be5418edfe3953c64736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c32
-----Decoded View---------------
Arg [0] : roseInvasionNFT_ (address): 0x59485114D8E7791741f76Da3F4317B78C8471c32
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000059485114d8e7791741f76da3f4317b78c8471c32
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.