ETH数据库结构

ETH的Header和Block的主要成员变量,最终还是要存储在底层数据库中。Ethereum 选用的是LevelDB, 属于非关系型数据库,存储单元是[key,value]键值对。

key value
‘h’ + num + hash header’s RLP raw data
‘h’ + num + hash + ‘t’ td
‘h’ + num + ‘n’ hash
‘H’ + hash num
‘b’ + num + hash body’s RLP raw data
‘r’ + num + hash receipts RLP
‘l’ + hash tx/receipt lookup metadata

key 的第一个字符为字段名前缀,然后加对应的内容组成key。key需要转换成对byte类型。

比如:

num = ‘0000000000000053’

key = bytearray(‘h’, ‘utf-8’);

key.extend(bytearray.fromhex(num))

key.extend(bytearray.fromhex(‘n’))