๐งCold Staking
Last updated
Last updated
Cold Staking is based on the Gym Market Theory introduced by Parabolic Trav in this thread.
As an economic feature, Cold Staking is not related to Proof of Stake, nor is it a consensus mechanism. Therefore Cold Staking does not need to run a node since they have no rights in generating blocks or confirming transactions.
Cold Staking is a protocol that rewards long-term coin holders for holding their coins.
Callisto Cold Staking protocol is open-source software written in Solidity, a smart-contracts programming language. The source code can be found here.
The contract does not allow founders to withdraw staking deposits. Only the cold staker who deposited to the contract can withdraw his funds.
The Cold Staking contract is currently deployed at Callisto Mainnet at the following address: 0x08A7c8be47773546DC5E173d67B0c38AfFfa4b84
The Cold Staking contract allows any CLO address to become a cold staker by depositing CLO coins.
The minimum staking period is 27 days. We call it a โround.โ (Hereโs why 27 days).
There is no minimum staking amount. However, making a deposit to the Cold Staking contract and claiming the reward requires transaction fees to be paid.
When initiating Cold Staking, the user selects the number of rounds he/she wants to freeze its coin.
After depositing funds into the contract, the funds are locked according to the selected period.
Cold stakers can claim their rewards after each round.
After the locking period has expired, the cold stakers can withdraw their stake AND their reward at any time.
Cold stakers only earn interest for completed rounds.
Cold stakers only earn interest during the period initially set.
The Cold Staking contract continuously receives a percentage of CLO mining rewards and distributes it to cold stakers in proportion to their stake.
Due to smart-contract limitations, on-chain real-time computations are impossible. Therefore, each cold stakerโs reward is calculated at the time of reward claiming.
The Cold Staking reward depends on the amount of CLO present in the Cold Staking contract at the moment of the reward claiming. As a result, the reward of a Cold staker depends on the claims of the other stakers.
The more active Cold stakers there are, the lower the staking reward and vice versa.
Glossary:
Staking reward โ the amount of funds accumulated by the cold staker during the staking of his deposit in the contract.
Staking deposit โ the amount of funds that the user deposited to the Staking contract.
Note: Cold Staking reward is calculated only for the completed round interval. If a Cold staker withdraws its staking deposit after 30 days, he will receive a reward only for 27 days (a round).
Example: If a cold staker stake his funds for 2 rounds, he/she will be rewarded only for 2 rounds (even if 20 rounds passed).
To maximize the long-term investorโs reward, the Cold Staking V2 introduces the โ multiplier โ concept.
The minimum value of the โmultiplierโ is set to โ0.45โ for a round ( 27 days ).
The user can increase the multiplier by selecting more rounds (โ0.05โ per additional round).
The maximum value of the multiplier canโt exceed โ1โ. Therefore, the value range of the โmultiplierโ is between โ 0.45 and 1 โ.
Note: The multiplier is directly related to the number of rounds selected by the cold staker when staking his funds. However, although the multiplier has a direct impact on the reward, the multiplier and the reward are distinct.
Multiplier value according to the number of rounds set by the cold staker.
1 round: 0.45
2 rounds: 0.50
3 rounds: 0.55
4 rounds: 0.60
5 rounds: 0.65
6 rounds: 0.70
7 rounds: 0.75
8 rounds: 0.80
9 rounds: 0.85
10 rounds: 0.90
11 rounds: 0.95
12 rounds: 1.00
Thus, the higher the number of rounds initially set, the higher the โmultiplierโ of a Cold staker and, therefore, the higher his reward will be.
Note: There is no โmaximumโ number of rounds, but the multiplier only increases up to 12 rounds. In other words, if a Cold staker stakes for 24 rounds, he will receive the same reward as a Cold staker who stakes for 12 rounds twice.
Cold staking v2 allows adding CLO coins to active staking. However, adding funds to active staking will reset the progress made during the current round. It is therefore recommended to add funds at the beginning of a round.
Based on the remaining staking period:
If the remaining staking period is shorter than the new staking period, it will be extended up to the new staking period.
If the remaining staking period is longer than the new staking period, it remains unchanged.
Suppose the new staking period is different from the initial staking period. In that case, a new multiplier will be applied to the newly staked funds, while the active staking funds will keep the initial multiplier.
When adding funds to a completed round, the contract automatically calls the claim command. There is therefore no possibility of losing the rewards for completed rounds.
When adding new funds to the Cold Staking contract, the formula will recalculate the reward multiplier to ensure a fair reward for the cold staker. In this case, the following logic will be applied:
if (current staking multiplier > new staking multiplier) {
recalculate multiplier = (current multiplier * current amount + new multiplier * new amount) / ( current amount + new amount) }
else use a new staking multiplier
The following formula determines the staking reward:
Where:
StakerWeight โ the weight of stakerโs deposit;
StakerDeposit โ the amount of stakerโs deposit;
StakingPeriod โ time interval while deposit is frozen on staking;
TotalStakingWeight โ the sum of all stakers weight;
StakingRewardPool โ available amount for rewards payment;
BaseStakerReward โ the base amount of reward that the staker may receive.
StakerMultiplier โ in the range [0.45 โ 1], depends on the number of rounds that CLO was staked at the beginning.
StakerReward โ the reward that the staker will receive.
Users may start to stake by any of the following:
Call the function start_staking(rounds numbers).
Transfer CLO directly to the Cold Staking contract โ it will stake CLO on 1 round (27 days).
To claim rewards, cold stakers have to call function claim().
To withdraw the initial deposit and rewards, users have to call function withdraw_stake()
If a staker is inactive for a certain period (1 year), then he/she can be considered inactive and can be removed from the staking contract. In this case, the inactive stake is returned to the original stakerโs address.
The staking reward is not paid for inactive stakers.
The function report_abuse(user address) can be called by anyone and will transfer deposited CLO (without rewards) to a cold staker who has not withdrawn his funds within 1 year after the staking period.
Document revised on 20/09/21.
A detailed description of the previous Cold Staking protocol is available on our blog.
The Cold Staking V1 contract will remain deployed on Callisto Network mainnet at its original address: 0xd813419749b3c2cDc94A2F9Cfcf154113264a9d6
The discussion about the Cold Staking version implementation can be read on Github.