baseapp

package
v3.1.3 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2024 License: Apache-2.0 Imports: 63 Imported by: 0

Documentation

Index

Constants

View Source
const (
	QueryPathApp    = "app"
	QueryPathCustom = "custom"
	QueryPathP2P    = "p2p"
	QueryPathStore  = "store"

	QueryPathBroadcastTx = "/cosmos.tx.v1beta1.Service/BroadcastTx"
)

Supported ABCI Query prefixes and paths

View Source
const (
	StreamingTomlKey                  = "streaming"
	StreamingABCITomlKey              = "abci"
	StreamingABCIPluginTomlKey        = "plugin"
	StreamingABCIKeysTomlKey          = "keys"
	StreamingABCIStopNodeOnErrTomlKey = "stop-node-on-err"
)
View Source
const InitialAppVersion uint64 = 0
View Source
const Paramspace = "baseapp"

Variables

View Source
var (
	ParamStoreKeyBlockParams     = []byte("BlockParams")
	ParamStoreKeyEvidenceParams  = []byte("EvidenceParams")
	ParamStoreKeyValidatorParams = []byte("ValidatorParams")
)

Functions

func DefaultStoreLoader

func DefaultStoreLoader(ms storetypes.CommitMultiStore) error

DefaultStoreLoader will be used by default and loads the latest version

func GetConsensusParams

func GetConsensusParams(ctx sdk.Context, paramStore LegacyParamStore) *cmtproto.ConsensusParams

func MigrateParams

func MigrateParams(ctx sdk.Context, lps LegacyParamStore, ps ParamStore) error

func NoOpExtendVote

func NoOpExtendVote() sdk.ExtendVoteHandler

NoOpExtendVote defines a no-op ExtendVote handler. It will always return an empty byte slice as the vote extension.

func NoOpPrepareProposal

func NoOpPrepareProposal() sdk.PrepareProposalHandler

NoOpPrepareProposal defines a no-op PrepareProposal handler. It will always return the transactions sent by the client's request.

func NoOpProcessProposal

func NoOpProcessProposal() sdk.ProcessProposalHandler

NoOpProcessProposal defines a no-op ProcessProposal Handler. It will always return ACCEPT.

func NoOpVerifyVoteExtensionHandler

func NoOpVerifyVoteExtensionHandler() sdk.VerifyVoteExtensionHandler

NoOpVerifyVoteExtensionHandler defines a no-op VerifyVoteExtension handler. It will always return an ACCEPT status with no error.

func SetChainID

func SetChainID(chainID string) func(*BaseApp)

SetChainID sets the chain ID in BaseApp.

func SetHaltHeight

func SetHaltHeight(blockHeight uint64) func(*BaseApp)

SetHaltHeight returns a BaseApp option function that sets the halt block height.

func SetHaltTime

func SetHaltTime(haltTime uint64) func(*BaseApp)

SetHaltTime returns a BaseApp option function that sets the halt block time.

func SetIAVLCacheSize

func SetIAVLCacheSize(size int) func(*BaseApp)

SetIAVLCacheSize provides a BaseApp option function that sets the size of IAVL cache.

func SetIAVLDisableFastNode

func SetIAVLDisableFastNode(disable bool) func(*BaseApp)

SetIAVLDisableFastNode enables(false)/disables(true) fast node usage from the IAVL store.

func SetIndexEvents

func SetIndexEvents(ie []string) func(*BaseApp)

SetIndexEvents provides a BaseApp option function that sets the events to index.

func SetInterBlockCache

func SetInterBlockCache(cache storetypes.MultiStorePersistentCache) func(*BaseApp)

SetInterBlockCache provides a BaseApp option function that sets the inter-block cache.

func SetMempool

func SetMempool(mempool mempool.Mempool) func(*BaseApp)

SetMempool sets the mempool on BaseApp.

func SetMinGasPrices

func SetMinGasPrices(gasPricesStr string) func(*BaseApp)

SetMinGasPrices returns an option that sets the minimum gas prices on the app.

func SetMinRetainBlocks

func SetMinRetainBlocks(minRetainBlocks uint64) func(*BaseApp)

SetMinRetainBlocks returns a BaseApp option function that sets the minimum block retention height value when determining which heights to prune during ABCI Commit.

func SetOptimisticExecution

func SetOptimisticExecution(opts ...func(*oe.OptimisticExecution)) func(*BaseApp)

SetOptimisticExecution enables optimistic execution.

func SetPruning

func SetPruning(opts pruningtypes.PruningOptions) func(*BaseApp)

SetPruning sets a pruning option on the multistore associated with the app

func SetQueryGasLimit

func SetQueryGasLimit(queryGasLimit uint64) func(*BaseApp)

SetQueryGasLimit returns an option that sets a gas limit for queries.

func SetSnapshot

func SetSnapshot(snapshotStore *snapshots.Store, opts snapshottypes.SnapshotOptions) func(*BaseApp)

SetSnapshot sets the snapshot store.

func SetStoreLoader

func SetStoreLoader(loader StoreLoader) func(*BaseApp)

SetStoreLoader allows customization of the rootMultiStore initialization.

func SetTrace

