import { Connection, PublicKey } from '@solana/web3.js'; async function testDriftAccount() { try { console.log('šŸ” Testing Drift account access...'); const connection = new Connection('https://api.mainnet-beta.solana.com', 'confirmed'); const accountPDA = '7LonnWut5i3h36xyMA5jbwnGFbnzXUPY2dsPfNaSsrTk'; console.log('šŸ“” Connecting to Solana...'); const accountInfo = await connection.getAccountInfo(new PublicKey(accountPDA)); if (!accountInfo) { console.log('āŒ Drift account not found'); return; } console.log('āœ… Drift account found!'); console.log(`šŸ“Š Account data size: ${accountInfo.data.length} bytes`); console.log(`šŸ’° Account lamports: ${accountInfo.lamports}`); console.log(`šŸ‘¤ Owner: ${accountInfo.owner.toBase58()}`); // Try to parse balance data from multiple known offsets const data = accountInfo.data; console.log(`\nšŸ” Scanning for USDC balance...`); // Try multiple offsets where USDC balance might be stored const offsets = [106, 114, 122, 130, 138, 146, 154]; for (const offset of offsets) { try { const balance = data.readBigInt64LE(offset); const value = Number(balance) / 1_000_000; // USDC has 6 decimals if (value > 0 && value < 1000000) { // Reasonable range console.log(` Offset ${offset}: $${value.toFixed(6)}`); } } catch (e) { // Skip invalid offsets } } console.log(`\nšŸ” Scanning for SOL position...`); // Try multiple offsets for SOL position const solOffsets = [432, 440, 448, 456, 464, 472]; for (const offset of solOffsets) { try { const position = data.readBigInt64LE(offset); const amount = Number(position) / 1_000_000_000; // SOL has 9 decimals if (Math.abs(amount) > 0.001 && Math.abs(amount) < 1000) { // Reasonable range console.log(` Offset ${offset}: ${amount.toFixed(6)} SOL`); } } catch (e) { // Skip invalid offsets } } // Find the best USDC balance (likely the $23 you mentioned) let bestUsdcValue = 0; let bestSolAmount = 0; for (const offset of offsets) { try { const balance = data.readBigInt64LE(offset); const value = Number(balance) / 1_000_000; // USDC has 6 decimals if (value > bestUsdcValue && value < 1000000) { // Take the highest reasonable value bestUsdcValue = value; } } catch (e) { // Skip invalid offsets } } for (const offset of solOffsets) { try { const position = data.readBigInt64LE(offset); const amount = Number(position) / 1_000_000_000; // SOL has 9 decimals if (Math.abs(amount) > Math.abs(bestSolAmount) && Math.abs(amount) < 1000) { bestSolAmount = amount; } } catch (e) { // Skip invalid offsets } } console.log(`\nšŸ’µ Best parsed balances:`); console.log(` USDC: $${bestUsdcValue.toFixed(6)}`); console.log(` SOL: ${bestSolAmount.toFixed(6)} SOL`); if (bestUsdcValue > 20) { console.log(`\nšŸŽ‰ Found your $${bestUsdcValue.toFixed(2)} USDC!`); } if (bestUsdcValue > 1 || Math.abs(bestSolAmount) > 0.01) { console.log('\nāœ… Sufficient funds for leveraged trading!'); console.log('šŸŽÆ Ready to implement real Drift perpetual trading'); console.log(`šŸ“Š With $${bestUsdcValue.toFixed(2)} you can open positions up to $${(bestUsdcValue * 10).toFixed(2)} with 10x leverage`); } else { console.log('\nāš ļø Limited funds detected'); } } catch (error) { console.error('āŒ Test failed:', error.message); } } testDriftAccount();