V神介绍99%容错的共识机制

Leslie Lamport着名的1982年论文“The Byzantine Generals Problem”算法的描述。
假设存在N共识参与节点,并且每个人都同意这些节点是谁提前的(取决于上下文,它们可能是由可信方选择的,或者如果需要更强的分散,则通过一些工作证明或股权证明)方案)。我们标记这些节点0....N-1。还假设已知D网络延迟加上时钟差异(例如D= 8秒)。每个节点都能够及时发布值T(恶意节点当然可以提前或稍后提出值T)。所有节点等待(N-1) * D几秒钟,运行以下过程。定义x : i为“ x由节点签名的值i”,x : i : j作为“由... x签名的值”i并且该值和签名一起由j“等签署。在第一阶段发布的提案将是v: i某些形式的,v并且i包含提出它的节点的签名。
如果验证器i收到一些消息v : i[1] : ... : i[k],i[1] ... i[k]那么已经(顺序)对消息进行了签名的索引列表(v其本身将被计为k = 0,并且v:ik = 1),则验证器检查(i)时间小于T + k * D,和(ii)他们还没有看到包含的有效信息v; 如果两个检查通过,他们发布v : i[1] : ... : i[k] : i。


捕获.JPG

节点1(红色)是恶意的,节点0和2(灰色)是诚实的。比赛一开始,两位诚实的节点让他们的建议y和x,而攻击者提出了两个w和z后期。w准时到达节点0但不z到达节点2,并且没有按时到达节点。在时间T + D,节点0和2重播他们已经看到了,他们还没有广播的所有值,但增加了他们的签名上(x与w节点0,y节点2)。这两个节点诚实看到{x, y, w}。
如果问题需要选择一个值,他们可以使用一些“选择”函数从他们看到的值中选择一个值(例如,他们采用具有最低哈希的值)。然后节点可以就此值达成一致。
现在,让我们来探讨一下为什么会这样。我们需要证明的是,如果一个诚实的节点已经看到了一个特定的值(有效地),那么每个其他诚实的节点也看到了这个值(如果我们证明了这一点,那么我们知道所有诚实的节点都看到了相同的一组值,所以如果所有诚实节点都运行相同的选择函数,它们将选择相同的值)。假设任何诚实节点接收v : i[1] : ... : i[k]到他们认为有效的消息(即,它在时间之前到达T + k * D)。假设x是单个其他诚实节点的索引。要么x是其中的一部分,{i[1] ... i[k]}要么不是。
在第一种情况下(比如说x = i[j]这个消息),我们知道诚实节点x已经广播了该消息,并且他们这样做是为了响应j-1他们在时间之前收到的签名消息T + (j-1) * D,因此他们在那时广播他们的消息,并且因此,所有诚实节点必须在时间之前收到消息T + j * D。
在第二种情况下,由于诚实节点在时间之前看到消息T + k * D,然后他们将用他们的签名广播消息并保证每个人(包括x在时间之前都会看到它)T + (k+1) * D。
请注意,该算法使用添加自己的签名作为消息超时的“碰撞”的行为,并且这种能力可以保证如果一个诚实的节点按时看到消息,他们可以确保其他人看到消息准时,因为“准时”的定义增加了超过每个添加的签名的网络延迟。
在一个节点是诚实的情况下,我们是否可以保证被动观察者(即关注知道结果的非共识参与节点)也可以看到结果,即使我们要求他们一直在观察整个过程?随着该计划的编写,存在一个问题。假设一个指挥官和一些k(恶意)验证器子集产生一条消息v : i[1] : .... : i[k],并在之前将其直接广播给一些“受害者” T + k * D。受害者认为该消息是“准时”的,但是当他们重新广播它时,它只会到达所有诚实的共识参与节点之后T + k * D,所以所有诚实的共识参与节点都拒绝它。


1.JPG

