PoW blockchain networks are prone to 51% attacks in their early stages when the hash rate is low, especially when large amounts of cloud computing power are available at low costs. ETC, Grin, and Verge have all encountered 51% attacks in the past year.
To prevent potential 51% attacks, Conflux Network will implement an independent PoS chain. Participants in the PoS consensus will sign the pivot block of the Tree-Graph in regular intervals. The pivot block with enough signatures is included in the pivot chain by all the PoW miners, even if its brother block has more weight. Simply put, when PoS assigs a pivot block, all the PoW workers should follow it. This means that when the PoS consensus votes for a pivot block, even if a 51% attacker tries to modify this block, the PoW node will not approve.
Conflux Network requires PoS consensus to use its “assign pivot block” in a restricted manner. A block will need to be confirmed according to the PoW rule for a certain period of time, and then the trusted PoS node will sign the block. This means that the PoW miners still complete the block order and confirmation for the Tree-Graph structure.
The following instruction will provide clarity on the basic concept regarding PoS Finality. In this document, Conflux chain refers to the current PoW chain.
PoS account:
Address
In general, the account model on-chain is: the private key generates a public key; the public key generates a wallet address. The account model on the PoS chain is similar to the one on the PoW chain. However, there are two private keys called BLS private key and VRF private key on the PoS chain instead of one. The address is generated through two public key keccak-hash calculations (with 256-bit output)
Wallet
The PoS chain on Conflux only prevents a potential 51% attack and increases the network’s security. Therefore, except for basic functions like voting to pivot block and electing the consensus node, the PoS chain doesn’t contain other general blockchain functions (e.g., sending transactions, executing smart contracts). The PoS account doesn’t have the concept of a balance, and the primary function of the PoS account is maintaining Conflux’s consensus.
Every PoS account is the maintainer of Conflux network, not the general user.
Every PoS account should operate an individual Conflux full node. Conflux core code conflux-rust will internally install the wallet functions of an PoS account, such as:
- When running the Conflux node for the first time, if the configuration determines the operation using the PoS account model, a PoS private key will automatically generate and require the user to set a password. The private key will be encrypted by the password and saved as a local file.
- When rebooting the Conflux node and an encrypted private key file is detected, users will be required to enter the password for unlocking the private key file.
- Running a Conflux node will automatically send transactions through the PoS consensus; the user requires no additional steps.
Linking the PoW account:
Users will need to link their PoW account to the PoS account when first creating a PoS account; this process is called “register.” The PoW account grants its voting right to the linked PoS account through staking, and PoS locked position. The process is completed through interacting with the specific internal contract on the Conflux chain. Only a PoS account with voting rights can become a PoS consensus node.
The incentives of PoS participation consensus will be distributed to its linked PoW account.
Linking process:
- When a PoS account is registered, conflux-rust will automatically listen to the registration information and conduct the corresponding operation. No additional steps are required by the user. Synchronizing the registration from the Conflux chain to the PoS chain takes about 10 minutes. After the synchronizing is complete, PoS accounts can participate in the PoS consensus.
- Users can stake more CFX tokens on the Conflux chain to increase their PoS vote count.
Unlink process:
- PoW linked accounts can write off all or parts of their PoS account voting weight through interaction with the internal contract. This is called “retire.”
- Users can retire after 7 days of linking. CFX will be unlocked 7 days after retirement. Unlocked CFX will be in the form of staking, but users can withdraw CFX anytime.
(Notice: The Conflux PoS chain generates 1 block approximately every 1 minute. The “7 days” mentioned above and below will refer to the corresponding PoS block number. For example, the 7 days after retirement refers to 10080 PoS blocks after the retirement transaction. In practice, the PoS chain generates blocks faster or slower than the 1 block/minute rate, and the time necessary depends on the actual block number.)
PoS Consensus:
Consensus Committee:
- PoS consensus is constructed by a committee that holds at most 300 votes. The committee will operate the PoS chain through the Hotstuff consensus protocol.
- Committee members can vote for the Conflux chain Pivot block hash. The pivot block hash with more than 2/3 votes will be recorded. The pivot block collecting all the signatures is called the pivot decision.
- Committee members only sign the blocks that have been confirmed for at least 5 minutes under PoW protocol.
Committee Election:
- The committee consists of 300 seats. Each committee member serves for 6 hours. Approximately one-sixth of committee seats (50 votes) are up for election every hour.
- PoS accounts will participate in the election through VRF (Verifiable Random Function). VRF seed will be generated by the pivot decision block hash when the election starts.
- Each committee term’s election will start 1.5 hours in advance and end 0.5 hours in advance.
- When electing, each vote for a PoS account will be considered as an individual candidate. If one PoS account has 10 votes, it will be considered as 10 candidates participating in the election. If the account has 2 votes elected, the account will have 2 voting weights in this committee term; the rest of 8 votes can participate in the next election.
- A PoS address may contain several votes. When participating election, each vote of the candidate will be attached to a VRF (Verifiable Random Function) output, which is uniformly random and independent. The 50 votes with minimum output will win the election.
- We’ve conducted system optimizations in which, as long as the PoS account sends 1 transaction, all of the votes will be considered as the candidate. If multiple votes are elected, the PoS account only needs to sign once when participating in the consensus.
Incentive Mechanism:
In between 2 committee elections, PoS accounts will receive points based on their different interactions, 6,000,000 points at most. During this time, the interests generated by the Conflux chain will be equally divided into 6,000,000 shares and sent to the linked PoW accounts. If the points generated are less than 6,000,000, un-sent interest will be burned.
Points Composition:
- When participating in the committee election, the votes within the lowest 10,000 hash values will receive 120 points each. (1,200,000 in total as participation reward)
- Committee members will receive 90,000 points for each vote. 50 votes will receive 4,500,000 points in total.
- When becoming the leader of the PoS block, each block will receive 3,000 points; 60 blocks in a total of 180,000 points.
- Each PoS block will require 201 out of 300 committee members to sign. However, the leader can pack more than 200 member signatures. We encourage the leader to pack more signatures to prove that each committee member actively participates in the consensus. After 200 signatures, 20 points will be rewarded for each signature, 2,000 points at most. 60 blocks in a total of 120,000 points.
Interest Generated:
- The interest of each Conflux chain block is generated as follows:
- sqrt(total staking value * CFX total circulation) * 4% / Conflux’s 1 year block number
- Suppose the PoS has not started the next election and distribute the interest shares after 7,200 successive Conflux chain blocks (around 1 hour). In that case, there will not be any new interest generated until the next election happens. The purpose of this is to prevent PoS nodes from intentionally slowing down the consensus to get more interest.
Penalty:
- If a user does not participate in the committee election, there will be no incentives or penalties.
- For the committee member who does not sign after 60 successive blocks, the committee member will be retired coercively. All of the votes will be in the unlock-awaiting stage and lose voting rights.
- If the PoS account signs for two PoS blocks that have the same block height, its CFX token will be permanently locked. However, tokens after the unlock-awaiting stage will not be affected. This is operated by the code and based on the PoS consensus protocol. An honest user will never perform such an action.