04.区块链的那些事儿-以太坊中的 Patricia Tree
本节主要讨论以太坊中存储的 Patricia Tree
比特币只有1棵Merkle树,而以太坊的每一个区块头,并非只包含1棵Merkle Tree,而是包含了3棵Merkle Tree,分别对应了三种对象:
- 交易(Transactions)
- 收据(Receipts)展示每一笔交易影响的数据条
- 状态(State)
整体结构如下所示:
最为简单的一种Merkle Tree大多数情况下都是一棵二叉树。在以太坊中所使用的Merkle Tree较为复杂,我们称之为“梅克尔.帕特里夏树”(Merkle Patricia tree),存储数据的逻辑如下所示
以太坊中的状态树基本上包含了一个键值映射,其中的键是地址,而值包括账户的声明、余额、随机数nounce、代码以及每一个账户的存储(其中存储本身就是一颗树)。
不同于交易历史记录,状态树需要经常地进行更新:账户余额和账户的随机数nonce经常会更变,更重要的是,新的账户会频繁地插入,存储的键( key)也会经常被插入以及删除。我们需要这样的数据结构,它能在一次插入、更新、删除操作后快速计算到树根,而不需要重新计算整个树的Hash。
作者:温春水 致力于研究区块链技术
微信:wencs1314 QQ群:612968783
加群和微信,免费获得高质量区块链学习资料