Various crates and binaries to trade and interact with EVM chains.
The pub/sub engine is originally forked from Artemis.
/
├── bin/ # Binary crates (bot, cli, swap)
├── crates/ # Core library crates
│ ├── addressbook/ # Address book to easily fetch known addresses
│ ├── amms/ # Fork of amms-rs using alloy and with added support for curve, ramses, etc.
│ ├── engine/ # Pub/sub engine. Based on artemis.
│ ├── bindings/ # Contract bindings (to be removed)
│ ├── db/ # Database models and queries
│ ├── pool-manager/ # Pool storage manager for example for fetching/flagging pools in the db
│ ├── tx-executor/ # Bundled tx encoder/executor
│ ├── tx-simulator/ # Swap simulator
│ ├── odos-client/ # Odos aggregator client
│ ├── codex-client/ # Codex API client
│ ├── lifi-client/ # Lifi bridge client
│ ├── metadata/ # Functions to fetch aggregated chain data
│ ├── provider/ # Provider utils
│ ├── shared/ # Shared utils
│ └── types/ # Shared types
└── docker/ # Docker configuration
- Rust 1.82 or higher
- Docker (optional)
- Access to Ethereum nodes or providers
- Copy the example environment file:
cp .env.example .env
-
Configure your environment variables in
.env
-
Build the project:
cargo build --release
- Using the CLI:
cargo run --bin cli -- --help
- Using Docker:
docker-compose up -d
The bot can be configured through:
- Environment variables (
.env
file) - Command-line arguments
- Configuration files
See .env.example
for available configuration options.
- Create a new crate in
crates/strategies/
- Implement the strategy traits from
engine