Skip to main content
@tevm/voltaire
@tevm/voltaire / primitives/Bytecode

primitives/Bytecode

Interfaces

ABIEvent

Defined in: src/primitives/Bytecode/BytecodeType.ts:97 ABI event extracted from bytecode

Properties

hash
hash: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:99
type
type: "event"
Defined in: src/primitives/Bytecode/BytecodeType.ts:98

ABIFunction

Defined in: src/primitives/Bytecode/BytecodeType.ts:85 ABI function extracted from bytecode

Properties

inputs?
optional inputs: [{ name: ""; type: "bytes"; }]
Defined in: src/primitives/Bytecode/BytecodeType.ts:90
outputs?
optional outputs: [{ name: ""; type: "bytes"; }]
Defined in: src/primitives/Bytecode/BytecodeType.ts:91
payable
payable: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:89
selector
selector: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:87
stateMutability
stateMutability: "pure" | "view" | "nonpayable" | "payable"
Defined in: src/primitives/Bytecode/BytecodeType.ts:88
type
type: "function"
Defined in: src/primitives/Bytecode/BytecodeType.ts:86

BasicBlock

Defined in: src/primitives/Bytecode/BytecodeType.ts:134 Basic block metadata

Properties

endPc
endPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:140 Ending program counter (exclusive)
gasEstimate
gasEstimate: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:144 Total static gas cost
index
index: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:136 Block index (0-based)
instructionCount
instructionCount: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:142 Number of instructions in block
isReachable
isReachable: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:156 Whether block is reachable from entry
maxStack
maxStack: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:148 Maximum stack depth reached
minStack
minStack: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:146 Minimum stack items required to enter
predecessors
predecessors: number[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:160 Predecessor block indices
stackEffect
stackEffect: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:150 Net stack effect (exit - entry)
startPc
startPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:138 Starting program counter
successors
successors: number[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:158 Successor block indices
target?
optional target: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:154 Jump target PC (if terminator is JUMP/JUMPI)
terminator
terminator: TerminatorType
Defined in: src/primitives/Bytecode/BytecodeType.ts:152 Block terminator type

BlockAnalysisOptions

Defined in: src/primitives/Bytecode/BytecodeType.ts:166 Options for analyzeBlocks()

Properties

buildCFG?
optional buildCFG: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:170 Build control flow graph (predecessors/successors)
computeReachability?
optional computeReachability: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:168 Compute reachability from entry point
includeUnreachable?
optional includeUnreachable: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:172 Include unreachable blocks in results
validate?
optional validate: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:174 Validate bytecode structure

BlockGas

Defined in: src/primitives/Bytecode/BytecodeType.ts:210 Block gas information

Properties

blockIndex
blockIndex: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:211
endPc
endPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:213
gas
gas: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:214
percentage
percentage: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:215
startPc
startPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:212

BlockStackInfo

Defined in: src/primitives/Bytecode/BytecodeType.ts:286 Block stack information

Properties

blockIndex
blockIndex: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:287
endPc
endPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:289
exitDepth
exitDepth: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:292
maxReached
maxReached: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:291
minRequired
minRequired: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:290
stackEffect
stackEffect: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:293
startPc
startPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:288

ExecutionPath

Defined in: src/primitives/Bytecode/BytecodeType.ts:231 Execution path information

Properties

blocks
blocks: number[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:232
gas
gas: bigint
Defined in: src/primitives/Bytecode/BytecodeType.ts:233
instructions
instructions: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:234

ExpensiveInstruction

Defined in: src/primitives/Bytecode/BytecodeType.ts:221 Expensive instruction information

Properties

category
category: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:225
gas
gas: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:224
opcode
opcode: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:223
pc
pc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:222

GasAnalysis

Defined in: src/primitives/Bytecode/BytecodeType.ts:180 Gas analysis result

Properties

byBlock
byBlock: BlockGas[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:186 Gas breakdown by block
byInstruction
byInstruction: InstructionGas[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:184 Gas breakdown by instruction
expensive
expensive: ExpensiveInstruction[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:188 Expensive instructions (>1000 gas)
paths?
optional paths: object
Defined in: src/primitives/Bytecode/BytecodeType.ts:190 Path analysis (if enabled)
average
average: bigint
cheapest
cheapest: ExecutionPath
mostExpensive
mostExpensive: ExecutionPath
total
total: bigint
Defined in: src/primitives/Bytecode/BytecodeType.ts:182 Total static gas cost

GasAnalysisOptions

Defined in: src/primitives/Bytecode/BytecodeType.ts:240 Options for analyzeGas()

Properties

analyzePaths?
optional analyzePaths: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:242 Analyze different execution paths
context?
optional context: object
Defined in: src/primitives/Bytecode/BytecodeType.ts:248 Context for warm/cold gas calculations
warmAddresses?
optional warmAddresses: Set<string>
warmSlots?
optional warmSlots: Set<bigint>
includeDynamic?
optional includeDynamic: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:246 Include dynamic gas costs
maxPaths?
optional maxPaths: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:244 Maximum paths to explore

InstructionGas

Defined in: src/primitives/Bytecode/BytecodeType.ts:200 Instruction gas information

Properties

cumulative
cumulative: bigint
Defined in: src/primitives/Bytecode/BytecodeType.ts:204
gas
gas: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:203
opcode
opcode: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:202
pc
pc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:201

PrettyPrintOptions

Defined in: src/primitives/Bytecode/BytecodeType.ts:315 Options for prettyPrint()

Properties

colors?
optional colors: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:317 Enable ANSI color codes
compact?
optional compact: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:335 Compact mode (less whitespace)
lineNumbers?
optional lineNumbers: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:329 Show line numbers
maxWidth?
optional maxWidth: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:333 Maximum output width
showBlocks?
optional showBlocks: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:323 Show block boundaries
showFusions?
optional showFusions: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:327 Show fusion patterns
showGas?
optional showGas: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:319 Show gas costs
showJumpArrows?
optional showJumpArrows: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:325 Show jump arrows
showStack?
optional showStack: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:321 Show stack effects
showSummary?
optional showSummary: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:331 Show summary footer

ScanOptions

Defined in: src/primitives/Bytecode/BytecodeType.ts:105 Options for scan() iterator

Properties

detectFusions?
optional detectFusions: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:111 Detect and yield fusion patterns
endPc?
optional endPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:115 Stop iteration at specific PC
startPc?
optional startPc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:113 Start iteration at specific PC
withGas?
optional withGas: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:107 Include gas cost for each instruction
withStack?
optional withStack: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:109 Include stack effect metadata

StackAnalysis

Defined in: src/primitives/Bytecode/BytecodeType.ts:257 Stack analysis result

Properties

byBlock
byBlock: BlockStackInfo[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:265 Stack info by block
issues
issues: StackIssue[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:263 Stack issues found
maxDepth
maxDepth: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:261 Maximum stack depth reached
pathsAnalyzed
pathsAnalyzed: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:267 Number of paths analyzed
valid
valid: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:259 Whether stack constraints are satisfied

StackAnalysisOptions

Defined in: src/primitives/Bytecode/BytecodeType.ts:299 Options for analyzeStack()

Properties

analyzePaths?
optional analyzePaths: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:305 Analyze different execution paths
failFast?
optional failFast: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:309 Stop at first error
initialDepth?
optional initialDepth: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:301 Initial stack depth
maxDepth?
optional maxDepth: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:303 Maximum allowed stack depth
maxPaths?
optional maxPaths: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:307 Maximum paths to explore

StackIssue

Defined in: src/primitives/Bytecode/BytecodeType.ts:273 Stack issue information

Properties

actual
actual: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:278
blockIndex
blockIndex: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:276
expected
expected: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:277
message
message: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:279
opcode?
optional opcode: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:280
pc
pc: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:275
type
type: "underflow" | "overflow" | "unreachable" | "inconsistent"
Defined in: src/primitives/Bytecode/BytecodeType.ts:274

Type Aliases

ABIItem

ABIItem = ABIFunction | ABIEvent
Defined in: src/primitives/Bytecode/BytecodeType.ts:80 ABI item (function or event)

Analysis

Analysis = object
Defined in: src/primitives/Bytecode/BytecodeType.ts:42 Bytecode analysis result

Properties

instructions
readonly instructions: readonly Instruction[]
Defined in: src/primitives/Bytecode/BytecodeType.ts:46 All instructions
jumpDestinations
readonly jumpDestinations: ReadonlySet<number>
Defined in: src/primitives/Bytecode/BytecodeType.ts:44 Valid JUMPDEST positions
valid
readonly valid: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:48 Whether bytecode is valid

BrandedAbi

BrandedAbi = ReadonlyArray<ABIItem> & object
Defined in: src/primitives/Bytecode/BytecodeType.ts:75 Branded ABI type

Type Declaration

[brand]
readonly [brand]: "Abi"

BrandedBytecodeHex

BrandedBytecodeHex = string & object
Defined in: src/primitives/Bytecode/BytecodeType.ts:70 Branded hex string for bytecode

Type Declaration

[brand]
readonly [brand]: "BytecodeHex"

Instruction

Instruction = object
Defined in: src/primitives/Bytecode/BytecodeType.ts:30 Bytecode instruction

Properties

opcode
readonly opcode: Opcode
Defined in: src/primitives/Bytecode/BytecodeType.ts:32 Opcode value
position
readonly position: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:34 Position in bytecode
pushData?
readonly optional pushData: Uint8Array
Defined in: src/primitives/Bytecode/BytecodeType.ts:36 Push data if PUSH instruction

JumpDest

JumpDest = object
Defined in: src/primitives/Bytecode/BytecodeType.ts:20 Jump destination information

Properties

position
readonly position: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:22 Position in bytecode
valid
readonly valid: boolean
Defined in: src/primitives/Bytecode/BytecodeType.ts:24 Whether this is a valid jump destination

Opcode

Opcode = number
Defined in: src/primitives/Bytecode/BytecodeType.ts:15 EVM opcode (single byte instruction)

OpcodeMetadata

OpcodeMetadata = object
Defined in: src/primitives/Bytecode/BytecodeType.ts:54 Opcode metadata

Properties

gas
readonly gas: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:60 Gas cost (base)
inputs
readonly inputs: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:62 Stack items removed
name
readonly name: string
Defined in: src/primitives/Bytecode/BytecodeType.ts:58 Mnemonic name
opcode
readonly opcode: Opcode
Defined in: src/primitives/Bytecode/BytecodeType.ts:56 Opcode value
outputs
readonly outputs: number
Defined in: src/primitives/Bytecode/BytecodeType.ts:64 Stack items added

TerminatorType

TerminatorType = "stop" | "return" | "revert" | "invalid" | "selfdestruct" | "jump" | "jumpi" | "fallthrough"
Defined in: src/primitives/Bytecode/BytecodeType.ts:121 Block terminator type

Variables

analyze()

const analyze: (code) => Analysis = _analyze
Defined in: src/primitives/Bytecode/index.ts:56

Parameters

code
BrandedBytecode

Returns

Analysis

analyzeBlocks()

const analyzeBlocks: (bytecode, options?) => BasicBlock[] = _analyzeBlocks
Defined in: src/primitives/Bytecode/index.ts:57

Parameters

bytecode
BrandedBytecode
options?
BlockAnalysisOptions

Returns

BasicBlock[]

analyzeGas()

const analyzeGas: (bytecode, options?) => GasAnalysis = _analyzeGas
Defined in: src/primitives/Bytecode/index.ts:61

Parameters

bytecode
BrandedBytecode
options?
GasAnalysisOptions

Returns

GasAnalysis

analyzeJumpDestinations()

const analyzeJumpDestinations: (code) => ReadonlySet<number> = _analyzeJumpDestinations
Defined in: src/primitives/Bytecode/index.ts:65

Parameters

code
BrandedBytecode

Returns

ReadonlySet<number>

analyzeStack()

const analyzeStack: (bytecode, options?) => StackAnalysis = _analyzeStack
Defined in: src/primitives/Bytecode/index.ts:67

Parameters

bytecode
BrandedBytecode
options?
StackAnalysisOptions

Returns

StackAnalysis

BrandedBytecode

const BrandedBytecode: object
Defined in: src/primitives/Bytecode/index.ts:152

Type Declaration

_getNextPc()
_getNextPc: (bytecode, currentPc) => number | undefined
Get next program counter after executing instruction at currentPc
Parameters
bytecode
BrandedBytecode
currentPc
number Current program counter
Returns
number | undefined Next PC, or undefined if at/beyond end
Example
const bytecode = Bytecode("0x6001");  // PUSH1 0x01
getNextPc(bytecode, 0);  // 2 (PUSH1 = 1 byte opcode + 1 byte data)

const bytecode2 = Bytecode("0x01");   // ADD
getNextPc(bytecode2, 0); // undefined (would be at EOF)
analyze()
analyze: (code) => Analysis
Parameters
code
BrandedBytecode
Returns
Analysis
analyzeBlocks()
analyzeBlocks: (bytecode, options?) => BasicBlock[]
Parameters
bytecode
BrandedBytecode
options?
BlockAnalysisOptions
Returns
BasicBlock[]
analyzeGas()
analyzeGas: (bytecode, options?) => GasAnalysis
Parameters
bytecode
BrandedBytecode
options?
GasAnalysisOptions
Returns
GasAnalysis
analyzeJumpDestinations()
analyzeJumpDestinations: (code) => ReadonlySet<number>
Parameters
code
BrandedBytecode
Returns
ReadonlySet<number>
analyzeStack()
analyzeStack: (bytecode, options?) => StackAnalysis
Parameters
bytecode
BrandedBytecode
options?
StackAnalysisOptions
Returns
StackAnalysis
detectFusions()
detectFusions: (code) => unknown
Parameters
code
BrandedBytecode
Returns
unknown
equals()
equals: (a, b) => boolean
Parameters
a
BrandedBytecode
b
BrandedBytecode
Returns
boolean
extractRuntime()
extractRuntime: (code, offset) => BrandedBytecode
Parameters
code
BrandedBytecode
offset
number
Returns
BrandedBytecode
formatInstruction()
formatInstruction: (inst) => string
Parameters
inst
Instruction
Returns
string
formatInstructions()
formatInstructions: (code) => string[]
Parameters
code
BrandedBytecode
Returns
string[]
from()
from: (value) => BrandedBytecode
Parameters
value
string | Uint8Array<ArrayBufferLike>
Returns
BrandedBytecode
fromHex()
fromHex: (hex) => BrandedBytecode
Parameters
hex
string
Returns
BrandedBytecode
getBlock()
getBlock: (code, pc) => BasicBlock | undefined
Parameters
code
BrandedBytecode
pc
number
Returns
BasicBlock | undefined
getPushSize()
getPushSize: (opcode) => number
Parameters
opcode
number
Returns
number
hash()
hash: (code) => any
Parameters
code
BrandedBytecode
Returns
any
hasMetadata()
hasMetadata: (code) => boolean
Parameters
code
BrandedBytecode
Returns
boolean
isPush()
isPush: (opcode) => boolean
Parameters
opcode
number
Returns
boolean
isTerminator()
isTerminator: (opcode) => boolean
Parameters
opcode
number
Returns
boolean
isValidJumpDest()
isValidJumpDest: (code, offset) => boolean
Parameters
code
BrandedBytecode
offset
number
Returns
boolean
parseInstructions()
parseInstructions: (code) => Instruction[]
Parameters
code
BrandedBytecode
Returns
Instruction[]
prettyPrint()
prettyPrint: (bytecode, options?) => string
Parameters
bytecode
BrandedBytecode
options?
PrettyPrintOptions
Returns
string
scan()
scan: (bytecode, options?) => Generator<{ gas?: number; opcode: number; pc: number; size: number; stackEffect?: { pop: number; push: number; }; type: "push" | "regular"; value?: bigint; }>
Parameters
bytecode
BrandedBytecode
options?
ScanOptions
Returns
Generator<{ gas?: number; opcode: number; pc: number; size: number; stackEffect?: { pop: number; push: number; }; type: "push" | "regular"; value?: bigint; }>
size()
size: (code) => number
Parameters
code
BrandedBytecode
Returns
number
stripMetadata()
stripMetadata: (code) => BrandedBytecode
Parameters
code
BrandedBytecode
Returns
BrandedBytecode
toAbi()
toAbi: (bytecode) => BrandedAbi
Parameters
bytecode
BrandedBytecode
Returns
BrandedAbi
toHex()
toHex: (code, prefix?) => string
Parameters
code
BrandedBytecode
prefix?
boolean
Returns
string
validate()
validate: (code) => boolean
Parameters
code
BrandedBytecode
Returns
boolean

detectFusions()

const detectFusions: (code) => unknown = _detectFusions
Defined in: src/primitives/Bytecode/index.ts:71

Parameters

code
BrandedBytecode

Returns

unknown

equals()

const equals: (a, b) => boolean = _equals
Defined in: src/primitives/Bytecode/index.ts:72

Parameters

a
BrandedBytecode
b
BrandedBytecode

Returns

boolean

extractRuntime()

const extractRuntime: (code, offset) => BrandedBytecode = _extractRuntime
Defined in: src/primitives/Bytecode/index.ts:73

Parameters

code
BrandedBytecode
offset
number

Returns

BrandedBytecode

formatInstruction()

const formatInstruction: (inst) => string = _formatInstruction
Defined in: src/primitives/Bytecode/index.ts:77

Parameters

inst
Instruction

Returns

string

formatInstructions()

const formatInstructions: (code) => string[] = _formatInstructions
Defined in: src/primitives/Bytecode/index.ts:78

Parameters

code
BrandedBytecode

Returns

string[]

from()

const from: (value) => BrandedBytecode = _from
Defined in: src/primitives/Bytecode/index.ts:80

Parameters

value
string | Uint8Array

Returns

BrandedBytecode

fromHex()

const fromHex: (hex) => BrandedBytecode = _fromHex
Defined in: src/primitives/Bytecode/index.ts:81

Parameters

hex
string

Returns

BrandedBytecode

getBlock()

const getBlock: (code, pc) => BasicBlock | undefined = _getBlock
Defined in: src/primitives/Bytecode/index.ts:82

Parameters

code
BrandedBytecode
pc
number

Returns

BasicBlock | undefined

getPushSize()

const getPushSize: (opcode) => number = _getPushSize
Defined in: src/primitives/Bytecode/index.ts:88

Parameters

opcode
number

Returns

number

hash()

const hash: (code) => any
Defined in: src/primitives/Bytecode/index.ts:53

Parameters

code
BrandedBytecode

Returns

any

hasMetadata()

const hasMetadata: (code) => boolean = _hasMetadata
Defined in: src/primitives/Bytecode/index.ts:89

Parameters

code
BrandedBytecode

Returns

boolean

isPush()

const isPush: (opcode) => boolean = _isPush
Defined in: src/primitives/Bytecode/index.ts:90

Parameters

opcode
number

Returns

boolean

isTerminator()

const isTerminator: (opcode) => boolean = _isTerminator
Defined in: src/primitives/Bytecode/index.ts:91

Parameters

opcode
number

Returns

boolean

isValidJumpDest()

const isValidJumpDest: (code, offset) => boolean = _isValidJumpDest
Defined in: src/primitives/Bytecode/index.ts:92

Parameters

code
BrandedBytecode
offset
number

Returns

boolean

parseInstructions()

const parseInstructions: (code) => Instruction[] = _parseInstructions
Defined in: src/primitives/Bytecode/index.ts:94

Parameters

code
BrandedBytecode

Returns

Instruction[]

prettyPrint()

const prettyPrint: (bytecode, options?) => string = _prettyPrint
Defined in: src/primitives/Bytecode/index.ts:96

Parameters

bytecode
BrandedBytecode
options?
PrettyPrintOptions

Returns

string

scan()

const scan: (bytecode, options?) => Generator<{ gas?: number; opcode: number; pc: number; size: number; stackEffect?: { pop: number; push: number; }; type: "push" | "regular"; value?: bigint; }> = _scan
Defined in: src/primitives/Bytecode/index.ts:100

Parameters

bytecode
BrandedBytecode
options?
ScanOptions

Returns

Generator<{ gas?: number; opcode: number; pc: number; size: number; stackEffect?: { pop: number; push: number; }; type: "push" | "regular"; value?: bigint; }>

size()

const size: (code) => number = _size
Defined in: src/primitives/Bytecode/index.ts:112

Parameters

code
BrandedBytecode

Returns

number

stripMetadata()

const stripMetadata: (code) => BrandedBytecode = _stripMetadata
Defined in: src/primitives/Bytecode/index.ts:113

Parameters

code
BrandedBytecode

Returns

BrandedBytecode

toAbi()

const toAbi: (bytecode) => BrandedAbi = _toAbi
Defined in: src/primitives/Bytecode/index.ts:116

Parameters

bytecode
BrandedBytecode

Returns

BrandedAbi

toHex()

const toHex: (code, prefix?) => string = _toHex
Defined in: src/primitives/Bytecode/index.ts:115

Parameters

code
BrandedBytecode
prefix?
boolean

Returns

string

validate()

const validate: (code) => boolean = _validate
Defined in: src/primitives/Bytecode/index.ts:117

Parameters

code
BrandedBytecode

Returns

boolean

Functions

_getNextPc()

_getNextPc(bytecode, currentPc): number | undefined
Defined in: src/primitives/Bytecode/getNextPc.js:20 Get next program counter after executing instruction at currentPc

Parameters

bytecode
BrandedBytecode
currentPc
number Current program counter

Returns

number | undefined Next PC, or undefined if at/beyond end

Example

const bytecode = Bytecode("0x6001");  // PUSH1 0x01
getNextPc(bytecode, 0);  // 2 (PUSH1 = 1 byte opcode + 1 byte data)

const bytecode2 = Bytecode("0x01");   // ADD
getNextPc(bytecode2, 0); // undefined (would be at EOF)

Bytecode()

Bytecode(value): BrandedBytecode
Defined in: src/primitives/Bytecode/index.ts:195 Create a Bytecode instance from various input types Primary constructor - use this for Class API:
import { Bytecode } from '@tevm/voltaire'
const code = Bytecode("0x6001")

Parameters

value
Bytecode input string | Uint8Array<ArrayBufferLike>

Returns

BrandedBytecode Bytecode instance

Hash()

Hash(deps): (code) => any
Defined in: src/primitives/Bytecode/hash.js:7 Factory: Compute bytecode hash (keccak256)

Parameters

deps
Crypto dependencies
keccak256
(data) => Uint8Array Keccak256 hash function

Returns

Function that computes bytecode hash
(code): any
Parameters
code
BrandedBytecode
Returns
any