package state import ( "github.com/dexon-foundation/dexon/common" "github.com/dexon-foundation/dexon/core/types" "github.com/dexon-foundation/dexon/trie" ) func GetGovState(statedb *StateDB, header *types.Header, addr common.Address) (*types.GovState, error) { proof, err := statedb.GetProof(addr) if err != nil { return nil, err } govState := &types.GovState{ BlockHash: header.Hash(), Number: header.Number, Root: header.Root, Proof: proof, } if t := statedb.StorageTrie(addr); t != nil { it := trie.NewIterator(t.NodeIterator(nil)) for it.Next() { govState.Storage = append(govState.Storage, [2][]byte{it.Key, it.Value}) } } return govState, nil }