TRON 的 DPoS 共识算法基础

  • coredevs
  • 发布于 2023-05-24 13:10
  • 阅读 26

文章详细介绍了TRON网络的DPoS共识算法,包括其基本原理、实践应用、优缺点以及与其他共识算法的对比。文章还讨论了TRON网络中的区块生成、分叉处理、区块确认机制以及超级代表(SR)的轮换和激励机制。

共识是分布式系统的核心。一个好的共识算法对分布式系统的益处巨大。在区块链领域,你可能听说过许多共识算法,如 PoW、PoS、DPoS、BFT 以及基于它们的其他改进算法。TRON,与许多其他公共区块链一样,进行了大量的研究和实践以改进其共识机制。在保持自身定位的前提下,TRON 网络首先实施了 DPoS 共识机制,然后将其与 PBFT 共识机制结合,两者逐渐演变为新的 TPoS 共识机制。

这一系列的三篇文章将揭开 TRON 公共区块链共识算法的神秘面纱。

文章 1: TRON DPoS 共识算法的基础

文章 2: PBFT 共识算法简介

文章 3: TRON 4.0 大航海中的 TPoS 共识机制

概述

在区块链系统中,记账者通常是以不同节点执行相同的共识方式选举产生的。PoW(工作量证明)共识算法通过解决困难的 PoW 问题来识别记账者。像比特币和以太坊这样的典型区块链系统都采用了 PoW 共识。理想情况下,PoW 共识是一种高度去中心化的算法,确保了分布式账本的安全性。然而,由于解决问题极其困难,实际情况中,大多数节点选择与矿池合作集体挖矿。这导致了记账权集中和垄断在少数大型矿池中。因此,PoW 所提倡的去中心化被有所妥协。与此同时,进行无意义的计算而消耗大量电力,也是 PoW 被许多人严厉批评的另一个问题。另一方面,PoW 共识算法的低效率也影响了系统的吞吐量。

PoS(权益证明)开辟了新途径并在区块链系统中发行权益(代币),赋予持有更多权益的节点参与记账的权利。这种新的共识有助于解决浪费计算能力以解决难题的问题。此外,只有持有权益的矿工可以参与挖矿,这确保了矿工和利益相关者的利益一致,保护了区块链系统的安全。当然,PoS 也有其自身的问题,包括复杂的沟通,以及当人们贿赂选民或投多个票时对系统产生的负面影响。

在 DPoS 中,这是一种从 PoS 共识演变而来的共识,所有持有权益的节点中选出少数代表,并赋予其记账的权利。如此一来,复杂的沟通问题得以解决。同时,记账权在区块生成之前便被授予。投票是针对记账者而不是区块,这有助于防止人们投多个票。与 PoS 相比,DPoS 共识大大减少了参与用于验证和记账的节点数量,提供了一种高效的共识产生模型。记账者验证和打包交易成区块,并将新的区块广播给系统中的其他节点。然后其他节点识别新区块。

DPoS 共识算法的典型实现如下:

当一个区块链系统首次部署时,系统会发行一定数量的代币并将其分配给系统中的节点。持有一定数量代币的节点可以申请成为区块链系统中的记账者候选人。所有持有代币的节点可以投票给这些候选人,记账者(区块生产者)根据每个节点获得的投票数量进行选择。在一定时间(T)后,系统会重新计算每个候选人获得的投票,并决定下一个周期的记账者。这个过程会不断重复。记账者在 T 的时间内生成区块,并获得系统激励机制中规定的相应奖励。

DPoS 共识的实践

TRON 公共区块链采用 DPoS 共识算法。在实践中,系统设置超级代表候选者角色,按得票数排名前 27 的候选人被选举为 SR(超级代表)。排名在 28 到 127 之间的候选人称为 SRP(超级代表伙伴)。系统会重新计算每个候选人获得的投票,并决定下一个批次的 SR。SR 有权生产区块并获得相应的区块生成奖励。此外,SR 和 SRP 在每个新区块生成时还会获得投票奖励。

区块生成的轮次和插槽

TRON 网络将每六小时定义为一个轮次,每三秒为一个插槽。因此,每个轮次包含 7200 个插槽。轮次和插槽之间的关系如图 1 所示。每轮的最后两个插槽是维护期,在这段时间内不会生成区块,并决定新的 SR 及其生成区块的顺序。

图 1:轮次和插槽之间的关系

区块生成与共识

SRs 按照维护期内决定的顺序,在其对应的插槽中轮流生成新区块。图 2 示意了 SR 如何生成区块。

图 2:SRs 轮流生成区块

图 3 展示了在其中一个插槽内发生分叉的情况。S3、S4 和 S5 都在其账本中保留了由 S1 和 S2 生成的区块 B1 和 B2。然而,由于暂时的网络分区,S4 和 S5 没有接收到 S3 生成的区块 B3。当 S4 的插槽到来时,S4 认为 S3 可能已经失败,因此在 B2 的基础上生成了区块 B3'。随后,S5 依靠区块 B3' 生成区块 B4,因为它没有收到 B3。现在,在整个区块链系统中,存在两个不同的区块 B3 和 B3',在同一高度上(=3)。这种情况被称为暂时分叉。

图 3 由于网络分区造成的分叉

