论文部分内容阅读
区块链(Blockchain)去中心化的特性是其能够在多方之间建立信任、提高经济和社会运作效率的基础。提高区块链系统的计算效率、增强其存储可扩展性不仅能够提升区块链系统性能,而且能够降低节点参与门槛,维护区块链去中心化的特性,是区块链应用和推广的关键支撑技术。从计算的角度来看,区块链技术由加密算法、对等(Peer-to-Peer,P2P)网络、分布式共识机制(Distributed Consensus Protocol)等技术组成。这些技术都用到哈希(Hash)运算,特别是在区块链加密运算和数据查询中,需要频繁使用到安全哈希算法SHA256(Secure Hash Algorithm 256)和布隆过滤器(Bloom Filter,BF),它们是区块链的高频运算。随着区块链应用和数据量的不断增加,高频运算成为通用设备计算压力的主要来源。从存储的角度来看,区块链数据只能追加的特性意味着区块链的数据量会无限增长。相应地,节点用于存储区块链数据和验证交易所需要的存储和计算资源也越来越多,存储和计算资源受限的全节点(Full Node)不得不选择退出系统、或转换角色成为功能型非完全节点,例如轻量级节点(SPV Node)。随着这一趋势的持续,区块链去中心化、不可篡改、可追溯的前提被侵蚀,区块链系统的存储可扩展性问题由此产生。这里全节点是指保存完整区块链数据,具备完整节点功能的节点;SPV节点是指仅保存区块头,具备支付验证功能的节点。本文工作围绕区块链计算效率的提升和存储可扩展性能优化进行。在计算效率提升方面,以SHA256算法和布隆过滤器为例,从区块链数据哈希原生(Hash-Native)特性和通用设备计算资源两方面着手,研究提高区块链高频运算计算效率,实现区块链系统整体计算效率提升的方法:(1)区块/交易哈希值的直接利用;(2)基于单指令流多数据流(Single Instruction Multiple Data,SIMD)的数据级并行;(3)基于CPU多核的线程级并行;以及(4)降低访存失败概率的数据存取范围与缓存行(Cache-line)适配策略。在存储可扩展性能优化方面,从化解数据冗余度和去中心化特性的矛盾入手,探讨评价区块链系统可扩展存储的量化指标,并以此为依据,提出区块链系统可扩展存储模型。主要工作及创新点如下:(1)在面向哈希原生数据的高频运算计算效率提升方面,以SHA256算法为例,利用通用设备提供的SIMD及CPU多核,以及区块链数据的哈希原生特性,提出针对单条数据的SHA256ASM(SHA256 for A Single Message)算法及针对多条数据的SHA256*MIM(SHA256*for Multiple Independent Messages)算法。SHA256ASM采用多向量交错执行消息调度(Directly Vectorized Message Scheduling,DV-MS)方法,交错执行单一消息的SIMD向量化和预读取,实现计算加速。SHA256*MIM采用数据级-线程级两阶段并行实现计算加速。实验表明,SHA256ASM算法和SHA256*MIM算法的运算速度分别能够达到SHA256算法的5.91倍和60.38倍,且运算性能在各级缓存下大致相同。(2)在面向区块链数据查询的高频运算计算效率提升方面,以布隆过滤器为例,提出区块链布隆过滤器(Blockchain Bloom Filter,BBF)的优化方法。首先,将BBF划分为多组,利用SIMD实现元素插入及成员查询的组间并行。接着,利用区块链数据的哈希原生特性,提出一种简化的三阶段映射方法,降低计算开销。之后,将元素的映射范围限制在一个缓存行内,减少访存缺失。实验结果表明,BBF算法的阳性查询性能和阴性查询性能分别为BF的3倍到5.2倍、1.5倍到2.3倍。(3)在区块链系统存储可扩展性的量化研究方面,本文针对区块链各类存储方案节点不对等,侵蚀去中心化特性的现状,通过分析得到区块链系统可扩展存储量化指标:去中心化程度、节点存储成本和数据可靠性,并选取两种有代表性的存储方案进行实验分析,为构建区块链系统可扩展存储模型奠定基础。(4)在区块链系统可扩展存储模型构建方面,本文以区块链系统可扩展存储量化指标为关键参数,结合UTXO模型区块链局部交易验证性良好,以及账户模型区块链的交易信息完整保存在状态树中的特性,提出区块链系统可扩展存储模型(Scalable Model for Blockchain Storage Systems,SMBSS),其核心要素在于:数据分片存储,保证数据的可用性及区块链去中心化特性,并通过对SMBSS进行原型实现验证模型有效性。