Binance Smart Chain (BSC) Bot Development: Low Gas, High Speed Trading
Binance Smart Chain offers EVM compatibility with 3-second block times and $0.10 transactions. Learn how to build arbitrage, sniper, and yield farming bots on BSC using PancakeSwap V3 and Venus Protocol.
Builder of AI agents, crypto trading bots, and open-source automation tools. Sharing practical guides on how to build, deploy, and profit from AI and DeFi technology.
Why BSC for Bot Development?
Binance Smart Chain (now BNB Chain) offers developers a compelling combination:
- EVM compatible: Your Ethereum bot code works with minimal changes
- 3-second finality: Fast enough for most trading strategies
- $0.10-0.30 per transaction: 10-50x cheaper than Ethereum mainnet
- Deep liquidity: PancakeSwap V3 has $1B+ TVL
For bots that require frequent transactions (grid trading, DCA, small-capital arbitrage), BSC economics make strategies profitable that would be unviable on Ethereum mainnet.
Setting Up BSC Development
from web3 import Web3
import json
# BSC Mainnet
BSC_RPC = "https://bsc-dataseed1.binance.org/"
w3 = Web3(Web3.HTTPProvider(BSC_RPC))
# Key BSC contract addresses
PANCAKESWAP_V3_ROUTER = '0x1b81D678ffb9C0263b24A97847620C99d213eB14'
PANCAKESWAP_V2_ROUTER = '0x10ED43C718714eb63d5aA57B78B54704E256024E'
VENUS_COMPTROLLER = '0xfD36E2c2a6789Db23113685031d7F16329158384'
WBNB = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'
USDT_BSC = '0x55d398326f99059fF775485246999027B3197955'
USDC_BSC = '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d'
print(f"Connected to BSC: {w3.is_connected()}")
print(f"Current block: {w3.eth.block_number}")
Arbitrage Between PancakeSwap V2 and V3
PANCAKE_V2_FACTORY = '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73'
PANCAKE_V3_QUOTER = '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997'
def get_v2_price(token_in: str, token_out: str, amount_in: int) -> int:
"""Get PancakeSwap V2 output amount"""
router = w3.eth.contract(address=PANCAKESWAP_V2_ROUTER, abi=PANCAKE_V2_ROUTER_ABI)
amounts = router.functions.getAmountsOut(
amount_in,
[token_in, token_out]
).call()
return amounts[1]
def get_v3_price(token_in: str, token_out: str, amount_in: int, fee: int = 500) -> int:
"""Get PancakeSwap V3 output amount"""
quoter = w3.eth.contract(address=PANCAKE_V3_QUOTER, abi=V3_QUOTER_ABI)
amount_out, _, _, _ = quoter.functions.quoteExactInputSingle((
token_in,
token_out,
amount_in,
fee, # 500 = 0.05%, 2500 = 0.25%, 10000 = 1%
0 # sqrtPriceLimitX96 (0 = no limit)
)).call()
return amount_out
def check_bsc_arbitrage(token_a: str, token_b: str, amount_bnb: float) -> dict:
"""Check arb opportunity between PCS V2 and V3"""
amount_in = w3.to_wei(amount_bnb, 'ether')
v2_out = get_v2_price(token_a, token_b, amount_in)
v3_out = get_v3_price(token_a, token_b, amount_in)
# Compare buy on V2, sell on V3
v2_to_v3_profit = v3_out - v2_out # If positive, buy V2 sell V3
v3_to_v2_profit = v2_out - v3_out # If positive, buy V3 sell V2
best_profit = max(v2_to_v3_profit, v3_to_v2_profit)
route = 'V2โV3' if v2_to_v3_profit > v3_to_v2_profit else 'V3โV2'
# Estimate gas cost ($0.30 for two swaps on BSC)
gas_cost_bnb = w3.to_wei(0.001, 'ether') # ~$0.30 at $300 BNB
if best_profit > gas_cost_bnb:
profit_pct = best_profit / amount_in * 100
return {
'profitable': True,
'route': route,
'profit_bnb': w3.from_wei(best_profit, 'ether'),
'profit_pct': profit_pct,
}
return {'profitable': False}
Venus Protocol: Automated Lending on BSC
Venus is the largest lending protocol on BSC (fork of Compound). It has XVS token rewards that can boost effective yields to 15-25% on BNB and USDT.
# Venus protocol addresses
VENUS_VBNB = '0xA07c5b74C9B40447a954e1466938b865b6BBea36'
VENUS_VUSDT = '0xfD5840Cd36d94D7229439859C0112a4185BC0255'
# Supply BNB to Venus for yield
def supply_bnb_to_venus(amount_bnb: float, private_key: str):
"""Supply BNB to Venus and receive vBNB tokens"""
account = w3.eth.account.from_key(private_key)
vbnb = w3.eth.contract(address=VENUS_VBNB, abi=VBNB_ABI)
amount_wei = w3.to_wei(amount_bnb, 'ether')
# Supply BNB (vBNB is payable)
tx = vbnb.functions.mint().build_transaction({
'from': account.address,
'value': amount_wei,
'gas': 300000,
'gasPrice': w3.to_wei('3', 'gwei'), # Low on BSC
'nonce': w3.eth.get_transaction_count(account.address),
})
signed = account.sign_transaction(tx)
tx_hash = w3.eth.send_raw_transaction(signed.rawTransaction)
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
print(f"โ
Supplied {amount_bnb} BNB to Venus")
print(f" Gas used: {receipt['gasUsed']} (~${receipt['gasUsed'] * 3e-9 * 300:.3f})")
return tx_hash
PancakeSwap New Token Sniper on BSC
BSC has more new token launches than any other chain. Many are scams โ filter hard:
PANCAKE_FACTORY_V2 = '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73'
PAIR_CREATED_TOPIC = w3.keccak(text='PairCreated(address,address,address,uint256)').hex()
def monitor_new_pancakeswap_pairs():
"""Monitor new PancakeSwap V2 pairs for snipe opportunities"""
latest = w3.eth.block_number
# Poll for new PairCreated events
logs = w3.eth.get_logs({
'address': PANCAKE_FACTORY_V2,
'topics': [PAIR_CREATED_TOPIC],
'fromBlock': latest - 3,
'toBlock': latest,
})
for log in logs:
# Decode the pair creation event
token0 = '0x' + log['topics'][1].hex()[-40:]
token1 = '0x' + log['topics'][2].hex()[-40:]
# Check which token is WBNB (the base)
if token0.lower() == WBNB.lower():
new_token = token1
elif token1.lower() == WBNB.lower():
new_token = token0
else:
continue # Skip non-BNB pairs
print(f"New BSC token: {new_token}")
evaluate_bsc_token(new_token)
def evaluate_bsc_token(token_address: str) -> bool:
"""Quick safety check for new BSC tokens"""
# Check if verified on BSCScan
is_verified = check_bscscan_verification(token_address)
# Check for honeypot (can we sell?)
can_sell = simulate_buy_and_sell(token_address)
# Check token supply distribution (rug risk)
top_holder_pct = get_top_holder_pct(token_address)
safe = is_verified and can_sell and top_holder_pct < 0.50
print(f"Token {token_address[:12]}...: {'SAFE' if safe else 'RISKY'}")
return safe
BSC vs Ethereum: When to Use Which
| Scenario | Best Chain | Reason | |----------|-----------|--------| | High-volume arbitrage | BSC | 10x lower gas costs | | Token sniping | BSC/Solana | More new launches, lower fees | | Flash loans (large) | Ethereum | Better liquidity on Uniswap V3 | | DeFi yield (stablecoins) | Ethereum | More trusted protocols | | Grid trading | BSC | Gas economics favor frequent trades | | NFT/Token launch speculation | BSC | More launches, lower barrier |
BSC's low fees make it the best chain for strategies that require frequent transactions. Just be extra vigilant about rug pulls โ BSC has significantly more scam projects than Ethereum, largely because the lower barrier to launching tokens attracts bad actors.
Always test with small amounts, use honeypot checkers, and never invest more than you can afford to lose on new BSC token launches.
Tagged in
Related Articles
Crypto Bot Risk Management: The 10 Rules That Separate Winners From Losers
7 min read
Crypto BotsHow to Build a Self-Healing Trading Bot That Fixes Its Own Errors
5 min read
Crypto BotsPump.fun and Solana Meme Coin Bots: How to Automate the Hottest Trend
5 min read
Crypto BotsHow to Build a Crypto Portfolio Auto-Rebalancing Bot
5 min read