Crate sputnikvm [] [src]

SputnikVM implementation, traits and structs

Lifecycle

A VM can be started given a Context and a BlockHeader. The user can then fire or step to run it. Those functions would only fail if it needs some information (accounts in the current block, or block hashes of previous blocks). If this happens, one can use the function commit_account and commit_blockhash to commit those information to the VM, and fire or step again until it succeeds. The current VM status can always be obtained using the status function.

Reexports

pub use self::errors::OnChainError;
pub use self::errors::NotSupportedError;
pub use self::errors::RequireError;
pub use self::errors::CommitError;
pub use self::errors::PreExecutionError;

Modules

errors

VM errors

Structs

AccountState

A struct that manages the current account state for one EVM.

BlockhashState

A struct that manages the current blockhash state for one EVM.

Context

A VM context. See the Yellow Paper for more information.

ContextVM

A VM that executes using a context and block information.

ECRECPrecompiled

ECREC precompiled contract.

EIP150Patch

EIP150 patch.

EIP160Patch

EIP160 patch.

EmbeddedPatch

Embedded patch.

FrontierPatch

Frontier patch.

HeaderParams

Block header.

HomesteadPatch

Homestead patch.

IDPrecompiled

ID precompiled contract.

Log
Machine

A VM state with PC.

MainnetAccountPatch

Mainnet account patch

PC

Represents a program counter in EVM.

PCMut

Represents a program counter in EVM.

RIP160Precompiled

RIP160 precompiled contract.

Runtime

A VM runtime. Only available in eval.

SHA256Precompiled

SHA256 precompiled contract.

SeqMemory

A sequencial memory. It uses Rust's Vec for internal representation.

Stack

Represents an EVM stack.

State

A VM state without PC.

Storage

Internal representation of an account storage. It will return a RequireError if trying to access non-existing storage.

TransactionVM

A VM that executes using a transaction and block information.

VMTestPatch

Patch sepcific for the jsontests crate.

ValidTransaction
Valids

Enums

AccountChange

Represents an account. This is usually returned by the EVM.

AccountCommitment

A single account commitment.

Instruction

Instructions for the program counter. This is the same as Opcode except PUSH, which might take longer length.

MachineStatus

Represents the current runtime status.

Opcode

Opcode enum. One-to-one corresponding to an u8 value.

VMStatus

VM Status

Statics

ECREC_PRECOMPILED
EMBEDDED_PRECOMPILEDS
ETC_PRECOMPILEDS
ID_PRECOMPILED
RIP160_PRECOMPILED
SHA256_PRECOMPILED

Traits

AccountPatch

Account patch for account related variables.

Memory

Represent a memory in EVM. Read should always succeed. Write can fall.

Patch

Represents different block range context.

Precompiled

Represent a precompiled contract.

VM

Represents an EVM. This is usually the main interface for clients to interact with.

Type Definitions

MainnetEIP150Patch
MainnetEIP160Patch
MainnetEmbeddedPatch
MainnetFrontierPatch
MainnetHomesteadPatch
SeqContextVM

A sequencial VM. It uses sequencial memory representation and hash map storage for accounts.

SeqTransactionVM

A sequencial transaction VM. This is same as SeqContextVM except it runs at transaction level.