func SetTrace(trace bool) func(*BaseApp)

SetTrace will turn on or off trace flag

func SplitABCIQueryPath

func SplitABCIQueryPath(requestPath string) (path []string)

SplitABCIQueryPath splits a string path using the delimiter '/'.

e.g. "this/is/funny" becomes []string{"this", "is", "funny"}

func ValidateBlockParams

func ValidateBlockParams(i interface{}) error

func ValidateEvidenceParams

func ValidateEvidenceParams(i interface{}) error

func ValidateValidatorParams

func ValidateValidatorParams(i interface{}) error

func ValidateVoteExtensions

func ValidateVoteExtensions(
	ctx sdk.Context,
	valStore ValidatorStore,
	extCommit abci.ExtendedCommitInfo,
) error

ValidateVoteExtensions defines a helper function for verifying vote extension signatures that may be passed or manually injected into a block proposal from a proposer in PrepareProposal. It returns an error if any signature is invalid or if unexpected vote extensions and/or signatures are found or less than 2/3 power is received.

Types

type AuthKeeper

type AuthKeeper interface {
	GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI
}

type BankKeeper

type BankKeeper interface {
	MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error
	SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
	GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin
}

type BaseApp

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

BaseApp reflects the ABCI application implementation.

func NewBaseApp

func NewBaseApp(
	name string, logger log.Logger, db dbm.DB, txDecoder sdk.TxDecoder, options ...func(*BaseApp),
) *BaseApp

NewBaseApp returns a reference to an initialized BaseApp. It accepts a variadic number of option functions, which act on the BaseApp to set configuration choices.

func (*BaseApp) AddRunTxRecoveryHandler

func (app *BaseApp) AddRunTxRecoveryHandler(handlers ...RecoveryHandler)

AddRunTxRecoveryHandler adds custom app.runTx method panic handlers.

func (*BaseApp) AnteHandler

func (app *BaseApp) AnteHandler() sdk.AnteHandler

AnteHandler returns the AnteHandler of the app.

func (*BaseApp) AppVersion

func (app *BaseApp) AppVersion(ctx context.Context) (uint64, error)

AppVersion returns the application's protocol version.

func (*BaseApp) ApplySnapshotChunk

func (app *BaseApp) ApplySnapshotChunk(req *abci.ApplySnapshotChunkRequest) (*abci.ApplySnapshotChunkResponse, error)

ApplySnapshotChunk implements the ABCI interface. It delegates to app.snapshotManager if set.

func (*BaseApp) ChainID

func (app *BaseApp) ChainID() string

ChainID returns the chainID of the app.

func (*BaseApp) CheckTx

func (app *BaseApp) CheckTx(req *abci.CheckTxRequest) (*abci.CheckTxResponse, error)

CheckTx implements the ABCI interface and executes a tx in CheckTx mode. In CheckTx mode, messages are not executed. This means messages are only validated and only the AnteHandler is executed. State is persisted to the BaseApp's internal CheckTx state if the AnteHandler passes. Otherwise, the ResponseCheckTx will contain relevant error information. Regardless of tx execution outcome, the ResponseCheckTx will contain relevant gas execution context.

func (*BaseApp) Close

func (app *BaseApp) Close() error

Close is called in start cmd to gracefully cleanup resources.

func (*BaseApp) Commit

func (app *BaseApp) Commit() (*abci.CommitResponse, error)

Commit implements the ABCI interface. It will commit all state that exists in the deliver state's multi-store and includes the resulting commit ID in the returned abci.ResponseCommit. Commit will set the check state based on the latest header and reset the deliver state. Also, if a non-zero halt height is defined in config, Commit will execute a deferred function call to check against that height and gracefully halt if it matches the latest committed height.

func (*BaseApp) CommitMultiStore

func (app *BaseApp) CommitMultiStore() storetypes.CommitMultiStore

CommitMultiStore returns the root multi-store. App constructor can use this to access the `cms`. UNSAFE: must not be used during the abci life cycle.

func (*BaseApp) CreateQueryContext

func (app *BaseApp) CreateQueryContext(height int64, prove bool) (sdk.Context, error)

CreateQueryContext creates a new sdk.Context for a query, taking as args the block height and whether the query needs a proof or not.

func (*BaseApp) ExecuteGenesisTx

func (ba *BaseApp) ExecuteGenesisTx(tx []byte) error

ExecuteGenesisTx implements genesis.GenesisState from cosmossdk.io/core/genesis to set initial state in genesis

func (*BaseApp) ExtendVote

func (app *BaseApp) ExtendVote(_ context.Context, req *abci.ExtendVoteRequest) (resp *abci.ExtendVoteResponse, err error)

ExtendVote implements the ExtendVote ABCI method and returns a ResponseExtendVote. It calls the application's ExtendVote handler which is responsible for performing application-specific business logic when sending a pre-commit for the NEXT block height. The extensions response may be non-deterministic but must always be returned, even if empty.

Agreed upon vote extensions are made available to the proposer of the next height and are committed in the subsequent height, i.e. H+2. An error is returned if vote extensions are not enabled or if extendVote fails or panics.

func (*BaseApp) FilterPeerByAddrPort

