Blog

Callisto Network Cold Staking Protocol

Callisto Network Cold Staking Protocol

Definition

Cold staking is a protocol that rewards long-term coin holders for holding their coins.

Cold Staking is not related to Proof of Stake, nor is it a consensus mechanism.  Cold stakers have no rights in generating blocks or confirming transactions.  They just receive interest for holding their coins.

Implementation

Callisto sold staking protocol is written in Solidity, a smart-contracts programming language. The source code can be found here.  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.  As a result, each individual staker’s reward is calculated at the time of reward claiming.

The following set of rules determines the workflow of the cold staking contract:

  1. The contract allows any CLO address to become a cold staker by depositing CLO.
  2. After an address owner has deposited CLO into the staking contract, the funds are locked for a period of time (approximately 1 month).
  3. The cold staker cannot access their funds during the locking period.  After the locking period has expired, the cold staker can withdraw their stake AND their reward at any time.
  4. The longer a staker “stakes” their CLO, the higher the reward is.  For example, someone who stakes their coins for 2 months will receive approximately 2x the reward than if they had staked their coins for 1 month.  NOTE: the minimum period of time for the staking contract is 1 month, claiming can only take place after this period.
  5. After the locking period that has passed, a cold staker can do one of two things: (1) claim the reward and continue staking, thus locking their funds for another month, or (2) claim the reward and withdraw their stake.
  6. The more active stakers that are currently “staking”, the less the staking reward is and vice versa.
  7. If a staker is inactive for a certain period of time (approximately 1 year), then they are considered to be inactive and are 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.
  8. A staker MUST NOT deposit funds into the staking contract during the locking period.  Depositing funds during the locking period will restart the locking period and staking contract.
  9. Each staker can independently claim their reward at any time after the locking period. The staking reward depends on the amount of CLO that is currently in the cold staking contract.  As a result, each staker’s reward depends on other stakers’ claims.  We rely on the assumption that with a high distribution of claims over time, cold stakers have a high probability of receiving a reward close to the anticipated value.
  10. There is no minimum staking amount.  However, making a deposit to the staking contract and claiming the reward requires transaction fees to be paid.  Staking with a very small deposit may not cover your transaction fees.
  11. A cold staker can only stake with their own CLO address.  It isn’t possible to send rewards to someone else’s address or grant someone permission to claim a reward on your behalf.
  12. A cold staker does not need to run a node to stake.  They only need to invoke the staking contract twice: make a deposit and claim the reward.  The ClassicEtherWallet is sufficient for this procedure.

The following formula determines the staking reward:

 

 

If a user keeps his funds in the contract for 30 days and claims the reward, then he will receive the reward for only 27 days of staking, but the next claim will be possible in 24 days. 3 days are assigned for the next round. If the user withdraws his staking deposit + staking reward but decides to deposit it back then it will erase the previously staked 3 days.

There are 2 ways to re-stake your reward after it was claimed. (1) If a user claims it at the end of Staking round i.e. at 54th day for example. In this case, a user can just send the reward back into the staking contract because there are 0 days remaining for the next round and nothing will be erased. (2) If a user is using multiple accounts. For example, a user is staking from account 0x11111. At the 38th day, he decides to claim the reward. The reward is sent to the 0x11111 address, but the reward for the remaining 11 days is still allocated for the next staking round of 0x11111 address. The user can transfer the claimed reward to address 0x22222 and start staking from the 0x22222 address at any time.

The First Stake

Since cold staking wasn’t active at the time of the mainnet launch, the staking reward will be increased significantly for early stakers.  There is a Staking Reserve address at Callisto.  This address contains CLO for staking during the initial phase.

Once the cold staking protocol has been launched, the funds from the staking reserve will be deposited into the staking contract, thereby increasing the size of the staking pool (i.e. reward of each staker) for the first 3 months after planned hardfork #1.

The following allocation of staking reserve funds have been set aside for deployment:

  1. 60% of staking reserve funds deployed during the first month of staking (scheduled for November 11, 2018)
  2. 20% of staking reserve funds deployed during the second month (scheduled for December 11, 2018)
  3. 20% of staking reserve funds deployed during the third month (scheduled for January 15, 2019) It comes from every mine block in amount of 120 CLO.

The normal average staking reward pool is 20,736,000 CLO/month.

Staking reserve funds will add approximately 76,242,600 CLO to the staking reward pool during the first three months of staking.

Notice: Cold Staking will be implemented after the first hardfork, which is scheduled for November 11th, 2018.  We have been informed of several fraudulent attempts to get users to transfer their coins – these are scams and just to reiterate, the cold staking protocol is not currently active.

Topics:Learning