qvm

package
v1.22.36 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2025 License: BSD-3-Clause Imports: 25 Imported by: 0

README

Q-chain Virtual Machine (QVM)

The Q-chain Virtual Machine (QVM) is a quantum-resistant blockchain virtual machine implementation for the Lux Network. It provides advanced cryptographic features including quantum signatures and parallel transaction processing.

Features

Quantum Resistance
  • Ringtail Key Support: Quantum-resistant key generation and management
  • Quantum Signatures: Post-quantum cryptographic signatures for transaction and block validation
  • Quantum Stamp Validation: Time-based quantum stamps for enhanced security
Performance Optimization
  • Parallel Transaction Processing: Process multiple transactions concurrently
  • Configurable Batch Sizes: Optimize throughput based on network conditions
  • Worker Pool Architecture: Efficient resource utilization with pooled workers
Configuration

The QVM can be configured through the config.Config structure:

type Config struct {
    TxFee                   uint64        // Base transaction fee
    CreateAssetTxFee        uint64        // Asset creation fee
    QuantumVerificationFee  uint64        // Fee for quantum signature verification
    MaxParallelTxs          int           // Maximum parallel transactions
    QuantumAlgorithmVersion uint32        // Quantum algorithm version
    RingtailKeySize         int           // Size of Ringtail keys in bytes
    QuantumStampEnabled     bool          // Enable quantum stamp validation
    QuantumStampWindow      time.Duration // Validity window for quantum stamps
    ParallelBatchSize       int           // Batch size for parallel processing
    QuantumSigCacheSize     int           // Cache size for quantum signatures
    RingtailEnabled         bool          // Enable Ringtail key support
    MinQuantumConfirmations uint32        // Minimum confirmations for quantum stamps
}

Architecture

Core Components
  1. VM (vm.go): Main virtual machine implementation
  2. Factory (factory.go): VM factory for creating QVM instances
  3. Config (config/config.go): Configuration management
  4. Quantum Signer (quantum/signer.go): Quantum signature implementation
Transaction Flow
  1. Transactions are submitted to the transaction pool
  2. Worker threads process transactions in parallel batches
  3. Quantum signatures are verified using the quantum signer
  4. Valid transactions are included in blocks
  5. Blocks are signed with quantum stamps
RPC API

The QVM exposes the following RPC endpoints:

  • qvm.getBlock: Retrieve a block by ID
  • qvm.generateRingtailKey: Generate a new Ringtail key pair
  • qvm.verifyQuantumSignature: Verify a quantum signature
  • qvm.getPendingTransactions: Get pending transactions
  • qvm.getHealth: Get VM health status
  • qvm.getConfig: Get current configuration

Security Features

Quantum Signatures

The QVM implements quantum-resistant signatures using:

  • SHA-512 based hashing with quantum noise
  • XOR-based signature generation with private keys
  • Time-windowed validation to prevent replay attacks
Ringtail Keys

Ringtail keys provide:

  • Large key sizes (default 1024 bytes)
  • Version tracking for algorithm upgrades
  • Nonce-based randomization
Parallel Processing Safety
  • Thread-safe transaction pool with mutex protection
  • Isolated worker threads for transaction processing
  • Atomic operations for state updates

Usage

Creating a QVM Instance
factory := &qvm.Factory{
    Config: config.DefaultConfig(),
}

vm, err := factory.New(logger)
if err != nil {
    return err
}
Initializing the VM
err := vm.Initialize(
    ctx,
    chainCtx,
    db,
    genesisBytes,
    upgradeBytes,
    configBytes,
    toEngine,
    fxs,
    appSender,
)
Building Blocks
block, err := vm.BuildBlock(ctx)
if err != nil {
    return err
}

Testing

The QVM includes comprehensive error handling and logging for production use:

  • Error recovery for parallel processing failures
  • Detailed logging at all levels (Info, Debug, Error)
  • Health check monitoring
  • Metrics collection

Future Enhancements

Planned improvements include:

  • Additional quantum-resistant algorithms (SPHINCS+, Dilithium, Falcon)
  • Enhanced parallel processing with GPU acceleration
  • Cross-chain quantum signature verification
  • Advanced caching strategies for improved performance

License

Copyright (C) 2019-2025, Lux Industries Inc All rights reserved. See the file LICENSE for licensing terms.

Documentation

Index

Constants

