View Source
const (
	DefaultValidatorsWindowSize = 10
View Source
const VersionOffset = int64(1)

    Since we have an initial save of our state forest we start one version ahead of the block height, but from then on we should track height by this offset.


    View Source
    var Prefixes [][]byte


    func HeightAtVersion

    func HeightAtVersion(version int64) uint64

    func LoadValidatorRing

    func LoadValidatorRing(version int64, ringSize int,
    	getImmutable func(version int64) (*storage.ImmutableForest, error)) (*validator.Ring, error)

      Initialises the validator Ring from the validator storage in forest

      func VersionAtHeight

      func VersionAtHeight(height uint64) int64


      type KeyFormatStore

      type KeyFormatStore struct {
      	Account   *storage.MustKeyFormat
      	Storage   *storage.MustKeyFormat
      	Name      *storage.MustKeyFormat
      	Proposal  *storage.MustKeyFormat
      	Validator *storage.MustKeyFormat
      	Event     *storage.MustKeyFormat
      	Registry  *storage.MustKeyFormat
      	TxHash    *storage.MustKeyFormat
      	Abi       *storage.MustKeyFormat

      type ReadState

      type ReadState struct {
      	Forest storage.ForestReader
      	Plain  *storage.PrefixDB

      func (*ReadState) GetAccount

      func (s *ReadState) GetAccount(address crypto.Address) (*acm.Account, error)

        Returns nil if account does not exist with given address.

        func (*ReadState) GetMetadata

        func (s *ReadState) GetMetadata(metahash acmstate.MetadataHash) (string, error)

        func (*ReadState) GetName

        func (s *ReadState) GetName(name string) (*names.Entry, error)

        func (*ReadState) GetNodeByID

        func (s *ReadState) GetNodeByID(id crypto.Address) (*registry.NodeIdentity, error)

        func (*ReadState) GetProposal

        func (s *ReadState) GetProposal(proposalHash []byte) (*payload.Ballot, error)

        func (*ReadState) GetStorage

        func (s *ReadState) GetStorage(address crypto.Address, key binary.Word256) ([]byte, error)

        func (*ReadState) IterateAccounts

        func (s *ReadState) IterateAccounts(consumer func(*acm.Account) error) error

        func (*ReadState) IterateNames

        func (s *ReadState) IterateNames(consumer func(*names.Entry) error) error

        func (*ReadState) IterateNodes

        func (s *ReadState) IterateNodes(consumer func(crypto.Address, *registry.NodeIdentity) error) error

        func (*ReadState) IterateProposals

        func (s *ReadState) IterateProposals(consumer func(proposalHash []byte, proposal *payload.Ballot) error) error

        func (*ReadState) IterateStorage

        func (s *ReadState) IterateStorage(address crypto.Address, consumer func(key binary.Word256, value []byte) error) error

        func (*ReadState) IterateStreamEvents

        func (s *ReadState) IterateStreamEvents(startHeight, endHeight *uint64, sortOrder storage.SortOrder,
        	consumer func(*exec.StreamEvent) error) error

          Iterate SteamEvents over the closed interval [startHeight, endHeight] - i.e. startHeight and endHeight inclusive

          func (*ReadState) IterateValidators

          func (s *ReadState) IterateValidators(fn func(id crypto.Addressable, power *big.Int) error) error

          func (*ReadState) LastStoredHeight

          func (s *ReadState) LastStoredHeight() (uint64, error)

            Get the last block height we stored in state

            func (*ReadState) Power

            func (s *ReadState) Power(id crypto.Address) (*big.Int, error)

            func (*ReadState) TxByHash

            func (s *ReadState) TxByHash(txHash []byte) (*exec.TxExecution, error)

            func (*ReadState) TxsAtHeight

            func (s *ReadState) TxsAtHeight(height uint64) ([]*exec.TxExecution, error)

            type State

            type State struct {
            	// contains filtered or unexported fields

              Writers to state are responsible for calling State.Lock() before calling

              func LoadState

              func LoadState(db dbm.DB, version int64) (*State, error)

                Tries to load the execution state from DB, returns nil with no error if no state found

                func MakeGenesisState

                func MakeGenesisState(db dbm.DB, genesisDoc *genesis.GenesisDoc) (*State, error)

                  Make genesis state from GenesisDoc and save to DB

                  func NewState

                  func NewState(db dbm.DB) *State

                    NewState creates a new State object

                    func (*State) Copy

                    func (s *State) Copy(db dbm.DB) (*State, error)

                      Creates a copy of the database to the supplied db

                      func (*State) Dump

                      func (s *State) Dump() string

                      func (*State) GetAccountStats

                      func (s *State) GetAccountStats() acmstate.AccountStats

                      func (*State) GetNodeIDsByAddress

                      func (s *State) GetNodeIDsByAddress(net string) ([]crypto.Address, error)

                      func (*State) GetNumPeers

                      func (s *State) GetNumPeers() int

                      func (*State) Hash

                      func (s *State) Hash() []byte

                      func (*State) InitialCommit

                      func (s *State) InitialCommit() error

                      func (*State) LoadHeight

                      func (s *State) LoadHeight(height uint64) (*ReadState, error)

                      func (*State) SetLogger

                      func (s *State) SetLogger(logger *logging.Logger)

                      func (*State) Update

                      func (s *State) Update(updater func(up Updatable) error) ([]byte, int64, error)

                        Perform updates to state whilst holding the write lock, allows a commit to hold the write lock across multiple operations while preventing interlaced reads and writes

                        func (*State) Version

                        func (s *State) Version() int64