Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 1.02 KB

File metadata and controls

31 lines (24 loc) · 1.02 KB

state

state 包,维护世界状态。

state/state.go 中的 State 数据结构如下,包含状态管理接口、状态增量等。

type State struct {
	stateImpl             statemgmt.HashableState
	stateDelta            *statemgmt.StateDelta
	currentTxStateDelta   *statemgmt.StateDelta
	currentTxUUID         string
	txStateDeltaHash      map[string][]byte
	updateStateImpl       bool
	historyStateDeltaSize uint64
}

目前实现了三种结构来组织和管理世界状态:buckettree、trie 和 raw。在新建一个 State 对象时会指定对应结构的 stateImpl。 当前默认使用 buckettree,这种方法模型化了一棵默克尔树,用 bucket 作为默克尔树的叶子节点。同时树的胖瘦在配置中可调,用于匹配不同场景的性能要求。

state/state_snapshot.go 中的 StateSnapshot 对象实现了对一个区块的状态快照。

type StateSnapshot struct {
	blockNumber  uint64
	stateImplItr statemgmt.StateSnapshotIterator
	dbSnapshot   *gorocksdb.Snapshot
}