Source Code
Latest 25 from a total of 2,093 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Claim Rewards | 14001686 | 25 days ago | IN | 0 GLMR | 0.02006045 | ||||
| Claim Rewards | 12447296 | 152 days ago | IN | 0 GLMR | 0.0325305 | ||||
| Claim Rewards | 12401126 | 155 days ago | IN | 0 GLMR | 0.0325305 | ||||
| Claim Rewards | 12182092 | 171 days ago | IN | 0 GLMR | 0.0325305 | ||||
| Claim Rewards | 11259941 | 236 days ago | IN | 0 GLMR | 0.064988 | ||||
| Claim Rewards | 11229849 | 238 days ago | IN | 0 GLMR | 0.064988 | ||||
| Claim Rewards | 10806149 | 268 days ago | IN | 0 GLMR | 0.032494 | ||||
| Claim Rewards | 10674956 | 278 days ago | IN | 0 GLMR | 0.03429676 | ||||
| Claim Rewards | 10569656 | 286 days ago | IN | 0 GLMR | 0.064988 | ||||
| Claim Rewards | 10325833 | 303 days ago | IN | 0 GLMR | 0.064988 | ||||
| Claim Rewards | 10302291 | 305 days ago | IN | 0 GLMR | 0.064956 | ||||
| Claim Rewards | 10213036 | 311 days ago | IN | 0 GLMR | 0.064988 | ||||
| Claim Rewards | 10191066 | 312 days ago | IN | 0 GLMR | 0.064988 | ||||
| Claim Rewards | 10139878 | 316 days ago | IN | 0 GLMR | 0.06495937 | ||||
| Stake Nft | 9847717 | 337 days ago | IN | 0 GLMR | 0.026233 | ||||
| Claim Rewards | 9674461 | 349 days ago | IN | 0 GLMR | 0.064916 | ||||
| Claim Rewards | 9561155 | 357 days ago | IN | 0 GLMR | 0.064916 | ||||
| Claim Rewards | 9489762 | 362 days ago | IN | 0 GLMR | 0.064916 | ||||
| Claim Rewards | 9450307 | 365 days ago | IN | 0 GLMR | 0.03944947 | ||||
| Claim Rewards | 9416782 | 367 days ago | IN | 0 GLMR | 0.064916 | ||||
| Claim Rewards | 9354286 | 372 days ago | IN | 0 GLMR | 0.13080614 | ||||
| Claim Rewards | 9274477 | 377 days ago | IN | 0 GLMR | 0.13080614 | ||||
| Claim Rewards | 9249875 | 379 days ago | IN | 0 GLMR | 0.259664 | ||||
| Claim Rewards | 9207771 | 382 days ago | IN | 0 GLMR | 0.259664 | ||||
| Claim Rewards | 9197157 | 383 days ago | IN | 0 GLMR | 0.259664 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StakingPool
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "./interfaces/IOrbiterNFT.sol";
contract StakingPool is Ownable, Pausable {
struct AssetInfo {
uint8 APY;
uint256 stakingStart;
uint256 prevRate;
uint256 nftPrice;
}
mapping(address => AssetInfo) public rewardAssets;
mapping(address => mapping(address => uint256)) private _unclaimedRewards;
mapping(address => mapping(address => uint256)) private _userRates;
mapping(address => uint256) private _userNfts;
mapping(uint256 => bool) private _stakedNfts;
address[] private _assets;
IOrbiterNFT public immutable OrbiterNft;
event NftStaked(address indexed user, uint256 indexed tokenId);
event NftUnstaked(address indexed user, uint256 indexed tokenId);
event ClaimedRewards(
address indexed tokenAddress,
address indexed user,
uint256 amount
);
constructor(
IOrbiterNFT _OrbiterNft,
uint8 _APY,
address _rewardAsset,
uint256 _nftPrice
) {
OrbiterNft = _OrbiterNft;
addNewRewardAsset(_APY, _rewardAsset, _nftPrice);
}
function removeRewardAsset(address _rewardAsset) external onlyOwner {
uint256 length = _assets.length;
for (uint16 i; i < length; ) {
if (_rewardAsset == _assets[i]) {
changeAPY(_assets[i], 0);
_assets[i] = _assets[_assets.length - 1];
_assets.pop();
break;
}
unchecked {
++i;
}
}
}
function stakeNft(uint256 tokenId) external whenNotPaused {
uint256[] memory tokenIds = new uint[](1);
tokenIds[0] = tokenId;
_stakeBatch(tokenIds);
}
function stakeBatch(uint256[] memory tokenIds) external whenNotPaused {
_stakeBatch(tokenIds);
}
function unstakeBatch(uint256[] memory tokenIds) external {
_unstakeBatch(tokenIds);
}
function unstakeNft(uint256 tokenId) external {
uint256[] memory tokenIds = new uint[](1);
tokenIds[0] = tokenId;
_unstakeBatch(tokenIds);
}
function claimRewards() external whenNotPaused {
uint256 length = _assets.length;
for (uint i; i < length; ) {
address asset = _assets[i];
uint256 reward = _unclaimedRewards[asset][msg.sender] +
_getStakeReward(asset, msg.sender) *
_userNfts[msg.sender];
uint256 lastRate = _getCurrentRate(asset);
_userRates[asset][msg.sender] = lastRate;
_unclaimedRewards[asset][msg.sender] = 0;
IERC20(asset).transfer(msg.sender, reward);
emit ClaimedRewards(asset, msg.sender, reward);
unchecked {
++i;
}
}
}
function pause() external onlyOwner {
_pause();
}
function unpause() external onlyOwner {
_unpause();
}
function getRewardAssets() external view returns (address[] memory) {
return _assets;
}
function getUserRewards(
address rewardAsset,
address user
) external view returns (uint256) {
return
_unclaimedRewards[rewardAsset][user] +
_getStakeReward(rewardAsset, user) *
_userNfts[user];
}
function addNewRewardAsset(
uint8 _APY,
address _rewardAsset,
uint256 _nftPrice
) public onlyOwner {
uint256 prevRate = rewardAssets[_rewardAsset].prevRate;
rewardAssets[_rewardAsset] = AssetInfo({
APY: _APY,
stakingStart: block.timestamp,
prevRate: prevRate,
nftPrice: _nftPrice
});
_assets.push(_rewardAsset);
}
function changeAPY(address rewardAsset, uint8 _APY) public onlyOwner {
AssetInfo storage asset = rewardAssets[rewardAsset];
asset.prevRate = _getCurrentRate(rewardAsset);
asset.APY = _APY;
asset.stakingStart = block.timestamp;
}
function _stakeBatch(uint256[] memory tokenIds) private {
uint256 tokensLength = tokenIds.length;
for (uint i; i < tokensLength; ) {
require(
OrbiterNft.ownerOf(tokenIds[i]) == msg.sender,
"Not nft owner"
);
OrbiterNft.lockNftForStaking(tokenIds[i]);
_stakedNfts[tokenIds[i]] = true;
emit NftStaked(msg.sender, tokenIds[i]);
unchecked {
++i;
}
}
uint256 userNfts = _userNfts[msg.sender];
uint256 assetsLength = _assets.length;
for (uint i; i < assetsLength; ) {
address asset = _assets[i];
uint256 currentRate = _getCurrentRate(asset);
if (userNfts == 0) {
_userRates[asset][msg.sender] = currentRate;
} else {
uint256 userRate = _userRates[asset][msg.sender];
_userRates[asset][msg.sender] =
currentRate -
userNfts *
((currentRate - userRate) / (tokensLength + userNfts));
}
unchecked {
++i;
}
}
_userNfts[msg.sender] += tokensLength;
}
function _unstakeBatch(uint256[] memory tokenIds) private {
uint256 tokensLength = tokenIds.length;
uint256 stakedTotal;
for (uint i; i < tokensLength; ) {
require(
OrbiterNft.ownerOf(tokenIds[i]) == msg.sender,
"Not nft owner"
);
/*
* @@dev In case some nfts were staked on another contract, we can't include them when calculating rewards
*/
if (_stakedNfts[tokenIds[i]]) {
++stakedTotal;
_stakedNfts[tokenIds[i]] = false;
}
OrbiterNft.unlockNftForStaking(tokenIds[i]);
emit NftUnstaked(msg.sender, tokenIds[i]);
unchecked {
++i;
}
}
uint256 assetsLength = _assets.length;
for (uint i; i < assetsLength; ) {
address asset = _assets[i];
_unclaimedRewards[asset][msg.sender] +=
stakedTotal *
_getStakeReward(asset, msg.sender);
unchecked {
++i;
}
}
_userNfts[msg.sender] -= stakedTotal;
}
function _getCurrentRate(
address rewardAsset
) private view returns (uint256 currentRate) {
AssetInfo memory asset = rewardAssets[rewardAsset];
uint256 timeDiff = block.timestamp - asset.stakingStart;
currentRate =
asset.prevRate +
((asset.nftPrice * asset.APY * timeDiff) / 100) /
365 days;
}
function _getStakeReward(
address asset,
address user
) private view returns (uint256) {
return _getCurrentRate(asset) - _userRates[asset][user];
}
}// 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);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.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: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
* or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
* understand this adds an external call which potentially creates a reentrancy vulnerability.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/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
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
interface IOrbiterNFT is IERC721 {
event NewNFTMinted(string ipfsHash);
event NFTLockedForStaking(uint256 indexed tokenId);
event NFTUnlockedForStaking(uint256 indexed tokenId);
function pause() external;
function unpause() external;
function setCost(uint256 _newCost) external;
function setMaxMintAmount(uint256 _newmaxMintAmount) external;
function setNewTokenAddress(address _tokenAddress) external;
function withdraw() external;
function withdrawCoin(address _coin) external;
function setNewSignerOperator(address _operatorAddress) external;
function setNewStakingContractAddress(address _operatorAddress) external;
function getStakingContractAddress() external view returns (address);
function mintNftForAddress(
address _user,
string[] memory ipfsHashes
) external;
function lockNftForStaking(uint256 tokenId) external;
function unlockNftForStaking(uint256 tokenId) external;
function checkIsNftLockedForStaking(
uint256 tokenId
) external view returns (bool);
function safeMint(
bytes memory signature,
string[] memory ipfsHashes
) external;
}{
"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
Contract ABI
API[{"inputs":[{"internalType":"contract IOrbiterNFT","name":"_OrbiterNft","type":"address"},{"internalType":"uint8","name":"_APY","type":"uint8"},{"internalType":"address","name":"_rewardAsset","type":"address"},{"internalType":"uint256","name":"_nftPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NftStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NftUnstaked","type":"event"},{"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"OrbiterNft","outputs":[{"internalType":"contract IOrbiterNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_APY","type":"uint8"},{"internalType":"address","name":"_rewardAsset","type":"address"},{"internalType":"uint256","name":"_nftPrice","type":"uint256"}],"name":"addNewRewardAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAsset","type":"address"},{"internalType":"uint8","name":"_APY","type":"uint8"}],"name":"changeAPY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRewardAssets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAsset","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardAsset","type":"address"}],"name":"removeRewardAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardAssets","outputs":[{"internalType":"uint8","name":"APY","type":"uint8"},{"internalType":"uint256","name":"stakingStart","type":"uint256"},{"internalType":"uint256","name":"prevRate","type":"uint256"},{"internalType":"uint256","name":"nftPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakeNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstakeNft","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001890380380620018908339810160408190526200003491620001f8565b6200003f3362000070565b6000805460ff60a01b191690556001600160a01b03841660805262000066838383620000c0565b5050505062000257565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000ca6200017e565b6001600160a01b03919091166000818152600160208181526040808420600281018054835160808101855260ff9a8b1681524281870190815294810191825260608101998a52888852948690529351825460ff19169916989098178155905181840155905190955592516003909401939093556006805492830181559092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314620001dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b6001600160a01b0381168114620001f557600080fd5b50565b600080600080608085870312156200020f57600080fd5b84516200021c81620001df565b602086015190945060ff811681146200023457600080fd5b60408601519093506200024781620001df565b6060959095015193969295505050565b6080516116016200028f600039600081816102080152818161097101528181610a6e01528181610e87015261100e01526116016000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806375887be3116100a25780638da5cb5b116100715780638da5cb5b14610272578063cd636b1f14610283578063e64a21f3146102a4578063f2fde38b146102b7578063f8e53bfb146102ca57600080fd5b806375887be31461020357806376219b14146102425780638456cb5914610257578063856c53f71461025f57600080fd5b80634300f5e1116100e95780634300f5e1146101a55780635c975abb146101b8578063643e6753146101d55780636b426000146101e8578063715018a6146101fb57600080fd5b806309b433d01461011b578063230f436d14610180578063372500ab146101955780633f4ba83a1461019d575b600080fd5b6101576101293660046112a5565b6001602081905260009182526040909120805491810154600282015460039092015460ff9093169290919084565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b61019361018e3660046112d8565b6102dd565b005b6101936102f1565b6101936104a2565b6101936101b3366004611396565b6104b4565b600054600160a01b900460ff166040519015158152602001610177565b6101936101e33660046113c5565b610507565b6101936101f6366004611396565b610551565b61019361059c565b61022a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610177565b61024a6105ae565b60405161017791906113fa565b610193610610565b61019361026d366004611447565b610620565b6000546001600160a01b031661022a565b610296610291366004611486565b6106dc565b604051908152602001610177565b6101936102b23660046112d8565b610740565b6101936102c53660046112a5565b610749565b6101936102d83660046112a5565b6107c4565b6102e561090b565b6102ee81610958565b50565b6102f961090b565b60065460005b8181101561049e5760006006828154811061031c5761031c6114bf565b600091825260208083209091015433808452600490925260408320546001600160a01b03909116935090610351908490610cd8565b61035b91906114eb565b6001600160a01b0383166000908152600260209081526040808320338452909152902054610389919061150a565b9050600061039683610d13565b6001600160a01b0384166000818152600360209081526040808320338085529083528184208690558484526002835281842081855290925280832092909255905163a9059cbb60e01b81526004810191909152602481018590529192509063a9059cbb90604401602060405180830381600087803b15801561041757600080fd5b505af115801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611522565b5060405182815233906001600160a01b038516907f2ef606d064225d24c1514dc94907c134faee1237445c2f63f410cce0852b20549060200160405180910390a38360010193505050506102ff565b5050565b6104aa610dbe565b6104b2610e18565b565b6104bc61090b565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106104f2576104f26114bf565b60200260200101818152505061049e81610958565b61050f610dbe565b6001600160a01b038216600090815260016020526040902061053083610d13565b6002820155805460ff191660ff929092169190911781554260019091015550565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610587576105876114bf565b60200260200101818152505061049e81610e6d565b6105a4610dbe565b6104b260006111ad565b6060600680548060200260200160405190810160405280929190818152602001828054801561060657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105e8575b5050505050905090565b610618610dbe565b6104b26111fd565b610628610dbe565b6001600160a01b03919091166000818152600160208181526040808420600281018054835160808101855260ff9a8b1681524281870190815294810191825260608101998a52888852948690529351825460ff19169916989098178155905181840155905190955592516003909401939093556006805492830181559092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600460205260408120546106ff8484610cd8565b61070991906114eb565b6001600160a01b03808516600090815260026020908152604080832093871683529290522054610739919061150a565b9392505050565b6102ee81610e6d565b610751610dbe565b6001600160a01b0381166107bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102ee816111ad565b6107cc610dbe565b60065460005b818161ffff1610156109065760068161ffff16815481106107f5576107f56114bf565b6000918252602090912001546001600160a01b03848116911614156108fe5761084860068261ffff168154811061082e5761082e6114bf565b60009182526020822001546001600160a01b031690610507565b6006805461085890600190611544565b81548110610868576108686114bf565b600091825260209091200154600680546001600160a01b039092169161ffff8416908110610898576108986114bf565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806108d7576108d761155b565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b6001016107d2565b505050565b600054600160a01b900460ff16156104b25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107b2565b805160005b81811015610ba257336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e8584815181106109b0576109b06114bf565b60200260200101516040518263ffffffff1660e01b81526004016109d691815260200190565b60206040518083038186803b1580156109ee57600080fd5b505afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a269190611571565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1037333a1037bbb732b960991b60448201526064016107b2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ab14a7fe848381518110610aad57610aad6114bf565b60200260200101516040518263ffffffff1660e01b8152600401610ad391815260200190565b600060405180830381600087803b158015610aed57600080fd5b505af1158015610b01573d6000803e3d6000fd5b50505050600160056000858481518110610b1d57610b1d6114bf565b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610b5c57610b5c6114bf565b6020026020010151336001600160a01b03167f67fdef29b4d3c5f8e8a10bc5f9797626d078010bb98360a511e7cde7db9d9f0660405160405180910390a360010161095d565b503360009081526004602052604081205460065490915b81811015610cad57600060068281548110610bd657610bd66114bf565b60009182526020822001546001600160a01b03169150610bf582610d13565b905084610c27576001600160a01b03821660009081526003602090815260408083203384529091529020819055610ca3565b6001600160a01b0382166000908152600360209081526040808320338452909152902054610c55868861150a565b610c5f8284611544565b610c69919061158e565b610c7390876114eb565b610c7d9083611544565b6001600160a01b0384166000908152600360209081526040808320338452909152902055505b5050600101610bb9565b503360009081526004602052604081208054859290610ccd90849061150a565b909155505050505050565b6001600160a01b038083166000908152600360209081526040808320938516835292905290812054610d0984610d13565b6107399190611544565b6001600160a01b03811660009081526001602081815260408084208151608081018352815460ff168152938101549284018390526002810154918401919091526003015460608301528290610d689042611544565b90506301e13380606482846000015160ff168560600151610d8991906114eb565b610d9391906114eb565b610d9d919061158e565b610da7919061158e565b8260400151610db6919061150a565b949350505050565b6000546001600160a01b031633146104b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b2565b610e20611240565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b80516000805b828110156110fd57336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e868481518110610ec657610ec66114bf565b60200260200101516040518263ffffffff1660e01b8152600401610eec91815260200190565b60206040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c9190611571565b6001600160a01b031614610f825760405162461bcd60e51b815260206004820152600d60248201526c2737ba1037333a1037bbb732b960991b60448201526064016107b2565b60056000858381518110610f9857610f986114bf565b60209081029190910181015182528101919091526040016000205460ff161561100c57610fc4826115b0565b9150600060056000868481518110610fde57610fde6114bf565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ec9bed9285838151811061104d5761104d6114bf565b60200260200101516040518263ffffffff1660e01b815260040161107391815260200190565b600060405180830381600087803b15801561108d57600080fd5b505af11580156110a1573d6000803e3d6000fd5b505050508381815181106110b7576110b76114bf565b6020026020010151336001600160a01b03167fe8b40fda281c6bb8d29a090b37522bcc49728e60bf2bbbff36ea712ff1b498a560405160405180910390a3600101610e73565b5060065460005b8181101561118d57600060068281548110611121576111216114bf565b6000918252602090912001546001600160a01b031690506111428133610cd8565b61114c90856114eb565b6001600160a01b03821660009081526002602090815260408083203384529091528120805490919061117f90849061150a565b909155505050600101611104565b503360009081526004602052604081208054849290610ccd908490611544565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61120561090b565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e503390565b600054600160a01b900460ff166104b25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107b2565b6001600160a01b03811681146102ee57600080fd5b6000602082840312156112b757600080fd5b813561073981611290565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156112eb57600080fd5b823567ffffffffffffffff8082111561130357600080fd5b818501915085601f83011261131757600080fd5b813581811115611329576113296112c2565b8060051b604051601f19603f8301168101818110858211171561134e5761134e6112c2565b60405291825284820192508381018501918883111561136c57600080fd5b938501935b8285101561138a57843584529385019392850192611371565b98975050505050505050565b6000602082840312156113a857600080fd5b5035919050565b803560ff811681146113c057600080fd5b919050565b600080604083850312156113d857600080fd5b82356113e381611290565b91506113f1602084016113af565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561143b5783516001600160a01b031683529284019291840191600101611416565b50909695505050505050565b60008060006060848603121561145c57600080fd5b611465846113af565b9250602084013561147581611290565b929592945050506040919091013590565b6000806040838503121561149957600080fd5b82356114a481611290565b915060208301356114b481611290565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611505576115056114d5565b500290565b6000821982111561151d5761151d6114d5565b500190565b60006020828403121561153457600080fd5b8151801515811461073957600080fd5b600082821015611556576115566114d5565b500390565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561158357600080fd5b815161073981611290565b6000826115ab57634e487b7160e01b600052601260045260246000fd5b500490565b60006000198214156115c4576115c46114d5565b506001019056fea2646970667358221220f48e6de68a20a952f14021118eabee23f2f83681d3e2f5080909c98fa6bf105064736f6c634300080900330000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d39864200000000000000000000000000000000000000000000000000000000000000140000000000000000000000004eeaa1fd27c50c64e77272bcdde68c28f0a3c3d700000000000000000000000000000000000000000000003635c9adc5dea00000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c806375887be3116100a25780638da5cb5b116100715780638da5cb5b14610272578063cd636b1f14610283578063e64a21f3146102a4578063f2fde38b146102b7578063f8e53bfb146102ca57600080fd5b806375887be31461020357806376219b14146102425780638456cb5914610257578063856c53f71461025f57600080fd5b80634300f5e1116100e95780634300f5e1146101a55780635c975abb146101b8578063643e6753146101d55780636b426000146101e8578063715018a6146101fb57600080fd5b806309b433d01461011b578063230f436d14610180578063372500ab146101955780633f4ba83a1461019d575b600080fd5b6101576101293660046112a5565b6001602081905260009182526040909120805491810154600282015460039092015460ff9093169290919084565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b61019361018e3660046112d8565b6102dd565b005b6101936102f1565b6101936104a2565b6101936101b3366004611396565b6104b4565b600054600160a01b900460ff166040519015158152602001610177565b6101936101e33660046113c5565b610507565b6101936101f6366004611396565b610551565b61019361059c565b61022a7f0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d39864281565b6040516001600160a01b039091168152602001610177565b61024a6105ae565b60405161017791906113fa565b610193610610565b61019361026d366004611447565b610620565b6000546001600160a01b031661022a565b610296610291366004611486565b6106dc565b604051908152602001610177565b6101936102b23660046112d8565b610740565b6101936102c53660046112a5565b610749565b6101936102d83660046112a5565b6107c4565b6102e561090b565b6102ee81610958565b50565b6102f961090b565b60065460005b8181101561049e5760006006828154811061031c5761031c6114bf565b600091825260208083209091015433808452600490925260408320546001600160a01b03909116935090610351908490610cd8565b61035b91906114eb565b6001600160a01b0383166000908152600260209081526040808320338452909152902054610389919061150a565b9050600061039683610d13565b6001600160a01b0384166000818152600360209081526040808320338085529083528184208690558484526002835281842081855290925280832092909255905163a9059cbb60e01b81526004810191909152602481018590529192509063a9059cbb90604401602060405180830381600087803b15801561041757600080fd5b505af115801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611522565b5060405182815233906001600160a01b038516907f2ef606d064225d24c1514dc94907c134faee1237445c2f63f410cce0852b20549060200160405180910390a38360010193505050506102ff565b5050565b6104aa610dbe565b6104b2610e18565b565b6104bc61090b565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106104f2576104f26114bf565b60200260200101818152505061049e81610958565b61050f610dbe565b6001600160a01b038216600090815260016020526040902061053083610d13565b6002820155805460ff191660ff929092169190911781554260019091015550565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110610587576105876114bf565b60200260200101818152505061049e81610e6d565b6105a4610dbe565b6104b260006111ad565b6060600680548060200260200160405190810160405280929190818152602001828054801561060657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105e8575b5050505050905090565b610618610dbe565b6104b26111fd565b610628610dbe565b6001600160a01b03919091166000818152600160208181526040808420600281018054835160808101855260ff9a8b1681524281870190815294810191825260608101998a52888852948690529351825460ff19169916989098178155905181840155905190955592516003909401939093556006805492830181559092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600460205260408120546106ff8484610cd8565b61070991906114eb565b6001600160a01b03808516600090815260026020908152604080832093871683529290522054610739919061150a565b9392505050565b6102ee81610e6d565b610751610dbe565b6001600160a01b0381166107bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102ee816111ad565b6107cc610dbe565b60065460005b818161ffff1610156109065760068161ffff16815481106107f5576107f56114bf565b6000918252602090912001546001600160a01b03848116911614156108fe5761084860068261ffff168154811061082e5761082e6114bf565b60009182526020822001546001600160a01b031690610507565b6006805461085890600190611544565b81548110610868576108686114bf565b600091825260209091200154600680546001600160a01b039092169161ffff8416908110610898576108986114bf565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806108d7576108d761155b565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b6001016107d2565b505050565b600054600160a01b900460ff16156104b25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107b2565b805160005b81811015610ba257336001600160a01b03167f0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d3986426001600160a01b0316636352211e8584815181106109b0576109b06114bf565b60200260200101516040518263ffffffff1660e01b81526004016109d691815260200190565b60206040518083038186803b1580156109ee57600080fd5b505afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a269190611571565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1037333a1037bbb732b960991b60448201526064016107b2565b7f0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d3986426001600160a01b031663ab14a7fe848381518110610aad57610aad6114bf565b60200260200101516040518263ffffffff1660e01b8152600401610ad391815260200190565b600060405180830381600087803b158015610aed57600080fd5b505af1158015610b01573d6000803e3d6000fd5b50505050600160056000858481518110610b1d57610b1d6114bf565b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610b5c57610b5c6114bf565b6020026020010151336001600160a01b03167f67fdef29b4d3c5f8e8a10bc5f9797626d078010bb98360a511e7cde7db9d9f0660405160405180910390a360010161095d565b503360009081526004602052604081205460065490915b81811015610cad57600060068281548110610bd657610bd66114bf565b60009182526020822001546001600160a01b03169150610bf582610d13565b905084610c27576001600160a01b03821660009081526003602090815260408083203384529091529020819055610ca3565b6001600160a01b0382166000908152600360209081526040808320338452909152902054610c55868861150a565b610c5f8284611544565b610c69919061158e565b610c7390876114eb565b610c7d9083611544565b6001600160a01b0384166000908152600360209081526040808320338452909152902055505b5050600101610bb9565b503360009081526004602052604081208054859290610ccd90849061150a565b909155505050505050565b6001600160a01b038083166000908152600360209081526040808320938516835292905290812054610d0984610d13565b6107399190611544565b6001600160a01b03811660009081526001602081815260408084208151608081018352815460ff168152938101549284018390526002810154918401919091526003015460608301528290610d689042611544565b90506301e13380606482846000015160ff168560600151610d8991906114eb565b610d9391906114eb565b610d9d919061158e565b610da7919061158e565b8260400151610db6919061150a565b949350505050565b6000546001600160a01b031633146104b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b2565b610e20611240565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b80516000805b828110156110fd57336001600160a01b03167f0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d3986426001600160a01b0316636352211e868481518110610ec657610ec66114bf565b60200260200101516040518263ffffffff1660e01b8152600401610eec91815260200190565b60206040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c9190611571565b6001600160a01b031614610f825760405162461bcd60e51b815260206004820152600d60248201526c2737ba1037333a1037bbb732b960991b60448201526064016107b2565b60056000858381518110610f9857610f986114bf565b60209081029190910181015182528101919091526040016000205460ff161561100c57610fc4826115b0565b9150600060056000868481518110610fde57610fde6114bf565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d3986426001600160a01b031663ec9bed9285838151811061104d5761104d6114bf565b60200260200101516040518263ffffffff1660e01b815260040161107391815260200190565b600060405180830381600087803b15801561108d57600080fd5b505af11580156110a1573d6000803e3d6000fd5b505050508381815181106110b7576110b76114bf565b6020026020010151336001600160a01b03167fe8b40fda281c6bb8d29a090b37522bcc49728e60bf2bbbff36ea712ff1b498a560405160405180910390a3600101610e73565b5060065460005b8181101561118d57600060068281548110611121576111216114bf565b6000918252602090912001546001600160a01b031690506111428133610cd8565b61114c90856114eb565b6001600160a01b03821660009081526002602090815260408083203384529091528120805490919061117f90849061150a565b909155505050600101611104565b503360009081526004602052604081208054849290610ccd908490611544565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61120561090b565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e503390565b600054600160a01b900460ff166104b25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107b2565b6001600160a01b03811681146102ee57600080fd5b6000602082840312156112b757600080fd5b813561073981611290565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156112eb57600080fd5b823567ffffffffffffffff8082111561130357600080fd5b818501915085601f83011261131757600080fd5b813581811115611329576113296112c2565b8060051b604051601f19603f8301168101818110858211171561134e5761134e6112c2565b60405291825284820192508381018501918883111561136c57600080fd5b938501935b8285101561138a57843584529385019392850192611371565b98975050505050505050565b6000602082840312156113a857600080fd5b5035919050565b803560ff811681146113c057600080fd5b919050565b600080604083850312156113d857600080fd5b82356113e381611290565b91506113f1602084016113af565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561143b5783516001600160a01b031683529284019291840191600101611416565b50909695505050505050565b60008060006060848603121561145c57600080fd5b611465846113af565b9250602084013561147581611290565b929592945050506040919091013590565b6000806040838503121561149957600080fd5b82356114a481611290565b915060208301356114b481611290565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611505576115056114d5565b500290565b6000821982111561151d5761151d6114d5565b500190565b60006020828403121561153457600080fd5b8151801515811461073957600080fd5b600082821015611556576115566114d5565b500390565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561158357600080fd5b815161073981611290565b6000826115ab57634e487b7160e01b600052601260045260246000fd5b500490565b60006000198214156115c4576115c46114d5565b506001019056fea2646970667358221220f48e6de68a20a952f14021118eabee23f2f83681d3e2f5080909c98fa6bf105064736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d39864200000000000000000000000000000000000000000000000000000000000000140000000000000000000000004eeaa1fd27c50c64e77272bcdde68c28f0a3c3d700000000000000000000000000000000000000000000003635c9adc5dea00000
-----Decoded View---------------
Arg [0] : _OrbiterNft (address): 0x6CC6C17d25bd3646b3710D6188d0467f5D398642
Arg [1] : _APY (uint8): 20
Arg [2] : _rewardAsset (address): 0x4EEaa1fd27c50C64E77272BCdDe68c28F0A3c3D7
Arg [3] : _nftPrice (uint256): 1000000000000000000000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006cc6c17d25bd3646b3710d6188d0467f5d398642
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [2] : 0000000000000000000000004eeaa1fd27c50c64e77272bcdde68c28f0a3c3d7
Arg [3] : 00000000000000000000000000000000000000000000003635c9adc5dea00000
Loading...
Loading
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.