Skip to content

lukaskai/mev-sandwich-flashbot

Repository files navigation

mev-sandwich-flashbot

This is a fork of mev-sandwich-bot, which was catered towards experimenting with MEV Sandwich attacks. This repository contains a simple, mechanical system for discovering, evaluating, rating, and submitting sandwich opportunities to the Flashbots bundle endpoint. This script is very unlikely to be profitable anymore, as more and more users are doing this, and it is targeting well-known Ethereum opportunities.

Back in the days it was profitable, but now it is not. It is left here for educational purposes.

Environment Variables

  • ETHEREUM_RPC_URL - Ethereum RPC endpoint. Can not be the same as FLASHBOTS_RPC_URL
  • PRIVATE_KEY - Private key for the Ethereum EOA that will be submitting Flashbots Ethereum transactions
  • FLASHBOTS_RELAY_SIGNING_KEY [Optional, default: random] - Flashbots submissions require an Ethereum private key to sign transaction payloads. This newly-created account does not need to hold any funds or correlate to any on-chain activity, it just needs to be used across multiple Flashbots RPC requests to identify requests related to same searcher. Please see https://github.com/flashbots/pm/blob/main/guides/flashbots-alpha.md
  • HEALTHCHECK_URL [Optional] - Health check URL, hit only after successfully submitting a bundle.
  • MINER_REWARD_PERCENTAGE [Optional, default 80] - 0 -> 100, what percentage of overall profitability to send to miner.

Usage

  1. Generate a new bot wallet address and extract the private key into a raw 32-byte format.
  2. Deploy the included Optimised.sol to Ethereum, from a secured account, with the address of the newly created wallet as the constructor argument
  3. Transfer WETH to the newly deployed BundleExecutor

It is important to keep both the bot wallet private key and bundleExecutor owner private key secure. The bot wallet attempts to not lose WETH inside an arbitrage, but a malicious user would be able to drain the contract.

$ npm install
$ PRIVATE_KEY=__PRIVATE_KEY_FROM_ABOVE__ \
    BUNDLE_EXECUTOR_ADDRESS=__DEPLOYED_ADDRESS_FROM_ABOVE__ \
    FLASHBOTS_RELAY_SIGNING_KEY=__RANDOM_ETHEREUM_PRIVATE_KEY__ \
      npm run start

About

MEV flashbot sandwitch attack demo repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published