/liquidity-sniper

EVM Liquidity Sniper Bot consuming GETH txs through the mempool

Primary LanguageGoGNU General Public License v3.0GPL-3.0

AX-50 Liquidity Sniper

This bot requires you to run the GETH client + use ethers framework. All addresses and private keys contained have been changed for the sake of this public repo.

Supports any EVM environment and UniSwapV2 forked AMM seemlessly.

This is heavily based on https://github.com/Supercycled/cake_sniper, so major thanks to him.

Use at you own risk.

Global Workflow

AX-50 is a frontrunning bot primarily aimed at liquidity sniping on AMMs like PancakeSwap. Liquidity sniping is the most profitable way I found to use it. But you can add pretty much any feature involving frontrunning (liquidation, sandwich attacks etc..).

Being able to frontrun implies building on top of GETH client and having access to the mempool. My BSC node was running on AWS, hence the config/ folder that I needed to send back and forth to the server with sniping config. It's HIGHLY RECOMMENDED to have your own node for liquidity sniping (and pretty much any frontrunning operation).

The bot is divided in 2 sections:

  1. Configurations: An initial phase (previous to the snipe) where we configure the environment:
    • A trigger contract which is setted up with the configuration of the token you want to snipe (token address, route of swap, amount, wallet address that receives, etc).
    • A swarm of accounts/wallets that will clogg the mempool once the liquidity is added, executing the snipe. This swarm of accounts is useful because we will be racing against other bots trying to frontrun the liquidity addition. So the more accounts trying the better the odds. Ideally one of all the accounts will succesfully snipe while the others will fail/revert (without doing nothing, except wasting gas).
  2. Sniping: Consists on a stimulus phase where we listen to a stimulus of a liquidity addition. Once we spot it we clogg the mempool with our own txs executing the trigger that will perform the snipe (one tx per account in the swarm). All txs have the same gas as the liquidity addition tx, so the mempool sets them (ideally) at the same priority as the add liq tx. addition, hence frontrunning others. Sniping can be performed in 2 modes: PendingTxs or Block. Each one offers vastly different results at the cost of resources.
    • PendingTxs: The most performant and profitable mode, but by far the most resource intensive. This mode observes pending txs arriving to the mempool whilst looking for the liquidity addition we expect.
    • Block: Far less performant mode but with way lower requirements. This mode observes newly mined blocks as they are added to the head of the blockchain and scans the txs in it, looking for the liquidity addition we expect.

Setup

  1. Create a config/local.json file following the template and samples provided inside the directory (config/*.local.json). This will be used by our scripts in the configuration and sniping phase. (you won't have yet the trigger address, this comes later)

  2. Deploy all contracts using the truffle migrations (create an .env file with BINANCE_MAINNET_WALLET_PRIVATE_KEY or BINANCE_MAINNET_WALLET_MNEMONIC). Contract deployment uses variables provided in config/local.json (eg. the factory one) so make sure to have it properly configured beforehand. Running them should configure:

    • The trigger custom router address with your CustomRouter
    • The trigger admin with the deployer wallet (this is important)
    • Trigger and Router addresses (factory, native wrapped coin, factory creationCode hash)
  3. Set the trigger address generated by the contract deployment in your config/local.json.

  4. If you don't have a swarm yet, create one running npm run create-swarm. This should create a config/bee_book.json similar to the template one (config/template.bee_book.json) to be used by the sniper on each snipe

  5. [Optional] Preview the order you will create and snipe with npm run order-preview, to avoid undesired results.

  6. Configure the trigger contract with the provided order running npm run configure-trigger

  7. [Optional] If you want to recover the spread bnb in the swarm or rollback the trigger configuration (recovering the bnb supplied), run npm run swarm-refund / npm run withdraw-trigger. Else leave it there for future snipes.

In future snipes, you can avoid most of the steps and just run step 1 & 6, simply configuring the trigger for a new snipe.

Usage

If you have already configured the trigger contract, simply leave the client running with go run ./.... Once the liquidity is added it should snipe it transparently.

And that's it! the bot should be working without hassles! The bot is currently defined to work with any EVM and UniSwapV2 forked AMM.

Donations

If you found the bot useful and you want to share some of those juicy profits with me, I accept donations through BEP20 (BSC) at 0x8f5d3374373aDA8b2c201C5cAc4c384FD42d2390 in any type of token (hopefully one with liquidity hehe)

Cheers and happy sniping!