Page 46 - 《软件学报》2023年第1期
P. 46
42 软件学报 2023 年第 34 卷第 1 期
方案, 其基本思想是在每笔交易中包括一个财产证明 (证明某笔交易的输入账户拥有足够的硬币来完成所述交
易). 节点通过最新区块的状态树提取自己账户的验证路径, 每当有新的区块产生时, 节点都需要更新自己账户的
验证路径, 并在所提交的交易中包含最新的验证路径. 在验证过程中, 节点仅需最新区块头就可以验证交易合法
性. 节点将最新区块头中状态树根的哈希与验证路径中状态树根的哈希进行比较, 若相同则证明验证路径是正确
的, 然后再根据验证路径检验账户是否有足够的硬币来满足交易.
在 PoP 方案中, 验证交易不需要历史区块, 节点可以在存储空间不足时删除历史区块, 以缓解存储压力. 对于
新参与者允许先下载最新区块参与竞争记账权, 完整区块链可以在后台下载, 这就减少了参与者的等待时间. 但
是, 节点频繁更新验证路径会带来额外计算开销.
2.2.2 账本数据压缩
文献 [42] 提出一种账本数据压缩方案. 通过与共识机制有机结合, 将历史区块数据进行压缩处理, 充分提高
节点存储空间利用率. 在所提议的方案中, 节点加入区块链网络后, 需要在区块链网络中同步自身的存储能力. 如
图 9 所示, 通过 PBFT 共识的有机结合, 在选择 Leader 节点时, 节点检测自身剩余存储空间; 当存储空间充足时,
则正常执行 PBFT 共识; 当存储空间不足时, 则启动数据压缩程序. 将历史区块作为叶子节点构造 Merkle 树,
Merkle 树根节点的哈希值存储在压缩区块中, 新区块的哈希指针指向压缩区块, 最后在区块链网络中同步压缩后
的区块数据. 实验表明, 与传统区块链相比, 基于数据压缩程序的区块链系统能有效节省节点的存储空间, 缓解节
点的存储压力. 当系统趋于稳定时, 压缩程序能减少节点约 63% 的存储空间 [42] . 但是, 随着大量节点的加入, 压缩
程序调用的频率会升高, 同时会增加出块时延.
开始
节点 i 存储
存储空间足够
空间不足
Leader Leader 节点选择 Leader 节点选择
节点选择 (节点为 i)
区块生成 区块生成 前置区块压缩
(压缩) 新区块生成
共识建立 建立共识
同步存储 新区块入链 更新成新区块链
结束
图 9 区块压缩模型
2.2.3 分片技术
分片技术是数据库中常用的手段, 其通过将大型数据库分割为大量小而易管理的数据碎片, 以提高数据的处
理效率. 在区块链中, Luu 等人 [43] 将分片技术与共识协议有机结合, 提出了分片共识协议. 利用分片技术的思想将
区块链网络分割为许多更小的网络分片, 每个网络分片只需要运行更小范围的共识, 处理更少的交易, 存储更少的
账本数据. 当前分片技术按难度递进分为网络分片、交易分片和状态分片 3 个层级. 网络分片是基础, 状态分片实
现最为复杂. 其中状态分片通过将完整的状态信息分散地存储到各个分片中, 从而使得每个分片可以独自处理交
易, 节点仅需维护自己分片内的账本数据. 分片技术不仅能提高区块链的可扩展性, 同时很大程度上解决了区块链
巨额存储成本问题. 典型的分片方案有 RapidChain [44] 、Omniledger [45] 等.
文献 [46] 是利用分片思想, 在主子链架构中融入有向无环图, 提出一种新颖的交叉链解决方案. 该方案采用
分片共识, 每个分片内的节点独立的维护一个子链账本, 每个子链通过联盟链连接到主链. 与传统区块链相比, 在
此方案下, 每个子链可以独立并行地处理交易, 有效提高区块链系统的吞吐量; 此外, 子链只存储特定分片内的账