区块链安全理论与实践(Blockchain for Distributed Systems Security)阅读笔记D4——OM算法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

OM算法

拜占庭将军问题

拜占庭将军问题是经典的共识问题之一。假设有 N N N个拜占庭将军每个人都指挥一个同样规模的军队包围了一座地方城市。而拜占庭将军之间是地理隔离的他们之间只能通过信使送信进行交流。为了合作进攻每个将军向其他将军送信传送消息进行投票来决定是否进攻。也就是说每个将军会给其他 N − 1 N-1 N1个将军派遣信使信使会携带一个写着“进攻”或者“撤退”的信当将军收到的“进攻”数量大于“撤退”数量的时候就进攻反之撤退。
然而敌军也不会坐以待毙早已在将军的信使里面安插了间谍他们通过送和原本的内容相反的信来干扰投票。
那么我们通过设计一个什么样的算法来使各个将军之间达成共识呢

口头消息传递Oral Messaging, OM算法

这是最初的拜占庭将军问题的解决方案下面将以伪代码的形式讲解OM算法注意Default是预定值 f f f是最多有 f f f个将军有故障

BEGIN OM(f):

  1. 指挥官将值发送给每个中尉
  2. f o r for for i = 1 : N − 1 i=1:N-1 i=1:N1 d o do do
  3.       i f if if 中尉收到了值:
  4.            中尉 i i i将从指挥官收到的值存储为 v i , i v_{i,i} vi,i;
  5.       e l s e else else:
  6.            v i , i = D e f a u l t v_{i,i}=Default vi,i=Default
  7. e n d end end f o r for for
  8. f o r for for i = 1 : N − 1 i=1:N-1 i=1:N1 d o do do
  9.       f o r for for j = 1 : N − 1 j=1:N-1 j=1:N1 and j ≠ i j\neq i j=i d o do do
  10.                  i f if if 中尉收到了值:
  11.                         中尉 i i i将从中尉 j j j收到的值存储为 v i , j v_{i,j} vi,j;
  12.                  e l s e else else:
  13.                          v i , j = D e f a u l t v_{i,j}=Default vi,j=Default
  14.          e n d end end f o r for for
  15. 中尉 i i i使用majority{ v i , 1 , v i , 2 … v i , N − 1 v_{i,1},v_{i,2}…v_{i,N-1} vi,1,vi,2vi,N1}
  16. e n d end end f o r for for

当算法进行到 f = 0 f=0 f=0的时候算法变成

BEGIN OM(0):

  1. 指挥官给每个中尉发送值
  2. f o r for for i = 1 i=1 i=1: N − 1 N-1 N1 d o do do
  3.       i f if if 中尉 i i i收到了值
  4.            中尉 i i i将指挥官发送的值存为 v i , i v_{i,i} vi,i;
  5.       e l s e else else:
  6.            v i , i = D e f a u l t v_{i,i}=Default vi,i=Default
  7.      中尉使用 v i , i v_{i,i} vi,i
  8. e n d end end f o r for for

N ≥ 3 f + 1 N\geq3f+1 N3f+1的时候算法就可以达成共识。但是很明显这是一个递归算法算法的复杂度是指数增长的对于现在互联网中海量的节点而言这个算法不现实。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 区块链