# 4.2 DPOS共识机制

共识机制是区块链事务达成分布式共识的算法。由于点对点网络下存在着或高或低的网络延迟，所以各个节点接收到事务的先后顺序可能不一样，因此区块链系统需要设计一种机制让节点对差不多时间内发生的事务的先后顺序实现共识，这就是共识机制。

DxChain主链目前采用DPoS（Delegated Proof of Stake）机制，又称委托权益共识算法，被认为是PoS（权益证明）算法的改进版本，具有民主化、交易成本低、延迟低、并发高的特点。其形式为通过质押一定数量的原生代币申请成为候选节点，每个周期的第一个块会统计票数进行选举，选举周期为一天，链上各个节点对候选节点投票，选出特定数量的出块节点并按顺序轮流出块。为保证协议的公平性，选举时将按照总质押量进行随机选择（大轮盘随机算法），票数越高则当选概率越大。

<figure><img src="/files/VO0Mok9zr8qLGwmLa99o" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/QzGfvyxa1CuSUxLRCjRe" alt=""><figcaption><p>图2：选举过程</p></figcaption></figure>

<figure><img src="/files/RAfBSQUPIerOqQJ7Dbb1" alt=""><figcaption><p>图3：大轮盘流程</p></figcaption></figure>

DxChain 3.0对DPoS共识算法进行改良，将节点的质押、投票数据存储在系统内置合约中，在数据存储结构上与状态树保持一致，更快地进行周期选举和区块同步。优化后的DPoS共识下，每秒处理的交易数量可达500，足以支持目前用户在链上的操作和DeFi活动的需求。

<figure><img src="/files/cDxiviCS5hwiPKhpokdD" alt=""><figcaption><p>图4：优化后的DPoS流程</p></figcaption></figure>

**系统内置合约包括：**

1）Blacklist：黑名单地址管理合约

2）Proposals：节点申请提案、节点治理合约

3）Validators：验证人节点信息存储、节点信息修改合约

4）SystemRewards：验证人和委托人的奖励存储合约

5）NodeVoting：委托人Delegate投票合约

在DxChain最新的经济模型中，为了提升DPoS选举的性能，验证节点总个数调整为最大支持210个，其中出块节点数量为最多为99个，候选节点数量最多为111个。在合约交易方面，优化后的DPoS支持调用RPC接口和系统内置合约交易两种方式进行选举、质押、投票。原DPoS和节点矿机相关的质押、投票逻辑集成在底层代码中，优化后采用系统内置合约重构，将上述的逻辑与底层代码分离，方便后续的共识升级。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dxchain.gitbook.io/dxchain-wiki/zhong-wen-she-qu/dxchain-v3-ji-shu-wen-dang/4.-ji-shu-de-she-ji-yuan-li-yu-jia-gou/4.2-dpos-gong-shi-ji-zhi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
