Architecture
Overview
lessVM is a stack-based virtual machine designed specifically for the Solana blockchain. It features a simple instruction set with stack manipulation, arithmetic operations, memory access, control flow, and Solana-specific operations.
Core Components
Stack
#[repr(C, align(64))]
struct Stack {
    data: [Value; 32],
    top: usize,
}- → 32 entries deep
- → 64-bit values
- → LIFO (Last In, First Out)
- → Overflow protection
Memory
#[repr(C, align(64))]
struct Memory {
    data: [u8; 1024],
    size: usize,
}- → 1024 bytes linear memory
- → Bounds checking
- → Zero-initialized
- → Memory expansion tracking
Gas Metering
struct GasConfig {
    base_cost: u64,
    memory_cost: u64,
    solana_op_cost: u64,
    spl_op_cost: u64,
    cpi_cost: u64,
    gas_limit: u64,
}- → Operation-based costs
- → Memory expansion costs
- → CPI operation costs
- → Gas limit enforcement
Program Counter
struct VM {
    pc: usize,
    code: &[u8],
    // ...
}- → Instruction pointer
- → Sequential execution
- → Jump validation
- → Bounds checking
Security Features
Memory Safety
- → Stack overflow protection
- → Memory bounds checking
- → Zero-initialized memory
Account Safety
- → Account ownership verification
- → Write permission checks
- → Lamport balance checks
Execution Safety
- → Gas metering
- → Jump target validation
- → CPI depth tracking