7 x. J5 {" h j; tAleo的共识机制,显然受到了Sui的Narwhal与Bullshark协议的深刻影响,可以认为其设计灵感几乎完全来源于此。Narwhal与Bullshark的核心优势在于它们能够智能地区分并高效处理各类交易类型。
2 V5 W) b) Y& A前言·重点概要: p' ?# n2 ?; o1 P5 F0 ^
* \5 E& Y4 H: I' U& N
3 J0 p: f5 m2 l6 z# B5 I
涉及个人资产的交易,如支付或NFT的铸造与转移,可以灵活地独立处理,而不必严格遵循序列化规则。相对地,对于涉及共享资源的交易,去中心化交易所(DEX)中的流动性池操作或订单匹配,就需要按照特定的执行顺序来进行,以确保在多用户环境中实现公平性和一致性。
9 {* n1 T1 P, H3 T# n这种设计理念赋予了Aleo在处理不同交易需求时的灵活性和高效性,确保了其共识机制的安全性和效率。* { h, g- l0 u7 N2 ~8 d
创新共识设计:Aleo的技术灵感4 N/ D/ V% o' }2 B' A t7 {% \
大算投,探索数字经济的奥秘,洞察区块链的未来趋势
9 V4 M" F% C( D
; p6 f! ~; Z+ k, d/ H4 b9 F
- Q0 {" g: x; r# z0 ?
Narwhal通过创新性地重新定义了分布式账本的构建策略,其关键在于将内存池的数据流通职责与共识层的数据排列机制进行了精细的分离。4 [1 i' U" [& |8 G: X, F! {
在传统模式中,交易需要经过两次广播过程:首先是到达各个验证者的内存池,然后由区块提议者在共识过程中进行汇总广播,这一过程存在冗余且效率不高。
* U' v4 I% x5 R+ sNarwhal通过明确的职责划分,消除了重复传播的需要,从而实现了账本构建的高效率和流畅性。+ F8 z/ t1 q m- r4 T1 D- |/ C
与传统系统相比,基于有向无环图(DAG)的Narwhal与Bullshark共识架构,为每个验证者提供了独立广播交易批次的能力,利用Narwhal技术来填充其内存池。
" U. S) ]! y. ^6 z1 I6 o! ]* C$ L验证者在接收到交易批次后,将其作为一个节点嵌入到本地DAG结构中,并通过对先前节点的认可与投票来构建节点间的连接。. x# @; {5 r3 [
这种独特的共识机制使得验证者能够基于本地DAG结构自主进行交易排序,而无需承担额外的通信成本。这一创新设计确保了DAG共识逻辑的高效运行,同时有效控制了通信成本。
" _( q/ J+ p9 B# l0 j' Y2 m7 y交易处理革新:Narwhal的内存池策略
6 A! D U# i# c4 Q大算投,探索数字经济的奥秘,洞察区块链的未来趋势: O5 [: k9 C6 v1 ^* N: p) y7 P* _
+ ?7 v3 Z1 h* }8 X4 G
7 @% e2 P4 g" E' r8 P$ qNarwhal架构是内存池的基础,精心组织每一轮验证者的DAG(有向无环图)结构。这个DAG由节点(代表交易批次)和连接它们的边(指向前一轮父节点的引用)组成,如图1所示。
7 A2 ]* }5 V, Q9 I) S, f- F( W& z6 a验证者之间频繁交换节点和边的信息,以便在本地构建一个一致的DAG视图。Narwhal专注于DAG的构建,而其上的共识机制负责解析其深层含义并作出决策。
$ W3 y7 c5 I. ]& [) g D) y! y8 @! D* y1 x
; Q5 H" a- E v e+ a图1:展示了基于圆形的DAG组件,包括顶点(蓝色框)和传出边(绿色箭头表示)
+ q9 w6 ~5 _, _. t, t6 @4 g考虑到一个n3f+1系统,设计目的是容忍多达三分之一的拜占庭节点。在Narwhal中,每个验证者由一个工作器和一个主节点组成。工作器有两项职责:% x7 s) A3 X- r8 d! U8 V: p
1.将交易批次流式传输到相应的验证器工作器(例如,Worker1与其他验证器的Worker1共享批次,如图2所示)。9 l& d n! o" ^$ I( B9 H
2.将批次的摘要(哈希)发送到各自的主节点。每个验证器的主节点使用这些摘要来运行Narwhal内存池协议,并在其自己的视图中形成基于回合的本地DAG。
. I n& P1 c4 a E
- r" T! L8 o# F/ D, @! W7 p @3 z
4 t2 |1 \1 w" d8 ]% f
图2:说明了每个验证器的内部工作原理,它由工作器和主验证器组成
3 c+ }3 S6 D3 u由于工作节点的独立运行模式,系统可以灵活扩展数据处理能力,通过增加更多节点实现数据传播的横向扩展。尽管主节点成为处理瓶颈,因为它独自承担内存池协议运行的责任,但这种设计策略具有显著优势。
: \! ?! V" s* K# Z通过将数据传播与DAG结构的构建分离,主节点可以自由构建DAG,不受传播速度的限制。同时,利用工作节点提供的批次概要而非完整交易集,主节点运行内存池协议的效率显著提高,显著降低了带宽消耗。
# e/ A5 e/ W8 R+ ~- N2 ?5 S, r为了构建DAG,每个验证者在第r轮遵循以下步骤:
) t, N7 {& B1 C( r$ M/ o% T1 d1.每个验证者的主验证者向所有其他验证者发送一条消息,包括:4 Q; F5 {; F- Q* {
a.来自其工作者的一批交易摘要。" `! s( y1 @# d0 i- k% D% Q" _
b.来自上一轮(r-1)的nf证书(引用)。8 ~& A& P! u0 ~$ r
2.收到消息后,主接收者通过确保以下内容来验证消息:
/ q! f- p4 i' [: \' k, u( d" l) _a.该消息与接收者来自同一轮。9 T8 R1 e! y+ B4 t" {5 i7 s0 G7 r
b.接收方在第r轮中第一次从发送方主节点接收到该消息。
f8 c* U5 D. Hc.其工作人员已将与指定摘要相对应的批次存储在消息中。. `! k' z- K& ?6 X( p
3.如果检查通过,验证者将通过发回其签名来为该消息投票。
9 f8 t% `8 Z* S1 ^% E( B. A4.发送者汇总来自不同接收者的nf签名以创建证书,并将此证书发送回所有其他主节点。然后,接收者可以使用此证书以及相关的消息摘要在各自的本地DAG中创建顶点。) i0 v0 N1 X; ~; |9 A( q
5.一旦主节点可以形成nf个顶点,每个顶点都有一个证书,它就可以进入下一轮,即r+1。* Q( U( P3 A% l) F- j
1 y% r# }+ U# X9 C2 w0 v& N/ K y
% n6 u o- ]! e8 k" s, |% }
图3:验证者广播其顶点并将其他验证者的DAG添加到其本地DAG的流程, S% d/ {' W2 o8 s* Y- t* Y
; O1 C- V3 N6 M, `+ s: s
' t5 ^( N* L P7 V. X/ U
图4:显示了每个验证者的工作器和主验证器的职责$ r3 K. R4 h1 Y1 D4 @; q- Z
7 a+ k- g4 Q( q+ A }, I0 Y
! K* O: O5 y% k7 c' h图5:DAG构建
( h' D6 A p$ s0 ?' t; L& p4 t% INarwhal架构作为内存池的基础,精心构建了每轮验证者的DAG结构。
" ?0 b& `! r: g* q: |, t- Y这个DAG由代表交易批次的节点和指向前一轮父节点的边组成,如图1所示。验证者之间频繁交换节点和边信息,以便在本地构建一致的DAG视图。
* V' b' _/ Z4 s6 W. y% FNarwhal专注于DAG的构建,而共识机制则负责解析其深层含义和决策。在Narwhal中,每个验证者由一个Worker和一个主节点组成。
! | ^' ]1 s% K, r, N, PWorker负责将交易批次流式传输到相应的验证者Worker,并将其批次的摘要(哈希)发送到各自的主节点。
% B, I r* y5 u* d; c每个验证者的主节点使用这些摘要来运行Narwhal内存池协议,并形成基于轮次的本地DAG。
% B/ m4 ~9 q' \/ S排序机制突破:Bullshark的零通信成本排序8 V) E! a# T% w9 R I
大算投,探索数字经济的奥秘,洞察区块链的未来趋势7 F, M" q/ }) p% y9 @
! P8 }; u1 n& {9 }
, ]& a7 Y: |1 m E+ |. @整合了DAG架构之后,Bullshark协议得以在其上施展特有的排序技术,这一过程无需任何额外的通信成本,实现了所谓的“零通信开销”。这意味着,验证者无需进行额外交流,仅需依赖本地的DAG视图和Bullshark共识机制来独立解释节点与边的关系,并形成一致的交易序列。1 ^9 z) P- N* R t' @3 \
尽管网络环境可能不稳定,且拜占庭节点可能引发DAG形态在不同验证者间的不一致,Bullshark仍能确保诚实的验证者能够达成一致的总体排序共识。" s8 V& S% n A5 n8 G$ r! p# D h
Bullshark共识机制包括同步版和部分同步版两种版本,本文将聚焦于部分同步版。这一版本通过实施一种垃圾回收策略,巧妙地控制内存消耗,使其保持在可管理的范围内。这种精心设计将在后续内容中进一步探讨。5 H, J7 Y& I( `) I; P
Bullshark的运作机制就像一场精心编排的舞蹈,将DAG的轮次分为奇数和偶数,形成一个复杂但有序的格局。
: E/ l) l- [$ J4 A以n=4, f=1(遵循nf+1原则)为例,在奇数轮次中,设置的“锚点”如同闪耀的绿宝石,引导排序的方向。而在偶数轮次中,则成为决定锚点重要性的关键舞台。
# ?; E1 [" e( S+ |* V; q. ^# F2 L* n( W. y$ N
' |" L8 G4 N, x) \图6:展示了锚点及其因果历史
+ e! [ o a8 \* n- k" v8 e在偶数轮中,对上一奇数轮中的锚点的投票通过与之相连的边完成。如果一个锚点在下一个偶数轮中获得至少f+1票,它就会被确认提交。
( G, z9 H6 G1 D' ?' [: P例如,在图7中,第3轮的锚点A2因为在第4轮获得了三票,超过了f+1=2的阈值,所以被提交。相反,A1只获得一票,因此仍未提交。
, J5 F: `) _+ h3 a9 a
; L: M8 b3 v% ~+ f2 o
8 |) }* T! p9 c- M# I
图 7:说明了偶数轮中的顶点如何为上一奇数轮中的锚点投票
1 ]+ }$ j. K1 E& |( L8 Y' [9 z然而,考虑到网络的异步特性,我们不能忽视A1。不同的验证者在其本地视图中可能拥有不同的DAG。/ H5 R7 R% ], ~" N" Y
如图8所示,当验证器2尝试追赶验证器1时,它会提交锚点A1,即使验证器1没有提交。当验证器2赶上验证器1时,就会出现问题,因为验证器2会先提交A1,然后是A2。* B6 a+ H6 S. n1 F' p4 m: |
2 n( C3 T3 V$ ~8 N% o6 ?5 @0 }
0 R; Q& ^. I" |' ]6 u7 _! i图 8:不同验证者对 DAG 的不同看法
" n e! Y; _ y- `2 G$ FBullshark设计了一种机制,以确保即使DAG视图不同,验证者间也能就节点的全序达成一致。2 n# b! r7 K' a
关键在于,如果存在从已确认的未来锚点到历史锚点的路径,且后者已获确认,则前者也必须获确认且位于后者之前。6 e# I; ?4 x/ C$ Q l5 K+ N
如果不满足此条件,则可以安全地忽略旧锚点。验证者遵循这一逻辑递归追溯,直到达到已确认的起点。一旦锚点被稳固提交,验证者就可以使用明确的规则(如拓扑排序或基于gas费用的排序),为所有已确认锚点及其因果脉络建立统一的全序。
: V" \2 u3 r, \3 u s7 ^图9展示了锚点A3的因果脉络,以绿色标识的区块清晰呈现。. ]/ C2 m, q2 |/ Q8 l0 |& ^% G
$ h7 W* ]0 T2 r! A$ ?4 k* c/ Y
% D& P7 e* P' z! ?$ f9 E3 ~ t图 9:展示了 Bullshark 全序锚点及其因果历史
7 N C, [2 ~4 u6 z2 u图9直观地展示了承诺过程和全排序。在第6轮中,验证器提交锚点A3,因为它获得了三票,超过了f票的阈值。然后,验证器递归地回顾其历史记录以提交并确定较旧锚点的顺序。7 `- ^& w7 H# Y7 g, o9 M6 ^2 [
由于没有从A3到A2的路径,因此跳过A2被认为是安全的。当验证器回到A1时,它会立即提交并将A1排序在A3之后,因为存在从A3到A1的路径。
( _% O; P" Z* O1 p* MA3以及锚点A1和A3的因果历史是有序的,如图9底部所示。此过程从第1轮重新开始,验证器继续回顾直到找到先前提交的锚点,这意味着其所有历史数据都已排序。
9 A' z( d; C6 O# I+ R4 E值得注意的是,如果锚点具有从已承诺的未来锚点到它们的路径,则承诺锚点被认为是安全的,该路径来自群体交集。
: [1 ?$ D" T1 ?/ j3 \% ~深入分析Bullshark机制,我们发现它通过创新的垃圾回收策略,巧妙地解决了内存管理难题,并在DAG架构的共识体系中确保了公平性。; g; U g6 g' e* z. ? l( \
在区块链世界中,公平性是每个节点都能在共识进程中发声的理想追求。然而,当尝试将每个节点的历史顶点无缝融入全网DAG结构时,网络的异步特性让这一过程的时间框架变得不可预测。
1 ~3 Q1 s/ W: x% O为确保低速节点不被边缘化,所有节点不得不维护大量旧数据和证书,但这可能导致DAG无限扩张,最终耗尽内存资源。因此,垃圾收集机制应运而生,它精准地识别并清除冗余历史数据,为DAG的可持续长大铺平道路。: Q8 M2 T8 p2 b5 r+ f, A* A9 |4 s
垃圾回收机制相当于内存领域的回收站,旨在回收未使用的内存空间,为未来程序运行腾出资源。
* C: t: B) P; Z它通过清理DAG中不再需要的历史数据来实现内存的有效释放,从而维护内存资源的有限性和宝贵性。然而,垃圾回收与公平性之间的张力如同一对矛盾体。
; T+ h% P0 b! G对旧DAG数据的回收可能意味着某些历史信息的访问变得不那么方便,尤其是对于运行速度较慢的节点。因此,垃圾回收与公平性似乎难以兼得。" @5 ~9 x# w3 b% A+ `. {5 j2 C
Bullshark项目通过调整公平性的定义范围,仅在同步过程中确保公平性,巧妙地解决了这一难题。这种策略使得Bullshark的部分同步版本在市场上更受欢迎。其部分同步模型被划分为异步和同步两个阶段。3 ]+ _3 `: h9 _! w9 o F3 M5 v
在异步阶段,系统像自由市场一样运作,消息可能因网络延迟或恶意攻击而延迟。但最终会迎来“全球稳定时刻”(GST),此时系统恢复平静并高效同步运行。' j% ]+ z B( a+ P
简单来说,在部分同步模型中,系统在GST之前保持异步运行,之后同步运行。垃圾收集过程很简单:验证器在广播顶点时为其添加时间戳。提交锚点时,会为其分配一个时间戳,该时间戳计算为其父节点(锚点具有强边指向的顶点)的中位数。' K! j% }7 h3 O$ h% N: }7 {0 W9 [
现在锚点的历史记录已准备好排序,验证器会回顾锚点的历史记录,同时使用该轮顶点时间戳的中位数计算每轮的时间戳。一旦达到某个轮次的GCround,其时间戳比锚点时间戳小超过预定义的时间,则该GCround及其下面的轮次都会被垃圾回收。
( }4 L, r j' ~: `+ q; k- u' O6 F# R3 `2 f1 E+ K5 e) P* P& z5 c# ^
5 V/ V# ?2 T% Z9 s( U0 W图 10:Bullshark 如何垃圾收集旧历史并实现公平的过程
7 F- N# p: z" u图10展示了Bullshark如何进行垃圾收集和实现公平性的过程。在此图中,定义为2,锚点A(绿色)的时间戳计算为5。因此,可以还原并发现GCround时间戳的阈值为5-2,结果为3。因此,任何时间戳在3和5之间的顶点都可以包含在DAG中,即使它到达的时间晚于其他顶点。
) N& w$ ]1 L( s如图10所示,来自验证器4的顶点(标记为时间戳4)可以添加到DAG中,尽管它比其他顶点到达得晚。时间戳低于3的轮次将被垃圾收集。然而,仅添加验证器4的顶点并不能保证公平性,因为没有从锚点到该顶点的路径。
5 T* {+ Y( M% h- P9 U& a8 U因此,在全序过程中将忽略该顶点。为了解决公平性问题,引入了“弱链接”或“弱边”的概念。与迄今为止讨论的边(称为强边,将第r轮中的顶点与紧接在前一轮(第r-1轮)中的顶点连接起来)不同,弱边将第r轮中的顶点与第r-1轮以下的顶点连接起来。
6 s+ c; E# x# A( H它们在共识逻辑中不计入投票;相反,它们的目的是帮助创建通往慢速验证器顶点的路径,以确保其他诚实的验证器最终将它们添加到DAG中。因此,垃圾收集和弱链接的结合可以在同步期间确保公平性,同时限制内存使用。+ ^* N% Z9 H) O9 j2 |0 u/ i, v
总结·总而言之9 B& s1 b5 f/ _1 d- I( S0 a
5 G g- r: _% w0 w( \( `" Z1 k: C
" q! x* s3 C* ?$ J
本文深入探讨了Narwhal和Bullshark在共识协议中处理共享对象的基本思想。Narwhal的设计将内存池功能与共识机制分离,通过工作节点以网络速度传播批量交易,并将批量摘要转发给主节点以形成基于轮次的DAG。2 c/ E7 t. C5 ~9 I. J
这种设计允许系统通过增加工作节点来水平扩展数据处理能力。而Bullshark则在DAG之上构建共识逻辑,无需在验证者之间发送额外消息,实现了数据的快速传播。
- S) l) d/ J& x1 D4 H同时,Bullshark提供了垃圾收集和公平性解决方案,解决了基于DAG的共识所面临的内存和公平性问题。2 |- N7 u" z3 s
关于大算投
& t( z$ g' e1 `8 S" |0 v# X在数字经济的浪潮中,区块链技术正以前所未有的速度重塑着世界的每一个角落,而币圈作为这一变革的前沿阵地,更是汇聚了无数梦想与机遇。为了帮助您在这个充满挑战与机遇的领域中乘风破浪,大算投应运而生。( ]7 ^" L# X1 M+ n* F/ Y( e
, [; f; C. S9 Q' U" _' u' k3 N
* Q" Z4 q; A) I8 S5 j6 j" c2 m& @+ v+ x大算投将致力于成为连接区块链世界与广大投资者的桥梁,通过提供权威、专业、实用的资讯与干货,,旨在成为您探索区块链世界、洞悉币圈动态的贴身智囊。帮助每一位热爱区块链、渴望在币圈有所作为的朋友,找到属于自己的成功之路。
4 S1 G5 j* m/ L. h" _( b2 F我们相信,在区块链的星辰大海中,每个人都能成为自己命运的舵手。 |