53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package appmanager
|
|
|
|
import (
|
|
"context"
|
|
"iter"
|
|
|
|
"cosmossdk.io/core/server"
|
|
"cosmossdk.io/core/store"
|
|
"cosmossdk.io/core/transaction"
|
|
)
|
|
|
|
// StateTransitionFunction is an interface for processing transactions and blocks.
|
|
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)
|
|
|
|
// DeliverSims provides an interface for state transitions by sims.
|
|
DeliverSims(
|
|
ctx context.Context,
|
|
block *server.BlockRequest[T],
|
|
state store.ReaderMap,
|
|
simsBuilder func(ctx context.Context) iter.Seq[T],
|
|
) (blockResult *server.BlockResponse, newState store.WriterMap, err error)
|
|
}
|