icRamp Devlog 12 — Milestone Submission: Solana P2P Onramping (SOL + BONK)

icRamp Devlog 12 — Milestone Submission: Solana P2P Onramping (SOL + BONK)

9/20/20252 min • icramp
ICPSolanaSPLVaultsTesting

This post consolidates all evidence for the Solana Integration milestone: end-to-end demo (SOL + BONK), slides, deliverables checklist with proofs, tests, and canister URLs.

🎬 5-min Demo (YouTube)

Chapters

  • 00:00–01:53 · Slides (architecture & scope)
  • 01:53–02:57 · Offramper login (Solana) + existing SOL order + Profile/Balances
  • 02:57–03:34 · Create SPL order (BONK)
  • 03:34–04:16 · Onramper locks, pays on Solana, receives funds
  • 04:16–04:50 · Tests (README + token registry example)
  • 04:50–04:59 · Blog/devlogs wrap-up

🖼️ Slides (selected pictures)

Milestone Review Demo and Ressources Architecture

✅ Deliverables Checklist (with proofs)

  • Solana canister (key derivation, SOL/SPL tx, ATA, fees, tx lookup) — shown in demo + code refs
  • SOL/SPL support in order system — shown in BONK flow
  • Wallet connection (WalletConnect/Solflare/Metamask) — demo login
  • Unified vault logic (BTC/EVM/SOL) — slides + demo creation/locking/completion
  • Frontend updates (auth + orders) — Profile & Balances pages, Solana Orders
  • Full tests + docs — below + devlogs

🧪 Tests

Run:

cargo test -p solana_tests -- --nocapture

Highlight: Token registry tests (SPL decimals, symbol/rate_symbol checks).

See tests/solana_tests/src/registry_tests.rs and tests/README.md.

🌐 Canisters & How to Run

  • Frontend (mainnet) URL: sandbox.icramp.xyz
  • Backends: icramp_backend, solana_backend, bitcoin_backend (wired by the frontend)

Local quickstart (devnet):

dfx deploy sol_rpc
 
dfx canister call sol_rpc updateApiKeys "(vec {
  record { variant { AlchemyDevnet }; opt \"$SOL_ALCHEMY_KEY\" };
  record { variant { AnkrDevnet }; opt \"$SOL_ANKR_KEY\" };
})"
 
cargo build --release --target wasm32-unknown-unknown --package solana_backend
candid-extractor target/wasm32-unknown-unknown/release/solana_backend.wasm > backend/solana/solana_backend.did
 
dfx deploy solana_backend --argument "(
    variant { 
        Reinstall = record {
            sol_rpc_canister_id = opt principal \"tghme-zyaaa-aaaar-qarca-cai\";
            ed25519_key_name = variant { LocalDevelopment };
            network = variant { Devnet }; 
            proxy_url = \"https://icramp.info\";
        }
    }
)"
 
cargo build --release --target wasm32-unknown-unknown --package icramp_backend
candid-extractor target/wasm32-unknown-unknown/release/icramp_backend.wasm > backend/icramp/icramp_backend.did
 
# dfx_test_key, test_key_1
# api-m.paypal.com, api-m.sandbox.paypal.com
dfx deploy icramp_backend --argument "(
  variant { 
    Reinstall = record {
        canister_ids = record {
            bitcoin_backend_id = \"zhuzm-wqaaa-aaaap-qpk2q-cai\";
            solana_backend_id = \"u6s2n-gx777-77774-qaaba-cai\";
        };
        paypal = record {
            client_id = \"${PAYPAL_CLIENT_ID}\";
            client_secret = \"${PAYPAL_CLIENT_SECRET}\";
            api_url = \"api-m.sandbox.paypal.com\";
        };
        ...
    }
)"
 
dfx canister call solana_backend register_tokens '(vec {
  record { "FxoGGtuyjfVybdA3X5WgxzNhjvSN73R5zqPYg3on8hwE"; "KONG"; "KONG" };
  record { "HbA6BgBmA3X6X8jtts5X2ZiJXXxZQKDbQR4s5XCD82pr"; "BONK"; "BONK"};
})'
 
dfx generate icramp_backend
dfx generate bitcoin_backend
dfx generate solana_backend
 
cd frontend && npm run build && cd .. && dfx deploy frontend --mode reinstall --yes

⚠️ Risks & Mitigations

  • Devnet RPC volatility → retries & warm-up
  • HTTPS outcalls/cycles → caching & consolidated calls
  • ATA first-receive path → create-if-missing in same tx

📚 Devlogs

  • #2 Solana Canister, Registry & Vault
  • #3 icRamp ↔ Solana Integration
  • #4 Frontend Deployment Setup
  • #5 Frontend Solana Wallet Adapter
  • #6 Frontend Solana Orders
  • #7 Extra SPL Tokens
  • #8-#11 Test Saga

Stay Updated

Get notified when I publish new articles about Web3 development, hackathon experiences, and cryptography insights.

You might also like

icRamp Devlog #2 — Solana Canister, Registry & Vault

Second Chain Fusion grant: building a Solana canister with safe token registry and a thin vault to coordinate escrow.

icRamp Devlog #6 — icRamp Orders with Solana

Everything is ready for us to create orders in the frontend containing solana and executing the full offramping flow.

icRamp Devlog #4 — icRamp frontend Deployment Setup with Solana

Third Chain Fusion grant log: wiring icRamp's core backend with the Solana canister, persisting canister IDs, and preparing escrow flows for SOL/SPL assets.