Ethereum所有的數據都存儲在levelDB數據庫中(Google 開源的一個高性能的K-V數據庫)卫漫,levelDB支持按照文件大小拆分數據的功能掰盘,所以看到的所有區(qū)塊鏈數據都是拆分成一小塊一小塊存儲的烤宙。
interface.go
interface.go 定義了 Putter (存) Get (取) Has(有否)Delete(刪)等功能眼坏,用于數據庫操作段多,并且支持多線程操作,這些操作都是線程安全的操作(通過go讀寫鎖來實現(xiàn)線程安全)荞驴。
database.go 是interface.go實現(xiàn)叠国,主要是實現(xiàn)數據庫的操作。
database_test.go 是測試使用
這里使用的leveldb的實現(xiàn)本身就是線程安全的戴尸,支持并發(fā)操作。