由于网络分区在去中心化系统中是不可避免的,加上偶尔出现的暂时分叉,TRON 允许暂时分叉发生以提高其吞吐量。TRON 不过度强调系统的实时一致性,而是确保最终一致性的实现。这是根据 CAP 原则所做的妥协。为确保系统的一致状态,采用以下两种方法:

1. 采用最长链原则尽快最小化分叉

每当发生暂时分叉时,节点总是优先考虑最长链,SRs 存储每个分叉,并在他们生成区块的插槽到来时基于最长链来生产块。如图 4 所示,S6 收到由 S3 生成的区块 B3 和由 S4 生成的区块 B3',以及 S5 基于区块 B3' 生成的 B4。在 S6 的本地区块链中,有两条链,分别是 B1-B2-B3 和 B1-B2-B3'-B4。根据最长链原则,S6 将基于 B1-B2-B3'-B4 继续生成区块 B5。接下来的 SRs 也会按照同一原则生成区块。在网络分区严重时,区块链系统可能会有多个分叉链。然而,只要 SRs 采用最长链,SRs 将同步其已知区块并切换到最长链,待网络通信恢复,解决暂时分叉问题。

图 4:SRs 基于最长链生成区块

2. 配置了一种固定机制的区块共识

共识的设计旨在确保最终确定的区块不会回滚。区块共识需要一种公平的机制,因为在节点容易在暂时分叉时切换链的情况下,原链上的区块可能会被回滚。

在上述示例中,节点 S6 根据其本地区块链的状态生成区块,而不知道其他节点的账本状态。S6 生成的区块已最终确定。只有当大多数 SR 识别该区块时,才能对此区块达成共识。当 SRs 在其后续生成的区块(即该区块的块哈希将作为后续区块的父块哈希)上生成新区块时,便会识别这一块。TRON 网络在采用最长链的同时,将区块共识的阈值设定为 19。这意味着,除了生成区块的 SR 外,还需另外 18 个不同的 SR 在此区块上生成后续区块,以达成对此区块的共识。当这个区块被大多数 SR 识别并且无法回滚时,该区块达成共识,因此称之为稳定区块。

图 5 示意了区块凝固的过程:在 S6 生成 B5 之后,B3' 得到了三个 SR 的确认,包括同时生成 B3' 的 S4,以及分别基于 B3' 生成 B4 和 B5 的 S5 和 S6。如果后续 SR 继续在链 B1-B2-B3'-B4-B5 上生成区块,则在 B19 生成时,B1 将成为一个稳定区块,B2 和 B3' 在 B20 和 B21 被生成时也是如此。应该注意的是,“不同的 SR”的真正意义在于确保任何其他分叉的高度增长不会超过当前链的高度,这意味着稳定区块已得到大多数 SR 的确认。

图 5 确认区块为稳定区块

SR 轮换与激励

SR 轮换是 DPoS 共识的重要特征。考虑这个场景:一个 SR 离线,整个区块链系统的吞吐量将受到影响。通过设置 SR 轮换机制,会有其他可用的超级代表伙伴填补该角色。未能产生区块并将区块奖励分发给其选民的旧 SR 将被其他超级代表伙伴替换。下一个轮次将生成区块的 SR 在维护期间确定。这样,SRs 将轮流执行他们的任务。

在没有管理角色的区块链去中心化系统中,健全的激励模型和反馈机制对于有效治理系统是必不可少的。类似于 PoW 共识奖励生成区块的节点以代币,DPoS 共识同样向区块生产者提供奖励,以激励他们验证交易和生成区块,同时将奖励分配给选民,以维护区块链网络的健康运行并鼓励更多选民参与网络治理。之前的文章已经详细解释了这一激励模型,请查看链接:TRON 网络激励机制

优势与局限

TRON 采用的 DPoS 共识机制可以在网络分区时保证系统可用性。在链分裂后的网络连接恢复时,节点将遵循最长链原则,迅速切换到最长链并最终确定已被大多数 SR 确认的区块。因此,TRON 网络确保区块链系统的顶级可用性,并且对对一致性需求较低的应用非常友好。另一方面,TRON 的凝固机制为凝固的区块提供高度一致的状态,某种程度上确保了高网络一致性。

在我们当前实施的 DPoS 共识中,最终确定一个区块需要长达 18 个插槽(54 秒)的确认时间。尽管我们可以根据多数规则将确认阈值修改为 14(生成一个区块在 13 个插槽后即固化,即 39 秒),但这会降低安全性。因此,当前 DPoS 算法下区块共识的效率仍有待改善。在接下来的文章中,我们将进一步探讨这一问题并讨论可能的解决方案。

总结

作为该系列的第一期,本文首先简要介绍了区块链系统中一些常见的共识算法,然后解释了 TRON 主网目前采用的 DPoS 共识算法的基本原理,最后讨论了其优缺点。本文为我们未来讨论 TPoS 共识机制的技术哲学和实施奠定了基础。

参考文献

https://bitcoin.org/bitcoin.pdf

https://www.sciencedirect.com/science/article/pii/S240595951930164X

https://en.bitcoinwiki.org/wiki/DPoS

获取更多信息

Github: https://github.com/tronprotocol

Telegram: https://t.me/TronOfficialDevelopersGroupEn

  • 原文链接: medium.com/tronnetwork/t...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
coredevs
coredevs
江湖只有他的大名,没有他的介绍。