baseapp

package
v0.1.9 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2023 License: MPL-2.0 Imports: 23 Imported by: 6

Documentation

Overview

Package baseapp contains data structures that provide basic data storage functionality and act as a bridge between the ABCI interface and the SDK abstractions.

BaseApp has no state except the CommitMultiStore you provide upon init.

See examples/basecoin/app/* for usage.

nolint: golint

Index

Constants

View Source
const (
	// we pass txHash of current handling message via context so that we can publish it as metadata of Msg
	TxHashKey = "txHash"
	// we pass txSrc of current handling message via context so that we can publish it as metadata of Msg
	TxSourceKey = "txSrc"
	//this number should be around the size of the transactions in a block, TODO: configurable
	TxMsgCacheSize = 4000
)

Variables

This section is empty.

Functions

func LoadBlockDB

func LoadBlockDB() dbm.DB

func LoadDB

func LoadDB(dbName string) dbm.DB

func LoadStateDB

func LoadStateDB() dbm.DB

func LoadTxDB

func LoadTxDB() dbm.DB

func NewQueryRouter

func NewQueryRouter() *queryrouter

nolint NewRouter - create new router TODO either make Function unexported or make return type (router) Exported

func NewRouter

func NewRouter() *router

nolint NewRouter - create new router TODO either make Function unexported or make return type (router) Exported

func SetPruning

func SetPruning(pruning string) func(*BaseApp)

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

func SplitPath

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

Splits a string path using the delimter '/'. i.e. "this/is/funny" becomes []string{"this", "is", "funny"}

Types

type BaseApp

type BaseApp struct {
	// initialized on creation
	Logger log.Logger

	TxDecoder sdk.TxDecoder // unmarshal []byte into sdk.Tx

	//--------------------
	// Volatile
	// CheckState is set on initialization and reset on Commit.
	// DeliverState is set in InitChain and BeginBlock and cleared on Commit.
	// See methods SetCheckState and SetDeliverState.
	CheckState   *state // for CheckTx
	DeliverState *state // for DeliverTx

	AccountStoreCache sdk.AccountStoreCache

	Pool *sdk.Pool

	// Snapshot for state sync related fields
	StateSyncHelper *store.StateSyncHelper // manage state sync related status
	// 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, collectConfig sdk.CollectConfig, options ...func(*BaseApp)) *BaseApp

NewBaseApp returns a reference to an initialized BaseApp.

TODO: Determine how to use a flexible and robust configuration paradigm that allows for sensible defaults while being highly configurable (e.g. functional options).

NOTE: The db is used to store the version number for now. Accepts a user-defined TxDecoder Accepts variable number of option functions, which act on the BaseApp to set configuration choices

func (*BaseApp) AddTxToCache

func (app *BaseApp) AddTxToCache(txBytes []byte, tx sdk.Tx) (evicted bool)

func (*BaseApp) BeginBlock

func (app *BaseApp) BeginBlock(req abci.RequestBeginBlock) (res abci.ResponseBeginBlock)

BeginBlock implements the ABCI application interface.

func (*BaseApp) Check

func (app *BaseApp) Check(tx sdk.Tx) (result sdk.Result)

nolint - Mostly for testing

func (*BaseApp) CheckTx

func (app *BaseApp) CheckTx(req abci.RequestCheckTx) (res abci.ResponseCheckTx)

CheckTx implements ABCI CheckTx runs the "basic checks" to see whether or not a transaction can possibly be executed, first decoding, then the ante handler (which checks signatures/fees/ValidateBasic), then finally the route match to see whether a handler exists. CheckTx does not run the actual Msg handler function(s).

func (*BaseApp) Commit

func (app *BaseApp) Commit() (res abci.ResponseCommit)

Implements ABCI

func (*BaseApp) Deliver

func (app *BaseApp) Deliver(tx sdk.Tx) (result sdk.Result)

nolint

func (*BaseApp) DeliverTx

func (app *BaseApp) DeliverTx(req abci.RequestDeliverTx) (res abci.ResponseDeliverTx)

Implements ABCI

func (*BaseApp) EndBlock

func (app *BaseApp) EndBlock(req abci.RequestEndBlock) (res abci.ResponseEndBlock)

EndBlock implements the ABCI application interface.

func (*BaseApp) FilterPeerByAddrPort

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

Filter peers by address / port

func (*BaseApp) FilterPeerByPubKey

func (app *BaseApp) FilterPeerByPubKey(info string) abci.ResponseQuery

Filter peers by public key

func (*BaseApp) GetCommitMultiStore

func (app *BaseApp) GetCommitMultiStore() sdk.CommitMultiStore

func (*BaseApp) GetDB

func (app *BaseApp) GetDB() dbm.DB

func (*BaseApp) GetTxFromCache

func (app *BaseApp) GetTxFromCache(txBytes []byte) (sdk.Tx, bool)

getTxFromCache returns a decoded transaction and true if found in the cache; otherwise return nil, false

func (*BaseApp) Info

func (app *BaseApp) Info(req abci.RequestInfo) abci.ResponseInfo

Implements ABCI

func (*BaseApp) InitChain

func (app *BaseApp) InitChain(req abci.RequestInitChain) (res abci.ResponseInitChain)

Implements ABCI InitChain runs the initialization logic directly on the CommitMultiStore and commits it.

func (*BaseApp) InitFromStore

func (app *BaseApp) InitFromStore(mainKey sdk.StoreKey) error

InitFromStore initializes the remaining logic from app.cms

func (*BaseApp) IsSealed

func (app *BaseApp) IsSealed() bool

func (*BaseApp) LastBlockHeight

func (app *BaseApp) LastBlockHeight() int64

the last committed block height

func (*BaseApp) LastCommitID

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

the last CommitID of the multistore

func (*BaseApp) LoadCMSLatestVersion

func (app *BaseApp) LoadCMSLatestVersion() error

only load latest multi store application version

func (*BaseApp) LoadLatestVersion

func (app *BaseApp) LoadLatestVersion(mainKey sdk.StoreKey) error

load latest application version

func (*BaseApp) LoadVersion

func (app *BaseApp) LoadVersion(version int64, mainKey sdk.StoreKey) error

load application version

func (*BaseApp) MountStore

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

Mount a store to the provided key in the BaseApp multistore, using the default DB

func (*BaseApp) MountStoreWithDB

func (app *BaseApp) MountStoreWithDB(key sdk.StoreKey, typ sdk.StoreType, db dbm.DB)

Mount a store to the provided key in the BaseApp multistore, using a specified DB

func (*BaseApp) MountStoresIAVL

func (app *BaseApp) MountStoresIAVL(keys ...*sdk.KVStoreKey)

Mount IAVL stores to the provided keys in the BaseApp multistore

func (*BaseApp) MountStoresTransient

func (app *BaseApp) MountStoresTransient(keys ...*sdk.TransientStoreKey)

Mount stores to the provided keys in the BaseApp multistore

func (*BaseApp) Name

func (app *BaseApp) Name() string

BaseApp Name

func (*BaseApp) NewContext

func (app *BaseApp) NewContext(mode sdk.RunTxMode, header abci.Header) sdk.Context

NewContext returns a new Context with the correct store, the given header, and nil txBytes.

func (*BaseApp) PreCheckTx

func (app *BaseApp) PreCheckTx(req abci.RequestCheckTx) (res abci.ResponseCheckTx)

PreCheckTx implements extended ABCI for concurrency PreCheckTx would perform decoding, signture and other basic verification

func (*BaseApp) PreDeliverTx

func (app *BaseApp) PreDeliverTx(req abci.RequestDeliverTx) (res abci.ResponseDeliverTx)

PreDeliverTx implements extended ABCI for concurrency PreCheckTx would perform decoding, signture and other basic verification

func (*BaseApp) Query

func (app *BaseApp) Query(req abci.RequestQuery) (res abci.ResponseQuery)

Implements ABCI. Delegates to CommitMultiStore if it implements Queryable

func (*BaseApp) QueryRouter

func (app *BaseApp) QueryRouter() QueryRouter

func (*BaseApp) ReCheckTx

func (app *BaseApp) ReCheckTx(req abci.RequestCheckTx) (res abci.ResponseCheckTx)

ReCheckTx implements ABCI ReCheckTx runs the "minimun checks", after the inital check, to see whether or not a transaction can possibly be executed.

func (*BaseApp) ReRunTx

func (app *BaseApp) ReRunTx(txBytes []byte, tx sdk.Tx) (result sdk.Result)

RunTx processes a transaction. The transactions is proccessed via an anteHandler. txBytes may be nil in some cases, eg. in tests. Also, in the future we may support "internal" transactions.

func (*BaseApp) RegisterCodespace

func (app *BaseApp) RegisterCodespace(codespace sdk.CodespaceType) sdk.CodespaceType

Register the next available codespace through the baseapp's codespacer, starting from a default

func (*BaseApp) RemoveTxFromCache

func (app *BaseApp) RemoveTxFromCache(txBytes []byte)

func (*BaseApp) Router

func (app *BaseApp) Router() Router

func (*BaseApp) RunTx

func (app *BaseApp) RunTx(mode sdk.RunTxMode, tx sdk.Tx, txHash string) (result sdk.Result)

RunTx processes a transaction. The transactions is proccessed via an anteHandler. txBytes may be nil in some cases, eg. in tests. Also, in the future we may support "internal" transactions.

func (*BaseApp) Seal

func (app *BaseApp) Seal()

func (*BaseApp) SetAccountStoreCache

func (app *BaseApp) SetAccountStoreCache(cdc *codec.Codec, accountStore sdk.KVStore, cap int)

func (*BaseApp) SetAddrPeerFilter

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

func (*BaseApp) SetAnteHandler

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

func (*BaseApp) SetBeginBlocker

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

func (*BaseApp) SetCMS

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

func (*BaseApp) SetCheckState

func (app *BaseApp) SetCheckState(header abci.Header)

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) SetDeliverState

func (app *BaseApp) SetDeliverState(header abci.Header)

func (*BaseApp) SetEndBlocker

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

func (*BaseApp) SetInitChainer

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

func (*BaseApp) SetName

func (app *BaseApp) SetName(name string)

func (*BaseApp) SetOption

func (app *BaseApp) SetOption(req abci.RequestSetOption) (res abci.ResponseSetOption)

Implements ABCI

func (*BaseApp) SetPreChecker

func (app *BaseApp) SetPreChecker(pc sdk.PreChecker)

func (*BaseApp) SetPruning

func (app *BaseApp) SetPruning(strategy sdk.PruningStrategy)

func (*BaseApp) SetPubKeyPeerFilter

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

func (*BaseApp) Simulate

func (app *BaseApp) Simulate(txBytes []byte, tx sdk.Tx) (result sdk.Result)

nolint - full tx execution

func (*BaseApp) StartRecovery

func (app *BaseApp) StartRecovery(manifest *abci.Manifest) error

func (*BaseApp) WriteRecoveryChunk

func (app *BaseApp) WriteRecoveryChunk(hash abci.SHA256Sum, chunk *abci.AppStateChunk, isComplete bool) error

type QueryRouter

type QueryRouter interface {
	AddRoute(r string, h sdk.Querier) (rtr QueryRouter)
	Route(path string) (h sdk.Querier)
}

QueryRouter provides queryables for each query path.

type Router

type Router interface {
	AddRoute(r string, h sdk.Handler) (rtr Router)
	Route(path string) (h sdk.Handler)
}

Router provides handlers for each transaction type.

Jump to

Keyboard shortcuts

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