Ethereum所有的数据都存储在levelDB数据库中(Google 开源的一个高性能的K-V数据库),levelDB支持按照文件大小拆分数据的功能,所以看到的所有区块链数据都是拆分成一小块一小块存储的。
interface.gointerface.go 定义了 Putter (存) Get (取) Has(有否)Delete(删)等功能,用于数据库操作,并且支持多线程操作,这些操作都是线程安全的操作(通过go读写锁来实现线程安全)。
database.go 是interface.go实现,主要是实现数据库的操作。
database_test.go 是测试使用
这里使用的leveldb的实现本身就是线程安全的,支持并发操作。
网友评论