More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 350 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 21415746 | 22 days ago | IN | 0 ETH | 0.00121364 | ||||
Claim | 20576115 | 139 days ago | IN | 0 ETH | 0.00010226 | ||||
Withdraw | 20576109 | 139 days ago | IN | 0 ETH | 0.00018061 | ||||
Claim | 20249275 | 185 days ago | IN | 0 ETH | 0.00018738 | ||||
Withdraw | 20015888 | 218 days ago | IN | 0 ETH | 0.00548636 | ||||
Claim | 19818504 | 245 days ago | IN | 0 ETH | 0.00056494 | ||||
Claim | 19697632 | 262 days ago | IN | 0 ETH | 0.00144041 | ||||
Withdraw | 19487269 | 292 days ago | IN | 0 ETH | 0.00257537 | ||||
Withdraw | 18844311 | 382 days ago | IN | 0 ETH | 0.00345189 | ||||
Withdraw | 18834090 | 383 days ago | IN | 0 ETH | 0.00417766 | ||||
Withdraw | 18689737 | 403 days ago | IN | 0 ETH | 0.00992608 | ||||
Withdraw | 18631137 | 412 days ago | IN | 0 ETH | 0.00553958 | ||||
Claim | 18628180 | 412 days ago | IN | 0 ETH | 0.00468461 | ||||
Stake | 18605484 | 415 days ago | IN | 0 ETH | 0.00308314 | ||||
Withdraw | 18600455 | 416 days ago | IN | 0 ETH | 0.00238957 | ||||
Claim | 18600450 | 416 days ago | IN | 0 ETH | 0.00125459 | ||||
Withdraw | 18594324 | 417 days ago | IN | 0 ETH | 0.0030896 | ||||
Claim | 18548847 | 423 days ago | IN | 0 ETH | 0.00309394 | ||||
Claim | 18548799 | 423 days ago | IN | 0 ETH | 0.00134537 | ||||
Withdraw | 18538072 | 425 days ago | IN | 0 ETH | 0.00605988 | ||||
Claim | 18375032 | 448 days ago | IN | 0 ETH | 0.0006587 | ||||
Claim | 18282051 | 461 days ago | IN | 0 ETH | 0.00040998 | ||||
Withdraw | 17939550 | 509 days ago | IN | 0 ETH | 0.00274207 | ||||
Claim | 17849391 | 521 days ago | IN | 0 ETH | 0.00100181 | ||||
Claim | 17701780 | 542 days ago | IN | 0 ETH | 0.00086513 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TheDudesRewarder
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; // ______ __ __ ______ _____ __ __ _____ ______ // /\__ _\/\ \_\ \ /\ ___\ /\ __-. /\ \/\ \ /\ __-. /\ ___\ // \/_/\ \/\ \ __ \\ \ __\ \ \ \/\ \\ \ \_\ \\ \ \/\ \\ \ __\ // \ \_\ \ \_\ \_\\ \_____\ \ \____- \ \_____\\ \____- \ \_____\ // \/_/ \/_/\/_/ \/_____/ \/____/ \/_____/ \/____/ \/_____/ // import "./../core/CoreRewarder.sol"; contract TheDudesRewarder is CoreRewarder { constructor( address targetAddress, address rewardAddress, uint256 rewardRate, uint256 rewardFrequency, uint256 initialReward, uint256 boostRate ) CoreRewarder( targetAddress, rewardAddress, rewardRate, rewardFrequency, initialReward, boostRate ) {} }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; // ______ __ __ ______ _____ __ __ _____ ______ // /\__ _\/\ \_\ \ /\ ___\ /\ __-. /\ \/\ \ /\ __-. /\ ___\ // \/_/\ \/\ \ __ \\ \ __\ \ \ \/\ \\ \ \_\ \\ \ \/\ \\ \ __\ // \ \_\ \ \_\ \_\\ \_____\ \ \____- \ \_____\\ \____- \ \_____\ // \/_/ \/_/\/_/ \/_____/ \/____/ \/_____/ \/____/ \/_____/ // import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "./CoreStaking.sol"; import "./../../common/interfaces/ICoreRewarder.sol"; import "./../../common/interfaces/ICollection.sol"; import "./../../common/interfaces/IINT.sol"; contract CoreRewarder is ICoreRewarder, CoreStaking, Ownable { struct TokenStatus { uint128 lastClaimTime; uint128 pendingReward; } bool public isStakingEnabled; bool public isClaimingEnabled; address public immutable rewardAddress; uint256 public immutable rewardRate; uint256 public immutable rewardFrequency; uint256 public immutable initialReward; uint256 public startTime; uint256 public finishTime; mapping(uint256 => TokenStatus) public tokenStatusses; constructor( address _targetAddress, address _rewardAddress, uint256 _rewardRate, uint256 _rewardFrequency, uint256 _initialReward, uint256 _boostRate ) CoreStaking(_targetAddress, _boostRate) { rewardAddress = _rewardAddress; rewardRate = _rewardRate; rewardFrequency = _rewardFrequency; initialReward = _initialReward; } // OWNER CONTROLS function setStartTime(uint256 _startTime) external onlyOwner { require(startTime == 0, "Start time is already set"); startTime = _startTime; } function start() external onlyOwner { require(startTime == 0, "Start time is already set"); startTime = block.timestamp; } function setFinishTime(uint256 _finishTime) external onlyOwner { finishTime = _finishTime; } function finish() external onlyOwner { finishTime = block.timestamp; } function setIsStakingEnabled(bool _isStakingEnabled) external onlyOwner { isStakingEnabled = _isStakingEnabled; } function setIsClaimingEnabled(bool _isClaimingEnabled) external onlyOwner { isClaimingEnabled = _isClaimingEnabled; } // PUBLIC - CONTROLS function stake(uint256[] calldata tokenIds) external override { require(isStakingEnabled, "Stakig is not enabled"); if (_isRewardingStarted(startTime)) { _updatePendingRewards(msg.sender, tokenIds); } _stake(msg.sender, tokenIds); } function withdraw(uint256[] calldata tokenIds) external override { if (_isRewardingStarted(startTime)) { _updatePendingRewards(msg.sender, tokenIds); } _withdraw(msg.sender, tokenIds); } function claim(uint256[] calldata tokenIds) external override { require(isClaimingEnabled, "Claiming is not enabled"); _claim(msg.sender, tokenIds); } function earned(uint256[] calldata tokenIds) external view override returns (uint256) { if (!_isRewardingStarted(startTime)) { return initialReward * tokenIds.length; } return _earnedRewards(tokenIds); } // PUBLIC - UTILITY function lastClaimTimesOfTokens(uint256[] memory tokenIds) external view override returns (uint256[] memory) { uint256[] memory _lastClaimTimesOfTokens = new uint256[]( tokenIds.length ); for (uint256 i = 0; i < tokenIds.length; i++) { _lastClaimTimesOfTokens[i] = tokenStatusses[tokenIds[i]] .lastClaimTime; } return _lastClaimTimesOfTokens; } function isOwner(address owner, uint256 tokenId) external view override returns (bool) { return _isOwner(owner, tokenId); } function stakedTokensOfOwner(address owner) external view override returns (uint256[] memory) { return _stakedTokensOfOwner[owner]; } function tokensOfOwner(address owner) external view override returns (uint256[] memory) { uint256[] memory tokenIds = ICollection(targetAddress).tokensOfOwner( owner ); uint256[] memory stakedTokensIds = _stakedTokensOfOwner[owner]; uint256[] memory mergedTokenIds = new uint256[]( tokenIds.length + stakedTokensIds.length ); for (uint256 i = 0; i < tokenIds.length; i++) { mergedTokenIds[i] = tokenIds[i]; } for (uint256 i = 0; i < stakedTokensIds.length; i++) { mergedTokenIds[i + tokenIds.length] = stakedTokensIds[i]; } return mergedTokenIds; } // INTERNAL function _claim(address _owner, uint256[] memory _tokenIds) internal { uint256 rewardAmount = _earnedRewards(_tokenIds); _resetPendingRewards(_owner, _tokenIds); require(rewardAmount != 0, "Can't claim 0 rewards"); emit RewardClaimed(_owner, rewardAmount); IINT(rewardAddress).mint(_owner, rewardAmount); } function _updatePendingRewards(address _owner, uint256[] memory _tokenIds) internal { uint256 _startTime = startTime; uint256 _currentTime = _fixedCurrentTime(); for (uint256 i = 0; i < _tokenIds.length; i++) { require( _isOwner(_owner, _tokenIds[i]), "You need to own this token" ); TokenStatus memory status = tokenStatusses[_tokenIds[i]]; status.pendingReward += uint128( _earnedTokenReward(_tokenIds[i], _startTime, _currentTime) ); status.lastClaimTime = uint128(_currentTime); tokenStatusses[_tokenIds[i]] = status; } } function _resetPendingRewards(address _owner, uint256[] memory _tokenIds) internal { uint256 _currentTime = _fixedCurrentTime(); for (uint256 i = 0; i < _tokenIds.length; i++) { require( _isOwner(_owner, _tokenIds[i]), "You need to own this token" ); TokenStatus memory status = tokenStatusses[_tokenIds[i]]; status.pendingReward = 0; status.lastClaimTime = uint128(_currentTime); tokenStatusses[_tokenIds[i]] = status; } } function _earnedRewards(uint256[] memory _tokenIds) internal view returns (uint256) { uint256 _startTime = startTime; uint256 _currentTime = _fixedCurrentTime(); uint256 rewardAmount; for (uint256 i = 0; i < _tokenIds.length; i++) { rewardAmount += _earnedTokenReward( _tokenIds[i], _startTime, _currentTime ); rewardAmount += tokenStatusses[_tokenIds[i]].pendingReward; } return rewardAmount; } function _earnedTokenReward( uint256 _tokenId, uint256 _startTime, uint256 _currentTime ) internal view returns (uint256) { uint256 _lastClaimTimeOfToken = tokenStatusses[_tokenId].lastClaimTime; uint256 fixedLastClaimTimeOfToken = _fixedLastClaimTimeOfToken( _startTime, _lastClaimTimeOfToken ); uint256 multiplier = _stakingMultiplierForToken(_tokenId); uint256 amount = ((_currentTime - fixedLastClaimTimeOfToken) / rewardFrequency) * rewardRate * multiplier * 1e18; if (_lastClaimTimeOfToken == 0) { return amount + initialReward; } return amount; } function _isRewardingStarted(uint256 _startTime) internal view returns (bool) { if (_startTime != 0 && _startTime < block.timestamp) { return true; } return false; } function _fixedLastClaimTimeOfToken( uint256 _startTime, uint256 _lastClaimTimeOfToken ) internal pure returns (uint256) { if (_startTime > _lastClaimTimeOfToken) { return _startTime; } return _lastClaimTimeOfToken; } function _fixedCurrentTime() internal view returns (uint256) { uint256 period = (block.timestamp - startTime) / rewardFrequency; uint256 currentTime = startTime + rewardFrequency * period; if (finishTime != 0 && finishTime < currentTime) { return finishTime; } return currentTime; } function _isOwner(address _owner, uint256 _tokenId) internal view returns (bool) { if (stakedTokenOwners[_tokenId] == _owner) { return true; } return IERC721(targetAddress).ownerOf(_tokenId) == _owner; } // EVENTS event RewardClaimed(address indexed user, uint256 reward); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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 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 { _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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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`, 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: Unlicense pragma solidity ^0.8.0; // ______ __ __ ______ _____ __ __ _____ ______ // /\__ _\/\ \_\ \ /\ ___\ /\ __-. /\ \/\ \ /\ __-. /\ ___\ // \/_/\ \/\ \ __ \\ \ __\ \ \ \/\ \\ \ \_\ \\ \ \/\ \\ \ __\ // \ \_\ \ \_\ \_\\ \_____\ \ \____- \ \_____\\ \____- \ \_____\ // \/_/ \/_/\/_/ \/_____/ \/____/ \/_____/ \/____/ \/_____/ // import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; contract CoreStaking is IERC721Receiver { address public immutable targetAddress; uint256 public immutable boostRate; mapping(address => uint256[]) internal _stakedTokensOfOwner; mapping(uint256 => address) public stakedTokenOwners; constructor(address _targetAddress, uint256 _boostRate) { targetAddress = _targetAddress; boostRate = _boostRate; } // ERC721 Receiever function onERC721Received( address, address, uint256, bytes calldata ) public pure override returns (bytes4) { return this.onERC721Received.selector; } // INTERNAL function _stake(address _owner, uint256[] calldata tokenIds) internal { IERC721 target = IERC721(targetAddress); for (uint256 i = 0; i < tokenIds.length; i++) { uint256 tokenId = tokenIds[i]; stakedTokenOwners[tokenId] = _owner; _stakedTokensOfOwner[_owner].push(tokenId); target.safeTransferFrom(_owner, address(this), tokenId); } emit Staked(_owner, tokenIds); } function _withdraw(address _owner, uint256[] calldata tokenIds) internal { IERC721 target = IERC721(targetAddress); for (uint256 i = 0; i < tokenIds.length; i++) { uint256 tokenId = tokenIds[i]; require( stakedTokenOwners[tokenId] == _owner, "You must own the token." ); stakedTokenOwners[tokenId] = address(0); // Remove tokenId from the user staked tokenId list uint256[] memory newStakedTokensOfOwner = _stakedTokensOfOwner[ _owner ]; for (uint256 q = 0; q < newStakedTokensOfOwner.length; q++) { if (newStakedTokensOfOwner[q] == tokenId) { newStakedTokensOfOwner[q] = newStakedTokensOfOwner[ newStakedTokensOfOwner.length - 1 ]; } } _stakedTokensOfOwner[_owner] = newStakedTokensOfOwner; _stakedTokensOfOwner[_owner].pop(); target.safeTransferFrom(address(this), _owner, tokenId); } emit Withdrawn(_owner, tokenIds); } function _stakingMultiplierForToken(uint256 _tokenId) internal view returns (uint256) { return stakedTokenOwners[_tokenId] != address(0) ? boostRate : 1; } // EVENTS event Staked(address indexed user, uint256[] tokenIds); event Withdrawn(address indexed user, uint256[] tokenIds); }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; // ______ __ __ ______ _____ __ __ _____ ______ // /\__ _\/\ \_\ \ /\ ___\ /\ __-. /\ \/\ \ /\ __-. /\ ___\ // \/_/\ \/\ \ __ \\ \ __\ \ \ \/\ \\ \ \_\ \\ \ \/\ \\ \ __\ // \ \_\ \ \_\ \_\\ \_____\ \ \____- \ \_____\\ \____- \ \_____\ // \/_/ \/_/\/_/ \/_____/ \/____/ \/_____/ \/____/ \/_____/ // interface ICoreRewarder { function stake( uint256[] calldata tokenIds ) external; function withdraw( uint256[] calldata tokenIds ) external; function claim(uint256[] calldata tokenIds) external; function earned(uint256[] memory tokenIds) external view returns (uint256); function lastClaimTimesOfTokens(uint256[] memory tokenIds) external view returns (uint256[] memory); function isOwner(address owner, uint256 tokenId) external view returns (bool); function tokensOfOwner(address _owner) external view returns (uint256[] memory); function stakedTokensOfOwner(address owner) external view returns (uint256[] memory); }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; // ______ __ __ ______ _____ __ __ _____ ______ // /\__ _\/\ \_\ \ /\ ___\ /\ __-. /\ \/\ \ /\ __-. /\ ___\ // \/_/\ \/\ \ __ \\ \ __\ \ \ \/\ \\ \ \_\ \\ \ \/\ \\ \ __\ // \ \_\ \ \_\ \_\\ \_____\ \ \____- \ \_____\\ \____- \ \_____\ // \/_/ \/_/\/_/ \/_____/ \/____/ \/_____/ \/____/ \/_____/ // interface ICollection { function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function tokensOfOwner(address _owner) external view returns (uint256[] memory); }
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; // ______ __ __ ______ _____ __ __ _____ ______ // /\__ _\/\ \_\ \ /\ ___\ /\ __-. /\ \/\ \ /\ __-. /\ ___\ // \/_/\ \/\ \ __ \\ \ __\ \ \ \/\ \\ \ \_\ \\ \ \/\ \\ \ __\ // \ \_\ \ \_\ \_\\ \_____\ \ \____- \ \_____\\ \____- \ \_____\ // \/_/ \/_/\/_/ \/_____/ \/____/ \/_____/ \/____/ \/_____/ // interface IINT { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); function mint(address to, uint256 amount) external; function burnFrom(address account, uint256 amount) external; }
// 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 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 (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 `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"targetAddress","type":"address"},{"internalType":"address","name":"rewardAddress","type":"address"},{"internalType":"uint256","name":"rewardRate","type":"uint256"},{"internalType":"uint256","name":"rewardFrequency","type":"uint256"},{"internalType":"uint256","name":"initialReward","type":"uint256"},{"internalType":"uint256","name":"boostRate","type":"uint256"}],"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":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"boostRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finish","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finishTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isClaimingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lastClaimTimesOfTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","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":"rewardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_finishTime","type":"uint256"}],"name":"setFinishTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isClaimingEnabled","type":"bool"}],"name":"setIsClaimingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isStakingEnabled","type":"bool"}],"name":"setIsStakingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"setStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokenOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"stakedTokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenStatusses","outputs":[{"internalType":"uint128","name":"lastClaimTime","type":"uint128"},{"internalType":"uint128","name":"pendingReward","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"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"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101406040523480156200001257600080fd5b506040516200237738038062002377833981016040819052620000359162000109565b6001600160601b0319606087901b1660805260a0819052858585858585620000666200006062000096565b6200009a565b5060609390931b6001600160601b03191660c05260e0919091526101005261012052506200016595505050505050565b3390565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200010457600080fd5b919050565b60008060008060008060c0878903121562000122578182fd5b6200012d87620000ec565b95506200013d60208801620000ec565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160601c60a05160c05160601c60e05161010051610120516121686200020f600039600081816106e001528181610bf4015261182b0152600081816104d7015281816116cf0152818161171001526117c601526000818161089d01526117a5015260008181610b6801526112400152600081816105ff01526119e6015260008181610752015281816108eb01528181610fa001528181611302015261161f01526121686000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b0a47ee11610104578063abee967c116100a2578063e29a937011610071578063e29a937014610396578063e327a6af146103ab578063e6cf1657146103be578063f2fde38b146103c6576101da565b8063abee967c1461036b578063b341468b14610373578063be9a655514610386578063d56b28891461038e576101da565b80638b3d81b3116100de5780638b3d81b3146103355780638cf57cb9146103485780638da5cb5b14610350578063983d95ce14610358576101da565b80637b0a47ee146102f95780637d3b5cad146103015780638462151c14610322576101da565b80634947c8d01161017c5780635958611e1161014b5780635958611e146102ce5780636ba4c138146102d6578063715018a6146102e957806378e97925146102f1576101da565b80634947c8d0146102805780634d62f590146102935780635210eb56146102a65780635887e325146102bb576101da565b80631d58e1dd116101b85780631d58e1dd146102305780632806fb49146102455780632e9564e4146102655780633e0a322d1461026d576101da565b80630fbf0a93146101df578063150b7a02146101f457806318efa42c1461021d575b600080fd5b6101f26101ed366004611b68565b6103d9565b005b610207610202366004611aa3565b610467565b6040516102149190611e02565b60405180910390f35b6101f261022b366004611cf0565b610478565b6102386104d5565b6040516102149190611fe6565b610258610253366004611bd7565b6104f9565b6040516102149190611db3565b6102386105fd565b6101f261027b366004611d10565b610621565b6101f261028e366004611d10565b610685565b6102386102a1366004611b68565b6106c9565b6102ae610750565b6040516102149190611d28565b6102586102c9366004611a6b565b610774565b6102386107de565b6101f26102e4366004611b68565b6107e4565b6101f261084a565b610238610895565b61023861089b565b61031461030f366004611d10565b6108bf565b604051610214929190611fcc565b610258610330366004611a6b565b6108e5565b6102ae610343366004611d10565b610b4b565b6102ae610b66565b6102ae610b8a565b6101f2610366366004611b68565b610b9a565b610238610bf2565b6101f2610381366004611cf0565b610c16565b6101f2610c73565b6101f2610cd8565b61039e610d1d565b6040516102149190611df7565b61039e6103b9366004611b3d565b610d2d565b61039e610d39565b6101f26103d4366004611a6b565b610d49565b600254600160a01b900460ff1661040b5760405162461bcd60e51b815260040161040290611ec3565b60405180910390fd5b610416600354610dba565b156104585761045833838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ddf92505050565b610463338383610f9e565b5050565b630a85bd0160e11b95945050505050565b6104806110f6565b6001600160a01b0316610491610b8a565b6001600160a01b0316146104b75760405162461bcd60e51b815260040161040290611f29565b60028054911515600160a81b0260ff60a81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606000825167ffffffffffffffff81111561052557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561054e578160200160208202803683370190505b50905060005b83518110156105f4576005600085838151811061058157634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060000160009054906101000a90046001600160801b03166001600160801b03168282815181106105d757634e487b7160e01b600052603260045260246000fd5b6020908102919091010152806105ec816120d6565b915050610554565b5090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106296110f6565b6001600160a01b031661063a610b8a565b6001600160a01b0316146106605760405162461bcd60e51b815260040161040290611f29565b600354156106805760405162461bcd60e51b815260040161040290611ef2565b600355565b61068d6110f6565b6001600160a01b031661069e610b8a565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161040290611f29565b600455565b60006106d6600354610dba565b61070b57610704827f00000000000000000000000000000000000000000000000000000000000000006120a0565b905061074a565b6107478383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506110fa92505050565b90505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038116600090815260208181526040918290208054835181840281018401909452808452606093928301828280156107d257602002820191906000526020600020905b8154815260200190600101908083116107be575b50505050509050919050565b60045481565b600254600160a81b900460ff1661080d5760405162461bcd60e51b815260040161040290611e5d565b610463338383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111b492505050565b6108526110f6565b6001600160a01b0316610863610b8a565b6001600160a01b0316146108895760405162461bcd60e51b815260040161040290611f29565b61089360006112ae565b565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6005602052600090815260409020546001600160801b0380821691600160801b90041682565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638462151c846040518263ffffffff1660e01b81526004016109359190611d28565b60006040518083038186803b15801561094d57600080fd5b505afa158015610961573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109899190810190611c6c565b6001600160a01b038416600090815260208181526040808320805482518185028101850190935280835294955092939092918301828280156109ea57602002820191906000526020600020905b8154815260200190600101908083116109d6575b50505050509050600081518351610a019190612068565b67ffffffffffffffff811115610a2757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a50578160200160208202803683370190505b50905060005b8351811015610ac457838181518110610a7f57634e487b7160e01b600052603260045260246000fd5b6020026020010151828281518110610aa757634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610abc816120d6565b915050610a56565b5060005b8251811015610b4257828181518110610af157634e487b7160e01b600052603260045260246000fd5b602002602001015182855183610b079190612068565b81518110610b2557634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610b3a816120d6565b915050610ac8565b50949350505050565b6001602052600090815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b03165b90565b610ba5600354610dba565b15610be757610be733838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ddf92505050565b610463338383611300565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c1e6110f6565b6001600160a01b0316610c2f610b8a565b6001600160a01b031614610c555760405162461bcd60e51b815260040161040290611f29565b60028054911515600160a01b0260ff60a01b19909216919091179055565b610c7b6110f6565b6001600160a01b0316610c8c610b8a565b6001600160a01b031614610cb25760405162461bcd60e51b815260040161040290611f29565b60035415610cd25760405162461bcd60e51b815260040161040290611ef2565b42600355565b610ce06110f6565b6001600160a01b0316610cf1610b8a565b6001600160a01b031614610d175760405162461bcd60e51b815260040161040290611f29565b42600455565b600254600160a01b900460ff1681565b600061074783836115e9565b600254600160a81b900460ff1681565b610d516110f6565b6001600160a01b0316610d62610b8a565b6001600160a01b031614610d885760405162461bcd60e51b815260040161040290611f29565b6001600160a01b038116610dae5760405162461bcd60e51b815260040161040290611e17565b610db7816112ae565b50565b60008115801590610dca57504282105b15610dd7575060016105f8565b506000919050565b6003546000610dec6116ca565b905060005b8351811015610f9757610e2b85858381518110610e1e57634e487b7160e01b600052603260045260246000fd5b60200260200101516115e9565b610e475760405162461bcd60e51b815260040161040290611f5e565b600060056000868481518110610e6d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528181019290925260409081016000208151808301909252546001600160801b038082168352600160801b90910416918101919091528551909150610ee890869084908110610ed957634e487b7160e01b600052603260045260246000fd5b6020026020010151858561176e565b81602001818151610ef9919061203d565b6001600160801b03908116909152841682525084518190600590600090889086908110610f3657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252818101929092526040016000208251815493909201516001600160801b03908116600160801b029281166001600160801b0319909416939093179092161790555080610f8f816120d6565b915050610df1565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060005b828110156110ac576000848483818110610fec57634e487b7160e01b600052603260045260246000fd5b6020908102929092013560008181526001808552604080832080546001600160a01b0319166001600160a01b038e81169182179092558452838752818420805493840181558452959092200182905551632142170760e11b8152909350918516916342842e0e915061106690899030908690600401611d3c565b600060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050505080806110a4906120d6565b915050610fc2565b50836001600160a01b03167f134b166c6094cc1ccbf1e3353ce5c3cd9fd29869051bdb999895854d77cc5ef684846040516110e8929190611d79565b60405180910390a250505050565b3390565b600354600090816111096116ca565b90506000805b8551811015610b425761113b868281518110610ed957634e487b7160e01b600052603260045260246000fd5b6111459083612068565b91506005600087838151811061116b57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252810191909152604001600020546111a090600160801b90046001600160801b031683612068565b9150806111ac816120d6565b91505061110f565b60006111bf826110fa565b90506111cb8383611868565b806111e85760405162461bcd60e51b815260040161040290611e94565b826001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516112219190611fe6565b60405180910390a26040516340c10f1960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906112779086908590600401611d60565b600060405180830381600087803b15801561129157600080fd5b505af11580156112a5573d6000803e3d6000fd5b50505050505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000060005b828110156115ad57600084848381811061134e57634e487b7160e01b600052603260045260246000fd5b6020908102929092013560008181526001909352604090922054919250506001600160a01b038781169116146113965760405162461bcd60e51b815260040161040290611f95565b600081815260016020908152604080832080546001600160a01b03191690556001600160a01b03891683528282528083208054825181850281018501909352808352919290919083018282801561140c57602002820191906000526020600020905b8154815260200190600101908083116113f8575b5050505050905060005b81518110156114c2578282828151811061144057634e487b7160e01b600052603260045260246000fd5b602002602001015114156114b057816001835161145d91906120bf565b8151811061147b57634e487b7160e01b600052603260045260246000fd5b60200260200101518282815181106114a357634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b806114ba816120d6565b915050611416565b506001600160a01b03871660009081526020818152604090912082516114ea92840190611a0b565b506001600160a01b038716600090815260208190526040902080548061152057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055836001600160a01b03166342842e0e3089856040518463ffffffff1660e01b815260040161156693929190611d3c565b600060405180830381600087803b15801561158057600080fd5b505af1158015611594573d6000803e3d6000fd5b50505050505080806115a5906120d6565b915050611324565b50836001600160a01b03167ff35c46796392b0deae18b1c5ac3cc50df76b67ef9bcf256df595a3607aab625884846040516110e8929190611d79565b6000818152600160205260408120546001600160a01b03848116911614156116135750600161074a565b826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e846040518263ffffffff1660e01b81526004016116699190611fe6565b60206040518083038186803b15801561168157600080fd5b505afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b99190611a87565b6001600160a01b0316149392505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000600354426116fc91906120bf565b6117069190612080565b90506000611734827f00000000000000000000000000000000000000000000000000000000000000006120a0565b6003546117419190612068565b9050600454600014158015611757575080600454105b156117685760045492505050610b97565b91505090565b6000838152600560205260408120546001600160801b03168161179185836119aa565b9050600061179e876119c1565b90506000817f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006117ef868a6120bf565b6117f99190612080565b61180391906120a0565b61180d91906120a0565b61181f90670de0b6b3a76400006120a0565b90508361185b576118507f000000000000000000000000000000000000000000000000000000000000000082612068565b945050505050611861565b93505050505b9392505050565b60006118726116ca565b905060005b82518110156119a4576118a484848381518110610e1e57634e487b7160e01b600052603260045260246000fd5b6118c05760405162461bcd60e51b815260040161040290611f5e565b6000600560008584815181106118e657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252908101919091526040805180820190915260009181018290526001600160801b03851681528551909250829160059187908690811061194357634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252818101929092526040016000208251815493909201516001600160801b03908116600160801b029281166001600160801b031990941693909317909216179055508061199c816120d6565b915050611877565b50505050565b6000818311156119bb57508161074a565b50919050565b6000818152600160205260408120546001600160a01b03166119e457600161074a565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b828054828255906000526020600020908101928215611a46579160200282015b82811115611a46578251825591602001919060010190611a2b565b50611a52929150611a56565b5090565b5b80821115611a525760008155600101611a57565b600060208284031215611a7c578081fd5b81356118618161211d565b600060208284031215611a98578081fd5b81516118618161211d565b600080600080600060808688031215611aba578081fd5b8535611ac58161211d565b94506020860135611ad58161211d565b935060408601359250606086013567ffffffffffffffff80821115611af8578283fd5b818801915088601f830112611b0b578283fd5b813581811115611b19578384fd5b896020828501011115611b2a578384fd5b9699959850939650602001949392505050565b60008060408385031215611b4f578182fd5b8235611b5a8161211d565b946020939093013593505050565b60008060208385031215611b7a578182fd5b823567ffffffffffffffff80821115611b91578384fd5b818501915085601f830112611ba4578384fd5b813581811115611bb2578485fd5b8660208083028501011115611bc5578485fd5b60209290920196919550909350505050565b60006020808385031215611be9578182fd5b823567ffffffffffffffff811115611bff578283fd5b8301601f81018513611c0f578283fd5b8035611c22611c1d82612019565b611fef565b8181528381019083850185840285018601891015611c3e578687fd5b8694505b83851015611c60578035835260019490940193918501918501611c42565b50979650505050505050565b60006020808385031215611c7e578182fd5b825167ffffffffffffffff811115611c94578283fd5b8301601f81018513611ca4578283fd5b8051611cb2611c1d82612019565b8181528381019083850185840285018601891015611cce578687fd5b8694505b83851015611c60578051835260019490940193918501918501611cd2565b600060208284031215611d01578081fd5b81358015158114611861578182fd5b600060208284031215611d21578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252810182905260006001600160fb1b03831115611d98578081fd5b60208302808560408501379190910160400190815292915050565b6020808252825182820181905260009190848201906040850190845b81811015611deb57835183529284019291840191600101611dcf565b50909695505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526017908201527f436c61696d696e67206973206e6f7420656e61626c6564000000000000000000604082015260600190565b60208082526015908201527443616e277420636c61696d2030207265776172647360581b604082015260600190565b60208082526015908201527414dd185ada59c81a5cc81b9bdd08195b98589b1959605a1b604082015260600190565b60208082526019908201527f53746172742074696d6520697320616c72656164792073657400000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f596f75206e65656420746f206f776e207468697320746f6b656e000000000000604082015260600190565b60208082526017908201527f596f75206d757374206f776e2074686520746f6b656e2e000000000000000000604082015260600190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561201157612011612107565b604052919050565b600067ffffffffffffffff82111561203357612033612107565b5060209081020190565b60006001600160801b0380831681851680830382111561205f5761205f6120f1565b01949350505050565b6000821982111561207b5761207b6120f1565b500190565b60008261209b57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156120ba576120ba6120f1565b500290565b6000828210156120d1576120d16120f1565b500390565b60006000198214156120ea576120ea6120f1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610db757600080fdfea2646970667358221220d3a5c2a837a64ed8c913a831cec304ae3f92a005ecde35b38c95c20bf4339c1964736f6c63430008000033000000000000000000000000b0cf7da8dc482997525be8488b9cad4f44315422000000000000000000000000f011dac919a751dff6343553aa031b9f8e95300f000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000002
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b0a47ee11610104578063abee967c116100a2578063e29a937011610071578063e29a937014610396578063e327a6af146103ab578063e6cf1657146103be578063f2fde38b146103c6576101da565b8063abee967c1461036b578063b341468b14610373578063be9a655514610386578063d56b28891461038e576101da565b80638b3d81b3116100de5780638b3d81b3146103355780638cf57cb9146103485780638da5cb5b14610350578063983d95ce14610358576101da565b80637b0a47ee146102f95780637d3b5cad146103015780638462151c14610322576101da565b80634947c8d01161017c5780635958611e1161014b5780635958611e146102ce5780636ba4c138146102d6578063715018a6146102e957806378e97925146102f1576101da565b80634947c8d0146102805780634d62f590146102935780635210eb56146102a65780635887e325146102bb576101da565b80631d58e1dd116101b85780631d58e1dd146102305780632806fb49146102455780632e9564e4146102655780633e0a322d1461026d576101da565b80630fbf0a93146101df578063150b7a02146101f457806318efa42c1461021d575b600080fd5b6101f26101ed366004611b68565b6103d9565b005b610207610202366004611aa3565b610467565b6040516102149190611e02565b60405180910390f35b6101f261022b366004611cf0565b610478565b6102386104d5565b6040516102149190611fe6565b610258610253366004611bd7565b6104f9565b6040516102149190611db3565b6102386105fd565b6101f261027b366004611d10565b610621565b6101f261028e366004611d10565b610685565b6102386102a1366004611b68565b6106c9565b6102ae610750565b6040516102149190611d28565b6102586102c9366004611a6b565b610774565b6102386107de565b6101f26102e4366004611b68565b6107e4565b6101f261084a565b610238610895565b61023861089b565b61031461030f366004611d10565b6108bf565b604051610214929190611fcc565b610258610330366004611a6b565b6108e5565b6102ae610343366004611d10565b610b4b565b6102ae610b66565b6102ae610b8a565b6101f2610366366004611b68565b610b9a565b610238610bf2565b6101f2610381366004611cf0565b610c16565b6101f2610c73565b6101f2610cd8565b61039e610d1d565b6040516102149190611df7565b61039e6103b9366004611b3d565b610d2d565b61039e610d39565b6101f26103d4366004611a6b565b610d49565b600254600160a01b900460ff1661040b5760405162461bcd60e51b815260040161040290611ec3565b60405180910390fd5b610416600354610dba565b156104585761045833838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ddf92505050565b610463338383610f9e565b5050565b630a85bd0160e11b95945050505050565b6104806110f6565b6001600160a01b0316610491610b8a565b6001600160a01b0316146104b75760405162461bcd60e51b815260040161040290611f29565b60028054911515600160a81b0260ff60a81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000001518081565b60606000825167ffffffffffffffff81111561052557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561054e578160200160208202803683370190505b50905060005b83518110156105f4576005600085838151811061058157634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060000160009054906101000a90046001600160801b03166001600160801b03168282815181106105d757634e487b7160e01b600052603260045260246000fd5b6020908102919091010152806105ec816120d6565b915050610554565b5090505b919050565b7f000000000000000000000000000000000000000000000000000000000000000281565b6106296110f6565b6001600160a01b031661063a610b8a565b6001600160a01b0316146106605760405162461bcd60e51b815260040161040290611f29565b600354156106805760405162461bcd60e51b815260040161040290611ef2565b600355565b61068d6110f6565b6001600160a01b031661069e610b8a565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161040290611f29565b600455565b60006106d6600354610dba565b61070b57610704827f000000000000000000000000000000000000000000000008ac7230489e8000006120a0565b905061074a565b6107478383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506110fa92505050565b90505b92915050565b7f000000000000000000000000b0cf7da8dc482997525be8488b9cad4f4431542281565b6001600160a01b038116600090815260208181526040918290208054835181840281018401909452808452606093928301828280156107d257602002820191906000526020600020905b8154815260200190600101908083116107be575b50505050509050919050565b60045481565b600254600160a81b900460ff1661080d5760405162461bcd60e51b815260040161040290611e5d565b610463338383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111b492505050565b6108526110f6565b6001600160a01b0316610863610b8a565b6001600160a01b0316146108895760405162461bcd60e51b815260040161040290611f29565b61089360006112ae565b565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000a81565b6005602052600090815260409020546001600160801b0380821691600160801b90041682565b606060007f000000000000000000000000b0cf7da8dc482997525be8488b9cad4f443154226001600160a01b0316638462151c846040518263ffffffff1660e01b81526004016109359190611d28565b60006040518083038186803b15801561094d57600080fd5b505afa158015610961573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109899190810190611c6c565b6001600160a01b038416600090815260208181526040808320805482518185028101850190935280835294955092939092918301828280156109ea57602002820191906000526020600020905b8154815260200190600101908083116109d6575b50505050509050600081518351610a019190612068565b67ffffffffffffffff811115610a2757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a50578160200160208202803683370190505b50905060005b8351811015610ac457838181518110610a7f57634e487b7160e01b600052603260045260246000fd5b6020026020010151828281518110610aa757634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610abc816120d6565b915050610a56565b5060005b8251811015610b4257828181518110610af157634e487b7160e01b600052603260045260246000fd5b602002602001015182855183610b079190612068565b81518110610b2557634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610b3a816120d6565b915050610ac8565b50949350505050565b6001602052600090815260409020546001600160a01b031681565b7f000000000000000000000000f011dac919a751dff6343553aa031b9f8e95300f81565b6002546001600160a01b03165b90565b610ba5600354610dba565b15610be757610be733838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ddf92505050565b610463338383611300565b7f000000000000000000000000000000000000000000000008ac7230489e80000081565b610c1e6110f6565b6001600160a01b0316610c2f610b8a565b6001600160a01b031614610c555760405162461bcd60e51b815260040161040290611f29565b60028054911515600160a01b0260ff60a01b19909216919091179055565b610c7b6110f6565b6001600160a01b0316610c8c610b8a565b6001600160a01b031614610cb25760405162461bcd60e51b815260040161040290611f29565b60035415610cd25760405162461bcd60e51b815260040161040290611ef2565b42600355565b610ce06110f6565b6001600160a01b0316610cf1610b8a565b6001600160a01b031614610d175760405162461bcd60e51b815260040161040290611f29565b42600455565b600254600160a01b900460ff1681565b600061074783836115e9565b600254600160a81b900460ff1681565b610d516110f6565b6001600160a01b0316610d62610b8a565b6001600160a01b031614610d885760405162461bcd60e51b815260040161040290611f29565b6001600160a01b038116610dae5760405162461bcd60e51b815260040161040290611e17565b610db7816112ae565b50565b60008115801590610dca57504282105b15610dd7575060016105f8565b506000919050565b6003546000610dec6116ca565b905060005b8351811015610f9757610e2b85858381518110610e1e57634e487b7160e01b600052603260045260246000fd5b60200260200101516115e9565b610e475760405162461bcd60e51b815260040161040290611f5e565b600060056000868481518110610e6d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528181019290925260409081016000208151808301909252546001600160801b038082168352600160801b90910416918101919091528551909150610ee890869084908110610ed957634e487b7160e01b600052603260045260246000fd5b6020026020010151858561176e565b81602001818151610ef9919061203d565b6001600160801b03908116909152841682525084518190600590600090889086908110610f3657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252818101929092526040016000208251815493909201516001600160801b03908116600160801b029281166001600160801b0319909416939093179092161790555080610f8f816120d6565b915050610df1565b5050505050565b7f000000000000000000000000b0cf7da8dc482997525be8488b9cad4f4431542260005b828110156110ac576000848483818110610fec57634e487b7160e01b600052603260045260246000fd5b6020908102929092013560008181526001808552604080832080546001600160a01b0319166001600160a01b038e81169182179092558452838752818420805493840181558452959092200182905551632142170760e11b8152909350918516916342842e0e915061106690899030908690600401611d3c565b600060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050505080806110a4906120d6565b915050610fc2565b50836001600160a01b03167f134b166c6094cc1ccbf1e3353ce5c3cd9fd29869051bdb999895854d77cc5ef684846040516110e8929190611d79565b60405180910390a250505050565b3390565b600354600090816111096116ca565b90506000805b8551811015610b425761113b868281518110610ed957634e487b7160e01b600052603260045260246000fd5b6111459083612068565b91506005600087838151811061116b57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252810191909152604001600020546111a090600160801b90046001600160801b031683612068565b9150806111ac816120d6565b91505061110f565b60006111bf826110fa565b90506111cb8383611868565b806111e85760405162461bcd60e51b815260040161040290611e94565b826001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516112219190611fe6565b60405180910390a26040516340c10f1960e01b81526001600160a01b037f000000000000000000000000f011dac919a751dff6343553aa031b9f8e95300f16906340c10f19906112779086908590600401611d60565b600060405180830381600087803b15801561129157600080fd5b505af11580156112a5573d6000803e3d6000fd5b50505050505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000b0cf7da8dc482997525be8488b9cad4f4431542260005b828110156115ad57600084848381811061134e57634e487b7160e01b600052603260045260246000fd5b6020908102929092013560008181526001909352604090922054919250506001600160a01b038781169116146113965760405162461bcd60e51b815260040161040290611f95565b600081815260016020908152604080832080546001600160a01b03191690556001600160a01b03891683528282528083208054825181850281018501909352808352919290919083018282801561140c57602002820191906000526020600020905b8154815260200190600101908083116113f8575b5050505050905060005b81518110156114c2578282828151811061144057634e487b7160e01b600052603260045260246000fd5b602002602001015114156114b057816001835161145d91906120bf565b8151811061147b57634e487b7160e01b600052603260045260246000fd5b60200260200101518282815181106114a357634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b806114ba816120d6565b915050611416565b506001600160a01b03871660009081526020818152604090912082516114ea92840190611a0b565b506001600160a01b038716600090815260208190526040902080548061152057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055836001600160a01b03166342842e0e3089856040518463ffffffff1660e01b815260040161156693929190611d3c565b600060405180830381600087803b15801561158057600080fd5b505af1158015611594573d6000803e3d6000fd5b50505050505080806115a5906120d6565b915050611324565b50836001600160a01b03167ff35c46796392b0deae18b1c5ac3cc50df76b67ef9bcf256df595a3607aab625884846040516110e8929190611d79565b6000818152600160205260408120546001600160a01b03848116911614156116135750600161074a565b826001600160a01b03167f000000000000000000000000b0cf7da8dc482997525be8488b9cad4f443154226001600160a01b0316636352211e846040518263ffffffff1660e01b81526004016116699190611fe6565b60206040518083038186803b15801561168157600080fd5b505afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b99190611a87565b6001600160a01b0316149392505050565b6000807f0000000000000000000000000000000000000000000000000000000000015180600354426116fc91906120bf565b6117069190612080565b90506000611734827f00000000000000000000000000000000000000000000000000000000000151806120a0565b6003546117419190612068565b9050600454600014158015611757575080600454105b156117685760045492505050610b97565b91505090565b6000838152600560205260408120546001600160801b03168161179185836119aa565b9050600061179e876119c1565b90506000817f000000000000000000000000000000000000000000000000000000000000000a7f00000000000000000000000000000000000000000000000000000000000151806117ef868a6120bf565b6117f99190612080565b61180391906120a0565b61180d91906120a0565b61181f90670de0b6b3a76400006120a0565b90508361185b576118507f000000000000000000000000000000000000000000000008ac7230489e80000082612068565b945050505050611861565b93505050505b9392505050565b60006118726116ca565b905060005b82518110156119a4576118a484848381518110610e1e57634e487b7160e01b600052603260045260246000fd5b6118c05760405162461bcd60e51b815260040161040290611f5e565b6000600560008584815181106118e657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252908101919091526040805180820190915260009181018290526001600160801b03851681528551909250829160059187908690811061194357634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518252818101929092526040016000208251815493909201516001600160801b03908116600160801b029281166001600160801b031990941693909317909216179055508061199c816120d6565b915050611877565b50505050565b6000818311156119bb57508161074a565b50919050565b6000818152600160205260408120546001600160a01b03166119e457600161074a565b7f000000000000000000000000000000000000000000000000000000000000000292915050565b828054828255906000526020600020908101928215611a46579160200282015b82811115611a46578251825591602001919060010190611a2b565b50611a52929150611a56565b5090565b5b80821115611a525760008155600101611a57565b600060208284031215611a7c578081fd5b81356118618161211d565b600060208284031215611a98578081fd5b81516118618161211d565b600080600080600060808688031215611aba578081fd5b8535611ac58161211d565b94506020860135611ad58161211d565b935060408601359250606086013567ffffffffffffffff80821115611af8578283fd5b818801915088601f830112611b0b578283fd5b813581811115611b19578384fd5b896020828501011115611b2a578384fd5b9699959850939650602001949392505050565b60008060408385031215611b4f578182fd5b8235611b5a8161211d565b946020939093013593505050565b60008060208385031215611b7a578182fd5b823567ffffffffffffffff80821115611b91578384fd5b818501915085601f830112611ba4578384fd5b813581811115611bb2578485fd5b8660208083028501011115611bc5578485fd5b60209290920196919550909350505050565b60006020808385031215611be9578182fd5b823567ffffffffffffffff811115611bff578283fd5b8301601f81018513611c0f578283fd5b8035611c22611c1d82612019565b611fef565b8181528381019083850185840285018601891015611c3e578687fd5b8694505b83851015611c60578035835260019490940193918501918501611c42565b50979650505050505050565b60006020808385031215611c7e578182fd5b825167ffffffffffffffff811115611c94578283fd5b8301601f81018513611ca4578283fd5b8051611cb2611c1d82612019565b8181528381019083850185840285018601891015611cce578687fd5b8694505b83851015611c60578051835260019490940193918501918501611cd2565b600060208284031215611d01578081fd5b81358015158114611861578182fd5b600060208284031215611d21578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252810182905260006001600160fb1b03831115611d98578081fd5b60208302808560408501379190910160400190815292915050565b6020808252825182820181905260009190848201906040850190845b81811015611deb57835183529284019291840191600101611dcf565b50909695505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526017908201527f436c61696d696e67206973206e6f7420656e61626c6564000000000000000000604082015260600190565b60208082526015908201527443616e277420636c61696d2030207265776172647360581b604082015260600190565b60208082526015908201527414dd185ada59c81a5cc81b9bdd08195b98589b1959605a1b604082015260600190565b60208082526019908201527f53746172742074696d6520697320616c72656164792073657400000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f596f75206e65656420746f206f776e207468697320746f6b656e000000000000604082015260600190565b60208082526017908201527f596f75206d757374206f776e2074686520746f6b656e2e000000000000000000604082015260600190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561201157612011612107565b604052919050565b600067ffffffffffffffff82111561203357612033612107565b5060209081020190565b60006001600160801b0380831681851680830382111561205f5761205f6120f1565b01949350505050565b6000821982111561207b5761207b6120f1565b500190565b60008261209b57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156120ba576120ba6120f1565b500290565b6000828210156120d1576120d16120f1565b500390565b60006000198214156120ea576120ea6120f1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610db757600080fdfea2646970667358221220d3a5c2a837a64ed8c913a831cec304ae3f92a005ecde35b38c95c20bf4339c1964736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b0cf7da8dc482997525be8488b9cad4f44315422000000000000000000000000f011dac919a751dff6343553aa031b9f8e95300f000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000002
-----Decoded View---------------
Arg [0] : targetAddress (address): 0xB0cf7Da8dc482997525BE8488B9caD4F44315422
Arg [1] : rewardAddress (address): 0xf011DaC919a751dfF6343553aA031B9f8E95300F
Arg [2] : rewardRate (uint256): 10
Arg [3] : rewardFrequency (uint256): 86400
Arg [4] : initialReward (uint256): 160000000000000000000
Arg [5] : boostRate (uint256): 2
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000b0cf7da8dc482997525be8488b9cad4f44315422
Arg [1] : 000000000000000000000000f011dac919a751dff6343553aa031b9f8e95300f
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [4] : 000000000000000000000000000000000000000000000008ac7230489e800000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
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.