func (app *BaseApp) FilterPeerByAddrPort(info string) *abci.QueryResponse

FilterPeerByAddrPort filters peers by address/port.

func (*BaseApp) FilterPeerByID

func (app *BaseApp) FilterPeerByID(info string) *abci.QueryResponse

FilterPeerByID filters peers by node ID.

func (*BaseApp) FinalizeBlock

func (app *BaseApp) FinalizeBlock(req *abci.FinalizeBlockRequest) (res *abci.FinalizeBlockResponse, err error)

FinalizeBlock will execute the block proposal provided by RequestFinalizeBlock. Specifically, it will execute an application's BeginBlock (if defined), followed by the transactions in the proposal, finally followed by the application's EndBlock (if defined).

For each raw transaction, i.e. a byte slice, BaseApp will only execute it if it adheres to the sdk.Tx interface. Otherwise, the raw transaction will be skipped. This is to support compatibility with proposers injecting vote extensions into the proposal, which should not themselves be executed in cases where they adhere to the sdk.Tx interface.

func (*BaseApp) GRPCQueryRouter

func (app *BaseApp) GRPCQueryRouter() *GRPCQueryRouter

GRPCQueryRouter returns the GRPCQueryRouter of a BaseApp.

func (*BaseApp) GetBaseApp

func (app *BaseApp) GetBaseApp() *BaseApp

GetBaseApp returns the pointer to itself.

func (*BaseApp) GetBlockRetentionHeight

func (app *BaseApp) GetBlockRetentionHeight(commitHeight int64) int64

GetBlockRetentionHeight returns the height for which all blocks below this height are pruned from CometBFT. Given a commitment height and a non-zero local minRetainBlocks configuration, the retentionHeight is the smallest height that satisfies:

- Unbonding (safety threshold) time: The block interval in which validators can be economically punished for misbehavior. Blocks in this interval must be auditable e.g. by the light client.

- Logical store snapshot interval: The block interval at which the underlying logical store database is persisted to disk, e.g. every 10000 heights. Blocks since the last IAVL snapshot must be available for replay on application restart.

- State sync snapshots: Blocks since the oldest available snapshot must be available for state sync nodes to catch up (oldest because a node may be restoring an old snapshot while a new snapshot was taken).

- Local (minRetainBlocks) config: Archive nodes may want to retain more or all blocks, e.g. via a local config option min-retain-blocks. There may also be a need to vary retention for other nodes, e.g. sentry nodes which do not need historical blocks.

func (*BaseApp) GetConsensusParams

func (app *BaseApp) GetConsensusParams(ctx context.Context) cmtproto.ConsensusParams

GetConsensusParams returns the current consensus parameters from the BaseApp's ParamStore. If the BaseApp has no ParamStore defined, nil is returned.

func (*BaseApp) GetContextForCheckTx

func (app *BaseApp) GetContextForCheckTx(txBytes []byte) sdk.Context

func (*BaseApp) GetContextForFinalizeBlock

func (app *BaseApp) GetContextForFinalizeBlock(txBytes []byte) sdk.Context

func (*BaseApp) GetMaximumBlockGas

func (app *BaseApp) GetMaximumBlockGas(ctx sdk.Context) uint64

GetMaximumBlockGas gets the maximum gas from the consensus params. It panics if maximum block gas is less than negative one and returns zero if negative one.

func (*BaseApp) Info

func (app *BaseApp) Info(_ *abci.InfoRequest) (*abci.InfoResponse, error)

func (*BaseApp) Init

func (app *BaseApp) Init() error

Init initializes the app. It seals the app, preventing any further modifications. In addition, it validates the app against the earlier provided settings. Returns an error if validation fails. nil otherwise. Panics if the app is already sealed.

func (*BaseApp) InitChain

func (app *BaseApp) InitChain(req *abci.InitChainRequest) (*abci.InitChainResponse, error)

func (*BaseApp) IsSealed

func (app *BaseApp) IsSealed() bool

IsSealed returns true if the BaseApp is sealed and false otherwise.

func (*BaseApp) LastBlockHeight

func (app *BaseApp) LastBlockHeight() int64

LastBlockHeight returns the last committed block height.

func (*BaseApp) LastCommitID

func (app *BaseApp) LastCommitID() storetypes.CommitID

LastCommitID returns the last CommitID of the multistore.

func (*BaseApp) ListSnapshots

func (app *BaseApp) ListSnapshots(req *abci.ListSnapshotsRequest) (*abci.ListSnapshotsResponse, error)

ListSnapshots implements the ABCI interface. It delegates to app.snapshotManager if set.

func (*BaseApp) LoadLatestVersion

func (app *BaseApp) LoadLatestVersion() error

LoadLatestVersion loads the latest application version. It will panic if called more than once on a running BaseApp.

func (*BaseApp) LoadSnapshotChunk

func (app *BaseApp) LoadSnapshotChunk(req *abci.LoadSnapshotChunkRequest) (*abci.LoadSnapshotChunkResponse, error)

LoadSnapshotChunk implements the ABCI interface. It delegates to app.snapshotManager if set.

func (*BaseApp) LoadVersion

func (app *BaseApp) LoadVersion(version int64) error

