Staking

dotOne Staking

dotOne Smart Chain (dotOne) operates on a Proof-of-Staked-Authority (PoSA) blockchain, with the staking mechanism proposed in BEP-294arrow-up-right. This enables DOTO holders to stake their tokens with specified validators to secure the network and earn staking rewards. Here’s an overview covering the core staking concepts and operations on dotOne.

Basic Concepts

Consensus Engine

dotOne uses a consensus mechanism that combines DPoS and PoA for consensus. In this system:

  • Blocks are produced by a limited set of validators.

  • Validators take turns to produce blocks in a PoA manner.

  • Validator set are elected in and out based on a staking-based governance.

The staking mechanism is essential for determining the eligibility of validators to produce blocks.

Validator Set

The validator set is the group of nodes that are responsible for validating transactions and producing blocks on the dotOne. The validator set is determined by the amount of staking each validator has, which reflects the amount of DOTO staked by the validator and its delegators. The top validators with the most staking are selected as the active validator set, and they take turns to propose and vote on blocks. The rest of the validators are in the standby validator set, and they can join the active validator set if their staking increases or if some active validators drop out.

Any organization or individual can become part of the validator set by creating their validator on-chain and securing sufficient delegations. Similarly, they can opt out by simply withdrawing all their DOTO delegations.

Validators can also be removed from the validator set by slashing, which is a penalty for misbehaving or being offline.

Validator Election

There are different roles for validators:

  • Cabinet: the top K (which is 21 currently) validators who get the most chance of producing blocks.

  • Candidate: the top (K, K+NumOfCandidates] (which is (21,45] currently) validators who get a small chance of producing blocks.

  • Inactive: the reset validators who get no chance of producing blocks.

The validator set roles are determined every 24 hours based on the latest staking information.

After UTC 00:00, the consensus engine sorts validators and updates the dotOne validator set with the ranking information.

System Contracts

There are several built-in contracts (i.e., system contracts) to facilitate the dotOne staking.

  • Validator Set Contract. The contract periodically elects a validator set. The contract also serves as a vault for temporarily storing validator rewards.

  • System Reward Contract. This contract acts as a vault to collect part of transaction fees. The funds are used for various public purposes, like distributing fast finality rewards.

  • Slash Contract. This contract is used to keep track of the number of times a validator becomes unavailable and triggers penalties once a certain threshold is reached. Additionally, this contract also handles other types of slash events, such as double signing and malicious voting in fast finality.

  • Stake Hub Contract. This contract serves as the entrypoint for managing validators and delegations, while also implementing the logic for slashing specific validators. For delegation/undelegation/redelegation operations, it will call different validators’ implementation contracts to manage a user’s stake.

Credit Contract

Each validator has its own validator contract that manages staking credit and facilitates the exchange between credit and DOTO. The token name of a staking credit is “stake {{validator moniker}} credit”, and the symbol is “st{{validator moniker}}”. The contract will be created by the Stake Hub Contract when a validator is created.

Whenever a user delegates DOTO, an equivalent quantity of credit tokens are created. On the other hand, when a user withdraws their delegation, a corresponding amount of credit tokens are destroyed, thereby releasing the DOTO.

Reward Distribution

The staking reward comes from the transaction fee - when a block is produced, the majority of the block fee will be collected as a reward for the validator who proposed the block.

Every day, a portion of the rewards collected will be directly sent to the operator account of the validator as commission, while the remaining portion will be sent to the corresponding validator credit contract. And when a user undelegates and claims his/her stakes, the accumulated reward and the original stake will be sent back to him/her.

Validator Operations

Validators are nodes running DOTO Smart Chain software, participating in the consensus process. They require a minimum DOTO stake at their validator address and can receive delegations from other DOTO holders. Validators earn rewards from transaction fees and share most of these rewards with their delegators.

Create Validator

To ensure the security of the network, becoming a validator on the dotOne requires a minimum self-delegation of 2000 DOTO. DOTO holders can initiate a CreateValidator transaction with the StakeHub contract to become a validator. For more information, refer to run-validator.

Edit Validator

Validators can update their information using transactions like EditConsensusAddress, EditCommissionRate, EditDescription, and EditVoteAddress.

Delegator Operations

Delegators are DOTO holders who stake their DOTO with a validator, sharing rewards. They can select any active or standby validator, switch between them, undelegate their DOTO, and claim rewards anytime.

Last updated

Was this helpful?