COMIT is an open protocol facilitating trustless cross-blockchain applications. This is a reference implementation for the COMIT protocol.
WARNING - We do not recommend running COMIT on mainnet for now!!!
The repository contains two main folders:
Contains crates that provide general functionality that is not specific to the domain of atomic swaps.
Crates defined in here MUST NOT depend on crates in
They may be separated from the repository at some point (and possibly released on crates.io).
Contains crates specific to our application. Can depend on libraries located in
Setup build environment
curl https://sh.rustup.rs -sSf | sh
- Install libzmq:
apt install libzmq3-dev
- Mac (Homebrew)
brew install zeromq
- Install SSL libraries
apt install libssl-dev
- Mac (Homebrew)
brew install openssl
solcis currently needed to build (will be deprecated). 2 choices:
- OR install
Build & Run
solcis installed locally)
- Put a
default.tomlconfig file into
COMIT_NODE_CONFIG_PATHto wherever the config file is located.
- TODO: similar documentation for
Setup testing/dev environment
cargo install cargo-make
cargo makein the root folder of the repository, this will install various crates & tools such as rustfmt & clippy
cargo makeruns the whole test suite including integration tests but not end-to-end.
cargo make allalso runs the whole test suite, including end-to-end tests.
cargo make formatto format Rust code
cargo make btsieveto run btsieve tests
cargo make dryto run COMIT node dry tests
cargo make e2eto run COMIT node end-to-end tests
cargo make e2e *btc*to run COMIT node end-to-end tests with
btcin the folder name (supports shell glob)
Contributions are welcome, please visit CONTRIBUTING for more details.
This project is licensed under the terms of the GNU GENERAL PUBLIC LICENSE v3.