LoadVersion loads the BaseApp application version. It will panic if called more than once on a running baseapp.

func (*BaseApp) Logger

func (app *BaseApp) Logger() log.Logger

Logger returns the logger of the BaseApp.

func (*BaseApp) Mempool

func (app *BaseApp) Mempool() mempool.Mempool

Mempool returns the Mempool of the app.

func (*BaseApp) MountKVStores

func (app *BaseApp) MountKVStores(keys map[string]*storetypes.KVStoreKey)

MountKVStores mounts all IAVL or DB stores to the provided keys in the BaseApp multistore.

func (*BaseApp) MountMemoryStores

func (app *BaseApp) MountMemoryStores(keys map[string]*storetypes.MemoryStoreKey)

MountMemoryStores mounts all in-memory KVStores with the BaseApp's internal commit multi-store.

func (*BaseApp) MountStore

func (app *BaseApp) MountStore(key storetypes.StoreKey, typ storetypes.StoreType)

MountStore mounts a store to the provided key in the BaseApp multistore, using the default DB.

func (*BaseApp) MountStores

func (app *BaseApp) MountStores(keys ...storetypes.StoreKey)

MountStores mounts all IAVL or DB stores to the provided keys in the BaseApp multistore.

func (*BaseApp) MountTransientStores

func (app *BaseApp) MountTransientStores(keys map[string]*storetypes.TransientStoreKey)

MountTransientStores mounts all transient stores to the provided keys in the BaseApp multistore.

func (*BaseApp) MsgServiceRouter

func (app *BaseApp) MsgServiceRouter() *MsgServiceRouter

MsgServiceRouter returns the MsgServiceRouter of a BaseApp.

func (*BaseApp) Name

func (app *BaseApp) Name() string

Name returns the name of the BaseApp.

func (*BaseApp) NewContext

func (app *BaseApp) NewContext(isCheckTx bool) sdk.Context

NewContext returns a new sdk.Context with a empty header

func (*BaseApp) NewContextLegacy

func (app *BaseApp) NewContextLegacy(isCheckTx bool, header cmtproto.Header) sdk.Context

NewContextLegacy returns a new sdk.Context with the provided header

func (*BaseApp) NewUncachedContext

func (app *BaseApp) NewUncachedContext(isCheckTx bool, header cmtproto.Header) sdk.Context

func (*BaseApp) OfferSnapshot

func (app *BaseApp) OfferSnapshot(req *abci.OfferSnapshotRequest) (*abci.OfferSnapshotResponse, error)

OfferSnapshot implements the ABCI interface. It delegates to app.snapshotManager if set.

func (*BaseApp) PreBlocker

func (app *BaseApp) PreBlocker() sdk.PreBlocker

func (*BaseApp) PrepareProposal

func (app *BaseApp) PrepareProposal(req *abci.PrepareProposalRequest) (resp *abci.PrepareProposalResponse, err error)

PrepareProposal implements the PrepareProposal ABCI method and returns a ResponsePrepareProposal object to the client. The PrepareProposal method is responsible for allowing the block proposer to perform application-dependent work in a block before proposing it.

Transactions can be modified, removed, or added by the application. Since the application maintains its own local mempool, it will ignore the transactions provided to it in RequestPrepareProposal. Instead, it will determine which transactions to return based on the mempool's semantics and the MaxTxBytes provided by the client's request.

Ref: https://github.com/T-ragon/cosmos-sdk/v3/blob/main/docs/architecture/adr-060-abci-1.0.md Ref: https://github.com/cometbft/cometbft/blob/main/spec/abci/abci%2B%2B_basic_concepts.md

func (*BaseApp) PrepareProposalVerifyTx

func (app *BaseApp) PrepareProposalVerifyTx(tx sdk.Tx) ([]byte, error)

PrepareProposalVerifyTx performs transaction verification when a proposer is creating a block proposal during PrepareProposal. Any state committed to the PrepareProposal state internally will be discarded. <nil, err> will be returned if the transaction cannot be encoded. <bz, nil> will be returned if the transaction is valid, otherwise <bz, err> will be returned.

func (*BaseApp) ProcessProposal

func (app *BaseApp) ProcessProposal(req *abci.ProcessProposalRequest) (resp *abci.ProcessProposalResponse, err error)

ProcessProposal implements the ProcessProposal ABCI method and returns a ResponseProcessProposal object to the client. The ProcessProposal method is responsible for allowing execution of application-dependent work in a proposed block. Note, the application defines the exact implementation details of ProcessProposal. In general, the application must at the very least ensure that all transactions are valid. If all transactions are valid, then we inform CometBFT that the Status is ACCEPT. However, the application is also able to implement optimizations such as executing the entire proposed block immediately.

If a panic is detected during execution of an application's ProcessProposal handler, it will be recovered and we will reject the proposal.

Ref: https://github.com/T-ragon/cosmos-sdk/v3/blob/main/docs/architecture/adr-060-abci-1.0.md Ref: https://github.com/cometbft/cometbft/blob/main/spec/abci/abci%2B%2B_basic_concepts.md

func (*BaseApp) ProcessProposalVerifyTx

