快速学习-以太坊中树结构
以太坊中树结构
- 以太坊中所有的 merkel 树都是 MPT
- 在一个区块的头部(block head)中,有三颗 MPT 的树根:
• stateRoot
• 状态树的树根
• transactionRoot
• 交易树的树根
• receiptsRoot
• 收据树的树根
-
状态树(state trie)
• 世界状态树,随时更新;它存储的键值对 (path, value) 可以表示为
(sha3(ethereumAddress), rlp(ethereumAccount) )
• 这里的 account 是4个元素构成的数组:[nonce, balance, storageRoot,
codeHash] -
存储树(storage trie)
• 存储树是保存所有合约数据的地方;每个合约账户都有一个独立隔离的存储空间 -
交易树(transaction trie)
• 每个区块都会有单独的交易树;它的路径(path)是rlp(transactionIndex),只有在挖矿时才能确定;一旦出块,不再更改 -
• 收据树(receipts trie)
• 每个区块也有自己的收据树;路径也表示为 rlp(transactionIndex)