The Science of the Blockchain学习笔记

Posted 华南农大 - 郭庆文

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The Science of the Blockchain学习笔记相关的知识,希望对你有一定的参考价值。

前言

衷心感谢《The Science of the Blockchain》一书的作者Roger Wattenhofer。《The Science of the Blockchain》一书较为严谨地介绍了一种基础技术——容错分布式系统(faulttolerant distributed system)。

在容错分布式系统中,数据存储在多台服务器上,并且多台服务器协同完成一项计算操作。这里面,最大的问题便是如何进行协调(coordination problem)。围绕协调问题,研究人员提出了诸多算法与模型,如:区块链,一致性协议,电子合同,共识机制,电子账本,溯源系统,等。

容错分布式系统具有许多重要作用:
(1)同一份数据在多台服务器上进行备份,当一台服务器宕机或遭到黑客恶意攻击时,仍可从其它正常服务器获取或恢复数据(从另一角度出发,多中心化防止了一台服务器的腐败,message corruption一词用的很有意思)。
(2)客户端 C 1 C_1 C1 S a S_a Sa较近而离 S b S_b Sb较远,客户端 C 2 C_2 C2则相反,且 S a S_a Sa S b S_b Sb提供相同的服务。但只有一台服务器时,总有一个客户端的响应时间较长,而有多台服务器时,客户端可就近获取服务,减少响应时长。

拜占庭协议

定义4.1(拜占庭节点) 一个可以有任意行为的节点称为拜占庭节点。这里的任意行为包括:不发送任何消息,发送不同的或错误的消息给不同的节点,谎报自己的输入值,等等。

定义4.2(拜占庭协议) 在存在拜占庭节点的情况下,一个满足定义3.1的共识协议被称为拜占庭协议。假设有 f f f个拜占庭节点,若协议依旧能够正确运行,那么该协议具有 f f f级别弹性( f f f-resilient)。

有效性定义

定义4.3(任意输入有效性) 协议最终输出的共识值必须是任意节点的输入值。

由于存在拜占庭节点,故定义4.3意义不大。

定义4.4(正确输入有效性) 最终协议输出的共识值必须为正确节点的输入值。

由于很难区分拜占庭节点的行为与正确节点的行为,故定义4.4较难得以实现,接下来给出定义4.5和4.6。

定义4.5(全部相同有效性) 若所有正确节点的输入值皆为 v v v,则协议最终输出的共识值必须是否 v v v

定义4.6(中值有效性) 假设节点的输入值是有序的,为排除拜占庭异常节点,使协议最终输出的共识值为所有正确节点输入值的中值。

协议设计

原书给出算法4.9。

引理4.10 当节点数 n ≥ 4 n \\geq 4 n4且只有1个拜占庭节点( f = 1 f=1 f=1)时,最终所有正确节点持有相同的集合 T T T

证明. 至少有3个正确节点,1个正确节点至少见过2次同一个正确节点输入值,比如节点B的值被节点A和节点C收到,节点A构造出 S u , A S_u, A Su,A,节点C构造出 S u , C S_u, C Su,C并发送给节点A,节点A见过2次节点B的值。若拜占庭节点分别向不同节点发送不同的值,该值不会被添加进集合T;若拜占庭节点至少发送过2次值 v ∗ v^* v,则 v ∗ v^* v出现在集合 T T T中。

定理4.11 算法4.9在 n ≥ 4 , f = 1 n \\geq 4, f=1 n4,f=1的情况下是满足任意输入有效性的拜占庭协议。

证明. 协议满足有效性,且2轮后停止。证毕。

定理4.12 算法4.9在 n = 3 , f = 1 n = 3, f=1 n=3,f=1的情况下不是满足全部相同有效性的拜占庭协议。

证明. 再次回顾共识协议的定义,要求满足

  • 一致性:所有正确的节点决定相同的值。
  • 终止性:所有正确的节点在有限时间内终止。
  • 有效性。

假设存在3个节点 P a , P b , P c P_a, P_b, P_c Pa,Pb,Pc,其中 P a P_a Pa P b P_b Pb是正确节点,而 P c P_c Pc是拜占庭节点,考虑下图,虚线消息比实线消息更早到达。

节点 P a P_a Pa坚持自己的值0,而节点 P b P_b Pb坚持自己的值1(注: P a , P b P_a,P_b Pa,Pb无法分辨 P c P_c Pc是否为拜占庭节点),两者永远达不成共识,不满足定义的一致性

