diff --git a/testnet/README.md b/testnet/README.md new file mode 100644 index 00000000..1ef07fbf --- /dev/null +++ b/testnet/README.md @@ -0,0 +1,63 @@ +# Docker Compose Testnet for Nomos + +The Nomos Docker Compose Testnet contains four distinct service types: + +- **Bootstrap Node Service**: A singular Nomos node with its own service and a deterministic DNS address. Other nodes utilize this as their initial peer. +- **Libp2p Node Services**: Multiple dynamically spawned Nomos nodes that announce their existence through etcd. +- **Etcd Service**: A container running an etcd instance. +- **Mix-Node-{0,1,2}**: These are statically configured mixnet nodes. Every Libp2p node includes these in its topology configuration. + +## Building + +Upon making modifications to the codebase or the Dockerfile, the Nomos images must be rebuilt: + +```bash +docker compose build +``` + +## Configuring + +Configuration of the Docker testnet is accomplished using the `.env` file. An example configuration can be found in `.env.example`. + +To adjust the count of Nomos nodes, modify the variable: + +```bash +DOCKER_COMPOSE_LIBP2P_REPLICAS=100 +``` + +## Running + +Initiate the testnet by executing the following command: + +```bash +docker compose up +``` + +This command will merge all output logs and display them in Stdout. For a more refined output, it's recommended to first run: + +```bash +docker compose up -d +``` + +Followed by: + +```bash +docker compose logs -f {bootstrap,libp2p-node,mixnode,etcd} +``` + +## Using testnet + +Bootstrap node is accessible from the host via `3000` and `8080` ports. To expose other nomos nodes, please update `libp2p-node` service in the `compose.yml` file with this configuration: + +```bash + libp2p-node: + ports: + - "3001-3010:3000" # Use range depending on the number of nomos node replicas. + - "8081-8190:8080" +``` + +After running `docker compose up`, the randomlly assigned ports can be viewed with `ps` command: + +```bash +docker compose ps +```