论文部分内容阅读
区块链技术因其去中心化、防篡改以及可追溯的特点受到各方青睐。可编程的智能合约的出现则将区块链技术的应用领域拓展到传统行业的方方面面。然而单线程串行的智能合约执行模型愈发成为系统的性能瓶颈,如何高效地并发执行智能合约交易进而提升系统性能成为现如今区块链技术落地的一大挑战。由于区块链环境中拜占庭节点的存在,智能合约交易的执行与传统数据库有着很大的区别,故传统的数据库并发控制协议不能直接应用到智能合约交易的执行中。已有的遵循“主节点执行-验证节点回放”这种两阶段执行框架的并发执行工作仅仅考虑了主节点的执行效率,而忽视了针对验证节点回放效率的优化。本文在沿用上述两阶段并发框架的前提下,创新性地提出了一种兼顾主节点执行和验证节点回放的并发执行协议——2PX(Two-Phase Execution)协议。在结合PBFT这种三轮网络交互的共识算法时,本文在执行方面进一步优化了2PX,并在开源的拜占庭容错(BFT)系统中实现该优化协议。具体来说本文的主要贡献包含如下三点:1.本文提出了一种兼顾主节点执行和验证节点回放的并发控制协议2PX。主节点采用一种批处理的乐观并发控制协议(Batching OCC),应用交易重排序技术,有选择地挑选最小的中止交易集合,在提升主节点执行效率的同时满足为验证节点生成高并发度交易依赖图的优化目标。2.本文提出使用划分的交易依赖图这种适中粒度的调度信息来表示交易之间的冲突关系,在保留最大回放并发度的同时显著降低了主节点和验证节点之间的传输代价。在验证节点回放阶段,本文提出一种基于划分交易依赖图的确定性的协议(De OCC协议)帮助验证节点多线程地回放所有交易,验证区块的正确性。3.本文实现了一个集成以上所有技术的2PX协议多线程原型,并通过线程数、区块交易数和划分子图数等多方面的对比实验评估2PX协议。本文结合PBFT共识算法进一步优化了两阶段并发控制协议(Optimized 2PX),每个子图只需由2f+1个节点执行,并在最后一轮网络交互中验证执行结果。优化协议在拜占庭容错状态机复制系统——BFT-SMa Rt中实现,在分布式环境下通过充分的实验评估优化效果。本文提出并实现的2PX协议以及其优化协议为区块链智能合约的执行引入并发性,并且兼顾了智能合约执行的两个阶段,有效利用多核硬件提升了区块链系统的整体吞吐。