Adds a Rust toolchain file to be less disruptive to developers who don't keep their toolchain synchronized (by now having rustup automatically synchronize). Hopefully helps resolve how +nightly clippy may pass for the coordinator, yet building would fail due to stable's (hopefully prior?) failure to model some async functions re: Send/Sync. Also adds rust-src as a component in preparation of https://github.com/paritytech/polkadot-sdk/pull/2217
Deploy
Run with Docker Compose
Running the Serai infrastructure is easy with Docker.
We utilize compose profiles to easily orchestrate various pieces of the infrastructure.
Example: docker compose --profile cluster-coins-sm up
All commands are assumed to be ran from /deploy, not the root folder.
Profiles:
-
bitcoin- Bitcoin node -
monero- Monero node -
ethereum- Ethereum node -
coins- Nodes for all external networks (BTC, ETH, XMR) -
message-queue- The message queue service. -
processor- Serai processor for one external network. -
coordinator- Serai coordinator for the entire Serai stack. -
serai- Serai node -
cluster-sm- "Alice", "Bob", "Charlie", and "Dave" Serai nodes, all as validators (enough to achieve BFT with one faulty node) -
cluster-lg-cluster-smwith non-validators "Eve" and "Ferdie"
You can supply one or more profiles to the docker compose command to orchestrate the desired components.
Example: docker compose --profile coins --profile serai up
Orchestration Approach
Builds
The Serai infrastructure is locally compiled. This may take several minutes.
Images for external networks download binaries, before verifying their checksums and signatures.
Stage 1 -- Builder
- Configure environment.
- Get the binary.
- Verify binary using GPG.
- Decompress binary to prepare image.
Stage 2 -- Image
- Copy needed files from builder.
- Move executables to bin folder.
- Copy scripts folder.
- Expose necessary ports.
- Map necessary volumes.
Entrypoint
The Serai node and external networks' nodes are each started from an entrypoint
script inside the /scripts folder.
To update the scripts on the image you must rebuild the updated images using the
--build flag after up in docker compose.
Example: docker compose --profile bitcoin up --build