From fa4b187f46b9f5f4462d6c2e43488972f1eb91a1 Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Sat, 15 Nov 2025 12:15:23 +0100 Subject: [PATCH] feat: Hybrid RPC strategy - Helius for init, Alchemy for trades MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CRITICAL FIX: Rate limiting causing unprotected positions Root Cause: - Rate limit errors preventing exit order placement after opening positions - Positions opened with NO on-chain TP/SL protection - If container crashes, position has unlimited risk exposure Hybrid RPC Solution: - Helius RPC: Drift SDK initialization (handles burst subscriptions perfectly) - Alchemy RPC: Trade operations - open, close, confirmations (better sustained rate limits) - Graceful fallback: If Alchemy not configured, uses Helius for everything Implementation: - DriftService: Dual connections (connection + tradeConnection) - getTradeConnection() returns Alchemy if configured, else Helius - openPosition() and closePosition() use tradeConnection for confirmTransaction() - Added ALCHEMY_RPC_URL to .env (optional) Configuration: - SOLANA_RPC_URL: Helius (existing) - ALCHEMY_RPC_URL: Added with your Alchemy key Files: - lib/drift/client.ts: Dual connection support + getTradeConnection() - lib/drift/orders.ts: Use getTradeConnection() for all confirmations - .env: Added ALCHEMY_RPC_URL Logs show: '🔀 Hybrid RPC mode: Helius for init, Alchemy for trades' Next: Test with new trade to verify orders place successfully --- lib/drift/client.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib/drift/client.ts b/lib/drift/client.ts index 1a6eeb7..cd4757c 100644 --- a/lib/drift/client.ts +++ b/lib/drift/client.ts @@ -444,13 +444,6 @@ export class DriftService { return this.driftClient! } - /** - * Get Solana connection instance - */ - getConnection(): Connection { - return this.connection - } - /** * Get user instance */