3. MoveVM Execution Layer

3.1 Why MoveVM for Universal Payments?

MoveVM is perfect for payment systems because it treats digital assets as resources that cannot be accidentally lost, copied, or duplicated.

Traditional Smart Contracts:

  • Assets are just numbers in a database
  • Easy to create bugs that lose or duplicate money

MoveVM Resources:

  • Assets are physical objects in code
  • Cannot be copied or discarded without explicit actions
  • Compiler prevents common financial mistakes

This makes MoveVM ideal for stablecoins, loyalty points, gift cards, and any financial instrument where asset integrity is critical.

3.2 Gasless Transaction Model

End users never pay gas fees. Instead, the system uses a simple resource accounting model:

Resource Accounting Formula:

Total Steps = Σ(Operation Cost × Quantity)

Each transaction has a step limit (e.g., 10,000 steps). If a transaction exceeds this limit, it's rejected—but users aren't charged.

Operation Costs:

  • Simple transfer: 100 steps
  • Multi-currency swap: 500 steps
  • Complex payment logic: 1,000 steps
  • Publish new payment module: 5,000 steps

This prevents spam attacks while keeping transactions free for users across all payment scenarios.

3.3 Universal Payment Primitives

Kanari provides ready-to-use building blocks for all payment applications:

Core Modules:

  • Coins: Fungible tokens for stablecoins, loyalty points, currencies
  • NFTs: Unique assets like gift cards, certificates, tickets
  • Accounts: Secure wallets with multi-signature support
  • Clock: Time-based payments for subscriptions and escrow

Example: Cross-Border Payment

// Send USDC to international recipient
public entry fun send_international(
    sender_coin: &mut Coin<USDC>, 
    amount: u64,
    recipient: address,
    ctx: &mut TxContext
) {
    // Verify sufficient balance
    assert!(coin::value(sender_coin) >= amount, 1);
    
    // Split amount to send
    let payment = coin::split(sender_coin, amount, ctx);
    
    // Instant international transfer
    transfer::public_transfer(payment, recipient);
}

3.4 Performance for Real-Time Payments

Execution Speed Formula:

Total Time = Execution Time + Finality Time
  • Execution Time: ~10ms (transaction processing)
  • Finality Time: ~300ms (network confirmation)
  • Total: ~310ms for complete payment settlement

This speed enables real-time payments for e-commerce, remittances, and instant settlements.

3.5 Simple Development Workflow

Developers can build payment applications easily:

# Create new stablecoin
kanari move new my_stablecoin

# Test payment flows  
kanari move test ./my_stablecoin

# Deploy to network
kanari move publish ./my_stablecoin

The system handles all complexity—developers focus on payment logic for any industry.