baseapp

package
v0.25.0-binance.7 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2019 License: Apache-2.0 Imports: 22 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.

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"
	//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 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 RunForever

func RunForever(app abci.Application)

RunForever - BasecoinApp execution and cleanup

func SetPruning added in v0.21.0

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
	// 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(txBytes []byte) (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(txBytes []byte) (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) EndRecovery

func (app *BaseApp) EndRecovery(height int64) error

func (*BaseApp) FilterPeerByAddrPort added in v0.18.0

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

Filter peers by address / port

func (*BaseApp) FilterPeerByPubKey added in v0.18.0

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 added in v0.24.0

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

func (app *BaseApp) LatestSnapshot() (height int64, numKeys []int64, err error)

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(txBytes []byte) (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(txBytes []byte) (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(txBytes []byte) (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) ReadSnapshotChunk

func (app *BaseApp) ReadSnapshotChunk(height int64, startIndex, endIndex int64) (chunk [][]byte, err error)

func (*BaseApp) RegisterCodespace added in v0.16.0

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, txBytes []byte, 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 added in v0.24.0

func (app *BaseApp) Seal()

func (*BaseApp) SetAccountStoreCache

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

func (*BaseApp) SetAddrPeerFilter added in v0.18.0

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 added in v0.24.0

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

func (*BaseApp) SetCheckState

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

func (*BaseApp) SetCommitMultiStoreTracer added in v0.21.0

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

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

func (*BaseApp) SetDB added in v0.24.0

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 added in v0.24.0

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 added in v0.18.0

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

func (*BaseApp) Simulate added in v0.18.0

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

nolint - full tx execution

func (*BaseApp) StartRecovery

func (app *BaseApp) StartRecovery(height int64, numKeys []int64) error

func (*BaseApp) WriteRecoveryChunk

func (app *BaseApp) WriteRecoveryChunk(chunk [][]byte) 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