LPsLux Proposals
EVM & Execution
LP-3601

VM SDK Specification

Review

Defines the Virtual Machine SDK for Lux.

Category
Core
Created
2025-01-23

Abstract

This LP defines the Virtual Machine SDK for Lux (in the vmsdk repo), which allows developers to create new blockchain VMs that run on Lux chains.

Specification

(This LP will specify the interface a VM must implement (for example, methods for block validation, state management, and consensus hooks), enabling it to integrate with the consensus layer.)

Rationale

By providing an SDK spec, Lux invites innovation: teams could develop specialized chains (chains) for particular use cases, all while conforming to a common framework.

Motivation

A standardized VM SDK removes ambiguity for VM authors, accelerates development of specialized chains, and ensures consistent integration with Lux consensus and tooling.

Implementation

VM SDK Framework

Location: ~/work/lux/vmsdk/ GitHub: github.com/luxfi/vmsdk/tree/main

Core Modules:

  • chain/ - Chain state and block management (16 files)
    • State transitions, block validation, consensus integration
  • builder/ - Block and transaction builders (6 files)
  • codec/ - Serialization/deserialization (9 files)
    • Support for custom types and efficient encoding
  • examples/ - Sample VM implementations
  • config/ - Configuration management (3 files)
  • crypto/ - Cryptographic utilities (5 files)

VM Interface:

  • Block validation hooks
  • State machine interface
  • Consensus callbacks (block proposal, acceptance, rejection)
  • Custom transaction types support

Key Features:

  • Modular architecture for VM specialization
  • Built-in support for UTXO and account models
  • Async block processing
  • Configurable consensus parameters

Documentation:

cd ~/work/lux/vmsdk
# View API documentation
go doc ./... | head -100

Example VM:

  • Location: ~/work/lux/vmsdk/examples/
  • Demonstrates full VM lifecycle
  • Shows custom transaction handling

VM Registry

Location: ~/work/lux/node/vms/ GitHub: github.com/luxfi/node/tree/main/vms

Registered VMs:

  • platformvm/ - Platform VM (P-Chain)
  • avm/ - Asset VM (X-Chain, UTXO-based)
  • evm/ - EVM Compatible VM (C-Chain)
  • quantumvm/ - Quantum VM (Q-Chain)

VM Manager:

  • Dynamically loads and instantiates VMs
  • Manages VM lifecycle (start, stop, shutdown)
  • Routes messages to correct VM handler

Test Cases

Unit Tests

  1. Component Initialization

    • Verify correct initialization of all components
    • Test configuration validation
    • Validate error handling for invalid configurations
  2. Core Functionality

    • Test primary operations under normal conditions
    • Verify expected outputs for standard inputs
    • Test edge cases and boundary conditions
  3. Error Handling

    • Verify graceful handling of invalid inputs
    • Test recovery from transient failures
    • Validate error messages and codes

Integration Tests

  1. Cross-Component Integration

    • Test interaction between related components
    • Verify data flow across module boundaries
    • Validate state consistency
  2. Performance Tests

    • Benchmark critical operations
    • Verify performance under load
    • Test resource utilization limits

Copyright and related rights waived via CC0.

Backwards Compatibility

Additive and non‑breaking; existing consumers continue to work. Adoption is opt‑in.

Security Considerations

Apply appropriate validation, authentication, and resource‑limiting to prevent abuse; follow cryptographic best practices where applicable.