func (app *BaseApp) ProcessProposalVerifyTx(txBz []byte) (sdk.Tx, error)

ProcessProposalVerifyTx performs transaction verification when receiving a block proposal during ProcessProposal. Any state committed to the ProcessProposal state internally will be discarded. <nil, err> will be returned if the transaction cannot be decoded. <Tx, nil> will be returned if the transaction is valid, otherwise <Tx, err> will be returned.

func (*BaseApp) Query

func (app *BaseApp) Query(_ context.Context, req *abci.QueryRequest) (resp *abci.QueryResponse, err error)

Query implements the ABCI interface. It delegates to CommitMultiStore if it implements Queryable.

func (*BaseApp) RegisterGRPCServer

func (app *BaseApp) RegisterGRPCServer(server gogogrpc.Server)

RegisterGRPCServer registers gRPC services directly with the gRPC server.

func (*BaseApp) RegisterStreamingServices

func (app *BaseApp) RegisterStreamingServices(appOpts servertypes.AppOptions, keys map[string]*storetypes.KVStoreKey) error

RegisterStreamingServices registers streaming services with the BaseApp.

func (*BaseApp) Seal

func (app *BaseApp) Seal()

Seal seals a BaseApp. It prohibits any further modifications to a BaseApp.

func (*BaseApp) SetAddrPeerFilter

func (app *BaseApp) SetAddrPeerFilter(pf sdk.PeerFilter)

func (*BaseApp) SetAnteHandler

func (app *BaseApp) SetAnteHandler(ah sdk.AnteHandler)

func (*BaseApp) SetAppVersion

func (app *BaseApp) SetAppVersion(ctx context.Context, v uint64) error

SetAppVersion sets the application's version this is used as part of the header in blocks and is returned to the consensus engine in EndBlock.

func (*BaseApp) SetBeginBlocker

func (app *BaseApp) SetBeginBlocker(beginBlocker sdk.BeginBlocker)

func (*BaseApp) SetCMS

func (app *BaseApp) SetCMS(cms storetypes.CommitMultiStore)

func (*BaseApp) SetCircuitBreaker

func (app *BaseApp) SetCircuitBreaker(cb CircuitBreaker)

SetCircuitBreaker sets the circuit breaker for the BaseApp. The circuit breaker is checked on every message execution to verify if a transaction should be executed or not.

func (*BaseApp) SetCommitMultiStoreTracer

func (app *BaseApp) SetCommitMultiStoreTracer(w io.Writer)

SetCommitMultiStoreTracer sets the store tracer on the BaseApp's underlying CommitMultiStore.

func (*BaseApp) SetDB

func (app *BaseApp) SetDB(db dbm.DB)

func (*BaseApp) SetEndBlocker

func (app *BaseApp) SetEndBlocker(endBlocker sdk.EndBlocker)

func (*BaseApp) SetExtendVoteHandler

func (app *BaseApp) SetExtendVoteHandler(handler sdk.ExtendVoteHandler)

func (*BaseApp) SetFauxMerkleMode

func (app *BaseApp) SetFauxMerkleMode()

func (*BaseApp) SetGRPCQueryRouter

func (app *BaseApp) SetGRPCQueryRouter(grpcQueryRouter *GRPCQueryRouter)

SetGRPCQueryRouter sets the GRPCQueryRouter of the BaseApp.

func (*BaseApp) SetIDPeerFilter

func (app *BaseApp) SetIDPeerFilter(pf sdk.PeerFilter)

func (*BaseApp) SetInitChainer

func (app *BaseApp) SetInitChainer(initChainer sdk.InitChainer)

func (*BaseApp) SetInterfaceRegistry

func (app *BaseApp) SetInterfaceRegistry(registry types.InterfaceRegistry)

SetInterfaceRegistry sets the InterfaceRegistry.

func (*BaseApp) SetMempool

func (app *BaseApp) SetMempool(mempool mempool.Mempool)

SetMempool sets the mempool for the BaseApp and is required for the app to start up.

func (*BaseApp) SetMsgServiceRouter

func (app *BaseApp) SetMsgServiceRouter(msgServiceRouter *MsgServiceRouter)

SetMsgServiceRouter sets the MsgServiceRouter of a BaseApp.

func (*BaseApp) SetName

func (app *BaseApp) SetName(name string)

func (*BaseApp) SetNotSigverifyTx

func (app *BaseApp) SetNotSigverifyTx()

SetNotSigverifyTx during simulation testing, transaction signature verification needs to be ignored.

func (*BaseApp) SetParamStore

func (app *BaseApp) SetParamStore(ps ParamStore)

SetParamStore sets a parameter store on the BaseApp.

func (*BaseApp) SetPostHandler

func (app *BaseApp) SetPostHandler(ph sdk.PostHandler)

func (*BaseApp) SetPreBlocker

func (app *BaseApp) SetPreBlocker(preBlocker sdk.PreBlocker)

func (*BaseApp) SetPrecommiter

func (app *BaseApp) SetPrecommiter(precommiter sdk.Precommiter)

func (*BaseApp) SetPrepareCheckStater

func (app *BaseApp) SetPrepareCheckStater(prepareCheckStater sdk.PrepareCheckStater)

