Axis Protocol Weekly Update (Apr 7–18)
4 repos, biggest dev week yet. Full breakdown
---
ON-CHAIN CONTRACTS:
Jupiter CPI Security Hardening (SolanaAMM)
Jupiter CPI Integration G3M now rebalances via real Jupiter routing
This was the critical missing piece. G3M can now execute live Jupiter swaps as part of its rebalance instruction.
- Full Jupiter CPI rebalance implemented in axis-g3m
- Mainnet-fork E2E test added using solana-test-validator --clone
tests real Jupiter V6 routing against cloned mainnet state
- Jupiter V6 program ID validation added to rebalance instruction
- CI workflow built: litesvm-jupiter-cpi.yml runs on every PR
LiteSVM A/B Test Infrastructure
- Full A/B comparison test suite built in Rust (ab-integration-tests)
- PFDA-3 vs G3M compared side-by-side under identical conditions via LiteSVM
- Multi-scenario reporting: CU usage, slippage, fill quality, token output
- Reports auto-generated and published to GitHub Job Summary on every PR
- Replaces the old devnet-based A/B workflow faster, deterministic, no airdrop dependencies
14 Security Fixes & New Instructions
PFDA-3 / PFDA-AMM:
- SetPaused: pause/unpause mechanism with authority control added
- CloseBatchHistory: instruction to close and reclaim rent from old batch history accounts
- CloseExpiredTicket: instruction to close expired user order tickets
- BidExcessive cap enforced in ClearBatch
- Switchboard discriminator validation added to oracle[.]rs
- Oracle feed account ownership validated before price read
- UpdateWeight authority check added
- Weight interpolation promoted to u128 to prevent overflow
G3M:
- Rebalance authority validation hardened
- G3M invariant tolerance made configurable (no longer hardcoded)
- Jupiter V6 program ID validated on every rebalance CPI call
axis-vault:
- Duplicate mint rejection added to CreateEtf
- Withdraw total_supply underflow check hardened
- Deposit/Withdraw account validation hardened (MintMismatch, VaultMismatch)
All fixes covered by new E2E tests.
CI green across all workflows.
---
FRONTEND: Trading Chart SwipeCard (Axis_Mainnet)
- TradingChart.tsx built from scratch (353 lines)
live price chart component for strategy detail views
- SwipeCard completely overhauled (342 lines)
richer data display, smoother interactions
- StrategyDetailView updated to consume new chart component
- InviteGate significantly expanded (615 lines)
backend invite validation API added
- New /invite route added to axis-api with full validation logic (115 lines)
- Providers.tsx and useWallet.ts cleaned up
removed 156 lines of dead code
---
DATABASE: recorded_at Fix (Axis_MVP)
- Root cause resolved: recorded_at column in token_prices was storing timestamps in non-ISO format
- Schema updated to customTimestamp format
- SQL conversion script written to backfill existing data to ISO format
- Chart API endpoints now unblocked
---
LANDING PAGE (AxisLP)
- WhyAxis section redesigned (172 lines)
sharper value proposition
- Hero headline updated
cleaner messaging
---
PARTNERSHIPS
@humidifi (Prop AMM / ~$1B daily volume on Solana)
Early conversations started with HumidiFi
one of Solana's largest DEXs running an active prop AMM.
The fit: Axis generates retail order flow through ETF baskets. HumidiFi is a natural liquidity layer to absorb that flow.
If this comes together, it means deeper liquidity and lower slippage from day one of mainnet launch. Still early but the direction is right.
MultiCoin Capital
Inbound follow from MultiCoin. Conversation started over DM.