Documentation ¶
Index ¶
- Constants
- func CallCodeSim(reader acmstate.Reader, tip bcm.BlockchainInfo, ...) (*exec.TxExecution, error)
- func CallSim(reader acmstate.Reader, tip bcm.BlockchainInfo, ...) (*exec.TxExecution, error)
- func HeightAtVersion(version int64) uint64
- func VMOptions(vmOptions ...func(*evm.VM)) func(*executor)
- func VersionAtHeight(height uint64) int64
- type Accounts
- type BatchCommitter
- type BatchExecutor
- type ExecutionConfig
- type ExecutionOption
- type Executor
- type ExecutorState
- type Params
- type SequentialSigningAccount
- type SigningAccount
- type Transactor
- func (trans *Transactor) BroadcastTxAsync(txEnv *txs.Envelope) (*txs.Receipt, error)
- func (trans *Transactor) BroadcastTxSync(ctx context.Context, txEnv *txs.Envelope) (*exec.TxExecution, error)
- func (trans *Transactor) CallCodeSim(fromAddress crypto.Address, code, data []byte) (*exec.TxExecution, error)
- func (trans *Transactor) CallSim(fromAddress, address crypto.Address, data []byte) (*exec.TxExecution, error)
- func (trans *Transactor) CheckTxAsync(txEnv *txs.Envelope, callback func(res *abciTypes.Response)) error
- func (trans *Transactor) CheckTxAsyncRaw(txBytes []byte, callback func(res *abciTypes.Response)) error
- func (trans *Transactor) CheckTxSync(txEnv *txs.Envelope) (*txs.Receipt, error)
- func (trans *Transactor) CheckTxSyncRaw(txBytes []byte) (*txs.Receipt, error)
- func (trans *Transactor) MaybeSignTxMempool(txEnv *txs.Envelope) (UnlockFunc, error)
- func (trans *Transactor) SignTx(txEnv *txs.Envelope) (*txs.Envelope, error)
- func (trans *Transactor) SignTxMempool(txEnv *txs.Envelope) (*txs.Envelope, UnlockFunc, error)
- type UnlockFunc
- type VMOption
Constants ¶
const ( BlockingTimeout = 10 * time.Second SubscribeBufferSize = 10 )
const VersionOffset = int64(1)
Since we have an initial save of our state forest we start one version ahead of the block height, but from then on we should track height by this offset.
Variables ¶
This section is empty.
Functions ¶
func CallCodeSim ¶ added in v0.20.0
func CallCodeSim(reader acmstate.Reader, tip bcm.BlockchainInfo, fromAddress, address crypto.Address, code, data []byte, logger *logging.Logger) (*exec.TxExecution, error)
Run the given code on an isolated and unpersisted state Cannot be used to create new contracts.
func CallSim ¶ added in v0.20.0
func CallSim(reader acmstate.Reader, tip bcm.BlockchainInfo, fromAddress, address crypto.Address, data []byte, logger *logging.Logger) (*exec.TxExecution, error)
Run a contract's code on an isolated and unpersisted state Cannot be used to create new contracts
func HeightAtVersion ¶ added in v0.24.0
func VersionAtHeight ¶ added in v0.24.0
Types ¶
type Accounts ¶
type Accounts struct { burrow_sync.RingMutex acmstate.Reader // contains filtered or unexported fields }
Accounts pairs an underlying state.Reader with a KeyClient to provide a signing variant of an account it also maintains a lock over addresses to provide a linearisation of signing events using SequentialSigningAccount
func NewAccounts ¶
func (*Accounts) SequentialSigningAccount ¶
func (accs *Accounts) SequentialSigningAccount(address crypto.Address) (*SequentialSigningAccount, error)
func (*Accounts) SigningAccount ¶
func (accs *Accounts) SigningAccount(address crypto.Address) (*SigningAccount, error)
type BatchCommitter ¶
type BatchCommitter interface { BatchExecutor // Commit execution results to underlying State and provide opportunity to mutate state before it is saved Commit(header *abciTypes.Header) (stateHash []byte, err error) }
Executes transactions
func NewBatchCommitter ¶
func NewBatchCommitter(backend ExecutorState, params Params, blockchain contexts.Blockchain, emitter event.Publisher, logger *logging.Logger, options ...ExecutionOption) BatchCommitter
type BatchExecutor ¶
type BatchExecutor interface { // Provides access to write lock for a BatchExecutor so reads can be prevented for the duration of a commit sync.Locker // Used by execution.Accounts to implement memory pool signing acmstate.Reader // Execute transaction against block cache (i.e. block buffer) Executor // Reset executor to underlying State Reset() error }
func NewBatchChecker ¶
func NewBatchChecker(backend ExecutorState, params Params, blockchain contexts.Blockchain, logger *logging.Logger, options ...ExecutionOption) BatchExecutor
Wraps a cache of what is variously known as the 'check cache' and 'mempool'
type ExecutionConfig ¶
type ExecutionConfig struct { CallStackMaxDepth uint64 DataStackInitialCapacity uint64 DataStackMaxDepth uint64 VMOptions []VMOption `json:",omitempty" toml:",omitempty"` }
func DefaultExecutionConfig ¶
func DefaultExecutionConfig() *ExecutionConfig
func (*ExecutionConfig) ExecutionOptions ¶
func (ec *ExecutionConfig) ExecutionOptions() ([]ExecutionOption, error)
type ExecutionOption ¶
type ExecutionOption func(*executor)
type Executor ¶ added in v0.19.0
type Executor interface {
Execute(txEnv *txs.Envelope) (*exec.TxExecution, error)
}
type ExecutorState ¶ added in v0.19.0
type Params ¶ added in v0.24.0
func ParamsFromGenesis ¶ added in v0.24.0
func ParamsFromGenesis(genesisDoc *genesis.GenesisDoc) Params
type SequentialSigningAccount ¶
type SequentialSigningAccount struct { Address crypto.Address // contains filtered or unexported fields }
func (*SequentialSigningAccount) Lock ¶
func (ssa *SequentialSigningAccount) Lock() (*SigningAccount, UnlockFunc, error)
type Transactor ¶
type Transactor struct { Tip bcm.BlockchainInfo Subscribable event.Subscribable MempoolAccounts *Accounts // contains filtered or unexported fields }
Transactor is responsible for helping to formulate, sign, and broadcast transactions to tendermint
The BroadcastTx* methods are able to work against the mempool Accounts (pending) state rather than the committed (final) Accounts state and can assign a sequence number based on all of the txs seen since the last block - provided these transactions are successfully committed (via DeliverTx) then subsequent transactions will have valid sequence numbers. This allows Burrow to coordinate sequencing and signing for a key it holds or is provided - it is down to the key-holder to manage the mutual information between transactions concurrent within a new block window.
func NewTransactor ¶
func NewTransactor(tip bcm.BlockchainInfo, subscribable event.Subscribable, mempoolAccounts *Accounts, checkTxAsync func(tx tmTypes.Tx, cb func(*abciTypes.Response)) error, txEncoder txs.Encoder, logger *logging.Logger) *Transactor
func (*Transactor) BroadcastTxAsync ¶
Broadcast a transaction without waiting for confirmation - will attempt to sign server-side and set sequence numbers if no signatures are provided
func (*Transactor) BroadcastTxSync ¶ added in v0.20.0
func (trans *Transactor) BroadcastTxSync(ctx context.Context, txEnv *txs.Envelope) (*exec.TxExecution, error)
func (*Transactor) CallCodeSim ¶ added in v0.20.0
func (trans *Transactor) CallCodeSim(fromAddress crypto.Address, code, data []byte) (*exec.TxExecution, error)
func (*Transactor) CallSim ¶ added in v0.20.0
func (trans *Transactor) CallSim(fromAddress, address crypto.Address, data []byte) (*exec.TxExecution, error)
func (*Transactor) CheckTxAsync ¶ added in v0.20.0
func (*Transactor) CheckTxAsyncRaw ¶ added in v0.20.0
func (trans *Transactor) CheckTxAsyncRaw(txBytes []byte, callback func(res *abciTypes.Response)) error
func (*Transactor) CheckTxSync ¶ added in v0.20.0
Broadcast a transaction and waits for a response from the mempool. Transactions to BroadcastTx will block during various mempool operations (managed by Tendermint) including mempool Reap, Commit, and recheckTx.
func (*Transactor) CheckTxSyncRaw ¶ added in v0.20.0
func (trans *Transactor) CheckTxSyncRaw(txBytes []byte) (*txs.Receipt, error)
func (*Transactor) MaybeSignTxMempool ¶ added in v0.20.1
func (trans *Transactor) MaybeSignTxMempool(txEnv *txs.Envelope) (UnlockFunc, error)
func (*Transactor) SignTxMempool ¶ added in v0.20.0
func (trans *Transactor) SignTxMempool(txEnv *txs.Envelope) (*txs.Envelope, UnlockFunc, error)
type UnlockFunc ¶
type UnlockFunc func()