Start simple. Monitor one pair. Then expand to one DEX. Then to every DEX on three chains.
swaps = [] for event in swap_filter.get_all_entries(): swaps.append( "block": event["blockNumber"], "sender": event["args"]["sender"], "amount0_in": event["args"]["amount0In"] / 1e18, "amount1_in": event["args"]["amount1In"] / 1e18, "amount0_out": event["args"]["amount0Out"] / 1e18, "amount1_out": event["args"]["amount1Out"] / 1e18, "to": event["args"]["to"] ) dex explorer script
A single swap transaction touches multiple smart contracts, emits several events, and alters the state of a liquidity pool. Manually tracing this on a block explorer like Etherscan is tedious. Start simple
The data is out there – go explore it. Have you built your own DEX explorer? Found a clever way to detect sandwich attacks or new pool creations? Share your approach in the comments below. Then to every DEX on three chains
pip install web3 requests python-dotenv Now, connect to Ethereum mainnet (or BSC, Polygon, etc.):
def get_recent_swaps(pair_address, from_block, to_block): contract = w3.eth.contract(address=pair_address, abi=DEX_ABI) # Create event filter swap_filter = contract.events.Swap.create_filter( from_block=from_block, to_block=to_block )