文章目录
版本说明
源码分析使用的版本为:v1.10.3
一、数据结构
1. MPT
以太坊源码中的trie包实现了Merkle Patricia Tries(MPT),这种数据结构实际上是一种Trie树变种。
MPT是以太坊中一种非常重要的数据结构,用来存储用户账户的状态及其变更、交易信息、交易的收据信息。
MPT实际上是三种数据结构的组合,分别是Merkle树、Patricia Trie和Trie树。
🔎详情:
2. LevelDB
go-ethereum所有的数据存储在levelDB这个Google开源的KeyValue文件数据库中,整个区块链的所有数据都存储在一个levelDB的数据库中,levelDB支持按照文件大小切分文件的功能,所以我们看到的区块链的数据都是一个一个小文件,其实这些小文件都是同一个levelDB实例。
levelDB官方网站介绍特点:
- key和value都是任意长度的字节数组;
- entry(即一条K-V记录)默认是按照key的字典顺序存储的,当然开发者也可以重载这个排序函数;
- 提供的基本操作接口