Tower BFT:Solana 的高性能 PBFT 实现 | Solana's 8 Innovations

行业区块大康2020-10-17 22:40:57  阅读 -评论 0  阅读原文

在本篇博客中,我们将探讨 Tower BFT。Tower BFT 是 Solana 创建的 PBFT 自定义实现,更强调实时性而不是一致性。在共识达成前,Tower BFT 使用 Solana 的历史证明 (PoH) 作为时钟,以降低消息传递的开销和延迟。

"为提供实时性,副本如果无法执行请求,则必须移动到一个新的视图。但是,需要注意,当至少 2f + 1 个非故障副本处于同一视图中时,此时间段应尽可能最大化,并且在执行某个请求的操作之前,需确保此时间段呈指数式增长。"(《实用拜占庭容错[1]》,Miguel CastroBarbara Liskov

Solana 实现的是 PBFT 的一种衍生,但其存在一个根本性的区别。PoH 在共识达成前会提供一个全局时间源。我们的 PBFT 实现使用 PoH 作为网络时钟,且 PBFT 中副本所用的指数递增式超时可以在 PoH 本身中计算和强制执行。

PoH 是作为有序哈希函数实现的可验证延迟函数。我们使用 VDF 这种宽松的定义,原因在于验证需要(计算时间)/(核心数)。PoH 的基本工作原理如下:

  1. Sha256 尽可能快地进行循环,使每个输出成为下一个输入。
  2. 对循环进行采样,并记录迭代次数和状态。

记录的样本表示时间推移(编码为可验证数据结构)。此外,该循环可用于记录事件。

  • 引用任何样本的消息一定是在相应样本之后创建的。
  • 消息可以插入到循环中,并可与状态一并进行哈希处理。这保证了在下一次插入之前消息已经创建。

此数据结构保证了事件嵌入的时间和顺序,这个核心理念是 Solana 所有主要技术优化的基础。

换一种方式来解释:假如你现在处于一座岛上,一个瓶子漂流到你身边,瓶子内有一个 U 盘,U 盘中有 Solana PoH 账本。仅使用 PoH 账本,你可以计算网络中所有节点的状态。例如,如果为此账本所投的一票没有记录到最近 X 次哈希中,则节点会被视为失败。如果在最近 X 次哈希中,网络中绝对多数节点均对验证消息进行了签名,则账本被视为有效。

  • 检查此数据结构的所有节点会计算出完全相同的结果,且无需任何对等通信。
  • PoH 哈希唯一地标识账本的这一分叉。
  • 仅在获得投票的 PoH 哈希存在于账本中时,验证投票消息才有效。

这就引出了投票和 PBFT 的概念。由于账本本身可充当可靠的网络时钟,我们可以在账本中对 PBFT 超时进行编码。

  1. 投票从 N 个哈希超时开始。

验证者(通过消减)会保证在对某个 PoH 哈希作出投票后,验证者不再对不是该投票子级的任何 PoH 哈希投票(至少对于 N 个哈希)。

  1. 所有前批投票的超时时间均翻倍。

为使操作更易于管理,投票被限制在一个固定的哈希时段内(我们称之为"时隙")。我们的期望时隙是表示大约 400 毫秒的哈希数。每隔 400 毫秒,网络具有一个潜在的回滚点,但每次后续投票会使网络在公开该投票前需停顿的实时时间翻倍。

假设每个验证者在过去 12 秒内进行了 32 次投票。12 秒之前的投票现在的超时时间为 2³² 个时隙,即大约 54 年。其结果就是,网络永远不会回滚该投票。最新投票的超时时间为 2 个时隙,即大约 800 毫秒。随着新区块加入账本,旧区块获得确认的可能性愈来愈大,因为旧投票的时隙数每隔一个时隙(大约 400 毫秒)就会翻一倍。

注意,尽管这听起来像是工作量证明中的概率性确定,但实际上不是。在 ⅔ 的验证者对某个 PoH 哈希投票表决后,该 PoH 哈希即被规范化,无法回滚。这与工作量证明不同,工作量证明中没有规范化的概念。

为防止被锁在网络其余部分之外,每个验证者仅在网络中绝大多数节点也投票表决相同账本后才会投票。各个验证者会监视之前某次投票的超时何时会超过预定义的阈值(例如,从 5 分钟到 10 分钟),并确保网络中绝对多数节点对包含该投票的分叉进行了投票。实际上,验证者会执行以下工作:

  1. 检查是否绝对多数节点已经对一个超时 10 分钟的时隙进行了投票
  2. 如果没有,则不投票

那么,在分区期间以及超时时间到期时,网络会发生什么情况呢?

  1. 任何已过期的选票均会被清除。
  2. 当且仅当子级别具有相同超时时间时,上一级别的超时才会翻倍。

例如,假设某个场景中当前的超时为:

64, 32, 16, 8, 4, 2

如果某个验证者停止给 17 个时隙投票,然后重新开始投票,则该验证者产生的超时将为:

64, 32, 2

需要再进行另外 4 次连续投票,之后所有上一级别的超时才会再次翻倍。

64, 32, 4, 2

64, 32, 8, 4, 2

64, 32, 16, 4, 2

最终,第四次投票会使所有超时翻倍。

128, 64, 32, 16, 8, 4, 2

此方法使得网络可以连续地流式处理区块,无需在绝对多数节点观察到相同账本之前暂停账本。另一个值得注意的方面是,网络中的每个参与者都可以在无任何 P2P 通信的情况下计算其他各个参与者的超时。这使得 Tower BFT 具有异步性。

我们预期会出现许多被快速丢弃的微分叉。当某个验证者检测到多个分叉时,诚实的验证者会计算各个分叉的有效权益加权超时,并选择最大的一个。验证者奖励仅适用于达到 2³² 超时的投票。因此,验证者对超时最大的分叉投票符合激励机制,因为权益加权超时最大的分叉会在网络中产生最大的奖励。

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

全景式解读下一个加密投资热潮 NFT

如同世界上没有两片相同的树叶,世界上也没有完全相同的两个 NFT。因为一个图片 NFT 并不等同于图片,而是该图片的许可权。此外,Rarible 还通过空投的方式将代币总供应量的 10% 分发给所有 NFT 持有人,该方式不限购买平台。

NFT挖矿详解

当游戏中的经济规模足够大时,人们就开始在游戏中打金谋生了。这种活动在互联网游戏中被称之为打金,但在区块链领域被称为 Yield farming,在国内一般翻译为“挖矿”,其特点是玩家获取游戏中的货币,打算将其卖掉换取 "现实世界 "的钱。(译者注:以下内容中会混用打金,挖矿这两个词,但含义相通。) 我非常高兴地宣布,Zima Red 简报的第一个赞助商! 我的好朋友Digital

NFT崭露头角,但距离大众到底还有多远?

大家所说的NFT,到底是什么?现在NFT的相关行业还处于非常初期的阶段,特别是在资产创建过程。数据证明这些NFT资产还没有炒作起来。当市场寻找到最佳突破方向之时,就是NFT市场爆发之日。

Flamingo:一个NFT的集合体

今天,我们要介绍的是由The LAO社区孵化和制定的第一个DAO——Flamingo。Flamingo将支持不断扩大的NFT虚拟空间,将DAO的蜂巢思维方法应用于这个新兴领域的机会中。 俗话说,"文化就是货币"。区块链不仅仅是关于去中心化的金融。它们正准备改变文化,并作为第一代数字在线财产的锚(如果你还没有查过,看看这个链接)。使用区块链和智能合约,我们可以定义并以数字方式执行度

NFT市场交易量激增1000%,短期内能否接力DeFi下半场?

据NonFungible.com数据,截至10月14日,NFT市场交易总量达1.30亿美元,卖出的NFT超过492万个,均价在26.4美元,三项数据均在近一个多月来增长明显。目前NFT市场可谓“麻雀虽小,五脏俱全”,已初具雏形。

FISCO BCOS如何设计基于VRF的rPBFT?

FISCO BCOS 2.6.0引入VRF算法,周期性轮换共识节点,恶意攻击者无法通过提前预测指定区块高度推算出参与共识的节点集合,加强了rPBFT共识算法的安全性。基于VRF的rPBFT共识框架目前rPBFT主要包括两个系统参数,均可动态调整。

号称下一个百亿市场的NFT,交易所该如何乘势而上?

另一方面,随着NFT的发展,其市场交易额也一直处于上升阶段,截止一周前,NFT的市场交易额已突破1亿美元,成功迈入了亿元大关。

中信银行打造“区块链”信用证结算!

中信银行打造“区块链”信用证结算!

科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