This repository hosts the Rust SDK, CLI, FFI bindings, Monero adapters, and supporting tools used for Ethereum <> Monero atomic swaps.
crates/Rust workspace crates (SDK, CLI, Monero RPC/wallet core, adaptor CLSAG, mailbox/presig envelopes, watcher, etc.)tools/Standalone Rust binaries (e.g. swap tx builder/exporter)evm/Solidity contracts and build artifactsflutter/Dart/Flutter FFI bindingsvectors/Test vectors and fixturesdocs/Design/spec documentation
Minimum (build + core tests):
- Rust toolchain (stable, edition 2021) with
cargo
Optional (only needed for specific targets/tests):
- Foundry (
anvil,forge,cast) for EVM/CLI integration tests and local desk flows - Monero daemon (
monerod) for wallet examples and scripts that talk to a daemon RPC python3andcurlforscript/run_atomic_local.sh- WASM target for
ffi-wasmbuilds:rustup target add wasm32-unknown-unknown
Rust (via rustup):
rustup install stable
rustup default stableOptional WASM target:
rustup target add wasm32-unknown-unknownFoundry (required for EVM/CLI integration tests): ensure anvil, forge, and cast are on your PATH.
Monero daemon (required for Monero RPC examples/scripts): run a local node, e.g. monerod --stagenet or monerod --regtest.
From the repo root:
cargo build --workspaceAll workspace tests (includes CLI integration tests):
cargo test --workspaceNotes:
crates/clihas integration tests that launchanvil(Foundry). If Foundry is not installed, those tests will fail to spawn.- To run tests without Foundry, exclude the CLI crate:
cargo test --workspace --exclude cliRun a single crate's tests:
cargo test -p adaptor-clsagRun the adaptor CLSAG tests with real Monero primitives (requires the moxide feature):
cargo test -p adaptor-clsag --features moxideThe script/run_atomic_local.sh script exercises a full local flow and requires:
- Foundry (
anvil,forge,cast) - a Monero daemon RPC (
MONERO_RPC) python3andcurl
./script/run_atomic_local.sh