定理4.13 n n n个节点组成的网络,若其中存在 f ≥ n / 3 f \\geq n/3 fn/3个拜占庭节点,那么不存在拜占庭协议。

证明. 考虑极端情况, n / 3 n/3 n/3个正确节点输入值为0, n / 3 n/3 n/3个正确节点输入值为1, n / 3 n/3 n/3个拜占庭节点分别向2组节点发送不同的值。

国王算法

原书伪代码晦涩难懂,接下来给出伪代码注释和例子。

参考上图课件,对原书伪代码进行注释

举一个例子解释上述算法步骤:


红色节点为拜占庭节点,蓝色节点为正确节点。

  • 在第1轮里,所有节点广播自己的值,各正确节点得到的消息分别为(0,0,1,1)、(0,1,1,1)和(0,0,1,1)。
  • 在第2轮里,由于节点3的value(1)出现了 3 ≥ 4 − 1 3 \\geq 4-1 341次,故节点3提起议案propose(1);此时,假设拜占庭节点向不同节点广播不同的议案值,企图让节点0保持值0;由于节点2和节点3收到propose(1)的次数为 2 > 1 2 > 1 2>1,节点2和节点3将自己的值设置为1,而节点0不做更改;
  • 在第3轮里,假设拜占庭节点为国王节点,它向不同节点广播不同的值,节点0收到的propose(0)的次数为 1 < 4 − 1 1 < 4-1 1<41,故将值设置为1;而节点1收到的propose(1)的次数为 2 < 4 − 1 2 < 4-1 2<41,故将值设置为0。


下一个阶段操作类似。

引理 4.15 算法4.14满足全部相同有效性。

证明. 若所有正确节点一开始都是值 v v v,那么所有正确节点必然都提起议案propose(v),所有正确节点收到propose(v)的次数至少为 n − f n -f nf(注:故障节点属于拜占庭节点而非正确节点),所有正确节点最终选择值 v v v而不理会国王节点的广播值。

引理4.16 n > 3 f n > 3f n>3f时,如果一个正确节点提起议案propose(x),那么不会有其它正确节点提起议案propose(y),其中 y ≠ x y \\neq x y=x

证明. (反证法)假设正确节点A提出propose(x),正确节点B提出propose(y),观察算法第4行,节点A和节点B分别收到了 n − f n-f nf次x和 n − f n-f nf次y,考虑极端情况这里面各自混有 f f f个拜占庭节点信息,那么对于节点A至少有 n − 2 f n-2f n2f个正确节点提出x,对于节点B至少有 n − 2 f n-2f n2f个正确节点提出y,总有至少有 2 ( n − 2 f ) + f = 2 n − 3 f 2(n-2f) + f = 2n-3f 2(n2f)+f=2n3f个节点。因 n > 3 f n > 3f n>3f,有 2 n − 3 f > n + n − 3 f > n 2n - 3f > n + n - 3f > n 2n3f>n+n3f>n个节点,产生矛盾,假设不成立。

引理4.17 至少有一个阶段的国王节点是正确节点。

证明. 总共有 f + 1 f+1 f+1个阶段,而每一轮的国王节点都不同,总共只有 f f f个拜占庭节点,证毕。

引理4.18 在一个以正确节点为国王节点的阶段里,若 n > 3 f n > 3f n>3f,当国王节点广播值 v v v后,所有正确节点最终不会再改变它们的值。

证明. 分2种情况:
情况1. 所有正确节点都将值设置为国王节点的值 v v v,此时所有正确节点都具有相同的值。由引理4.15可知,不再改变值。
情况2. 有一个正确节点没有选择国王节点的值 v v v,记该节点的值为 x ′ x' x,意味着它收到至少 n − f > f n-f > f nf>f个propose(x’),即至少有 n − 2 f n-2f n2f个正确节点向它提起过议案propose(x’),可进一步推出,所有正确节点皆收到过至少 n − 2 f n-2f n2f个propose(x’),而因为 n > 3 f n>3f n>3f,故有 n − 2 f > f n-2f>f n2f>f。换句话说,所有正确节点都将自己的值设置为 x : = x ′ x := x' x:=x,包括国王节点以上是关于The Science of the Blockchain学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

学习 The Art And Science Of Java

简单翻译 Piccirillo J. 博士的《 The Art and Science of Selecting Robot Motors》

Man's Best Friend: The Science Behind the Dog and Human Relationship

Discovering the Computer Science Behind Postgres Indexes

The most comprehensive Data Science learning plan for 2017

number field is the union of the set of all strings and the set of all numbers. The set of things th