const WebSocket = require('ws');
const { ethers } = require('ethers');
const API_KEY = 'YOUR_API_KEY';
const PRIVATE_KEY = 'YOUR_PRIVATE_KEY';
const RPC_URL = 'https://bsc-dataseed.binance.org';
const PANCAKE_ROUTER = '0x10ED43C718714eb63d5aA57B78B54704E256024E';
const WBNB = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c';
async function privateSwap(tokenAddress, amountBNB, minAmountOut) {
const provider = new ethers.JsonRpcProvider(RPC_URL);
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
// Router ABI
const routerABI = [
'function swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable'
];
const router = new ethers.Contract(PANCAKE_ROUTER, routerABI, wallet);
// Build swap calldata
const deadline = Math.floor(Date.now() / 1000) + 300;
const swapData = router.interface.encodeFunctionData('swapExactETHForTokens', [
minAmountOut,
[WBNB, tokenAddress],
wallet.address,
deadline
]);
// Get nonce
const nonce = await provider.getTransactionCount(wallet.address);
// Sign transaction
const signedTx = await wallet.signTransaction({
nonce: nonce,
to: PANCAKE_ROUTER,
value: ethers.parseEther(amountBNB),
data: swapData,
gasPrice: ethers.parseUnits('3', 'gwei'),
gasLimit: 300000,
chainId: 56
});
console.log('Swap details:');
console.log(' Amount:', amountBNB, 'BNB');
console.log(' Token:', tokenAddress);
console.log(' Min out:', ethers.formatEther(minAmountOut));
console.log(' Mode: Private (MEV Protected)');
// Submit privately
const ws = new WebSocket(`wss://bsc.getblock.io/mev/ws?api_key=${API_KEY}`);
return new Promise((resolve, reject) => {
ws.on('open', () => {
ws.send(JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'bsc_privateTx',
params: {
transaction: signedTx,
mev_builders: ['all']
}
}));
});
ws.on('message', (data) => {
const response = JSON.parse(data);
ws.close();
if (response.result) {
console.log('\n✅ Private swap submitted!');
console.log('TX Hash:', response.result.txHash);
console.log('BSCScan:', `https://bscscan.com/tx/${response.result.txHash}`);
resolve(response.result.txHash);
} else {
console.error('\n❌ Error:', response.error);
reject(response.error);
}
});
});
}
// Usage: Swap 1 BNB for BUSD (MEV protected)
privateSwap(
'0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD
'1.0', // 1 BNB
ethers.parseEther('200') // Min 200 BUSD
).catch(console.error);