7 releases (4 breaking)
0.5.2 | Dec 3, 2022 |
---|---|
0.5.1 | Nov 3, 2022 |
0.4.0 | Nov 3, 2022 |
0.3.0 | Oct 19, 2022 |
0.1.0 | Oct 19, 2022 |
#2 in #arbitrage
1.5MB
789 lines
bot •
A Highly Optimized Sandwich Bot Built with Pure Rust and Huff.
Note
Test in prod something Zuck Gobble Fast lose all your ETH i accidentally broke it
Usage
Required Preparation:
- Install rust if it's not already installed.
- Deploy a sandwich contract from the contracts directory, or re-use an existing one.
- Create a
.env
file and set the required variables, referencing the below environment variables. (NOTE: we've added.env
and.env.prod
to the.gitignore
file, so you don't accidentally commit your secrets to the repo. All other secret commits are on you. Exercise caution.)
Warning
Some providers do NOT support all the RPC methods used by the bot.
For instance, it is not possible to use infura to listen to pending transactions because
eth_newPendingTransactionFilter
is not supported.
RPC_URL=http://127.0.0.1:8545
RPC_URL_WSS=ws://127.0.0.1:8545
PRIVATE_KEY=0000000000000000000000000000000000000000000000000000000000000001
FLASHBOTS_AUTH_KEY=0000000000000000000000000000000000000000000000000000000000000002
SANDWICH_CONTRACT=0x0000000000000000000000000000000000000000
Then, you can simply run the bot with:
cargo run --bin subway --release
And you should be good to go!
Library Usage
To use as a library, add subway-rs as a dependency in your Cargo.toml
:
[dependencies]
subway-rs = "0.5.0"
Benchmarks
To run benchmarks, simply run:
cargo bench
Individual benches can be run by supplying the --bench
flag to cargo with the benchmark name. (e.g. cargo bench --bench utils
)
Blueprint
.
├─ src
│ ├─ lib.rs — Exported modules with a re-exported prelude.
│ ├─ main.rs — The main bot binary.
│ ├─ numeric.rs — Refactored functions for numeric operations.
│ ├─ relayer.rs — Wrappers for network requests.
│ ├─ telemetry.rs — Telemetry for verbose logging.
│ ├─ uniswap.rs — Uniswap library.
│ └─ utils.rs — Common utilities.
└─ tests
└─ Tests so exhaustive, it'll knock your (uni)-socks off
Credits
Dependencies
~28–44MB
~714K SLoC