func (*BaseApp) SetPrepareProposal

func (app *BaseApp) SetPrepareProposal(handler sdk.PrepareProposalHandler)

SetPrepareProposal sets the prepare proposal function for the BaseApp.

func (*BaseApp) SetProcessProposal

func (app *BaseApp) SetProcessProposal(handler sdk.ProcessProposalHandler)

SetProcessProposal sets the process proposal function for the BaseApp.

func (*BaseApp) SetQueryMultiStore

func (app *BaseApp) SetQueryMultiStore(ms storetypes.MultiStore)

SetQueryMultiStore set a alternative MultiStore implementation to support grpc query service.

Ref: https://github.com/T-ragon/cosmos-sdk/v3/issues/13317

func (*BaseApp) SetSnapshot

func (app *BaseApp) SetSnapshot(snapshotStore *snapshots.Store, opts snapshottypes.SnapshotOptions)

SetSnapshot sets the snapshot store and options.

func (*BaseApp) SetStoreLoader

func (app *BaseApp) SetStoreLoader(loader StoreLoader)

SetStoreLoader allows us to customize the rootMultiStore initialization.

func (*BaseApp) SetStoreMetrics

func (app *BaseApp) SetStoreMetrics(gatherer metrics.StoreMetrics)

SetStoreMetrics sets the prepare proposal function for the BaseApp.

func (*BaseApp) SetStreamingManager

func (app *BaseApp) SetStreamingManager(manager storetypes.StreamingManager)

SetStreamingManager sets the streaming manager for the BaseApp.

func (*BaseApp) SetTxDecoder

func (app *BaseApp) SetTxDecoder(txDecoder sdk.TxDecoder)

SetTxDecoder sets the TxDecoder if it wasn't provided in the BaseApp constructor.

func (*BaseApp) SetTxEncoder

func (app *BaseApp) SetTxEncoder(txEncoder sdk.TxEncoder)

SetTxEncoder sets the TxEncoder if it wasn't provided in the BaseApp constructor.

func (*BaseApp) SetVerifyVoteExtensionHandler

func (app *BaseApp) SetVerifyVoteExtensionHandler(handler sdk.VerifyVoteExtensionHandler)

func (*BaseApp) SetVersion

func (app *BaseApp) SetVersion(v string)

SetVersion sets the application's version string.

func (*BaseApp) SimCheck

func (app *BaseApp) SimCheck(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, *sdk.Result, error)

SimCheck defines a CheckTx helper function that used in tests and simulations.

func (*BaseApp) SimDeliver

func (app *BaseApp) SimDeliver(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, *sdk.Result, error)

func (*BaseApp) Simulate

func (app *BaseApp) Simulate(txBytes []byte) (sdk.GasInfo, *sdk.Result, error)

Simulate executes a tx in simulate mode to get result and gas info.

func (*BaseApp) SnapshotManager

func (app *BaseApp) SnapshotManager() *snapshots.Manager

SnapshotManager returns the snapshot manager. application use this to register extra extension snapshotters.

func (*BaseApp) StoreConsensusParams

func (app *BaseApp) StoreConsensusParams(ctx context.Context, cp cmtproto.ConsensusParams) error

StoreConsensusParams sets the consensus parameters to the BaseApp's param store.

func (*BaseApp) Trace

func (app *BaseApp) Trace() bool

Trace returns the boolean value for logging error stack traces.

func (*BaseApp) TxDecode

func (app *BaseApp) TxDecode(txBytes []byte) (sdk.Tx, error)

func (*BaseApp) TxEncode

func (app *BaseApp) TxEncode(tx sdk.Tx) ([]byte, error)

func (*BaseApp) VerifyVoteExtension

func (app *BaseApp) VerifyVoteExtension(req *abci.VerifyVoteExtensionRequest) (resp *abci.VerifyVoteExtensionResponse, err error)

VerifyVoteExtension implements the VerifyVoteExtension ABCI method and returns a ResponseVerifyVoteExtension. It calls the applications' VerifyVoteExtension handler which is responsible for performing application-specific business logic in verifying a vote extension from another validator during the pre-commit phase. The response MUST be deterministic. An error is returned if vote extensions are not enabled or if verifyVoteExt fails or panics. We highly recommend a size validation due to performance degradation, see more here https://docs.cometbft.com/v1.0/references/qa/cometbft-qa-38#vote-extensions-testbed

func (*BaseApp) Version

func (app *BaseApp) Version() string

Version returns the application's version string.

type CircuitBreaker

type CircuitBreaker interface {
	IsAllowed(ctx context.Context, typeURL string) (bool, error)
}

CircuitBreaker is an interface that defines the methods for a circuit breaker.

type DefaultProposalHandler

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

DefaultProposalHandler defines the default ABCI PrepareProposal and ProcessProposal handlers.

func NewDefaultProposalHandler

func NewDefaultProposalHandler(mp mempool.Mempool, txVerifier ProposalTxVerifier) *DefaultProposalHandler

func (*DefaultProposalHandler) PrepareProposalHandler

func (h *DefaultProposalHandler) PrepareProposalHandler() sdk.PrepareProposalHandler

