type
status
date
slug
summary
tags
category
icon
password
以太坊运行过程可以看成是交易驱动的状态机
假如全节点维护的是哈希表
哈希表删改效率高,但部分账户状态改变导致重建默克尔tree效率不高
注意:比特币区块头维护的默克尔树头节点仅为当前区块;
而以太坊区块头的默克尔树头节点是所有区块的。
假如全节点维护的是默克尔树
删改效率不高。
实际维护的是MPT,而且是modified版本的
每个区块头会含有三棵树的根哈希值,状态树,交易树,收据树,结构都是MPT;
状态树包含所有区块的,其他两棵为当前区块的;
状态树包含所有区块的好处:防止确认某个长久不交易甚至从未交易的账户花费时间过久;
由于不含查询列表,在进行“查询过去十天涉及某个智能合约的交易”等高级查询时不太方便;
于是在收据树中每个节点会有bloom filter,在区块头中会含有当前区块的整个的bloom filter;
bloom filter为false positive,在集合中一定会查出来,不在也有可能查出来(哈希碰撞);
正是这种特性,使得删这一操作用简单的这种结构不可实现;
实际操作时,节点查询每个区块,先查其头部bloomfilter,符合就对其收据树一一查询(可能不会有),不符合直接跳过。
- 作者:Alex
- 链接:https://nextme.one/wureny.eth/article/zuagtaishu
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章