用Gossip协议族构建全网信任图模型

在分布式中,首先需要解决的便是多个节点间数据同步的问题,今天我们就来介绍一种分布式通信协议——Gossip协议。

Gossip协议,又称“八卦”协议,就是模拟人类传播八卦的方式而产生的。简单来说,进行谣言的传播,首先需要有种子节点,种子节点每秒都会随机向其他节点发送自己所拥有的节点列表以及需要传播的消息。任何新加入的节点,通过这样的传播便很快地被全网所知。在最开始,并不需要将信息传递给所有的节点,但随着时间增长,在“最终”的某一时刻,全网会得到相同的信息。

Gossip的两个节点A、B之间存在三种通信方式:

  1. Push:B节点将数据(key,value,version)及对应的版本号推送给A节点,A节点更新B中比自己新的数据
  2. Pull:A仅将数据key,version推送给B,B将本地比A新的数据(Key,value,version)推送给A,A更新本地
  3. Push-pull:在pull的基础上,A再将本地比B新的数据推送给B,B更新本地。

 

要解决的问题:我们如何在不与一个陌生人直接沟通的情况下,确认其是否可信。

通过咨询他的朋友,当然,这些朋友是了解他的,并且他们的可信度已知。

在Leviatom的核心算法HCGraph中,便是利用Gossip协议族构建了全网信任图模型。假设我们使用一个点来表示一个共识节点(Leviatom),用一条有向边表示一个Leviatom向另一个Leviatom发生了证实的关系,那么所有Leviatom的证实关系的组合便形成了一个Leviatom网络,一个网络节点在某个时间会向其周边的邻接节点发起证实的操作,这样它就能够获得一个本地的信任向量,在图2中Na0便向周边标注为蓝色的3个节点均发起了直接证实的操作,并且保存了一个本地的证实向量。

对于全局的网络来说,因为每个Leviatom都会存储与其发生交互的所有邻接节点的信任向量,通过归并这些本地向量便可以获得整个网络的信任关系。比如说在上图中,标注为蓝色的节点是Na0的一阶领接节点,通过收集这些节点的本地信任向量,并和自身拥有的本地信任向量进行合并,这样就能够获得一个粗略的网络信任矩阵,这一步我们称之为Gossip协议。标注为绿色的节点是Na0的二阶邻接节点,Na0会收集这些节点的本地信任向量,并和自身拥有的通过gossip协议创建的信任矩阵进行合并,能够获得一个更加完整的网络信任矩阵,这一步我们称之为Gossip about Gossip协议。考虑到真实网络中小世界网络的特性,通过这种方法往往可以获取到一个比较完整的全局网络互信关系。

扫描二维码关注公众号,回复: 2673649 查看本文章

HCGraph利用类似于HashGraph的Gossip以及Gossip about Gossip协议,实现了高效的信任关系传递。基于此HCGraph进一步实现了Gossip about Reduced Gossip(即减少二阶邻接节点传递的信息量),Targeted Gossip(仅部分二阶邻接节点传递信息),以优化信任关系传递协议。

基于Gossip所汇总的信息,Leviatom网络将最终归纳出全网络任一节点的“同谋违约”代价模型。即任何一个节点,想要执行非可信代码而不被发现,它需要让多大规模的其它节点与它共同执行非可信代码,或提供错误的信任背书(即同谋)。

Trias官方平台

微信: trias_as 

官网: https://www.trias.one

Twitter:https://twitter.com/triaslab

GitHub:   https://github.com/trias-lab/

Telegram:https://t.me/triaslab

                    https://t.me/TriasChinese 

猜你喜欢

转载自blog.csdn.net/triaslab/article/details/81539345