Files
trading_bot_v3/test-drift-devnet.js
mindesbunister fb194f1b12 Implement working Drift leverage trading
Key Features:
-  Drift SDK v2.126.0-beta.14 integration with Helius RPC
-  User account initialization and balance reading
-  Leverage trading API with real trades executed
-  Support for SOL, BTC, ETH, APT, AVAX, BNB, MATIC, ARB, DOGE, OP
-  Transaction confirmed: gNmaWVqcE4qNK31ksoUsK6pcHqdDTaUtJXY52ZoXRF

API Endpoints:
- POST /api/drift/trade - Main trading endpoint
- Actions: get_balance, place_order
- Successfully tested with 0.01 SOL buy order at 2x leverage

Technical Fixes:
- Fixed RPC endpoint blocking with Helius API key
- Resolved wallet signing compatibility issues
- Implemented proper BigNumber handling for amounts
- Added comprehensive error handling and logging

Trading Bot Status: 🚀 FULLY OPERATIONAL with leverage trading!
2025-07-22 12:23:51 +02:00

67 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
// Test Drift SDK on devnet to avoid RPC restrictions
import { DriftClient, initialize, Wallet } from '@drift-labs/sdk'
import { Connection, Keypair } from '@solana/web3.js'
async function testDriftDevnet() {
try {
console.log('🧪 Testing Drift SDK on devnet...')
// Use devnet which is more permissive
const connection = new Connection('https://api.devnet.solana.com', 'confirmed')
// Create a random keypair for testing
const keypair = Keypair.generate()
const wallet = new Wallet(keypair)
console.log('🔐 Test wallet:', keypair.publicKey.toString())
// Initialize for devnet
const env = 'devnet'
const sdkConfig = initialize({ env })
console.log('📋 Drift Program ID:', sdkConfig.DRIFT_PROGRAM_ID.toString())
const driftClient = new DriftClient({
connection,
wallet,
programID: sdkConfig.DRIFT_PROGRAM_ID,
opts: {
commitment: 'confirmed',
},
})
console.log('✅ DriftClient created successfully')
// Try to get program account info (read-only operation)
const programInfo = await connection.getAccountInfo(sdkConfig.DRIFT_PROGRAM_ID)
console.log('📊 Program account info:', programInfo ? 'Found' : 'Not found')
// Try subscribing (this might fail without funds but should show what works)
try {
await driftClient.subscribe()
console.log('✅ Subscribed to Drift client')
// Try to get state
const state = await driftClient.getStateAccount()
console.log('📈 Drift state:', {
admin: state.admin.toString(),
numberOfAuthorities: state.numberOfAuthorities
})
await driftClient.unsubscribe()
} catch (subscribeError) {
console.log(' Subscribe failed (expected for unfunded account):', subscribeError.message)
}
console.log('✅ Basic Drift SDK functionality working on devnet')
} catch (error) {
console.error('❌ Drift devnet test failed:', error)
}
}
testDriftDevnet()