state

package
v0.12.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2017 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExecCommitBlock added in v0.9.1

func ExecCommitBlock(appConnConsensus proxy.AppConnConsensus, block *types.Block, logger log.Logger) ([]byte, error)

ExecCommitBlock executes and commits a block on the proxyApp without validating or mutating the state. It returns the application root hash (result of abci.Commit).

func MakeGenesisDocFromFile added in v0.11.0

func MakeGenesisDocFromFile(genDocFile string) (*types.GenesisDoc, error)

MakeGenesisDocFromFile reads and unmarshals genesis doc from the given file.

Types

type ABCIResponses added in v0.9.1

type ABCIResponses struct {
	Height int

	DeliverTx []*abci.ResponseDeliverTx
	EndBlock  abci.ResponseEndBlock
	// contains filtered or unexported fields
}

ABCIResponses retains the responses of the various ABCI calls during block processing. It is persisted to disk before calling Commit.

func NewABCIResponses added in v0.9.1

func NewABCIResponses(block *types.Block) *ABCIResponses

NewABCIResponses returns a new ABCIResponses

func (*ABCIResponses) Bytes added in v0.9.1

func (a *ABCIResponses) Bytes() []byte

Bytes serializes the ABCIResponse using go-wire

type ErrAppBlockHeightTooHigh added in v0.8.0

type ErrAppBlockHeightTooHigh struct {
	CoreHeight int
	AppHeight  int
}

func (ErrAppBlockHeightTooHigh) Error added in v0.8.0

func (e ErrAppBlockHeightTooHigh) Error() string

type ErrBlockHashMismatch added in v0.8.0

type ErrBlockHashMismatch struct {
	CoreHash []byte
	AppHash  []byte
	Height   int
}

func (ErrBlockHashMismatch) Error added in v0.8.0

func (e ErrBlockHashMismatch) Error() string

type ErrInvalidBlock added in v0.8.0

type ErrInvalidBlock error

type ErrLastStateMismatch added in v0.8.0

type ErrLastStateMismatch struct {
	Height int
	Core   []byte
	App    []byte
}

func (ErrLastStateMismatch) Error added in v0.8.0

func (e ErrLastStateMismatch) Error() string

type ErrNoValSetForHeight added in v0.11.0

type ErrNoValSetForHeight struct {
	Height int
}

func (ErrNoValSetForHeight) Error added in v0.11.0

func (e ErrNoValSetForHeight) Error() string

type ErrProxyAppConn added in v0.8.0

type ErrProxyAppConn error

type ErrStateMismatch added in v0.8.0

type ErrStateMismatch struct {
	Got      *State
	Expected *State
}

func (ErrStateMismatch) Error added in v0.8.0

func (e ErrStateMismatch) Error() string

type ErrUnknownBlock added in v0.8.0

type ErrUnknownBlock struct {
	Height int
}

func (ErrUnknownBlock) Error added in v0.8.0

func (e ErrUnknownBlock) Error() string

type State

type State struct {
	ChainID string
	// Consensus parameters used for validating blocks
	Params types.ConsensusParams

	// These fields are updated by SetBlockAndValidators.
	// LastBlockHeight=0 at genesis (ie. block(H=0) does not exist)
	// LastValidators is used to validate block.LastCommit.
	LastBlockHeight int
	LastBlockID     types.BlockID
	LastBlockTime   time.Time
	Validators      *types.ValidatorSet
	LastValidators  *types.ValidatorSet
	// When a block returns a validator set change via EndBlock,
	// the change only applies to the next block.
	// So, if s.LastBlockHeight causes a valset change,
	// we set s.LastHeightValidatorsChanged = s.LastBlockHeight + 1
	LastHeightValidatorsChanged int

	// AppHash is updated after Commit
	AppHash []byte

	// TxIndexer indexes transactions
	TxIndexer txindex.TxIndexer `json:"-"`
	// contains filtered or unexported fields
}

State represents the latest committed state of the Tendermint consensus, including the last committed block and validator set. Newly committed blocks are validated and executed against the State. NOTE: not goroutine-safe.

func GetState added in v0.8.0

func GetState(stateDB dbm.DB, genesisFile string) (*State, error)

