MCPcopy Create free account
hub / github.com/DeAI-Artist/Linkis / LoadStateFromDBOrGenesisDocProvider

Function LoadStateFromDBOrGenesisDocProvider

node/node.go:1392–1417  ·  view source on GitHub ↗

LoadStateFromDBOrGenesisDocProvider attempts to load the state from the database, or creates one using the given genesisDocProvider. On success this also returns the genesis doc loaded through the given provider.

(
	stateDB dbm.DB,
	genesisDocProvider GenesisDocProvider,
)

Source from the content-addressed store, hash-verified

1390// database, or creates one using the given genesisDocProvider. On success this also
1391// returns the genesis doc loaded through the given provider.
1392func LoadStateFromDBOrGenesisDocProvider(
1393 stateDB dbm.DB,
1394 genesisDocProvider GenesisDocProvider,
1395) (sm.State, *types.GenesisDoc, error) {
1396 // Get genesis doc
1397 genDoc, err := loadGenesisDoc(stateDB)
1398 if err != nil {
1399 genDoc, err = genesisDocProvider()
1400 if err != nil {
1401 return sm.State{}, nil, err
1402 }
1403 // save genesis doc to prevent a certain class of user errors (e.g. when it
1404 // was changed, accidentally or not). Also good for audit trail.
1405 if err := saveGenesisDoc(stateDB, genDoc); err != nil {
1406 return sm.State{}, nil, err
1407 }
1408 }
1409 stateStore := sm.NewStore(stateDB, sm.StoreOptions{
1410 DiscardABCIResponses: false,
1411 })
1412 state, err := stateStore.LoadFromDBOrGenesisDoc(genDoc)
1413 if err != nil {
1414 return sm.State{}, nil, err
1415 }
1416 return state, genDoc, nil
1417}
1418
1419// panics if failed to unmarshal bytes
1420func loadGenesisDoc(db dbm.DB) (*types.GenesisDoc, error) {

Callers 1

NewNodeFunction · 0.70

Calls 3

loadGenesisDocFunction · 0.70
saveGenesisDocFunction · 0.70

Tested by

no test coverage detected