#sandwich #ethereum #arbitrage #rust

bin+lib subway-rs

使用纯 Rust 和 Huff 构建的高度优化的三明治机器人。

7 个版本 (4 个破坏性版本)

0.5.2 2022 年 12 月 3 日
0.5.1 2022 年 11 月 3 日
0.4.0 2022 年 11 月 3 日
0.3.0 2022 年 10 月 19 日
0.1.0 2022 年 10 月 19 日

#arbitrage 中排名 #2

MIT 许可证

1.5MB
789

机器人 • ci license

使用纯 Rust 和 Huff 构建的高度优化的三明治机器人。

注意

在 prod 环境中测试 Zuck Gobble Fast,我意外地破坏了它,快速丢失所有 ETH

用法

所需准备

  1. 如果没有安装,请安装 rust
  2. contracts 目录部署三明治合约,或重用现有的一个。
  3. 创建一个 .env 文件并设置所需的变量,参考下面的环境变量。(注意:我们已经将 .env.env.prod 添加到 .gitignore 文件中,这样您就不会意外地将密钥提交到仓库。所有其他密钥提交都是您的责任。请谨慎行事。)

警告

某些提供商不支持机器人使用的所有 RPC 方法。

例如,无法使用 infura 监听待处理事务,因为不支持 eth_newPendingTransactionFilter

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

然后,您可以直接运行机器人:

cargo run --bin subway --release

您应该可以正常运行了!

库使用

要作为库使用,请在您的 Cargo.toml 中将 subway-rs 添加为依赖项。

[dependencies]
subway-rs = "0.5.0"

基准测试

要运行基准测试,只需运行

cargo bench

可以通过向 cargo 提供带有基准名称的 --bench 标志来运行单个基准测试。 (例如,cargo bench --bench utils

蓝图

.
├─ 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

鸣谢

依赖项

~28–44MB
~714K SLoC