@tevm/voltaire / evm
evm
EVM (Ethereum Virtual Machine) module Provides execution frame, host interface, and complete opcode handler implementations. Based on guillotine-mini architecture with TypeScript/Zig dual implementation.Namespaces
Type Aliases
BrandedFrame
BrandedFrame = object
Defined in: src/evm/Frame/FrameType.ts:11
BrandedFrame - EVM execution frame
Represents an EVM execution frame with stack, memory, gas accounting,
and execution state. Based on guillotine-mini Frame structure.
Properties
[brand]
Defined in: src/evm/Frame/FrameType.ts:12readonly[brand]:"Frame"
accessedAddresses?
Defined in: src/evm/Frame/FrameType.ts:47optionalaccessedAddresses:Set<string>
accessedStorageKeys?
Defined in: src/evm/Frame/FrameType.ts:48optionalaccessedStorageKeys:Map<string,boolean>
address
address: AddressType
Defined in: src/evm/Frame/FrameType.ts:28
authorized
authorized:Defined in: src/evm/Frame/FrameType.ts:40bigint|null
blobBaseFee?
Defined in: src/evm/Frame/FrameType.ts:62optionalblobBaseFee:bigint
blobVersionedHashes?
Defined in: src/evm/Frame/FrameType.ts:65optionalblobVersionedHashes:bigint[]
blockBaseFee?
Defined in: src/evm/Frame/FrameType.ts:60optionalblockBaseFee:bigint
blockDifficulty?
Defined in: src/evm/Frame/FrameType.ts:58optionalblockDifficulty:bigint
blockGasLimit?
Defined in: src/evm/Frame/FrameType.ts:57optionalblockGasLimit:bigint
blockHashes?
Defined in: src/evm/Frame/FrameType.ts:64optionalblockHashes:Map<bigint,bigint>
blockNumber?
Defined in: src/evm/Frame/FrameType.ts:55optionalblockNumber:bigint
blockPrevrandao?
Defined in: src/evm/Frame/FrameType.ts:59optionalblockPrevrandao:bigint
blockTimestamp?
Defined in: src/evm/Frame/FrameType.ts:56optionalblockTimestamp:bigint
bytecode
bytecode: Uint8Array
Defined in: src/evm/Frame/FrameType.ts:24
calldata
calldata: Uint8Array
Defined in: src/evm/Frame/FrameType.ts:30
callDepth
callDepth: number
Defined in: src/evm/Frame/FrameType.ts:41
caller
caller: AddressType
Defined in: src/evm/Frame/FrameType.ts:27
chainId?
Defined in: src/evm/Frame/FrameType.ts:61optionalchainId:bigint
coinbase?
Defined in: src/evm/Frame/FrameType.ts:63optionalcoinbase:AddressType
gasRefunds?
Defined in: src/evm/Frame/FrameType.ts:52optionalgasRefunds:bigint
gasRemaining
gasRemaining: bigint
Defined in: src/evm/Frame/FrameType.ts:23
hardfork?
Defined in: src/evm/Frame/FrameType.ts:44optionalhardfork:HardforkType
isStatic
isStatic: boolean
Defined in: src/evm/Frame/FrameType.ts:37
logs?
Defined in: src/evm/Frame/FrameType.ts:69optionallogs:object[]
address
address: AddressType
data
data: Uint8Array
topics
topics: bigint[]
memory
memory:Defined in: src/evm/Frame/FrameType.ts:18Map<number,number>
memorySize
memorySize: number
Defined in: src/evm/Frame/FrameType.ts:19
output
output: Uint8Array
Defined in: src/evm/Frame/FrameType.ts:31
pc
pc: number
Defined in: src/evm/Frame/FrameType.ts:22
returnData
returnData: Uint8Array
Defined in: src/evm/Frame/FrameType.ts:32
reverted
reverted: boolean
Defined in: src/evm/Frame/FrameType.ts:36
selfBalance?
Defined in: src/evm/Frame/FrameType.ts:66optionalselfBalance:bigint
stack
stack: bigint[]
Defined in: src/evm/Frame/FrameType.ts:15
stopped
stopped: boolean
Defined in: src/evm/Frame/FrameType.ts:35
storageOriginalValues?
Defined in: src/evm/Frame/FrameType.ts:51optionalstorageOriginalValues:Map<string,bigint>
value
value: bigint
Defined in: src/evm/Frame/FrameType.ts:29
Methods
add()
add():Defined in: src/evm/Frame/FrameType.ts:76EvmError|null
Returns
EvmError | null
addmod()
addmod():Defined in: src/evm/Frame/FrameType.ts:83EvmError|null
Returns
EvmError | null
div()
div():Defined in: src/evm/Frame/FrameType.ts:79EvmError|null
Returns
EvmError | null
exp()
exp():Defined in: src/evm/Frame/FrameType.ts:85EvmError|null
Returns
EvmError | null
mod()
mod():Defined in: src/evm/Frame/FrameType.ts:81EvmError|null
Returns
EvmError | null
mul()
mul():Defined in: src/evm/Frame/FrameType.ts:77EvmError|null
Returns
EvmError | null
mulmod()
mulmod():Defined in: src/evm/Frame/FrameType.ts:84EvmError|null
Returns
EvmError | null
sdiv()
sdiv():Defined in: src/evm/Frame/FrameType.ts:80EvmError|null
Returns
EvmError | null
signextend()
signextend():Defined in: src/evm/Frame/FrameType.ts:86EvmError|null
Returns
EvmError | null
smod()
smod():Defined in: src/evm/Frame/FrameType.ts:82EvmError|null
Returns
EvmError | null
sub()
sub():Defined in: src/evm/Frame/FrameType.ts:78EvmError|null
Returns
EvmError | null
BrandedHost
BrandedHost = object
Defined in: src/evm/Host/HostType.ts:30
BrandedHost - EVM host interface for external state access
Provides access to account state (balances, storage, code, nonces) and
nested execution capabilities.
Architecture Note
This module provides low-level EVM primitives (opcode handlers, frame management). For full EVM execution with nested calls, use:- guillotine: Production EVM with async state access, tracing, and full EIP support
- guillotine-mini: Lightweight synchronous EVM for testing and simple use cases
call and create methods on this interface are optional - when not provided,
system opcodes (CALL, CREATE, etc.) will return a NotImplemented error. This is
intentional: these low-level utils don’t include a full execution engine.
Based on guillotine-mini HostInterface vtable pattern.
Properties
[brand]
Defined in: src/evm/Host/HostType.ts:31readonly[brand]:"Host"
call()?
Defined in: src/evm/Host/HostType.ts:91 Execute a nested CALL operation (CALL, STATICCALL, DELEGATECALL, CALLCODE) Optional - when not provided, CALL-family opcodes return NotImplemented error. Full implementations provided by guillotine/guillotine-mini EVM engines.optionalcall: (params) =>CallResult
Parameters
params
CallParams
Returns
CallResult
create()?
Defined in: src/evm/Host/HostType.ts:99 Execute a nested CREATE operation (CREATE, CREATE2) Optional - when not provided, CREATE-family opcodes return NotImplemented error. Full implementations provided by guillotine/guillotine-mini EVM engines.optionalcreate: (params) =>CreateResult
Parameters
params
CreateParams
Returns
CreateResult
getBalance()
getBalance: (Defined in: src/evm/Host/HostType.ts:36 Get account balanceaddress) =>bigint
Parameters
address
AddressType
Returns
bigint
getCode()
getCode: (Defined in: src/evm/Host/HostType.ts:46 Get account codeaddress) =>Uint8Array
Parameters
address
AddressType
Returns
Uint8Array
getNonce()
getNonce: (Defined in: src/evm/Host/HostType.ts:66 Get account nonceaddress) =>bigint
Parameters
address
AddressType
Returns
bigint
getStorage()
getStorage: (Defined in: src/evm/Host/HostType.ts:56 Get storage slot valueaddress,slot) =>bigint
Parameters
address
AddressType
slot
bigint
Returns
bigint
getTransientStorage()
getTransientStorage: (Defined in: src/evm/Host/HostType.ts:77 Get transient storage slot value (EIP-1153) Transaction-scoped, cleared at end of transactionaddress,slot) =>bigint
Parameters
address
AddressType
slot
bigint
Returns
bigint
setBalance()
setBalance: (Defined in: src/evm/Host/HostType.ts:41 Set account balanceaddress,balance) =>void
Parameters
address
AddressType
balance
bigint
Returns
void
setCode()
setCode: (Defined in: src/evm/Host/HostType.ts:51 Set account codeaddress,code) =>void
Parameters
address
AddressType
code
Uint8Array
Returns
void
setNonce()
setNonce: (Defined in: src/evm/Host/HostType.ts:71 Set account nonceaddress,nonce) =>void
Parameters
address
AddressType
nonce
bigint
Returns
void
setStorage()
setStorage: (Defined in: src/evm/Host/HostType.ts:61 Set storage slot valueaddress,slot,value) =>void
Parameters
address
AddressType
slot
bigint
value
bigint
Returns
void
setTransientStorage()
setTransientStorage: (Defined in: src/evm/Host/HostType.ts:83 Set transient storage slot value (EIP-1153) Transaction-scoped, cleared at end of transactionaddress,slot,value) =>void
Parameters
address
AddressType
slot
bigint
value
bigint
Returns
void
CallParams
CallParams = object
Defined in: src/evm/InstructionHandlerType.ts:60
CallParams - Parameters for EVM call operations
Used by CALL, STATICCALL, DELEGATECALL, CALLCODE opcodes.
Example
Properties
caller
caller: AddressType
Defined in: src/evm/InstructionHandlerType.ts:77
Caller address
callType
callType: CallType
Defined in: src/evm/InstructionHandlerType.ts:62
Type of call operation
depth
depth: number
Defined in: src/evm/InstructionHandlerType.ts:83
Call depth
gasLimit
gasLimit: bigint
Defined in: src/evm/InstructionHandlerType.ts:71
Gas limit for call
input
input: Uint8Array
Defined in: src/evm/InstructionHandlerType.ts:74
Input data (calldata)
isStatic
isStatic: boolean
Defined in: src/evm/InstructionHandlerType.ts:80
Static call flag (write protection)
target
target: AddressType
Defined in: src/evm/InstructionHandlerType.ts:65
Target contract address
value
value: bigint
Defined in: src/evm/InstructionHandlerType.ts:68
Value to transfer (wei)
CallResult
CallResult = object
Defined in: src/evm/InstructionHandlerType.ts:112
CallResult - Result of EVM call operation
Returned by call operations (CALL, STATICCALL, DELEGATECALL, etc.)
Example
Properties
gasRefund
gasRefund: bigint
Defined in: src/evm/InstructionHandlerType.ts:130
Gas refund from storage deletions
gasUsed
gasUsed: bigint
Defined in: src/evm/InstructionHandlerType.ts:117
Gas consumed by call
logs
logs: object[]
Defined in: src/evm/InstructionHandlerType.ts:123
Logs emitted during call
address
address: AddressType
data
data: Uint8Array
topics
topics: bigint[]
output
output: Uint8Array
Defined in: src/evm/InstructionHandlerType.ts:120
Return data or revert reason
success
success: boolean
Defined in: src/evm/InstructionHandlerType.ts:114
Whether call succeeded (false if reverted)
CallType
CallType =Defined in: src/evm/InstructionHandlerType.ts:36 CallType - EVM call operation types Determines context preservation for cross-contract calls."CALL"|"STATICCALL"|"DELEGATECALL"|"CALLCODE"
CreateParams
CreateParams = object
Defined in: src/evm/InstructionHandlerType.ts:150
CreateParams - Parameters for contract creation
Used by CREATE and CREATE2 opcodes.
Example
Properties
caller
caller: AddressType
Defined in: src/evm/InstructionHandlerType.ts:152
Deployer address
depth
depth: number
Defined in: src/evm/InstructionHandlerType.ts:167
Call depth
gasLimit
gasLimit: bigint
Defined in: src/evm/InstructionHandlerType.ts:161
Gas limit for deployment
initCode
initCode: Uint8Array
Defined in: src/evm/InstructionHandlerType.ts:158
Initialization code
salt?
Defined in: src/evm/InstructionHandlerType.ts:164 Salt for CREATE2 (optional)optionalsalt:bigint
value
value: bigint
Defined in: src/evm/InstructionHandlerType.ts:155
Value to transfer (wei)
CreateResult
CreateResult = object
Defined in: src/evm/InstructionHandlerType.ts:194
CreateResult - Result of contract creation
Returned by CREATE and CREATE2 operations.
Example
Properties
address
address:Defined in: src/evm/InstructionHandlerType.ts:199 Address of deployed contract (null if failed)AddressType|null
gasRefund
gasRefund: bigint
Defined in: src/evm/InstructionHandlerType.ts:208
Gas refund
gasUsed
gasUsed: bigint
Defined in: src/evm/InstructionHandlerType.ts:202
Gas consumed by deployment
output
output: Uint8Array
Defined in: src/evm/InstructionHandlerType.ts:205
Runtime code or revert reason
success
success: boolean
Defined in: src/evm/InstructionHandlerType.ts:196
Whether deployment succeeded
EvmError
EvmError = {Defined in: src/evm/Frame/FrameType.ts:92 EvmError - Frame execution errorstype:"StackOverflow"; } | {type:"StackUnderflow"; } | {type:"OutOfGas"; } | {type:"OutOfBounds"; } | {type:"InvalidJump"; } | {type:"InvalidOpcode"; } | {type:"RevertExecuted"; } | {type:"CallDepthExceeded"; } | {type:"WriteProtection"; } | {type:"InsufficientBalance"; } | {message:string;type:"NotImplemented"; }
InstructionHandler()
InstructionHandler = (Defined in: src/evm/InstructionHandlerType.ts:26 InstructionHandler - Function signature for EVM opcode handlers Each opcode is implemented as a function that mutates the frame state and returns success or an error. Based on guillotine-mini instruction handler pattern.frame,host) =>EvmError| {type:"Success"; }
Parameters
frame
BrandedFrame
host
BrandedHost
Returns
EvmError | { type: "Success"; }
Example
Functions
Frame()
Frame(Defined in: src/evm/Frame/index.ts:59 Create a new EVM execution frameparams):BrandedFrame
Parameters
params
FrameParams = {}
Frame initialization parameters
Returns
BrandedFrame
New Frame instance
Example
Host()
Host(Defined in: src/evm/Host/index.ts:65 Create a Host interface implementationimpl):BrandedHost
Parameters
impl
HostImpl
Host implementation with state access methods
Returns
BrandedHost
Host instance

