What are flash bots?
A basic introduction guide to flash bots, and how they work to make profit
Table of Contents for What are flash bots?
In regular (fiat based) finance, front running is where someone (‘attacker’) sees a trade order (‘victim’) before it is executed. With this information, if they can react fast enough they can use this information to make money (such as buying stock, and offering it for sale to the victim.
In crypto, front running is similar (with different legalities - this article is only outlining the technical merits). As each block contains many transactions, there exists a chance for some actors (miners) to rearrange these transactions so to be advantageous for them. The order in which transactions are executed can affect the market price, and if someone is careful & clever they can make sure to profit from it
Frontrunning in crypto is also known as Priority Gas Auctions. There is also a concept known as backrunning, where a transaction (transaction B) is broadcast with a slightly lower gas than another transaction (transaction A), so that transaction B is mined straight after transaction A.
In Ethereum, you end up with multiple transactions waiting in the mempool. They stay there until miners select them and add them to a block. The normal order which they are picked up is based on the gas price - those with more gas will get picked first.
This means anyone can watch the mempool, and if they see a chance to make profit from another transaction waiting there (such as if there exists a chance for arbitrage), they can add their own transaction (with a higher gas fee) to be sure their transaction gets executed first.
Miners can have an unfair advantage - which is known as MEV. They can (and have!) made millions of dollars front running.
MEV = miner extracted value. Although nowadays it isn’t really just miners who can profit from MEV.
For an in depth look, read this guide about flash bots.
All of the possibilities to profit from frontrunning (and backrunning) can mean there are a lot more smart contract function calls (opens up more MEV available).
So how do flashbots help?
Flashbots is a service to help against front running and MEV.
It is a permissionless research and development project (which is quite mature and has heavy use every day), to try and make MEV extraction fair and open to all.
MEV Inspect PY (“Illuminate the dark forest”)
MEV (and to understand how to profit from it) without flashbots can mean you have to have a deep understanding of smart contracts, EVM and do substantial research to make sure you actually profit from it.
One of the parts to flashbots is
mev-inspect-py - which is an tool for MEV on the ethereum blockchain.
Using this tool you can see what people are doing on chain, on what protocols.
It supports various protocols, including Uniswap v2/v3, Curve, Balancer, Aave, Compoound, 0x.
It will look at data from the blockchain, process it and figure out things such as what was swapped, where there were arbitrages.
It is really useful if you want to research what arbitrage went on during a block (and how it happened). You set it up on the command line, which will populate a db (with tables such as
miner_payments etc) which you can query to see what happened.
Their current version is written in Python (older versions were in typescript and rust)
Find it on Github).
MEV-Geth (“democratize extraction”)
MEV Geth is a forked version of the ethereum client, which uses flashbot bundles before broadcasting them
For Ethereum PoS (proof of stake) see MEV Boost.
MEV-Boost is an implementation of proposer-builder separation (PBS) built by Flashbots for proof of stake Ethereum. Validators running MEV-Boost maximize their staking reward by selling blockspace to an open market of builders. It is estimated that validators running MEV-Boost can increase their staking rewards by over 60%.
MEV-Boost is free, open-source, neutral software built with love, for the community. For information on MEV-Boost software and roadmap, see the MEV-Boost Repository.
How flash bots actually work (basic model of how searches, relayers and miners work together)
With flashbots we have searchers, relayers, and miners.
Searchers use the flashbots service. They take in info from ethereum blockchain (mempool, existing data on the blockchain, and other data sources). The searchers create a list of the transactions they want to include (this is ordered to their advantage). They generate a flashbot bundle.
These bundles get sent to the relayers. These relayers forward the flashbot bundles to miners.
Flashbot miners are regular miners - except they run slightly different software to add these flashbot bundles (of transactions) instead of only using the mempool.
Miners make money (eth) from searchers. These payments are done in smart contracts. This means there can be guarantees that searchers only pay if their transactions are included.
This post is incomplete and a work-in-progress
I'll update it soon and flesh it out with more info!
Spotted a typo or have a suggestion to make this crypto dev article better? Please let me know!
📙 Solidity Auditing online quiz
Learn how to audit smart contracts by looking at some example code and trying to find the bugs
⛽ Solidity Gas Optimizations Guide
How to optimize and reduce gas usage in your smart contracts in Solidity
🧪 Guide to testing with Foundry
Guide to adding testing for your Solidity contracts, using the Foundry and Forge tools
📌 Guide to UTXO
UTXO and the UTXO set (used by blockchains such as Bitcoin) explained
📐 Solidity Assembly Guide
Introduction guide to using assembly in your Solidity smart contracts
📦 Ethereum EOF format explained
Information explaining what the upcoming Ethereum EOF format is all about