execution

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2018 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const BlockingTimeoutSeconds = 30

Variables

This section is empty.

Functions

func VMOptions

func VMOptions(vmOptions ...func(*evm.VM)) func(*executor)

Types

type Accounts

type Accounts struct {
	burrow_sync.RingMutex
	state.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 NewAccounts(reader state.Reader, keyClient keys.KeyClient, mutexCount int) *Accounts

func (*Accounts) GetSequentialSigningAccount added in v0.19.0

func (accs *Accounts) GetSequentialSigningAccount(address, privateKey []byte) (*SequentialSigningAccount, error)

Gets signing account from onr of private key or address - failing if both are provided

func (*Accounts) SequentialSigningAccount

func (accs *Accounts) SequentialSigningAccount(address crypto.Address) (*SequentialSigningAccount, error)

func (*Accounts) SequentialSigningAccountFromPrivateKey

func (accs *Accounts) SequentialSigningAccountFromPrivateKey(privateKeyBytes []byte) (*SequentialSigningAccount, error)

func (*Accounts) SigningAccount

func (accs *Accounts) SigningAccount(address crypto.Address, signer crypto.Signer) (*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() (stateHash []byte, err error)
}

Executes transactions

func NewBatchCommitter

func NewBatchCommitter(backend ExecutorState, tip bcm.TipInfo, publisher 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
	state.Reader
	// Execute transaction against block cache (i.e. block buffer)
	Executor
	// Reset executor to underlying State
	Reset() error
}

func NewBatchChecker

func NewBatchChecker(backend ExecutorState, tip bcm.TipInfo, logger *logging.Logger,
	options ...ExecutionOption) BatchExecutor

Wraps a cache of what is variously known as the 'check cache' and 'mempool'

type Call

type Call struct {
	Return  binary.HexBytes
	GasUsed uint64
}

type ExecutionConfig

type ExecutionConfig struct {
	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) error
}

type ExecutorState added in v0.19.0

type ExecutorState interface {
	Update(updater func(ws Updatable) error) (hash []byte, err error)
	names.Reader
	state.IterableReader
}

type SequentialSigningAccount

type SequentialSigningAccount struct {
	// contains filtered or unexported fields
}

func (*SequentialSigningAccount) Lock

type SigningAccount

type SigningAccount struct {
	acm.Account
	crypto.Signer
}

type State

type State struct {
	// Values not reassigned
	sync.RWMutex
	// contains filtered or unexported fields
}

Writers to state are responsible for calling State.Lock() before calling

func LoadState

func LoadState(db dbm.DB, hash []byte) (*State, error)

Tries to load the execution state from DB, returns nil with no error if no state found

func MakeGenesisState

func MakeGenesisState(db dbm.DB, genesisDoc *genesis.GenesisDoc) (*State, error)

Make genesis state from GenesisDoc and save to DB

func NewState

func NewState(db dbm.DB) *State

Create a new State object

func (*State) Copy

func (s *State) Copy(db dbm.DB) (*State, error)

Creates a copy of the database to the supplied db

func (*State) GetAccount

func (s *State) GetAccount(address crypto.Address) (acm.Account, error)

Returns nil if account does not exist with given address.

func (*State) GetEvents added in v0.19.0

func (s *State) GetEvents(startKey, endKey events.Key, consumer func(ev *events.Event) (stop bool)) (stopped bool, err error)

func (*State) GetNameEntry added in v0.19.0

func (s *State) GetNameEntry(name string) (*names.Entry, error)

func (*State) GetStorage

func (s *State) GetStorage(address crypto.Address, key binary.Word256) (binary.Word256, error)

func (*State) Hash

func (s *State) Hash() []byte

func (*State) IterateAccounts

func (s *State) IterateAccounts(consumer func(acm.Account) (stop bool)) (stopped bool, err error)

func (*State) IterateNameEntries added in v0.19.0

func (s *State) IterateNameEntries(consumer func(*names.Entry) (stop bool)) (stopped bool, err error)