View Source
const (
	// Version of the QVM
	Version = "1.0.0"

	// MaxParallelVerifications is the maximum number of parallel verifications
	MaxParallelVerifications = 100

	// DefaultBatchSize is the default batch size for parallel processing
	DefaultBatchSize = 10
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BCLookup added in v1.16.56

type BCLookup interface {
	Lookup(string) (ids.ID, error)
	PrimaryAlias(ids.ID) (string, error)
}

BCLookup provides blockchain alias lookup

type BaseTransaction added in v1.16.56

type BaseTransaction struct {
	// contains filtered or unexported fields
}

BaseTransaction provides common transaction functionality

func (*BaseTransaction) Bytes added in v1.16.56

func (tx *BaseTransaction) Bytes() []byte

Bytes returns the transaction bytes

func (*BaseTransaction) Execute added in v1.16.56

func (tx *BaseTransaction) Execute() error

Execute executes the transaction

func (*BaseTransaction) GetQuantumSignature added in v1.16.56

func (tx *BaseTransaction) GetQuantumSignature() *quantum.QuantumSignature

GetQuantumSignature returns the quantum signature

func (*BaseTransaction) ID added in v1.16.56

func (tx *BaseTransaction) ID() ids.ID

ID returns the transaction ID

func (*BaseTransaction) Timestamp added in v1.16.56

func (tx *BaseTransaction) Timestamp() time.Time

Timestamp returns the transaction timestamp

func (*BaseTransaction) Verify added in v1.16.56

func (tx *BaseTransaction) Verify() error

Verify verifies the transaction

type Block added in v1.16.56

type Block struct {
	// contains filtered or unexported fields
}

Block represents a QVM block with quantum features

func (*Block) Accept added in v1.16.56

func (b *Block) Accept(context.Context) error

Accept marks the block as accepted

func (*Block) Bytes added in v1.16.56

func (b *Block) Bytes() []byte

Bytes returns the block bytes

func (*Block) Height added in v1.16.56

func (b *Block) Height() uint64

Height returns the block height

func (*Block) ID added in v1.16.56

func (b *Block) ID() ids.ID

ID returns the block ID

func (*Block) Parent added in v1.16.56

func (b *Block) Parent() ids.ID

Parent returns the parent block ID

func (*Block) ParentID added in v1.16.56

func (b *Block) ParentID() ids.ID

ParentID returns the parent block ID (implements consensus Block interface)

func (*Block) Reject added in v1.16.56

func (b *Block) Reject(context.Context) error

Reject marks the block as rejected

func (*Block) String added in v1.16.56

func (b *Block) String() string

String returns a string representation of the block

func (*Block) Time added in v1.16.56

func (b *Block) Time() time.Time

Time returns the block timestamp as time.Time

func (*Block) Timestamp added in v1.16.56

func (b *Block) Timestamp() int64

Timestamp returns the block timestamp as Unix time (implements consensus Block interface)

func (*Block) Verify added in v1.16.56

func (b *Block) Verify(ctx context.Context) error

Verify verifies the block validity

type Factory

type Factory struct {
	config.Config
}

Factory implements vms.Factory interface for creating QVM instances

func (*Factory) New

func (f *Factory) New(logger log.Logger) (interface{}, error)

New creates a new QVM instance

type GenerateRingtailKeyArgs added in v1.16.56

type GenerateRingtailKeyArgs struct{}

GenerateRingtailKeyArgs are the arguments for GenerateRingtailKey

type GenerateRingtailKeyReply added in v1.16.56

type GenerateRingtailKeyReply struct {
	PublicKey string `json:"publicKey"`
	Version   uint32 `json:"version"`
	KeySize   int    `json:"keySize"`
}

GenerateRingtailKeyReply is the reply for GenerateRingtailKey

type GetBlockArgs added in v1.16.56

type GetBlockArgs struct {
	BlockID string `json:"blockID"`
}

GetBlockArgs are the arguments for GetBlock

type GetBlockReply added in v1.16.56

type GetBlockReply struct {
	Block      json.RawMessage `json:"block"`
	Height     uint64          `json:"height"`
	Timestamp  int64           `json:"timestamp"`
	TxCount    int             `json:"txCount"`
	QuantumSig bool            `json:"quantumSig"`
}

GetBlockReply is the reply for GetBlock

type GetConfigArgs added in v1.16.56

type GetConfigArgs struct{}

GetConfigArgs are the arguments for GetConfig

type GetConfigReply added in v1.16.56

type GetConfigReply struct {
	TxFee                   uint64 `json:"txFee"`
	CreateAssetTxFee        uint64 `json:"createAssetTxFee"`
	QuantumVerificationFee  uint64 `json:"quantumVerificationFee"`
	MaxParallelTxs          int    `json:"maxParallelTxs"`
	QuantumAlgorithmVersion uint32 `json:"quantumAlgorithmVersion"`
	RingtailKeySize         int    `json:"ringtailKeySize"`
	QuantumStampEnabled     bool   `json:"quantumStampEnabled"`
	RingtailEnabled         bool   `json:"ringtailEnabled"`
	ParallelBatchSize       int    `json:"parallelBatchSize"`
}

GetConfigReply is the reply for GetConfig

type GetHealthArgs added in v1.16.56

type GetHealthArgs struct{}

GetHealthArgs are the arguments for GetHealth

type GetHealthReply added in v1.16.56

type GetHealthReply struct {
	Healthy         bool   `json:"healthy"`
	Version         string `json:"version"`
	QuantumEnabled  bool   `json:"quantumEnabled"`
	RingtailEnabled bool   `json:"ringtailEnabled"`
	PendingTxCount  int    `json:"pendingTxCount"`
	ParallelWorkers int    `json:"parallelWorkers"`
}

GetHealthReply is the reply for GetHealth

type GetPendingTransactionsArgs added in v1.16.56

type GetPendingTransactionsArgs struct {
	Limit int `json:"limit"`
}

GetPendingTransactionsArgs are the arguments for GetPendingTransactions

type GetPendingTransactionsReply added in v1.16.56

type GetPendingTransactionsReply struct {
	Transactions []json.RawMessage `json:"transactions"`
	Count        int               `json:"count"`
}

GetPendingTransactionsReply is the reply for GetPendingTransactions

type Service added in v1.16.56

type Service struct {
	// contains filtered or unexported fields
}

Service provides QVM RPC service

func (*Service) GenerateRingtailKey added in v1.16.56

func (s *Service) GenerateRingtailKey(r *http.Request, args *GenerateRingtailKeyArgs, reply *GenerateRingtailKeyReply) error

GenerateRingtailKey generates a new Ringtail key pair

func (*Service) GetBlock added in v1.16.56

func (s *Service) GetBlock(r *http.Request, args *GetBlockArgs, reply *GetBlockReply) error

GetBlock returns a block by ID

func (*Service) GetConfig added in v1.16.56

func (s *Service) GetConfig(r *http.Request, args *GetConfigArgs, reply *GetConfigReply) error

GetConfig returns the QVM configuration

func (*Service) GetHealth added in v1.16.56

func (s *Service) GetHealth(r *http.Request, args *GetHealthArgs, reply *GetHealthReply) error

GetHealth returns the health status of the QVM

func (*Service) GetPendingTransactions added in v1.16.56

func (s *Service) GetPendingTransactions(r *http.Request, args *GetPendingTransactionsArgs, reply *GetPendingTransactionsReply) error

GetPendingTransactions returns pending transactions

func (*Service) SignWithQuantum added in v1.16.56

func (s *Service) SignWithQuantum(r *http.Request, args *SignWithQuantumArgs, reply *SignWithQuantumReply) error

SignWithQuantum signs a message with quantum signature

func (*Service) VerifyQuantumSignature added in v1.16.56

func (s *Service) VerifyQuantumSignature(r *http.Request, args *VerifyQuantumSignatureArgs, reply *VerifyQuantumSignatureReply) error

VerifyQuantumSignature verifies a quantum signature

type SharedMemory added in v1.16.56

type SharedMemory interface {
	Get(peerChainID ids.ID, keys [][]byte) ([][]byte, error)
	Apply(map[ids.ID]interface{}, ...interface{}) error
}

SharedMemory provides cross-chain shared memory

type SignWithQuantumArgs added in v1.16.56

type SignWithQuantumArgs struct {
	Message    string `json:"message"`
	PrivateKey string `json:"privateKey"`
}

SignWithQuantumArgs are the arguments for SignWithQuantum

type SignWithQuantumReply added in v1.16.56

type SignWithQuantumReply struct {
	Signature string `json:"signature"`
	Algorithm uint32 `json:"algorithm"`
	Timestamp int64  `json:"timestamp"`
}

SignWithQuantumReply is the reply for SignWithQuantum

type Transaction added in v1.16.56

type Transaction interface {
	ID() ids.ID
	Bytes() []byte
	Verify() error
	Execute() error
	GetQuantumSignature() *quantum.QuantumSignature
	Timestamp() time.Time
}

Transaction represents a QVM transaction

type TransactionPool added in v1.16.56

type TransactionPool struct {
	// contains filtered or unexported fields
}

TransactionPool manages pending transactions

func NewTransactionPool added in v1.16.56

func NewTransactionPool(maxSize, batchSize int, logger log.Logger) *TransactionPool

NewTransactionPool creates a new transaction pool

func (*TransactionPool) AddTransaction added in v1.16.56

func (p *TransactionPool) AddTransaction(tx Transaction) error

AddTransaction adds a transaction to the pool

func (*TransactionPool) Close added in v1.16.56

func (p *TransactionPool) Close()

Close closes the transaction pool

func (*TransactionPool) GetPendingTransactions added in v1.16.56

func (p *TransactionPool) GetPendingTransactions(limit int) []Transaction

GetPendingTransactions returns pending transactions up to the limit

func (*TransactionPool) PendingCount added in v1.16.56

func (p *TransactionPool) PendingCount() int

PendingCount returns the number of pending transactions

func (*TransactionPool) RemoveTransaction added in v1.16.56

func (p *TransactionPool) RemoveTransaction(txID ids.ID) error

RemoveTransaction removes a transaction from the pool

type TransactionWorker added in v1.16.56

type TransactionWorker struct {
	// contains filtered or unexported fields
}

TransactionWorker processes transactions in parallel

func (*TransactionWorker) ProcessBatch added in v1.16.56

func (w *TransactionWorker) ProcessBatch(txs []Transaction) ([]Transaction, error)

ProcessBatch processes a batch of transactions

type VM

type VM struct {
	config.Config

	ChainAlias string
	NetworkID  uint32
	// contains filtered or unexported fields
}

VM implements the Q-chain Virtual Machine with quantum features

func (*VM) BuildBlock

func (vm *VM) BuildBlock(ctx context.Context) (consensuscore.Block, error)

BuildBlock builds a new block with pending transactions

func (*VM) Connected added in v1.16.56

func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error

Connected notifies the VM that a validator has connected

func (*VM) CreateHandlers

func (vm *VM) CreateHandlers(ctx context.Context) (map[string]http.Handler, error)

CreateHandlers returns HTTP handlers for the VM

func (*VM) CreateStaticHandlers

func (vm *VM) CreateStaticHandlers(ctx context.Context) (map[string]http.Handler, error)

CreateStaticHandlers returns static HTTP handlers

func (*VM) Disconnected added in v1.16.56

func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error

Disconnected notifies the VM that a validator has disconnected

func (*VM) GetBlock

func (vm *VM) GetBlock(ctx context.Context, blockID ids.ID) (consensuscore.Block, error)

GetBlock retrieves a block by its ID

func (*VM) GetEngine added in v1.16.56

func (vm *VM) GetEngine() consensusdag.Engine

GetEngine returns the DAG consensus engine

func (*VM) GetHybridBridge added in v1.16.56

func (vm *VM) GetHybridBridge() interface{}

GetHybridBridge returns the hybrid finality bridge for P/Q chain consensus This connects P-Chain BLS signatures with Q-Chain Ringtail for quantum finality

func (*VM) HealthCheck

func (vm *VM) HealthCheck(ctx context.Context) (interface{}, error)

HealthCheck returns the health status of the VM

func (*VM) Initialize

func (vm *VM) Initialize(
	ctx context.Context,

	chainCtx interface{},
	db database.Database,
	genesisBytes []byte,
	upgradeBytes []byte,
	configBytes []byte,
	toEngine chan<- consensuscore.Message,
	fxs []*consensuscore.Fx,
	appSender warp.Sender,
) error

Initialize initializes the VM with the given context

func (*VM) ParseBlock

func (vm *VM) ParseBlock(ctx context.Context, blockBytes []byte) (consensuscore.Block, error)

ParseBlock parses a block from bytes

func (*VM) SetHybridBridge added in v1.16.56

func (vm *VM) SetHybridBridge(bridge interface{})

SetHybridBridge sets the hybrid finality bridge (called by chain manager)

func (*VM) SetState

func (vm *VM) SetState(ctx context.Context, state consensusinterfaces.State) error

SetState sets the VM state

func (*VM) Shutdown

func (vm *VM) Shutdown(ctx context.Context) error

Shutdown gracefully shuts down the VM

func (*VM) StampBlock added in v1.16.56

func (vm *VM) StampBlock(blockID interface{}, pChainHeight uint64, message []byte) (interface{}, error)

StampBlock implements QChainStamper interface for hybrid finality

func (*VM) VerifyStamp added in v1.16.56

func (vm *VM) VerifyStamp(stamp interface{}) error

VerifyStamp implements QChainStamper interface for hybrid finality

func (*VM) Version

func (vm *VM) Version(ctx context.Context) (string, error)

Version returns the version of the VM

type VerifyQuantumSignatureArgs added in v1.16.56

type VerifyQuantumSignatureArgs struct {
	Message   string          `json:"message"`
	Signature json.RawMessage `json:"signature"`
}

VerifyQuantumSignatureArgs are the arguments for VerifyQuantumSignature

type VerifyQuantumSignatureReply added in v1.16.56

type VerifyQuantumSignatureReply struct {
	Valid     bool   `json:"valid"`
	Algorithm uint32 `json:"algorithm"`
}

VerifyQuantumSignatureReply is the reply for VerifyQuantumSignature

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL