Warning
This project is in early development and is not production-ready. Use at your own risk.
Cardano Node test assets for Antithesis
This repository contains test assets and configurations for running Antithesis fault-injection tests against Cardano Node implementations.
Structure of the repository
testnets/: Testnet configurations (docker-compose + genesis parameters).components/: Reusable Docker containers for the test environment.
Components
Docker containers that set up and drive the Antithesis test environment. Depending on their role, they range from simple wrappers around external executables to complex services for actively or passively testing Cardano Nodes.
adversary/: A node-to-node client that behaves maliciously to test the robustness of Cardano Node implementations.configurator/: Generates genesis files, node configuration, and signing keys for the testnet using the testnet-generation-tool.config/: Antithesis platform configuration container.sidecar/: Network health checks and Antithesis assertions that validate testnet status.tracer-sidecar/: Processes structured node logs from cardano-tracer into Antithesis assertions (chain convergence, error detection).
Testnets
Currently we provide and maintain one testnet configuration. Some old testnets are preserved in the old-broken directory for historical reference.
cardano_node_master/: A mixed-version testnet with 3 block producers (10.5.3, 10.6.2, 10.7.1) and 2 relay nodes (10.6.2, 10.7.1). Includes a tracer, tracer-sidecar, and sidecar for observability and assertions. The topology exercises node-to-node protocol diversity across supported Cardano Node versions. See cardano-node-master for details.
Image publishing
Component images are published to ghcr.io/cardano-foundation/cardano-node-antithesis/ via the publish-images workflow. The docker-compose references images by commit hash (e.g., configurator:aa43ea4). The publish workflow:
- Scans
docker-compose.yamlfor image references matching the registry prefix - Resolves each tag (commit hash) to a git revision
- Checks out that revision and builds from
components/<name>/ - Pushes the image tagged with both the short hash and full commit hash
To add a new component: create components/<name>/Dockerfile, reference it in docker-compose as ghcr.io/cardano-foundation/cardano-node-antithesis/<name>:<commit>, and push. The publish workflow builds and pushes it automatically on PR or merge to main.