FRB Agent – AI Multi‑Chain MEV & Front‑Running Trading

FRBis an AI‑powered, high‑speed trading agent that scans Ethereum, BNB Chain and Polygon mempools in real‑time, capturing maximum extractable value (MEV) opportunities and executing profitable trades in milliseconds.

Start Your Free 7‑Day Trial

Flashbots Tutorial: Complete Guide to Private MEV Bundles

Learn how to use Flashbots to submit private transaction bundles, bypass the public mempool, and execute MEV strategies with reduced front-running risk.

What is Flashbots?

Flashbots is a research and development organization working on mitigating the negative externalities of MEV extraction. They provide infrastructure that allows users to submit private transaction bundles directly to miners/validators, bypassing the public mempool.

This approach offers several advantages:

  • Reduced front-running risk
  • Lower gas costs through direct communication
  • Ability to execute complex multi-transaction strategies
  • Better privacy for trading strategies
  • Atomic execution (all transactions succeed or fail together)

Step-by-Step Guide

Step 1: Understand Flashbots

Flashbots is a research organization providing infrastructure for private transaction bundles. Bundles bypass the public mempool and are submitted directly to miners/validators, reducing front-running risk.

Learn more →

Step 2: Set Up Flashbots RPC

Connect to Flashbots RPC endpoint. For Ethereum mainnet, use https://rpc.flashbots.net or https://relay.flashbots.net. You can also use the Flashbots Protect RPC for automatic bundle submission.

Step 3: Construct Your Bundle

Create a bundle containing your MEV transactions. A bundle is an array of transactions that execute atomically - all succeed or all fail. Include target transactions and your profit-capturing transactions.

Step 4: Calculate Optimal Gas

Set appropriate gas prices for your bundle. Flashbots uses a first-price auction model. Higher gas prices increase inclusion probability but reduce profitability. Use historical data to optimize.

Step 5: Submit Bundle

Submit your bundle to Flashbots relay using their API. Include bundle metadata like target block number. Monitor submission status and inclusion probability.

Step 6: Monitor Execution

Track your bundle through the Flashbots dashboard or API. Verify successful inclusion in the target block. Analyze profitability and optimize future submissions.

Bundle Structure

A Flashbots bundle consists of:

  • Transactions: Array of transactions to execute atomically
  • Block Number: Target block for inclusion
  • Min Timestamp: Minimum block timestamp (optional)
  • Max Timestamp: Maximum block timestamp (optional)

Example Bundle

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_sendBundle",
  "params": [{
    "txs": [
      "0x02f8...", // Transaction 1
      "0x02f8..."  // Transaction 2
    ],
    "blockNumber": "0x1234567",
    "minTimestamp": null,
    "maxTimestamp": null
  }]
}

Gas Price Optimization

Flashbots uses a first-price auction model. Key considerations:

  • Higher gas prices increase inclusion probability
  • But reduce profitability due to higher costs
  • Monitor historical inclusion rates at different gas levels
  • Use tools like our Gas Calculator to optimize
  • Consider network congestion when setting prices

Code Examples

JavaScript/TypeScript Example

import { ethers } from 'ethers';

const flashbotsRpc = 'https://rpc.flashbots.net';
const provider = new ethers.JsonRpcProvider(flashbotsRpc);

async function submitBundle(txs: string[], targetBlock: number) {
  const bundle = {
    jsonrpc: '2.0',
    id: 1,
    method: 'eth_sendBundle',
    params: [{
      txs: txs,
      blockNumber: '0x' + targetBlock.toString(16),
    }],
  };
  
  const response = await fetch(flashbotsRpc, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(bundle),
  });
  
  return await response.json();
}

Python Example

import requests
import json

def submit_bundle(txs, target_block):
    url = 'https://rpc.flashbots.net'
    payload = {
        'jsonrpc': '2.0',
        'id': 1,
        'method': 'eth_sendBundle',
        'params': [{
            'txs': txs,
            'blockNumber': hex(target_block),
        }],
    }
    
    response = requests.post(url, json=payload)
    return response.json()

Best Practices

  • Start Small: Test with small amounts before scaling up
  • Monitor Status: Use Flashbots dashboard to track bundle status
  • Optimize Gas: Continuously refine gas prices based on inclusion rates
  • Error Handling: Implement robust error handling for failed submissions
  • Rate Limiting: Respect rate limits to avoid being blocked
  • Simulation: Use Flashbots simulation endpoint to test bundles before submission

Flashbots vs Public Mempool

FeatureFlashbotsPublic Mempool
Front-running RiskLowHigh
Gas CostsLower (direct submission)Higher (auction-based)
ComplexityHigher (requires API integration)Lower (standard transactions)
PrivacyHigh (private submission)Low (public mempool)

Learn more in our Flashbots vs Public Mempool comparison.

Additional Resources

Next Steps

Ready to start using Flashbots? Here's what to do next:

  1. Review the official Flashbots documentation
  2. Set up your development environment
  3. Test bundle submission in simulation mode
  4. Start with small test bundles
  5. Monitor and optimize your strategies
  6. Consider using FRB Agent for automated MEV trading