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.