本文是一篇计算机论文范文,本文主要针对Fabric平台不能抵抗拜占庭节点以及信息冗余度较高的问题,提出了两种改进的算法,虽然效果达到预期目标,但是仍有可以改进的余地。
第一章 绪论
1.1 研究背景和意义
中本聪于2008年发表的论文《Bitcoin: A Peer-to-Peer Electronic Cash System》[1]标志着比特币的正式推出,也代表了一种新型的数据库——区块链的诞生。区块链是一种去中心化、不可篡改、可追溯的分布式数据库系统,融合了经济学[2]、P2P网络[3]、共识算法[4]、非对称加密[5]等多种技术,是互联网技术高度融合的产物,是与以往的数据库系统是完全不同的。在之后的十几年以来,区块链作为比特币的底层核心技术不断发展,迅速覆盖到金融[6]、教育[7]、国防[8]、个人隐私保护[9]等的方方面面,成为现代社会不可缺少的重要一环。
区块链分为:公链、联盟链[10]以及私链[11]三大类,去中心化程度[12]依次逐渐降低。其中联盟链具备以下特点:
(1)具备灵活性。可以在联盟成员间自由协商,平等定义共识规则;
(2)具备有限性。区块链应用的价值,从来都是跨组织、机构或个人的,这是区块链的天然特性,因而去中心化理解为多中心化似乎更容易理解,多中心化即是两个以上、无限个以下,那么有限的“多”必然更贴合实际应用,通过许可方式,这个有限性可以得到保证;
(3)具备协作性。可实现联盟内不同组织、机构或个人的具体数据项关系之间建立协同,在常见的“跨组织间协同”或者“联盟成员间共享数据资源和协作”中,更细分和贴近业务实际应用。
并且联盟链的去中心化程度介于公链和私链之间,联盟链既能够保证管理方对参与共识的客户方进行资格审查,避免无关人员加入到共识范围中,又能够保证客户方参与共识避免管理方对数据库高度中心化、随意篡改数据,做到了数据安全方面的双赢。因此联盟链应用在区块链应用中相较于公链应用和私有链应用更具备发展潜力,将是未来的主要方向。
1.2 国内外研究现状
目前对于联盟链的研究方向主要是围绕着共识算法、架构优化以及实际应用等方面展开。其中共识算法与架构优化是热点问题,通过修改算法使其性能提升、安全性增加并且应用到各种不同类型的场景。本节分别描述联盟链架构和联盟链共识机制的国内外研究现状。
1.2.1 联盟链
公链的代表产物有:比特币、以太坊[19]等等,公链可以认为是真正的去中心化,没有任何的组织机构可以控制或篡改链上数据,数据公开透明,并且具有匿名性、可溯源,缺点是需要一定的物质作为计算的代价(取决于采用的何种共识算法)。私链的去中心化程度最低,访问和编写的权限仅由某个组织或机构控制,代表产物有:蚂蚁金服[20]、R3CEV[21]…,私链脱离了去中心化的思想,一般仅有一些组织机构为了存放数据而搭建私链。联盟链是两者之间的最优解,即不需要浪费物质资源又可以保证去中心化,因此研究联盟链的热度是比其他两种链要高的。联盟链的代表产物有:Hyperledger Fabric[22](项目开源,应用范围最广)、企业以太坊联盟(Enterprise Ethereum Alliance)[23]、R3区块链联盟[24]等等数不胜数。
联盟链是一种高度可扩展、权限受限的超级分布式账本,旨在支持商业处理。它使用高级编程语言实现,注册成员必须获得管理员的授权才能访问链上内容。因此,只有注册联盟的成员才能访问联盟链,注册规模是由管理员按需决定的,不会很大,限于小群体之中。目前R3联盟、原本链和IBM发起的HyperL edger Fabric项目是较为成熟的联盟链解决方案。联盟链企业需要通过实名认证,向联盟链管理员来证明自己身份的真实性,认证包括政府机构颁发的证书、CA(Certification Authority)机构颁发的数字证书等。当企业通过审核后会得到一份联盟链管理员所分配的数字证书,该证书相当于是该企业在整个联盟链当中的“通行证”,同时该企业也会作为一个节点加入到集群当中,参与到正常的共识、通信、投票环节中。
第二章 相关技术与理论
2.1 联盟链架构
联盟链是衍生于区块链之中,是区块链发展路径上的一个分支路径,因此本文对联盟链进行分析之前首先对常规的区块链进行介绍,从而过渡到联盟链当中。
2.1.1 区块链架构
区块链最初的设计通常分为六层架构,分别是数据层、网络层、共识层、激励层、合约层和应用层。这种架构被广泛应用于各种类型的区块链应用,并成为了区块链设计的基础。如图2.1所示为区块链架构。
2.2 拜占庭容错问题
拜占庭容错问题起源于拜占庭帝国时期的拜占庭将军问题[55],在拜占庭将军问题中,多个将军需要共同制定决策并且向其他将军传递信息,但是其中有一些将军可能是叛徒,会发送虚假的信息或者干扰信息的传递,从而导致错误的决策。因此,需要找到一种解决方案,使得在叛徒存在的情况下,多个将军可以达成一致的决策,并保证这个决策是正确的。这个问题被扩展到计算机科学领域,其中节点代表将军,通信通道代表士兵传递信息,叛徒代表故障节点或者恶意节点。拜占庭容错算法旨在通过对信息进行复制、签名和验证等机制,使得分布式系统可以在节点故障或者恶意节点存在的情况下,保证系统的正确性和可用性。
拜占庭容错问题是一种在分布式计算和网络领域中广为人知的挑战,它指的是分布式系统中某些组件可能发生故障、表现出不一致的行为或者存在恶意攻击者的情况下,如何确保网络中的所有节点就某个共享值达成一致。为了解决这个问题,人们开发了一种称为拜占庭容错算法(Byzantine Fault Tolerance,BFT)的共识算法,它结合使用消息传递、投票和加密技术来实现。BFT算法将节点分为领导者、追随者和客户端,领导者负责消息传递和投票,而追随者和客户端则对它们收到的消息进行投票。为了达成共识,领导者必须获得来自追随者和客户端的三分之二以上的投票,这可以确保大多数节点同意相同的价值。此外,拜占庭容错算法采用数字签名、公钥加密等密码学技术来保证共识过程的安全性和真实性,防止消息被篡改或者恶意节点操纵共识过程,维护系统的完整性。总之,BFT算法是解决拜占庭容错问题的一种重要且广泛采用的解决方案,它能够确保网络中的所有节点即使在存在故障或攻击的情况下也能达成一致。
第三章 抗拜占庭Raft算法研究 ..................... 26
3.1 问题的提出 .................................... 26
3.2 基于哈希链的动态日志验证机制 ............................ 26
第四章 基于K叉树路径传播的Gossip算法研究 .............................. 39
4.1 问题的提出 ............................. 39
4.2 基于K叉树路径传播的Gossip算法 ...................... 39
第五章 总结与展望 .......................... 52
5.1 总结 .................................... 52
5.2 展望 ............................. 53
第四章 基于K叉树路径传播的Gossip算法研究
4.1 问题的提出
Gossip算法的主要流程已经在2.1.3相关共识算法中阐述,Gossip算法是一种被广泛应用于分布式网络系统中的消息传播算法,因此在大多数区块链项目中也被用于节点之间的同步。该算法具有高效、简单和高容错性的特点。但在实际生产环境中,Gossip算法通常会选择固定数量的邻居节点来传播消息,这意味着消息的传播只会以一定的概率进行,从而导致消息同步过程中产生大量的冗余消息,进而影响消息同步的效率。
崔一举在《基于半分布式区块链网络Gossip算法的改进与优化》[59]当中分别提出了HNA-Gossip以及HMS-Gossip算法,后者为前者的改进算法。HNA-Gossip算法是在原始Gossip算法的基础上增加了历史节点列表结构,该表用于存储已经接收到本次消息的节点信息,以避免消息的重复传播。然而,当分支路径较多时,算法的性能改进效果并不明显。相比之下,HMS-Gossip算法在HNA-Gossip算法的基础上增加了一种新的广播机制,在每个节点收到消息后,通过主动广播消息向其他节点宣布自己已经收到该消息,从而避免分支路径节点重复发送消息,进一步提高了算法的性能。因此,HMS-Gossip算法是一种具有高效性、可靠性和简单性的分布式消息传递算法。但是HMS-Gossip的广播机制无疑也是一种消息冗余的负载,相比原始的Gossip算法确实将消息冗余降低,效率提升,但依旧还有改进的空间。因此在其工作的基础提出了基于K叉树路径传播的KT-Gossip算法。
第五章 总结与展望
5.1 总结
区块链的诞生实现了信息安全的去中心化,被称为“互联网2.0”,为隐私保护、金融安全等等提供了新的解放方案。而联盟链作为区块链当中不可缺少的一环,仍然存在不能很好的抵抗拜占庭节点以及信息传播冗余较大,传播效率较低的问题,因此本文主要对Hyperleader Fabric平台中所采用的两种算法——Raft与Gossip算法进行针对性的改进。具体工作包括以下几点:
(1)阐述了研究背景和意义,通过联盟链结构和联盟链共识机制的国内外研究现状总结出,当前联盟链所存在的共性问题:一是不能抵抗拜占庭节点;二是信息传播冗余较大,传播效率一般。
(2)对联盟链架构进行详细阐述(其中包括区块链结