-
Notifications
You must be signed in to change notification settings - Fork 11
Validator calls reference
Create a new validator (staker)
Minimum stake is 3175000 FTM
sfc.createStake([], {from:`address`, value: web3.toWei(`amount`, "ftm")})
- Stake amount is greater or equal to
sfc.minStake()
- This address isn't a staker
- This address isn't a delegator
Increase stake by amount of sent FTM.
The new stake will be applied in next epoch.
sfc.increaseStake({from:`address`, value: web3.toWei(`amount`, "ftm")})
- Amount is greater or equal to
sfc.minStakeIncrease()
- Staker exists
- Staker is active: staker isn't a cheater, isn't pruned for being offline, didn't prepare to withdraw
Put in a request to withdraw stake, can then call withdrawStake() function after enough seconds and epochs have passed.
Note that it's not possible to call this function until all the rewards are claimed (rewards may be claimed even if they're locked).
Pay attention that stashed rewards will be burned within this call.
After calling this function, validators won't be a validator in next epoch.
This call doesn't affect already earned rewards by delegators and staker.
sfc.prepareToWithdrawStake({from: `address`})
- Staker must exist
- All staker rewards are claimed
- Staker isn't deactivated (i.e. didn't prepare to withdraw)
Put in a request to partially withdraw stake. After a number of seconds and epochs have passed since calling the function below, you will be able to call withdrawByRequest() successfully.
Note that it's not possible to call this function until all the rewards are claimed (rewards may be claimed even if they're locked).
Pay attention that proportional part of stashed rewards will be burned within this call.
request ID
is any number which wasn't used by validator before.
Remember this number, it'll be needed to finalize withdrawal. Use 0
if not sure.
Validator cannot leave less stake than minStake()
or less than delegations amount
* 15.0
.
This call doesn't affect already earned rewards by delegators.
The validator's stake will be decreased in next epoch by amount
.
sfc.prepareToWithdrawStakePartial(`request ID`, web3.toWei(`amount to withdraw`, "ftm"), {from: `address`})
- Staker must exist
- All staker rewards are claimed
- Staker isn't deactivated (i.e. didn't prepare to withdraw)
- request ID isn't occupied by another request
-
amount to withdraw
>=minStakeDecrease()
-
left amount
>=minStake()
-
left amount
>=delegations amount
*15.0
After enough seconds and epochs have passed since calling PreparedToWithdrawStake(), validator can call this function successfully.
If staker is a cheater (i.e. doublesigned in DAG), then staker will be erased, but delegated stake won't be withdrawn (i.e. will be slashed).
sfc.withdrawStake({from: `address`})
- Passed at least
sfc.stakeLockPeriodTime()
seconds sinceprepareToWithdrawStake
was called - Passed at least
sfc.stakeLockPeriodEpochs()
epochs sinceprepareToWithdrawStake
was called
Finalize withdrawal request. Erases request object and withdraws requested stake, transfers requested stake to account address.
Note that a number of seconds and epochs must elaspe since prepareToWithdrawStakePartial
call.
If staker is a cheater (i.e. doublesigned in DAG), then object will be erased, but stake won't be withdrawn (i.e. will be slashed).
sfc.withdrawByRequest(`request ID`, {from: `address`})
- Passed at least
sfc.stakeLockPeriodTime()
seconds sinceprepareToWithdrawStakePartial
- Passed at least
sfc.stakeLockPeriodEpochs()
epochs sinceprepareToWithdrawStakePartial