GetState loads the most recent state from the database, or creates a new one from the given genesisFile and persists the result to the database.

func LoadState

func LoadState(db dbm.DB) *State

LoadState loads the State from the database.

func MakeGenesisState

func MakeGenesisState(db dbm.DB, genDoc *types.GenesisDoc) (*State, error)

MakeGenesisState creates state from types.GenesisDoc.

func MakeGenesisStateFromFile

func MakeGenesisStateFromFile(db dbm.DB, genDocFile string) (*State, error)

MakeGenesisStateFromFile reads and unmarshals state from the given file.

Used during replay and in tests.

func (*State) ApplyBlock added in v0.8.0

func (s *State) ApplyBlock(eventCache types.Fireable, proxyAppConn proxy.AppConnConsensus,
	block *types.Block, partsHeader types.PartSetHeader, mempool types.Mempool) error

ApplyBlock validates the block against the state, executes it against the app, commits it, and saves the block and state. It's the only function that needs to be called from outside this package to process and commit an entire block.

func (*State) Bytes added in v0.8.0

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

Bytes serializes the State using go-wire.

func (*State) CommitStateUpdateMempool added in v0.8.0

func (s *State) CommitStateUpdateMempool(proxyAppConn proxy.AppConnConsensus, block *types.Block, mempool types.Mempool) error

CommitStateUpdateMempool locks the mempool, runs the ABCI Commit message, and updates the mempool. The Mempool must be locked during commit and update because state is typically reset on Commit and old txs must be replayed against committed state before new txs are run in the mempool, lest they be invalid.

func (*State) Copy

func (s *State) Copy() *State

Copy makes a copy of the State for mutating. NOTE: Does not create a copy of TxIndexer. It creates a new pointer that points to the same underlying TxIndexer.

func (*State) Equals added in v0.8.0

func (s *State) Equals(s2 *State) bool

Equals returns true if the States are identical.

func (*State) GetValidators added in v0.8.0

func (s *State) GetValidators() (last *types.ValidatorSet, current *types.ValidatorSet)

GetValidators returns the last and current validator sets.

func (*State) LoadABCIResponses added in v0.9.1

func (s *State) LoadABCIResponses() *ABCIResponses

LoadABCIResponses loads the ABCIResponses from the database. This is useful for recovering from crashes where we called app.Commit and before we called s.Save()

func (*State) LoadValidators added in v0.11.0

func (s *State) LoadValidators(height int) (*types.ValidatorSet, error)

LoadValidators loads the ValidatorSet for a given height.

func (*State) Save

func (s *State) Save()

Save persists the State to the database.

func (*State) SaveABCIResponses added in v0.9.1

func (s *State) SaveABCIResponses(abciResponses *ABCIResponses)

SaveABCIResponses persists the ABCIResponses to the database. This is useful in case we crash after app.Commit and before s.Save().

func (*State) SetBlockAndValidators added in v0.8.0

func (s *State) SetBlockAndValidators(header *types.Header, blockPartsHeader types.PartSetHeader,
	abciResponses *ABCIResponses)

SetBlockAndValidators mutates State variables to update block and validators after running EndBlock.

func (*State) SetLogger added in v0.10.0

func (s *State) SetLogger(l log.Logger)

SetLogger sets the logger on the State.

func (*State) ValExecBlock added in v0.9.1

func (s *State) ValExecBlock(eventCache types.Fireable, proxyAppConn proxy.AppConnConsensus, block *types.Block) (*ABCIResponses, error)

ValExecBlock executes the block, but does NOT mutate State. + validates the block + executes block.Txs on the proxyAppConn

func (*State) ValidateBlock

func (s *State) ValidateBlock(block *types.Block) error

ValidateBlock validates the block against the state.

type ValidatorsInfo added in v0.11.0

type ValidatorsInfo struct {
	ValidatorSet      *types.ValidatorSet
	LastHeightChanged int
}

ValidatorsInfo represents the latest validator set, or the last height it changed

func (*ValidatorsInfo) Bytes added in v0.11.0

func (valInfo *ValidatorsInfo) Bytes() []byte

Bytes serializes the ValidatorsInfo using go-wire

Directories

Path Synopsis
kv

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL