baseapp

package
v0.0.0-...-77283c5 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2019 License: Apache-2.0 Imports: 20 Imported by: 0

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.

nolint: golint

Index

Constants

View Source
const (

	// MainStoreKey is the string representation of the main store
	MainStoreKey = "main"
)

Variables

This section is empty.

Functions

func DefaultStoreLoader

func DefaultStoreLoader(ms sdk.CommitMultiStore) error

DefaultStoreLoader will be used by default and loads the latest version

func NewQueryRouter

func NewQueryRouter() *queryRouter

NewQueryRouter returns a reference to a new queryRouter.

TODO: Either make the function private or make return type (queryRouter) public.

func NewRouter

func NewRouter() *router

NewRouter returns a reference to a new router.

TODO: Either make the function private or make return type (router) public.

func SetHaltHeight

func SetHaltHeight(height uint64) func(*BaseApp)

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

func SetMinGasPrices

func SetMinGasPrices(gasPricesStr string) func(*BaseApp)

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

func SetPruning

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

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

Types

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.

NOTE: The db is used to store the version number for now.

func (*BaseApp) AppVersion

func (app *BaseApp) AppVersion() string

AppVersion returns the application's version string.

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 the ABCI interface. It runs the "basic checks" to see whether or not a transaction can possibly be executed, first decoding and then the ante handler (which checks signatures/fees/ValidateBasic).

NOTE:CheckTx does not run the actual Msg handler function(s).

func (*BaseApp) Commit

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

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

DeliverTx implements the ABCI interface.

func (*BaseApp) EndBlock

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

EndBlock implements the ABCI interface.

func (*BaseApp) FilterPeerByAddrPort

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

FilterPeerByAddrPort filters peers by address/port.

func (*BaseApp) FilterPeerByID

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

FilterPeerByIDfilters peers by node ID.

func (*BaseApp) Info

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

Info implements the ABCI interface.

func (*BaseApp) InitChain

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

InitChain implements the ABCI interface. It runs the initialization logic directly on the CommitMultiStore.

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() sdk.CommitID

LastCommitID returns the last CommitID of the multistore.

func (*BaseApp) LoadLatestVersion

func (app *BaseApp) LoadLatestVersion(baseKey *sdk.KVStoreKey) error

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

func (*BaseApp) LoadVersion

func (app *BaseApp) LoadVersion(version int64, baseKey *sdk.KVStoreKey) 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) MountKVStores

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

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

func (*BaseApp) MountStore

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

MountStore mounts 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)

MountStoreWithDB mounts a store to the provided key in the BaseApp multistore, using a specified DB.

func (*BaseApp) MountStores

func (app *BaseApp) MountStores(keys ...sdk.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]*sdk.TransientStoreKey)

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

func (*BaseApp) Name

func (app *BaseApp) Name() string

Name returns the name of the BaseApp.

func (*BaseApp) NewContext

func (app *BaseApp) NewContext(isCheckTx bool, header abci.Header) sdk.Context

Context with current {check, deliver}State of the app used by tests

func (*BaseApp) Query

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

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

func (*BaseApp) QueryRouter

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

QueryRouter returns the QueryRouter of a BaseApp.

func (*BaseApp) Router

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

Router returns the router of 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(v string)

SetAppVersion sets the application's version string.

func (*BaseApp) SetBeginBlocker

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

func (*BaseApp) SetCMS

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

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

func (app *BaseApp) SetFauxMerkleMode()

func (*BaseApp) SetIDPeerFilter

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

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)

SetOption implements the ABCI interface.

func (*BaseApp) SetStoreLoader

func (app *BaseApp) SetStoreLoader(loader StoreLoader)

SetStoreLoader allows us to customize the rootMultiStore initialization.

func (*BaseApp) Simulate

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

nolint - full tx execution

type StoreLoader

type StoreLoader func(ms sdk.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.

func StoreLoaderWithUpgrade

func StoreLoaderWithUpgrade(upgrades *storetypes.StoreUpgrades) StoreLoader

StoreLoaderWithUpgrade is used to prepare baseapp with a fixed StoreLoader pattern. This is useful in test cases, or with custom upgrade loading logic.

func UpgradeableStoreLoader

func UpgradeableStoreLoader(upgradeInfoPath string) StoreLoader

UpgradeableStoreLoader can be configured by SetStoreLoader() to check for the existence of a given upgrade file - json encoded StoreUpgrades data.

If not file is present, it will peform the default load (no upgrades to store).

If the file is present, it will parse the file and execute those upgrades (rename or delete stores), while loading the data. It will also delete the upgrade file upon successful load, so that the upgrade is only applied once, and not re-applied on next restart

This is useful for in place migrations when a store key is renamed between two versions of the software. (TODO: this code will move to x/upgrades when PR #4233 is merged, here mainly to help test the design)

Jump to

Keyboard shortcuts

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