jordy25519 / fulcrum

low-latency arbitrage bot for Arbitrum L2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fulcrum

Fulcrum is an experimental, low-latency engine for arbitrage trading on Arbitrum L2.
Primary design goal is to measure strategy latency in single-digit µ seconds.
Created out of interest in understanding HFT systems and the arbitrum rollup architecture.

Motivation/Design

Fulcrum builds a price graph on each block and simulates new transactions from the raw sequencer feed directly against the local price graph.
It does not run a full EVM and so relies on a full node to sync prices at sequencer batch block - 1 (i.e trades accuracy for latency).

crates
├── engine         # primary trading engine
├── sequencer-feed # fast feed deserializer
└── ws-cli         # fast(er), minimal fork of ethers-providers

Run

$  ./target/release/fulcrum \
    --chain arbitrum --ws <WsEndpoint> \
    run --min-profit 0.0002 \
    --key <PrivateSeed> \
    --executor <ExecutorContract> \
    --dry-run

Profile (MacOS)

$ cargo install samply

$ samply record ./target/profiling/fulcrum

Test

$  cargo test --workspace

Bench

$  cargo +nightly bench --features=bench --profile=release  

Build

$  sudo apt install build-essential pkg-config libssl-dev

$ RUSTFLAGS='-C target-cpu=native' cargo build --release

Contracts

$ forge test --fork-url <rpc-url> -vvv

About

low-latency arbitrage bot for Arbitrum L2


Languages

Language:Rust 79.3%Language:Solidity 20.7%