This documentation introduces dfinance Proof-of-Stake consensus algorithm and contains instructions on how to delegate DFI, how to become validator on dfinance, how run a full node, and how to earn rewards for delegation.
Any blockchain-based system must have a consensus algorithm, which secures blockchain from attacks (like Sybil attacks, Double Spending attacks, 51% attacks), forks, and allowing to validate if block mined/generated correctly and in time.
Dfinance is based on Proof-Of-Stake (PoS) consensus algorithm developed by Cosmos team. This means that dfinance has a set of validators who can generate blocks thus securing the network. By utilizing Tendermint protocol dfinance trying to minimize possible attack vectors on the network and amount of forks that could happen.
Validator is a user who is ready to set up a full-node, self-delegate minimum amount of DFI, keep it with great performance, and in such way secure the network and earn rewards.
There are two kinds of validators: active ones and standby. The top 101 validators are active validators, who indeed can generate new blocks, the rest of validators are standby validators. The top can be generated by sorting all validators by their voting power, from greater to lesser. Each validator has a voting power (voting power of validators is determined by the amount of staking DFI bonded as collateral). These DFI coins can be self-delegated directly by validators themselves or delegated from other DFI holders. For their work active validators receive network fees (collected from transactions) and network rewards (newly generated DFI). This way to become an active validator standby should get so much voting power as possible to get inside top.
The active validators must generate blocks, sign them with the private key, and broadcast in the network, in a specific time slot that is chosen special for this validator.
Any user of the network can become a validator. The user should send a special transaction to the network, and set up a full node. Read more how to become a validator in Become a validator documentation.
The procedure of delegation coins to a specific validator or own validator (self delegation) is calling staking. Once a user delegates DFI coins, these coins can't be used anymore while it's delegated, in exchange of delegation users getting part of rewards/fees formed by validator - commission established by the validator.
Any user can delegate his coins to validators to support liked validators and get part of fees received by validators they choose to delegate. By delegating, a user locks his tokens. Delegators should actively participate in choosing validators, because if a user delegates to the performance-less validator (let's say validator which misses blocks or double sign blocks/pre-votes). In such cases, both validator and delegator will be exposed to the slashing procedure.
You can't delegate same DFI coins to different validators, only to one, means, if you have for example 1000 DFI, you can delegate 900 DFI to validator A, and the rest, 31 DFI, to delegator B, but you can't delegate already staked DFI to another validator.
Not ready yet, but planned for next versions:
Also, by delegating coins, the delegator getting sDFI coins, that validator will be able to use in financial instruments, provide liquidity, low or borrow, etc. This feature will change the staking maturation time. Currently, if the user delegates DFI, validator gets users' stake immediately, but once maturation and sDFI mechanism are enabled, it will take the period in a few weeks. Such liquidity staking mechanism is described in the dfinance economic model, which will be announced later in the near time.
A full node is a dnode instance that stores all blockchain data including transactions, blocks, consensus settings, and at the same time it validates new coming transactions and blocks. Each full node has a public IP address, so other full nodes can communicate with it via p2p. All validators in the network must run their full node, as validators must have all information about the network to verify and approve transactions, blocks.
After this short introduction to staking, let's continue with current documentation and see how we can delegate.