state

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2018 License: Apache-2.0 Imports: 14 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 LoadConsensusParams added in v0.15.0

func LoadConsensusParams(db dbm.DB, height int64) (types.ConsensusParams, error)

LoadConsensusParams loads the ConsensusParams for a given height.

func LoadValidators added in v0.15.0

func LoadValidators(db dbm.DB, height int64) (*types.ValidatorSet, error)

LoadValidators loads the ValidatorSet for a given height. Returns ErrNoValSetForHeight if the validator set can't be found for this height.

func MakeGenesisDocFromFile added in v0.11.0

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

MakeGenesisDocFromFile reads and unmarshals genesis doc from the given file.

func SaveState added in v0.15.0

func SaveState(db dbm.DB, s State)

SaveState persists the State, the ValidatorsInfo, and the ConsensusParamsInfo to the database.

func VerifyEvidence added in v0.15.0

func VerifyEvidence(stateDB dbm.DB, s State, evidence types.Evidence) error

VerifyEvidence verifies the evidence fully by checking it is internally consistent and sufficiently recent.

Types

type ABCIResponses added in v0.9.1

type ABCIResponses struct {
	DeliverTx []*abci.ResponseDeliverTx
	EndBlock  *abci.ResponseEndBlock
}

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

func LoadABCIResponses added in v0.15.0

func LoadABCIResponses(db dbm.DB, height int64) (*ABCIResponses, error)

LoadABCIResponses loads the ABCIResponses for the given height from the database. This is useful for recovering from crashes where we called app.Commit and before we called s.Save(). It can also be used to produce Merkle proofs of the result of txs.

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

func (*ABCIResponses) ResultsHash added in v0.15.0

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

type BlockExecutor added in v0.15.0

type BlockExecutor struct {
	// contains filtered or unexported fields
}

BlockExecutor provides the context and accessories for properly executing a block.

func NewBlockExecutor added in v0.15.0

func NewBlockExecutor(db dbm.DB, logger log.Logger, proxyApp proxy.AppConnConsensus,
	mempool types.Mempool, evpool types.EvidencePool) *BlockExecutor

NewBlockExecutor returns a new BlockExecutor with a NopEventBus. Call SetEventBus to provide one.

func (*BlockExecutor) ApplyBlock added in v0.15.0

func (blockExec *BlockExecutor) ApplyBlock(s State, blockID types.BlockID, block *types.Block) (State, error)

ApplyBlock validates the block against the state, executes it against the app, fires the relevant events, commits the app, and saves the new state and responses. It's the only function that needs to be called from outside this package to process and commit an entire block. It takes a blockID to avoid recomputing the parts hash.

func (*BlockExecutor) Commit added in v0.15.0

func (blockExec *BlockExecutor) Commit(block *types.Block) ([]byte, error)

Commit locks the mempool, runs the ABCI Commit message, and updates the mempool. It returns the result of calling abci.Commit (the AppHash), and an error. 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 (*BlockExecutor) SetEventBus added in v0.15.0

func (blockExec *BlockExecutor) SetEventBus(eventBus types.BlockEventPublisher)

SetEventBus - sets the event bus for publishing block related events. If not called, it defaults to types.NopEventBus.

func (*BlockExecutor) ValidateBlock added in v0.15.0

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

ValidateBlock validates the given block against the given state. If the block is invalid, it returns an error. Validation does not mutate state, but does require historical information from the stateDB, ie. to verify evidence from a validator at an old height.

type ConsensusParamsInfo added in v0.15.0

type ConsensusParamsInfo struct {
	ConsensusParams   types.ConsensusParams
	LastHeightChanged int64
}

ConsensusParamsInfo represents the latest consensus params, or the last height it changed

func (ConsensusParamsInfo) Bytes added in v0.15.0

func (params ConsensusParamsInfo) Bytes() []byte

Bytes serializes the ConsensusParamsInfo using go-wire

type ErrAppBlockHeightTooHigh added in v0.8.0

type ErrAppBlockHeightTooHigh struct {
	CoreHeight int64
	AppHeight  int64
}

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   int64
}

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 int64
	Core   []byte
	App    []byte
}

func (ErrLastStateMismatch) Error added in v0.8.0

func (e ErrLastStateMismatch) Error() string

type ErrNoABCIResponsesForHeight added in v0.15.0

type ErrNoABCIResponsesForHeight struct {
	Height int64
}

func (ErrNoABCIResponsesForHeight) Error added in v0.15.0

type ErrNoConsensusParamsForHeight added in v0.15.0

type ErrNoConsensusParamsForHeight struct {
	Height int64
}

func (ErrNoConsensusParamsForHeight) Error added in v0.15.0

type ErrNoValSetForHeight added in v0.11.0

type ErrNoValSetForHeight struct {
	Height int64
}

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 int64
}

func (ErrUnknownBlock) Error added in v0.8.0

func (e ErrUnknownBlock) Error() string

type State

type State struct {
	// Immutable
	ChainID string

	// LastBlockHeight=0 at genesis (ie. block(H=0) does not exist)
	LastBlockHeight  int64
	LastBlockTotalTx int64
	LastBlockID      types.BlockID
	LastBlockTime    time.Time

	// LastValidators is used to validate block.LastCommit.
	// Validators are persisted to the database separately every time they change,
	// so we can query for historical validator sets.
	// Note that if s.LastBlockHeight causes a valset change,
	// we set s.LastHeightValidatorsChanged = s.LastBlockHeight + 1
	Validators                  *types.ValidatorSet
	LastValidators              *types.ValidatorSet
	LastHeightValidatorsChanged int64

	// Consensus parameters used for validating blocks.
	// Changes returned by EndBlock and updated after Commit.
	ConsensusParams                  types.ConsensusParams
	LastHeightConsensusParamsChanged int64

	// Merkle root of the results from executing prev block
	LastResultsHash []byte

	// The latest AppHash we've received from calling abci.Commit()
	AppHash []byte
}

State is a short description of the latest committed block of the Tendermint consensus. It keeps all information necessary to validate new blocks, including the last validator set and the consensus params. All fields are exposed so the struct can be easily serialized, but none of them should be mutated directly. Instead, use state.Copy() or state.NextState(...). NOTE: not goroutine-safe.

func LoadState

func LoadState(db dbm.DB) State

LoadState loads the State from the database.

func LoadStateFromDBOrGenesisDoc added in v0.15.0

func LoadStateFromDBOrGenesisDoc(stateDB dbm.DB, genesisDoc *types.GenesisDoc) (State, error)

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

func LoadStateFromDBOrGenesisFile added in v0.15.0

func LoadStateFromDBOrGenesisFile(stateDB dbm.DB, genesisFilePath string) (State, error)

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

func MakeGenesisState

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

MakeGenesisState creates state from types.GenesisDoc.

func MakeGenesisStateFromFile

func MakeGenesisStateFromFile(genDocFile string) (State, error)

MakeGenesisStateFromFile reads and unmarshals state from the given file.

Used during replay and in tests.

func (State) Bytes added in v0.8.0

func (s State) Bytes() []byte

Bytes serializes the State using go-wire.

func (State) Copy

func (s State) Copy() State

Copy makes a copy of the State for mutating.

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) IsEmpty added in v0.15.0

func (s State) IsEmpty() bool

IsEmpty returns true if the State is equal to the empty State.

func (State) MakeBlock added in v0.15.0

func (s State) MakeBlock(height int64, txs []types.Tx, commit *types.Commit) (*types.Block, *types.PartSet)

MakeBlock builds a block with the given txs and commit from the current state.

type ValidatorsInfo added in v0.11.0

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

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