区块链技术具有去中心化和不可篡改性等特征,能安全有效的降低新任成本且安全的存储数据,是目前计算机领域研究的热点。然而,目前区块链系统难以满足大量数据下的查询访问需求,当前研究大多是从数据同步存储到外部数据库中,通过外部数据库进行查询,增加了大量的通信量,没有解决区块链本身的问题。本文根据B+树这种结构的查询稳定性和查询路径短的优点,提出了一种解决方案,通过改进区块的存储结构,利用B+树和默克尔树各自优势,改进了默克尔树,在保证区块链验证效率的情况下增加区块链的查询性能,并且支持范围查询,减少了通信量。然后设计了基于改进区块结构的构建算法和查找算法;最后通过实验验证了所改进结构的可行性和有效性。
区块链[1]技术起源于中本聪发表的论文《比特币:一种点对点电子现金系统》,奠定了加密货币的基础,自此比特币以及其他很多加密货币已成为行业和学术界的流行语。作为最成功的加密货币之一, 比特币获得了巨大的成功,其资本市场在2016 年已达到1000 千万美元。区块链技术作为比特币的底层支持技术,具有公开透明不可篡改等特性,主要由密码学的技术保证安全性和可靠性。在安全性方面, 主要包括数据签名技术、公钥私钥体制思想、时间戳机制;在可靠性方面,主要由共识机制来实现节点和数据的验证。解决了拜占庭[2]将军问题,例如工作量共识机制、股权证明等分布式共识机制。解决了传统的信任[3]问题与双花攻击问题,减少了传统的信任经济成本;在数据存储方面,主要采用默克尔树技术。Androulaki 等人[4]介绍了超级账本体系结构:一个可扩展的真正区块链系统,支持模块化共识协议和身份认证等,允许系统针对特定信任模型和应用场景进行定制化使用,除此之外,也是第一个支持运行标准通用编程语言运行的区块链系统,支持更多高级编程语言进行合约开发部署,并且将“智能合约”规则放在容器中运行。
文献[5]-[10]中,研究人员对区块链上数据存储的安全性问题和数据检索效率方面进行了探讨,主要是基于链上链下存储这一特点展开研究。McConaghy 等人[11]提出了BigChainDB,这是一个大型的分布式数据库,将分布式控制和区块链技术的不变性相结合,将区块链技术引入传统数据库,提高了数据安全性,并提出了区块链数据库完整性策略。关于区块链存储容量,数据容量已增加以支持更大的数据存储。
Wilkinson 等人[12]提出了端到端的区块链存储网络, 用户独立于第三方数据提供者发送和共享数据, 取消中央控制,并使用常规密码检查文件的可用性和完整性。Dinh 等人[13]搭建了一套系统框架用于测试区块链系统,对数据模型、共识算法和超级分类账进行了全面评估,把数据存储划分为一层、数据执行划分为一层,把共识层单独划分,各个层次独立扩展,并且测试了UStore 数据的查询能力,帮助开发者识别系统瓶颈并相应地改进平台。
Tsai 等人[14]分析了区块链应用系统在一致性、可扩展性、数据库方面的需求,以可扩展性为目标,开发了双链架构模式的“北航链”。Li 等人[15]提出一种支持排序的高效检索方法,用户可以根据需要返回top-k 条最相关的数据,采用MongoDB 作为存储库,并且支持范围查询,能满足不同场景的查询需求,但是Li 等人也是利用链上链下数据库结合的方式把区块链的数据以