预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Fabric中PBFT共识机制的分析与改进的中期报告 Fabric中PBFT共识机制的分析与改进的中期报告 共识机制是区块链技术中非常重要的一环,它确保了分布式系统中的数据一致性与可靠性,保证了区块链的安全性和可信度。Fabric作为领先的企业级区块链平台之一,其共识机制采用的是PBFT共识算法。本文将基于PBFT共识算法,对Fabric的共识机制进行分析,并尝试提出相应的改进方案。 一、PBFT共识算法简介 为了理解Fabric中的共识机制,首先需要了解PBFT共识算法。PBFT共识算法是一种基于节点重复请求、复制执行、投票和请求通过等机制来协调节点间达成一致的算法。PBFT具有高度的容错特性,即它可以在节点数不变的情况下容忍一定数量的节点失效,从而保证了在整个系统中数据的一致性和可靠性。 具体而言,PBFT共识机制分为以下三个阶段: 1.预处理(Pre-prepare):主节点向其他所有从节点广播请求信息,其他从节点记录该信息并返回对请求的确认消息。 2.处理(Prepare):主节点接收到其他从节点的确认消息后,向其他所有从节点广播请求处理信息,其他从节点记录该信息并返回对处理请求的确认消息。 3.请求通过(Commit):主节点收到一定数量的确认消息后,将该数据决定性提交,从而完成了一次共识过程。 在该算法中,每个节点有三种不同的角色:客户端,主节点和从节点,其中客户端发起请求,主节点将该请求广播到各个从节点进行验证,在得到其他从节点的确认后最终将该数据提交。PBFT中的共识过程需要保证大多数节点达成共识,即用户指定的参数f满足f<n/3的条件,其中n为节点总数。 二、Fabric中的共识机制 在Fabric中,共识的每一轮称为共识循环。在一下情形中,会启动新的共识循环: 1.当前共识循环完成后,处理事务池中的所有交易,并将这些交易写入到下一个区块。 2.在需要强制执行数据一致性的情况下启动。 Fabric中的共识机制的具体流程如下: 1.客户端向区块链网络发出交易。 2.交易执行器验证并执行客户端发送的交易并返回执行结果给提交者。 3.提交者(orderer)将该交易广播到网络中的所有peer节点. 4.提交者(orderer)按照时间戳为该交易生成一个分类账本项。在分类帐本项中,将该交易打上未验证的标记,其余内容都来自于交易执行器的执行结果。 5.提交者把这笔交易广播到peer节点。 6.直到达到‘”BatchTimeout”,peer节点将以批量的形式请求提交者获取未被验证的分类帐目。单个分类帐本项请求可以分批次进行。 7.提交者将未被验证的分类帐操作确认,将所有收到过分类账的peer节点的签名提示包含在确认信息中,发送给所有的peer节点。 8.当peer节点收到大多数的分类帐验证信息(即清算交易结果相同)时,交易就被认为是被验证的,并转换为“已验证”状态。分类账本项的所有内容在peer节点之间作为交易分发。 9.peer节点证明该分类账本项已被验证并写入到了该节点的分类账本中。 10.当新的块被创建时,交易已成功添加到该块。 在Fabric中,提交者的作用是类似于PBFT中的主节点,它将提交的交易打包并广播到网络中的所有peer节点。peer节点类似于PBFT中的从节点,在该链上有读取和写入的权利,可以完成账本的读写操作。 三、Fabric中共识机制的改进方案 1.交易致性 在当前的Fabric中,当提交者收到交易请求后,会对交易进行排序,然后将排序好的交易发送到peer节点,从而达到序列化,保证了交易的一致性。 但是,在区块链网络中,由于网络的延迟和复杂性,可能会出现一些情况导致交易的顺序发生变化,从而可能导致交易运行时缺失关键的信息,从而出现异常。因此,需要在交易的序列化过程中,对交易数据进行完整性验证,并在验证通过后进行顺序化处理,从而确保交易的一致性。 2.异步交易处理 当前Fabric共识机制中的交易处理是同步进行的,即收到新的交易请求后,执行器必须等待之前的交易处理完成后才能开始处理新交易。这样会导致系统的吞吐量变慢,并且可能会导致某些交易等待时间过长,影响系统的响应速度。 因此,可以采用异步交易处理的方式,即设置一个缓冲区来存储所有到来的交易请求,执行器在空闲时会处理该缓冲区的交易请求。这样可以使交易处理并行化,从而提高系统的吞吐量和系统的性能。 3.并行传输 在当前的Fabric中,交易处理和共识包传输时序进行,即先执行所有交易的验证操作,然后才将共识包广播给其他节点。这样会导致整个系统的效率较低,限制了系统的吞吐量。 为了提高系统的效率,可以采用并行传输的方式,在交易验证(Pre-verification)过程中同时进行共识包传输,即所有节点在执行交易验证操作的同时,可以先将共识包发送给其他