func (*State) IterateStorage

func (s *State) IterateStorage(address crypto.Address,
	consumer func(key, value binary.Word256) (stop bool)) (stopped bool, err error)

func (*State) LatestEventKey added in v0.19.0

func (s *State) LatestEventKey() events.Key

func (*State) Update added in v0.19.0

func (s *State) Update(updater func(up Updatable) error) ([]byte, error)

Perform updates to state whilst holding the write lock, allows a commit to hold the write lock across multiple operations while preventing interlaced reads and writes

type Transactor

type Transactor struct {
	// contains filtered or unexported fields
}

Transactor is the controller/middleware for the v0 RPC

func NewTransactor

func NewTransactor(tip *blockchain.Tip, eventEmitter event.Emitter,
	broadcastTxAsync func(tx tmTypes.Tx, cb func(*abciTypes.Response)) error, txEncoder txs.Encoder,
	logger *logging.Logger) *Transactor

func (*Transactor) BroadcastTx

func (trans *Transactor) BroadcastTx(txEnv *txs.Envelope) (*txs.Receipt, error)

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

func (trans *Transactor) BroadcastTxAsync(txEnv *txs.Envelope, callback func(res *abciTypes.Response)) error

func (*Transactor) BroadcastTxAsyncRaw added in v0.19.0

func (trans *Transactor) BroadcastTxAsyncRaw(txBytes []byte, callback func(res *abciTypes.Response)) error

func (*Transactor) BroadcastTxRaw added in v0.19.0

func (trans *Transactor) BroadcastTxRaw(txBytes []byte) (*txs.Receipt, error)

func (*Transactor) Call

func (trans *Transactor) Call(reader state.Reader, fromAddress, address crypto.Address,
	data []byte) (call *Call, err error)

Run a contract's code on an isolated and unpersisted state Cannot be used to create new contracts

func (*Transactor) CallCode

func (trans *Transactor) CallCode(reader state.Reader, fromAddress crypto.Address, code, data []byte) (*Call, error)

Run the given code on an isolated and unpersisted state Cannot be used to create new contracts.

func (*Transactor) Send

func (trans *Transactor) Send(sequentialSigningAccount *SequentialSigningAccount, toAddress crypto.Address,
	amount uint64) (*txs.Receipt, error)

func (*Transactor) SendAndHold

func (trans *Transactor) SendAndHold(ctx context.Context, sequentialSigningAccount *SequentialSigningAccount,
	toAddress crypto.Address, amount uint64) (*txs.Receipt, error)

func (*Transactor) SignTx

func (trans *Transactor) SignTx(txEnv *txs.Envelope, signingAccounts []acm.AddressableSigner) (*txs.Envelope, error)

Sign a transaction

func (*Transactor) Transact

func (trans *Transactor) Transact(sequentialSigningAccount *SequentialSigningAccount, address *crypto.Address, data []byte,
	gasLimit, fee uint64) (*txs.Receipt, error)

Orders calls to BroadcastTx using lock (waits for response from core before releasing)

func (*Transactor) TransactAndHold

func (trans *Transactor) TransactAndHold(ctx context.Context, sequentialSigningAccount *SequentialSigningAccount,
	address *crypto.Address, data []byte, gasLimit, fee uint64) (*events.EventDataCall, error)

func (*Transactor) TransactNameReg

func (trans *Transactor) TransactNameReg(sequentialSigningAccount *SequentialSigningAccount, name, data string, amount,
	fee uint64) (*txs.Receipt, error)

type UnlockFunc

type UnlockFunc func()

type Updatable added in v0.19.0

type Updatable interface {
	state.Writer
	names.Writer
	event.Publisher
}

type VMOption

type VMOption string
const (
	DebugOpcodes VMOption = "DebugOpcodes"
	DumpTokens   VMOption = "DumpTokens"
)

Directories

Path Synopsis
evm
abi
asm

Jump to

Keyboard shortcuts

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