Skip to main content

Staking721Base

note: This contract is provided as a base contract.

Methods​

claimRewards​

function claimRewards() external nonpayable

Claim accumulated rewards.

See {_claimRewards}. Override that to implement custom logic. See {_calculateRewards} for reward-calculation logic.

contractURI​

function contractURI() external view returns (string)

Returns the contract metadata URI.

Returns​

NameTypeDescription
_0stringundefined

depositRewardTokens​

function depositRewardTokens(uint256 _amount) external payable

Admin deposits reward tokens.

Parameters​

NameTypeDescription
_amountuint256undefined

getRewardTokenBalance​

function getRewardTokenBalance() external view returns (uint256)

View total rewards available in the staking contract.

Returns​

NameTypeDescription
_0uint256undefined

getRewardsPerUnitTime​

function getRewardsPerUnitTime() external view returns (uint256 _rewardsPerUnitTime)

Returns​

NameTypeDescription
_rewardsPerUnitTimeuint256undefined

getStakeInfo​

function getStakeInfo(address _staker) external view returns (uint256[] _tokensStaked, uint256 _rewards)

View amount staked and total rewards for a user.

Parameters​

NameTypeDescription
_stakeraddressAddress for which to calculated rewards.

Returns​

NameTypeDescription
_tokensStakeduint256[]List of token-ids staked by staker.
_rewardsuint256Available reward amount.

getTimeUnit​

function getTimeUnit() external view returns (uint256 _timeUnit)

Returns​

NameTypeDescription
_timeUnituint256undefined

indexedTokens​

function indexedTokens(uint256) external view returns (uint256)

Parameters​

NameTypeDescription
_0uint256undefined

Returns​

NameTypeDescription
_0uint256undefined

isIndexed​

function isIndexed(uint256) external view returns (bool)

Parameters​

NameTypeDescription
_0uint256undefined

Returns​

NameTypeDescription
_0boolundefined

multicall​

function multicall(bytes[] data) external nonpayable returns (bytes[] results)

Receives and executes a batch of function calls on this contract.

Receives and executes a batch of function calls on this contract.

Parameters​

NameTypeDescription
databytes[]The bytes data that makes up the batch of function calls to execute.

Returns​

NameTypeDescription
resultsbytes[]The bytes data that makes up the result of the batch of function calls executed.

nativeTokenWrapper​

function nativeTokenWrapper() external view returns (address)

The address of the native token wrapper contract.

Returns​

NameTypeDescription
_0addressundefined

onERC721Received​

function onERC721Received(address, address, uint256, bytes) external view returns (bytes4)

Parameters​

NameTypeDescription
_0addressundefined
_1addressundefined
_2uint256undefined
_3bytesundefined

Returns​

NameTypeDescription
_0bytes4undefined

owner​

function owner() external view returns (address)

Returns the owner of the contract.

Returns​

NameTypeDescription
_0addressundefined

rewardToken​

function rewardToken() external view returns (address)

ERC20 Reward Token address. See {_mintRewards} below.

Returns​

NameTypeDescription
_0addressundefined

setContractURI​

function setContractURI(string _uri) external nonpayable

Lets a contract admin set the URI for contract-level metadata.

Caller should be authorized to setup contractURI, e.g. contract admin. See {_canSetContractURI}. Emits {ContractURIUpdated Event}.

Parameters​

NameTypeDescription
_uristringkeccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE")

setOwner​

function setOwner(address _newOwner) external nonpayable

Lets an authorized wallet set a new owner for the contract.

Parameters​

NameTypeDescription
_newOwneraddressThe address to set as the new owner of the contract.

setRewardsPerUnitTime​

function setRewardsPerUnitTime(uint256 _rewardsPerUnitTime) external nonpayable

Set rewards per unit of time. Interpreted as x rewards per second/per day/etc based on time-unit.

Only admin/authorized-account can call it.

Parameters​

NameTypeDescription
_rewardsPerUnitTimeuint256New rewards per unit time.

setTimeUnit​

function setTimeUnit(uint256 _timeUnit) external nonpayable

Set time unit. Set as a number of seconds. Could be specified as -- x 1 hours, x 1 days, etc.

Only admin/authorized-account can call it.

Parameters​

NameTypeDescription
_timeUnituint256New time unit.

stake​

function stake(uint256[] _tokenIds) external nonpayable

Stake ERC721 Tokens.

See {_stake}. Override that to implement custom logic.

Parameters​

NameTypeDescription
_tokenIdsuint256[]List of tokens to stake.

stakerAddress​

function stakerAddress(uint256) external view returns (address)

Parameters​

NameTypeDescription
_0uint256undefined

Returns​

NameTypeDescription
_0addressundefined

stakers​

function stakers(address) external view returns (uint256 amountStaked, uint256 timeOfLastUpdate, uint256 unclaimedRewards, uint256 conditionIdOflastUpdate)

Parameters​

NameTypeDescription
_0addressundefined

Returns​

NameTypeDescription
amountStakeduint256undefined
timeOfLastUpdateuint256undefined
unclaimedRewardsuint256undefined
conditionIdOflastUpdateuint256undefined

stakersArray​

function stakersArray(uint256) external view returns (address)

Parameters​

NameTypeDescription
_0uint256undefined

Returns​

NameTypeDescription
_0addressundefined

stakingToken​

function stakingToken() external view returns (address)

Returns​

NameTypeDescription
_0addressundefined

supportsInterface​

function supportsInterface(bytes4 interfaceId) external view returns (bool)

See {IERC165-supportsInterface}.

Parameters​

NameTypeDescription
interfaceIdbytes4undefined

Returns​

NameTypeDescription
_0boolundefined

withdraw​

function withdraw(uint256[] _tokenIds) external nonpayable

Withdraw staked tokens.

See {_withdraw}. Override that to implement custom logic.

Parameters​

NameTypeDescription
_tokenIdsuint256[]List of tokens to withdraw.

withdrawRewardTokens​

function withdrawRewardTokens(uint256 _amount) external nonpayable

Admin can withdraw excess reward tokens.

Parameters​

NameTypeDescription
_amountuint256undefined

Events​

ContractURIUpdated​

event ContractURIUpdated(string prevURI, string newURI)

Parameters​

NameTypeDescription
prevURIstringundefined
newURIstringundefined

OwnerUpdated​

event OwnerUpdated(address indexed prevOwner, address indexed newOwner)

Parameters​

NameTypeDescription
prevOwner indexedaddressundefined
newOwner indexedaddressundefined

RewardsClaimed​

event RewardsClaimed(address indexed staker, uint256 rewardAmount)

Parameters​

NameTypeDescription
staker indexedaddressundefined
rewardAmountuint256undefined

TokensStaked​

event TokensStaked(address indexed staker, uint256[] indexed tokenIds)

Parameters​

NameTypeDescription
staker indexedaddressundefined
tokenIds indexeduint256[]undefined

TokensWithdrawn​

event TokensWithdrawn(address indexed staker, uint256[] indexed tokenIds)

Parameters​

NameTypeDescription
staker indexedaddressundefined
tokenIds indexeduint256[]undefined

UpdatedRewardsPerUnitTime​

event UpdatedRewardsPerUnitTime(uint256 oldRewardsPerUnitTime, uint256 newRewardsPerUnitTime)

Parameters​

NameTypeDescription
oldRewardsPerUnitTimeuint256undefined
newRewardsPerUnitTimeuint256undefined

UpdatedTimeUnit​

event UpdatedTimeUnit(uint256 oldTimeUnit, uint256 newTimeUnit)

Parameters​

NameTypeDescription
oldTimeUnituint256undefined
newTimeUnituint256undefined