PrepareProposalHandler returns the default implementation for processing an ABCI proposal. The application's mempool is enumerated and all valid transactions are added to the proposal. Transactions are valid if they:

1) Successfully encode to bytes. 2) Are valid (i.e. pass runTx, AnteHandler only).

Enumeration is halted once RequestPrepareProposal.MaxBytes of transactions is reached or the mempool is exhausted.

Note:

- Step (2) is identical to the validation step performed in DefaultProcessProposal. It is very important that the same validation logic is used in both steps, and applications must ensure that this is the case in non-default handlers.

- If no mempool is set or if the mempool is a no-op mempool, the transactions requested from CometBFT will simply be returned, which, by default, are in FIFO order.

func (*DefaultProposalHandler) ProcessProposalHandler

func (h *DefaultProposalHandler) ProcessProposalHandler() sdk.ProcessProposalHandler

ProcessProposalHandler returns the default implementation for processing an ABCI proposal. Every transaction in the proposal must pass 2 conditions:

1. The transaction bytes must decode to a valid transaction. 2. The transaction must be valid (i.e. pass runTx, AnteHandler only)

If any transaction fails to pass either condition, the proposal is rejected. Note that step (2) is identical to the validation step performed in DefaultPrepareProposal. It is very important that the same validation logic is used in both steps, and applications must ensure that this is the case in non-default handlers.

func (*DefaultProposalHandler) SetTxSelector

func (h *DefaultProposalHandler) SetTxSelector(ts TxSelector)

SetTxSelector sets the TxSelector function on the DefaultProposalHandler.

type GRPCQueryHandler

type GRPCQueryHandler = func(ctx sdk.Context, req *abci.QueryRequest) (*abci.QueryResponse, error)

GRPCQueryHandler defines a function type which handles ABCI Query requests using gRPC

type GRPCQueryRouter

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

GRPCQueryRouter routes ABCI Query requests to GRPC handlers

func NewGRPCQueryRouter

func NewGRPCQueryRouter() *GRPCQueryRouter

NewGRPCQueryRouter creates a new GRPCQueryRouter

func (*GRPCQueryRouter) HybridHandlerByRequestName

func (qrt *GRPCQueryRouter) HybridHandlerByRequestName(name string) []func(ctx context.Context, req, resp protoiface.MessageV1) error

func (*GRPCQueryRouter) RegisterService

func (qrt *GRPCQueryRouter) RegisterService(sd *grpc.ServiceDesc, handler interface{})

RegisterService implements the gRPC Server.RegisterService method. sd is a gRPC service description, handler is an object which implements that gRPC service/

This functions PANICS: - if a protobuf service is registered twice.

func (*GRPCQueryRouter) ResponseNameByRequestName

func (qrt *GRPCQueryRouter) ResponseNameByRequestName(requestName string) string

func (*GRPCQueryRouter) Route

func (qrt *GRPCQueryRouter) Route(path string) GRPCQueryHandler

Route returns the GRPCQueryHandler for a given query route path or nil if not found

func (*GRPCQueryRouter) SetInterfaceRegistry

func (qrt *GRPCQueryRouter) SetInterfaceRegistry(interfaceRegistry codectypes.InterfaceRegistry)

SetInterfaceRegistry sets the interface registry for the router. This will also register the interface reflection gRPC service.

type GasTx

type GasTx interface {
	GetGas() uint64
}

GasTx defines the contract that a transaction with a gas limit must implement.

type LegacyParamStore

type LegacyParamStore interface {
	Get(ctx sdk.Context, key []byte, ptr interface{})
	Has(ctx sdk.Context, key []byte) bool
}

type MessageRouter

type MessageRouter interface {
	Handler(msg sdk.Msg) MsgServiceHandler
	HandlerByTypeURL(typeURL string) MsgServiceHandler

	ResponseNameByMsgName(msgName string) string
	HybridHandlerByMsgName(msgName string) func(ctx context.Context, req, resp protoiface.MessageV1) error
}

MessageRouter ADR 031 request type routing https://github.com/T-ragon/cosmos-sdk/v3/blob/main/docs/architecture/adr-031-msg-service.md

type MsgServiceHandler

type MsgServiceHandler = func(ctx sdk.Context, req sdk.Msg) (*sdk.Result, error)

MsgServiceHandler defines a function type which handles Msg service message.

type MsgServiceRouter

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

MsgServiceRouter routes fully-qualified Msg service methods to their handler.

func NewMsgServiceRouter

func NewMsgServiceRouter() *MsgServiceRouter

NewMsgServiceRouter creates a new MsgServiceRouter.

func (*MsgServiceRouter) Handler

func (msr *MsgServiceRouter) Handler(msg sdk.Msg) MsgServiceHandler

Handler returns the MsgServiceHandler for a given msg or nil if not found.

func (*MsgServiceRouter) HandlerByTypeURL

func (msr *MsgServiceRouter) HandlerByTypeURL(typeURL string) MsgServiceHandler

HandlerByTypeURL returns the MsgServiceHandler for a given query route path or nil if not found.

func (*MsgServiceRouter) HybridHandlerByMsgName

