Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Application ¶
type Application interface {
// Info returns application information as a string
// NOTE: [ben] likely to move
Info() (info abci.ResponseInfo)
// Set application option (e.g. mode=mempool, mode=consensus)
// NOTE: [ben] taken from tendermint, but it is unclear what the use is,
// specifically, when will tendermint call this over abci ?
SetOption(key string, value string) (log string)
// Append transaction applies a transaction to the state regardless of
// whether the transaction is valid or not.
// Currently AppendTx is taken from abci, and returns a result.
// This will be altered, as AppendTransaction needs to more strongly reflect
// the theoretical logic:
// Append(StateN, Transaction) = StateN+1
// here invalid transactions are allowed, but should act as the identity on
// the state:
// Append(StateN, InvalidTransaction) = StateN
// TODO: implementation notes:
// 1. at this point the transaction should already be strongly typed
// 2.
DeliverTx(tx []byte) abci.Result
// Check Transaction validates a transaction before being allowed into the
// consensus' engine memory pool. This is the original defintion and
// intention as taken from abci, but should be remapped to the more
// general concept of basic, cheap verification;
// Check Transaction does not alter the state, but does require an immutable
// copy of the state. In particular there is no consensus on ordering yet.
// TODO: implementation notes:
// 1. at this point the transaction should already be strongly typed
// 2.
CheckTx(tx []byte) abci.Result
// Commit returns the root hash of the current application state
// NOTE: [ben] Because the concept of the block has been erased here
// the commit root hash is a fully implict stateful function;
// the opposit the principle of explicit stateless functions.
// This will be amended when we introduce the concept of (streaming)
// blocks in the pipe.
Commit() abci.Result
// Query for state. This query request is not passed over the p2p network
// and is called from Tenderpmint rpc directly up to the application.
// NOTE: [ben] burrow will give preference to queries from the local client
// directly over the burrow rpc.
// We will support this for Tendermint compatibility.
Query(reqQuery abci.RequestQuery) abci.ResponseQuery
// Initialise the blockchain
// When Tendermint initialises the genesis validators from tendermint core
// are passed in as validators
InitChain(validators []*abci.Validator)
// Signals the beginning of communicating a block (all transactions have been
// closed into the block already
BeginBlock(hash []byte, header *abci.Header)
// Signals the end of a blockchain
// ResponseEndBlock wraps a slice of Validators with the Diff field. A Validator
// is a public key and a voting power. Returning a Validator within this slice
// asks Tendermint to set that validator's voting power to the Power provided.
// Note: although the field is named 'Diff' the intention is that it declares
// the what the new voting power should be (for validators specified,
// those omitted are left alone) it is not an relative increment to
// be added (or subtracted) from voting power.
EndBlock(height uint64) abci.ResponseEndBlock
// Is this the passed ConsensusEngine compatible with this manager
CompatibleConsensus(consensusEngine consensus_types.ConsensusEngine) bool
}
Application interface applies transactions to the state.
Click to show internal directories.
Click to hide internal directories.