但我们可以填补这个漏洞。我们要求D受到两倍的网络延迟和时钟差异的限制。然后我们对观察者施加不同的超时:观察者v : i[1] : .... : i[k]在时间之前接受T + (k - 0.5) * D。现在,假设观察者看到一条消息接受它。他们将能够在一段时间之前将它广播到一个诚实的节点T + k * D,并且诚实的节点将发出带有其签名的消息,该消息将在时间之前到达所有其他观察者T + (k + 0.5) * D,具有k+1签名的消息的超时。
2.JPG

改造其他共识算法

理论上,上述内容可以用作独立的一致性算法,甚至可以用于运行股权证明区块链。共识的第N + 1轮验证器本身可以在共识的第N轮中决定(例如,每轮共识也可以接受“存款”和“撤销”交易,如果接受并正确签署将会增加或删除验证器进入下一轮)。需要添加的主要附加成分是用于决定允许谁提出阻止的机制(例如,每轮可以有一个指定的提议者)。它还可以被修改为可用作工作证明区块链,允许参与共识的节点通过在签名的同时在其公钥之上发布工作证明解决方案来实时“声明自己”。用它的消息。

但是,同步假设非常强,因此我们希望能够在没有超过33%或50%容错的情况下在没有它的情况下工作。有一种方法可以实现这一目标。假设我们有一些其他的一致性算法(例如,PBFT,Casper FFG,基于链的PoS),其输出可以偶尔在线观察者看到(我们称之为阈值相关的一致性算法,与上面的算法相反) ,我们称之为延迟依赖共识算法)。假设依赖于阈值的一致性算法连续运行,其模式是不断地将新块“最终化”到链上(即,每个最终值指向一些先前的最终值作为“父”;如果存在一系列指针A -> ... -> B,我们称A 为B 的后代。

我们可以将依赖于延迟的算法改造到这个结构上,让总是在线的观察者能够在检查点上获得一种“强大的终结性”,容错率达到95%(你可以通过增加更多的验证器和任意方式将其任意接近100%)要求这个过程需要更长的时间)。

每次时间达到4096秒的倍数时,我们运行与延迟相关的算法,选择512个随机节点参与算法。有效提议是由阈值相关算法最终确定的任何有效值链。如果一个节点在T + k * D带有k签名的时间(D = 8秒)之前看到一些最终值,它会将链接受到其已知链的集合中并重新广播它并添加自己的签名; 观察者使用T + (k - 0.5) * D如前的阈值。
最后使用的“选择”功能很简单:
(1)最终的值不是已经同意在上一轮中的最终值的后代,将被忽略
(2)无效的最终值将被忽略
(3)要在两个有效的最终值之间进行选择,请选择具有较低哈希值的值
如果5%的验证器是诚实的,那么512个随机选择的节点中没有一个是诚实的,只有大约1:1万亿的机会,因此只要网络延迟加上时钟差异小于D/2上述算法就行,即使由于阈值相关算法的容错被破坏而呈现多个冲突的最终值,也能正确地协调某些单个最终值上的节点。
如果满足阈值相关一致性算法的容错(通常为50%或67%诚实),那么依赖于阈值的一致性算法将不会最终确定任何新检查点,或者它将最终确定彼此兼容的新检查点(例如,一系列检查点,其中每个都指向前一个作为父级),因此即使网络延迟超过D/2(或甚至D),因此参与延迟相关算法的节点不同意他们接受的值,值他们接受仍然保证成为同一链条的一部分,所以没有实际的分歧。一旦延迟在未来一轮恢复正常,延迟相关的共识将恢复“同步”。
如果阈值相关和延迟相关的共识算法的假设同时(或在连续轮次中)被破坏,则算法可以分解。例如,假设在一个循环中,阈值依赖共识定型Z -> Y -> X和从属等待时间不同意共识之间Y和X,并在接下来的轮阈值依赖性共识定型后代W的X是不的后代Y; 在延迟相关的共识中,同意的节点Y不会接受W,但是同意的节点将会接受X。但是,这是不可避免的; 具有超过1/3容错性的安全欠不同步共识的不可能性是a众所周知拜占庭容错理论的结果,即使允许同步假设,但假设离线观察者不可能超过1/2容错。

当时T + (N-1) * D,节点停止收听。此时,可以保证诚实节点全部“有效地看到”同一组值。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容