func (msr *MsgServiceRouter) HybridHandlerByMsgName(msgName string) func(ctx context.Context, req, resp protoiface.MessageV1) error

func (*MsgServiceRouter) RegisterService

func (msr *MsgServiceRouter) RegisterService(sd *grpc.ServiceDesc, handler interface{})

RegisterService implements the gRPC Server.RegisterService method. sd is a gRPC service description, handler is an object which implements that gRPC service.

This function PANICs:

  • if it is called before the service `Msg`s have been registered using RegisterInterfaces,
  • or if a service is being registered twice.

func (*MsgServiceRouter) ResponseNameByMsgName

func (msr *MsgServiceRouter) ResponseNameByMsgName(msgName string) string

func (*MsgServiceRouter) SetCircuit

func (msr *MsgServiceRouter) SetCircuit(cb CircuitBreaker)

func (*MsgServiceRouter) SetInterfaceRegistry

func (msr *MsgServiceRouter) SetInterfaceRegistry(interfaceRegistry codectypes.InterfaceRegistry)

SetInterfaceRegistry sets the interface registry for the router.

type ParamStore

type ParamStore interface {
	Get(ctx context.Context) (cmtproto.ConsensusParams, error)
	Has(ctx context.Context) (bool, error)
	Set(ctx context.Context, cp cmtproto.ConsensusParams) error
}

ParamStore defines the interface the parameter store used by the BaseApp must fulfill.

type ProposalTxVerifier

type ProposalTxVerifier interface {
	PrepareProposalVerifyTx(tx sdk.Tx) ([]byte, error)
	ProcessProposalVerifyTx(txBz []byte) (sdk.Tx, error)
	TxDecode(txBz []byte) (sdk.Tx, error)
	TxEncode(tx sdk.Tx) ([]byte, error)
}

ProposalTxVerifier defines the interface that is implemented by BaseApp, that any custom ABCI PrepareProposal and ProcessProposal handler can use to verify a transaction.

type QueryRouter

type QueryRouter interface {
	HybridHandlerByRequestName(name string) []func(ctx context.Context, req, resp protoiface.MessageV1) error
	RegisterService(sd *grpc.ServiceDesc, handler interface{})
	ResponseNameByRequestName(requestName string) string
	Route(path string) GRPCQueryHandler
	SetInterfaceRegistry(interfaceRegistry codectypes.InterfaceRegistry)
}

type QueryServiceTestHelper

type QueryServiceTestHelper struct {
	*GRPCQueryRouter
	Ctx sdk.Context
}

QueryServiceTestHelper provides a helper for making grpc query service rpc calls in unit tests. It implements both the grpc Server and ClientConn interfaces needed to register a query service server and create a query service client.

func NewQueryServerTestHelper

func NewQueryServerTestHelper(ctx sdk.Context, interfaceRegistry types.InterfaceRegistry) *QueryServiceTestHelper

NewQueryServerTestHelper creates a new QueryServiceTestHelper that wraps the provided sdk.Context

func (*QueryServiceTestHelper) Invoke

func (q *QueryServiceTestHelper) Invoke(_ gocontext.Context, method string, args, reply interface{}, _ ...grpc.CallOption) error

Invoke implements the grpc ClientConn.Invoke method

func (*QueryServiceTestHelper) NewStream

NewStream implements the grpc ClientConn.NewStream method

type RecoveryHandler

type RecoveryHandler func(recoveryObj interface{}) error

RecoveryHandler handles recovery() object. Return a non-nil error if recoveryObj was processed. Return nil if recoveryObj was not processed.

type StoreLoader

type StoreLoader func(ms storetypes.CommitMultiStore) error

StoreLoader defines a customizable function to control how we load the CommitMultiStore from disk. This is useful for state migration, when loading a datastore written with an older version of the software. In particular, if a module changed the substore key name (or removed a substore) between two versions of the software.

type TxSelector

type TxSelector interface {
	// SelectedTxs should return a copy of the selected transactions.
	SelectedTxs(ctx context.Context) [][]byte

	// Clear should clear the TxSelector, nulling out all relevant fields.
	Clear()

	// SelectTxForProposal should attempt to select a transaction for inclusion in
	// a proposal based on inclusion criteria defined by the TxSelector. It must
	// return <true> if the caller should halt the transaction selection loop
	// (typically over a mempool) or <false> otherwise.
	SelectTxForProposal(ctx context.Context, maxTxBytes, maxBlockGas uint64, memTx sdk.Tx, txBz []byte) bool
}

TxSelector defines a helper type that assists in selecting transactions during mempool transaction selection in PrepareProposal. It keeps track of the total number of bytes and total gas of the selected transactions. It also keeps track of the selected transactions themselves.

func NewDefaultTxSelector

func NewDefaultTxSelector() TxSelector

type ValidatorStore

type ValidatorStore interface {
	GetPubKeyByConsAddr(context.Context, sdk.ConsAddress) (cryptotypes.PubKey, error)
}

ValidatorStore defines the interface contract require for verifying vote extension signatures. Typically, this will be implemented by the x/staking module, which has knowledge of the CometBFT public key.

Directories

Path Synopsis
internal
mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.

Jump to

Keyboard shortcuts

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