基于我自己的一篇论文给现在项目测试时候用的区块链网络进行了性能的优化。
将参与的账户根据活跃度划分,分为活跃账户与非活跃账户,对于活跃账户部分采用A3 MPT,对于非活跃账户采用之前的普通MPT,优化了活跃账户的性能。
1. 左侧:Activity Account R-B Hash Tree(活跃账户红黑哈希树)
-
该结构维护当前区块
Block i
中的活跃账户列表。 -
类似红黑树的结构(有红色/黑色节点)用于平衡性和查找效率。
-
每个叶子节点存储一个活跃账户的地址和它在当前区块
block i
中的活跃信息,例如:-
a3, blocki
表示地址a3
在block i
中为活跃账户。
-
-
上方小表格展示了活跃账户表格(Activity Account),例如:
Address | Activity 0xd818...34 | 32 0xd981...65 | 31
2. 中间右侧:Word State Tree(Verkle Tree)
这部分是整个状态数据库的主结构,类似以太坊计划引入的 Verkle Trie,用于更高效地替代 Merkle Patricia Trie。
-
root 是整个状态树的根哈希。
-
其下分为多个分支节点:
-
Verkle root:整个状态树的主干(普通账户等)
-
Activity Verkle Root:专门记录活跃账户的 Verkle 子树(即活跃账户状态结构)
-
-
每个叶子节点如
Hash(a1)
,Hash(a3)
等代表具体账户地址的状态数据哈希。 -
中间节点如
Hash A
、Hash E
是 Verkle Tree 的中间节点,用于组合子节点哈希形成路径。
3. 状态更新流程(动态箭头说明)
-
从红黑树 → 活跃账户 Verkle 子树:图中黑色箭头表示活跃账户在红黑树中被检测后,会触发状态树的更新。
-
活跃账户在 R-B Tree 中被标记(比如 a3, a4),它们的状态对应在 Verkle Tree 的
Hash(a3)
、Hash(a4)
中被更新,进而更新上层 Verkle 节点,最终影响root
哈希。 -
下一区块
Block i+1
将继承更新后的root
。