书面协议:
上面揭示了口头协议不能追本溯源、如果我们引入一种方法让他能达到追本溯源呢?
除了A1、A2和A3以外、我们在口头协议上加入一个A4、使之成为书面协议
A4:(1)、签名不可伪造、一旦被篡改即可被发现、而叛徒的签名可被其他叛徒伪造
(2)、任何人都可以验证签名的可靠性
我们用集合Vi来表示副官受到的命令集、这是一个集合、也就是满足互异性(没有重复的元素)等集合的条件、再定义一个choice(V)函数来决定各个副官的选择、这个函数可以有非常多形式、只需满足两个条件:
1、如果集合V只包含了一个元素v、那么choice(V) = v
2、choice(o) = RETREAT 其中o是空集
任何满足这两个条件的函数都可以作为choice()、然后我们发现SM(m)并不是递归算法、只要让各个V集相同、choice(v)也一定能得到相同的值
解释;
初始化:Vi = 空集合
(1)、将军签署命令并发送给没个副官
(2)、对于没个副官i
A:如果副官i从发令者收到v:0的消息、且还没有收到其他序列、那么他 (i) 使Vi为{v};(ii)发送v:0:j1:...jk给其他所有副官
B:如果副官i收到了形如:v:0:j1:...jk的消息且v不在集合Vi中、那么他 (i)添加v到Vi中 (ii)如果k
(3)、对于没个副官i、当他不再接受任何消息时、则遵守命令choice(Vi)
如果司令忠诚、由于其签名不可伪造、所有忠诚的副官都将得到一个单点集{v}、他们采用相同的命令集Vi相同、得到的choice(Vi)也为v、满足LC1\LC2
如果司令并非忠诚、只需要满足LC1、但是算法SM(m)使得所有忠诚的副官得到相同的Vi、使用choice()函数采用的命令也就一定相同
推演算法