Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AppManager ¶
type AppManager[T transaction.Tx] interface { // InitGenesis initializes the genesis state of the application. InitGenesis( ctx context.Context, blockRequest *server.BlockRequest[T], initGenesisJSON []byte, txDecoder transaction.Codec[T], ) (*server.BlockResponse, corestore.WriterMap, error) // ExportGenesis exports the genesis state of the application. ExportGenesis(ctx context.Context, version uint64) ([]byte, error) // DeliverBlock executes a block of transactions. DeliverBlock( ctx context.Context, block *server.BlockRequest[T], ) (*server.BlockResponse, corestore.WriterMap, error) // ValidateTx will validate the tx against the latest storage state. This means that // only the stateful validation will be run, not the execution portion of the tx. // If full execution is needed, Simulate must be used. ValidateTx(ctx context.Context, tx T) (server.TxResult, error) // Simulate runs validation and execution flow of a Tx. Simulate(ctx context.Context, tx T) (server.TxResult, corestore.WriterMap, error) // SimulateWithState runs validation and execution flow of a Tx, // using the provided state instead of loading the latest state from the underlying database. SimulateWithState(ctx context.Context, state corestore.ReaderMap, tx T) (server.TxResult, corestore.WriterMap, error) // Query queries the application at the provided version. // CONTRACT: Version must always be provided, if 0, get latest Query(ctx context.Context, version uint64, request transaction.Msg) (transaction.Msg, error) // QueryWithState executes a query with the provided state. This allows to process a query // independently of the db state. For example, it can be used to process a query with temporary // and uncommitted state QueryWithState(ctx context.Context, state corestore.ReaderMap, request transaction.Msg) (transaction.Msg, error) }
AppManager is a coordinator for all things related to an application It is responsible for interacting with stf and store. Runtime/v2 is an extension of this interface.
func New ¶
func New[T transaction.Tx]( config Config, db Store, stf StateTransitionFunction[T], initGenesisImpl InitGenesis, exportGenesisImpl ExportGenesis, ) AppManager[T]
type Config ¶
type Config struct { ValidateTxGasLimit uint64 `mapstructure:"validate-tx-gas-limit"` // TODO: check how this works on app mempool QueryGasLimit uint64 `mapstructure:"query-gas-limit"` SimulationGasLimit uint64 `mapstructure:"simulation-gas-limit"` }
Config represents the configuration options for the app manager.
type ExportGenesis ¶
ExportGenesis is a function type that represents the export of the genesis state.
type InitGenesis ¶
type InitGenesis func( ctx context.Context, src io.Reader, txHandler func(json.RawMessage) error, ) (store.WriterMap, error)
InitGenesis is a function that will run at application genesis, it will be called with the following arguments:
- ctx: the context of the genesis operation
- src: the source containing the raw genesis state
- txHandler: a function capable of decoding a json tx, will be run for each genesis transaction
It must return a map of the dirty state after the genesis operation.
type StateTransitionFunction ¶
type StateTransitionFunction[T transaction.Tx] interface { // DeliverBlock executes a block of transactions. DeliverBlock( ctx context.Context, block *server.BlockRequest[T], state store.ReaderMap, ) (blockResult *server.BlockResponse, newState store.WriterMap, err error) // ValidateTx validates a transaction. ValidateTx( ctx context.Context, state store.ReaderMap, gasLimit uint64, tx T, ) server.TxResult // Simulate executes a transaction in simulation mode. Simulate( ctx context.Context, state store.ReaderMap, gasLimit uint64, tx T, ) (server.TxResult, store.WriterMap) // Query executes a query on the application. Query( ctx context.Context, state store.ReaderMap, gasLimit uint64, req transaction.Msg, ) (transaction.Msg, error) }
StateTransitionFunction is an interface for processing transactions and blocks.
type Store ¶
type Store interface { // StateLatest returns a readonly view over the latest // committed state of the store. Alongside the version // associated with it. StateLatest() (uint64, corestore.ReaderMap, error) // StateAt returns a readonly view over the provided // state. Must error when the version does not exist. StateAt(version uint64) (corestore.ReaderMap, error) }
Store defines the underlying storage behavior needed by AppManager.