Page 291 - 《软件学报》2020年第9期
P. 291
2912 Journal of Software 软件学报 Vol.31, No.9, September 2020
3.2 确保隔离性的处理技术
为了提高区块链系统的事务处理效率,分布式系统中的部分并发控制技术已经被应用到区块链系统中.本
小节主要综述针对事务隔离性的技术.
在数据库中,针对事务的并发处理,典型的方式采用先排序后执行的策略.在区块链系统中,很多系统依然
沿用这种策略 [1,59] .首先,在排序过程中,所有的节点需要达成一个针对所有事务顺序的全局共识;之后,在执行阶
段,所有节点在本地按照已经达成共识的顺序执行相应的事务.与数据库中的先排序后执行的策略不同,在
Hyperledger Fabric [60] 区块链系统中,其工作流程则是采用先模拟后排序的思路,如图 2 所示.整个流程包含了模
拟阶段、排序阶段、验证阶段、执行阶段这 4 个部分.
• 在模拟阶段,客户端将一系列的事务处理请求提交给部分节点.收到请求的节点将在本地的数据中模
拟事务的执行.节点会产生一个签名并将签名以及事务所需进行的读写数据集合进行广播;
• 在排序阶段,排序服务节点接受所有提交的事务并确定事务执行顺序.默认情况下,事务会按照提交时
间的顺序进行排序.在排序结束之后,这些事务被组织成一个区块并分发给网络中的节点;
• 在验证阶段,节点按照顺序确定事务是否可执行.在该阶段需验证两部分内容:
¾ 首先,节点验证事务的签名是否满足共识条件.如果不满足,证明存在节点篡改了客户提交的事
务.此时,该事务被标记为不可行;
¾ 其次,节点验证提交的事务顺序是否存在读写冲突.如果某一事务与排序在其前面的事务存在
读写冲突,则该事务被标记为不可行.
• 在执行阶段,所有可行与不可行的事物均被写入区块中.同时,可行的事务被执行.
常用的先排序后执行的策略在排序之后,区块链中的各个节点只能顺序地执行相应的事务.而 Hyperledger
Fabric 则可以利用模拟阶段的结果,并发地执行事务并保证数据的一致性,从而提高系统性能.针对 Hyperledger
Fabric 的各个阶段,如表 2 所示,许多工作针对不同阶段提出相应的优化技术,以提高系统的并发度.
模拟 排序 验证 执行
提交事务
用户
排序
服务
用户
提交事务
Fig.2 Transaction processing in Hyperledger Fabric
图 2 Hyperledger Fabric 中的事务处理流程
在事务的并发控制过程中,如果事务间存在读写冲突,那么只有部分事务可以成功执行.其他的事务将被中
止.在文献[75]中,通过实验发现:即使 Hyperledger Fabric 可以提高事务的并发度,直接利用读写冲突处理区块链
的事务依然导致大量的事务被终止.文献[75]研究通过改变事务的执行顺序,减少事务中止的个数,从而提高并
发度.在 Hyperledger Fabric 的“模拟-排序-验证-执行”过程中,可以从两个方面提高事务的并发度.
• 首先,一个区块中的事务默认按照提交时间的顺序进行处理.然而,可以通过改变区块内事务的顺序,使
得原本被终止的事务在新的顺序下没有冲突,从而可以顺利执行;
• 其次,事务的处理过程需要 4 个阶段,而现有工作只能在验证阶段判断事务是否被执行或终止.如果可