共计21个数据库表,以下是表名及相应描述
表名 | 描述 | key | vaue | |
Code | 合约代码hash与合约代码映射表 | contract code hash | contract code | |
Account | 未hash的地址与编码账户映射表 | address(un hashed) | account encoded | |
Storage | 地址与存储信息映射表 | address (un hashed) + incarnation + storage key (un hashed) | storage value | |
PlainContractCode | 地址与合约代码hash映射表 | addressHash+incarnation | code hash | |
IncarnationMap | 地址与自毁信息映射表 | address | incarnation of account | |
ChainConfig | 链与链配置的映射表 | configPrefix + hash | json.Marshal(cfg) | |
AccountsHistory | 账户与账户状态变化的映射表 | address + shard_id_u64 | raroaring bitmap | |
AccountChangeSet, | 块与账户状态变化的映射表 | blockNum_u64 | address + account(encoded) | |
StorageHistory, | 账户与存储状态变化的映射表 | address + storage_key + shard_id_u64 | roaring bitmap | |
StorageChangeSet | 块+账户与存储状态变化的映射表 | blockNum_u64 + address + incarnation_u64 | plain_storage_key + value | |
Headers | 区块号+区块hash与区块头的映射表 | block_num_u64 + hash | header | |
HeaderTD | 区块号+区块hash与区块总难度的映射表 | block_num_u64 | td | |
HeaderCanonical | 区块号与标准链区块hash的映射表 | block_num_u64 + hash | header hash | |
HeaderNumber | 区块hash与区块号的映射表 | header_hash | num_u64 | |
HeadBlockKey | 跟踪最新的完整区块hash | HeadBlockKey | hash | |
HeadHeaderKey | 跟踪最新的区块头hash | HeadHeaderKey | hash | |
BlockBodyr | 区块号+区块hash与区块体的映射表 | block_num_u64 + hash | block body | |
BlockTx | 交易序列号与交易信息的映射表 | tbl_sequence_u64 | tx | |
TxLookup | 交易hash与收据信息的映射表 | hash | receipt lookup metadata | |
Senders | 区块号+区块hash与发送者列表的映射表 | block_num_u64 + blockHash | sendersList | |
Receipts | 区块号与标准链收据列表的映射表 | block_num_u64 | canonical block receipts | |
Log | 区块号+交易号对应的日志列表的映射表 | block_num_u64 + txId | logs of transaction | |
SignersDB | 签名者数据库 | |||
PoaSnapshot | poa快照数据库 | hash | Poadata | |
Sequence | 表与其序列号的映射表 | tbl_name | seq_u64 | |
Reward | 账户与对应奖励的映射表 | account | val.Bytes() | |
Deposit | 地址与其存款信息的映射表 | Address | PublicKey+Amount | |
BlockVerify | 区块号+区块hash与验证信息的映射表 | Blocknumber+ hash | verifies | |
BlockRewards | 区块号+区块hash与其奖励列表的映射表 | Blocknumber+ hash | rewards |
这21个表大致可以分为四类block,StateInfo,PlainState,HistoryState,以下是对表分类并作出的详细解释
block
Table | key | value | 描述 |
Headers | block_num_u64 + hash | header | 根据区块号和区块哈希生成区块头部信息 |
HeaderNumber | header_hash | num_u64 | 根据区块哈希对应的块号 |
HeaderTD | block_num_u64 + hash | td | 根据区块号和区块哈希得到总难度 |
HeaderCanonical | block_num_u64 | header hash | 根据区块号得到标准链区块hash |
BlockBody | block_num_u64 + hash | block body | 根据区块号和区块哈希得到区块体 |
BlockTx | tbl_sequence_u64 | tx | 存储每个区块中的交易信息,tbl_sequence_u64表示交易序列号 |
TxLookup | tbl_sequence_u64 | rlp(tx) | 存储非主链的交易信息,rlp(tx)表tx的rlp编码 |
MaxTxNum | block_number_u64 | max_tx_num_in_block_u64 | 根据区块号得到每个块的最大交易数量 |
Senders | block_num_u64 + blockHash | sendersList | 用于存储每个区块中的交易发送者列表,发送者列表是一个未序列化的数据 |
Receipts | block_num_u64 | canonical block receipts | 获取规范链对应区块号的收据 |
Log | block_num_u64 + txId | logs of transaction | 根据区块号和交易id获取对应的交易日志列表 |
Sequence | tbl_name | seq_u64 | 用于存储表的序列号 tbl_name是表名 seq_u64是序列号 |
Stake | amc_stake | bytes | 用于存储质押信息 |
StateInfo
Table | key | value | 描述 |
DatabaseInfo | versionKeyByte | []byte(Version) | 记录相应版本数据库的配置信息 |
ChainConfig | configPrefix + hash | json.Marshal(cfg) | 记录链的配置信息 |
PlainState
Table | key | value | 描述 |
Code | contract code hash | contract code | 根据合约hash获取合约代码 |
Account | address(un hashed) | account encoded | 根据未hash的地址获取编码账户数据 |
Storage | address (un hashed) | storage value(types.Hash) | 根据未hash的地址获取存储信息 |
ContractCode | addressHash+incarnation | code hash | 根据地址获取对应的合约代码 |
PlainContractCode | address+incarnation | code hash | 获取该账户关联的代码哈希,方便查找的快速映射 |
IncarnationMap | address | incarnation | 账户在最后一次自毁时次数 |
HistoryState
Table | key | value | 描述 |
AccountChangeSet | blockNum_u64 | address + account(encoded) | 记录账户状态的变化历史,存储每个块中账户地址的状态变化 |
AccountsHistory | address + shard_id_u64 | roaring bitmap | 记录账户状态的历史变化列表,值是roaring bitmap压缩位图,记录了账户在哪些块发生了变化 |
StorageChangeSet | blockNum_u64 + address + incarnation_u64 | plain_storage_key + value | 记录存储状态的变化历史,每个块中的存储状态变化 |
StorageHistory | address + storage_key + shard_id_u64 | roaring bitmap | 记录存储状态的历史变化列表,键是账户地址,存储键,以及分片id,roaring bitmap记录了存储状态在哪个块发生了变化 |