Examples
Basic Programs
Simple Addition
// Add two numbers (5 + 3)
let program = vec![
OpCode::Push1 as u8, 5, // Push 5 onto stack
OpCode::Push1 as u8, 3, // Push 3 onto stack
OpCode::Add as u8, // Add them together
OpCode::Log as u8, // Log result
OpCode::Halt as u8 // Stop execution
];
This basic example demonstrates:
- → Stack manipulation
- → Arithmetic operations
- → Program termination
Token Operations
Token Transfer
// Transfer SPL tokens
let program = vec![
// Load accounts
OpCode::Push1 as u8, 1, // Token program
OpCode::Push1 as u8, 2, // Source account
OpCode::Push1 as u8, 3, // Destination account
OpCode::Push1 as u8, 4, // Authority
// Amount (50 tokens)
OpCode::Push8 as u8,
50, 0, 0, 0, 0, 0, 0, 0,
// Execute transfer
OpCode::SPLOp as u8,
SPLOperation::Transfer as u8,
OpCode::Halt as u8
];
This example shows:
- → SPL token integration
- → Account management
- → Multi-byte operations
Smart Contracts
On-Chain Vault
// Simple vault program
let program = vec![
// Initialize vault
OpCode::Push1 as u8, 0x01, // Vault account
OpCode::Push1 as u8, 0x00, // Load init flag
OpCode::Load as u8,
OpCode::JumpI as u8, // Skip if initialized
// Set initialization flag
OpCode::Push1 as u8, 0x01,
OpCode::Push1 as u8, 0x00,
OpCode::Store as u8,
// Handle deposit/withdraw
OpCode::Push1 as u8, 0x02, // Action type
OpCode::JumpI as u8, // Branch on action
OpCode::Halt as u8
];
This contract demonstrates:
- → State management
- → Control flow
- → Memory operations
Advanced Usage
Oracle Integration
// Price feed oracle
let program = vec![
// Get latest price
OpCode::Push1 as u8, 1, // Oracle account
OpCode::Load as u8, // Load price data
// Validate timestamp
OpCode::Push8 as u8, // Current time
0, 0, 0, 0, 0, 0, 0, 0, // (filled at runtime)
OpCode::Sub as u8,
// Check staleness
OpCode::Push8 as u8, // Max age
60, 0, 0, 0, 0, 0, 0, 0, // 60 seconds
OpCode::GT as u8,
OpCode::JumpI as u8, // Revert if stale
// Use price data
OpCode::MulDiv as u8, // Price calculations
OpCode::Halt as u8
];
This advanced example shows:
- → External data integration
- → Time-based validation
- → Complex calculations