Building MultiVM dApp

Details are provisional and may be updated during development.

Choosing the Optimal VM for Each Component

The key to maximizing performance on Arichain is understanding the strengths of each virtual machine and routing workloads accordingly.

Use EVM for:

  • Complex state management and data structures

  • Integration with existing DeFi protocols and libraries

  • Governance and compliance requirements

  • Rich smart contract interactions

  • Mature tooling and debugging capabilities

Use SVM for:

  • High-frequency operations (>1000 TPS requirements)

  • Real-time gaming and interactive applications

  • Simple but frequent transactions (payments, transfers)

  • Parallel processing requirements

  • Predictable cost structures

Performance Optimization Patterns

// Pattern 1: Route by Operation Type
class OptimizedTradingDApp {
    constructor() {
        this.evmProvider = new ethers.JsonRpcProvider(EVM_RPC);
        this.svmConnection = new Connection(SVM_RPC);
        this.arichain = new ArichainClient({ evmRpc: EVM_RPC, svmRpc: SVM_RPC });
    }
    
    async executeTrade(tradeParams) {
        // Route based on trade characteristics
        if (tradeParams.isHighFrequency && tradeParams.isSimple) {
            // Use SVM for high-frequency simple trades
            return this.executeOnSVM(tradeParams);
        } else if (tradeParams.requiresComplexLogic) {
            // Use EVM for complex DeFi integrations
            return this.executeOnEVM(tradeParams);
        } else {
            // Use unified approach for hybrid trades
            return this.executeHybridTrade(tradeParams);
        }
    }
    
    async executeHybridTrade(params) {
        // Step 1: Complex calculation on EVM
        const calculation = await this.evmContract.calculateOptimalRoute(params);
        
        // Step 2: High-speed execution on SVM
        const execution = await this.svmProgram.methods
            .executeCalculatedTrade(calculation)
            .rpc();
        
        // Step 3: Unified result tracking
        return this.arichain.trackTradeResult(calculation.id, execution);
    }
}

// Pattern 2: Batch Operations for Efficiency
class BatchOptimizedDApp {
    async processBatchOperations(operations) {
        // Group operations by VM for optimal batching
        const evmOps = operations.filter(op => op.complexity === 'high');
        const svmOps = operations.filter(op => op.frequency === 'high');
        
        // Execute batches in parallel
        const [evmResults, svmResults] = await Promise.all([
            this.executeBatchOnEVM(evmOps),
            this.executeBatchOnSVM(svmOps)
        ]);
        
        // Combine results with unified interface
        return this.arichain.combineResults(evmResults, svmResults);
    }
}

Gas Optimization Strategies

Real-World Examples

Example 1: Hybrid Gaming Platform

A gaming platform that maximizes performance by using SVM for real-time gameplay and EVM for complex economic systems.

Example 2: High-Performance DeFi with Real-Time Components

A DeFi protocol that uses EVM for complex financial logic and SVM for high-frequency trading operations.

App Examples

Starter Templates

We provide comprehensive starter templates that demonstrate best practices for MultiVM development.

Complete Example Applications

1. MultiVM DEX Template

  • EVM contracts for complex AMM logic

  • SVM programs for high-frequency order matching

  • Unified frontend with cross-VM asset management

2. GameFi Platform Template

  • SVM programs for real-time gameplay

  • EVM contracts for NFT marketplace and governance

  • Cross-VM asset transfers and unified wallet integration

3. Payment Processing Template

  • SVM programs for high-throughput payments

  • EVM contracts for complex settlement logic

  • Real-time transaction monitoring across both VMs

Last updated