fix: update Leios protocol message shapes (#1542)
Fixes #1541 Signed-off-by: Aurora Gaffney <[email protected]>
Fixes #1541 Signed-off-by: Aurora Gaffney <[email protected]>
Signed-off-by: Chris Gianelloni <[email protected]>
Dockerfiles reference files from both demo/ and antithesis/ directories, so the build context must be the repo root. Signed-off-by: Chris Gianelloni <[email protected]>
Fixes #1541 Signed-off-by: Aurora Gaffney <[email protected]>
Co-authored-by: bora <[email protected]> Co-authored-by: Robert Phair <[email protected]>
- Add `profiles: ["devnet"]` to all proto-devnet services - Proto-devnet now requires `--profile devnet` to start - ImmDB remains `--profile immdb` - Update README with new usage instructions - Update IP addresses in README for immdb profile Usage: docker compose --profile devnet up # Proto-devnet docker compose --profile immdb up # ImmDB mock Signed-off-by: Chris Gianelloni <[email protected]>
Add proto-devnet with 3 block-producing pools as the default setup: - pool1, pool2, pool3 in mesh topology with real block production - tx-generator for transaction load testing - Shared genesis volume for synchronized startup - Fast 0.1s slots for rapid iteration Keep existing immdb-server setup under --profile immdb: - upstream/node0/downstream services moved to immdb profile - analysis-immdb container for immdb-specific metrics Signed-off-by: Chris Gianelloni <[email protected]>
- Separate immdb profile IPs to avoid conflicts with proto-devnet: - upstream: 172.28.0.10 -> 172.28.0.110 - node0: 172.28.0.20 -> 172.28.0.120 - downstream: 172.28.0.30 -> 172.28.0.130 - Fix genesis file paths: use /data directly instead of /data/genesis to match config.json relative path expectations - Both profiles now work correctly together or separately Signed-off-by: Chris Gianelloni <[email protected]>
- cardano-node from leios-prototype branch - tx-generator from stable cardano-node 10.5.4 (leios-prototype has API incompatibility) - cardano-cli from blink labs pre-built image The tx-generator on leios-prototype fails to compile due to ouroboros-network API drift, but has no Leios-specific changes. Signed-off-by: Chris Gianelloni <[email protected]>
- Fix timestamp parsing to handle nanosecond precision (truncate to microseconds) - Fix log format detection: use 'ns' field for namespace detection (cardano-node format) - Add type safety checks for msg/data fields that may be strings - Parse block hash and slot from 'data.newtip' field (format: "hash@slot") - Detect BlockFetch.CompletedBlockFetch and immdb-server MsgBlock events - Fix schedule cleanup: remove stale base-schedule.json and schedule.json on init - Reduce default LEIOS_RELEASE_TIME from 128.9s to 10s for faster testing Signed-off-by: Chris Gianelloni <[email protected]>
- Remove obsolete version attribute from docker-compose.yaml - Rename compose.yaml to k8s-pod.yaml to avoid conflict with docker compose (was a Kubernetes Pod spec, not a compose file) Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis docker-compose stack and CI workflow for testing: - docker-compose.yaml: Full stack orchestration with init containers, main services (upstream, node0, downstream), analysis container, and optional observability stack. Uses 172.28.0.0/24 subnet with static IPs, healthchecks, and WAN emulation support via NET_ADMIN - scripts/test-local.sh: Local testing script that builds images, starts stack, waits for health, runs for configurable duration, and checks analysis assertions - .github/workflows/antithesis-leios.yaml: CI workflow to build and push images to GHCR, with optional local stack testing on PRs Signed-off-by: Chris Gianelloni <[email protected]>
Python-based analysis container that monitors node logs and reports assertions to Antithesis SDK: - Dockerfile.analysis: Python 3.11 slim image with pandas, matplotlib, and antithesis SDK - analyse.py: Log parsing and metrics computation module, extracts Praos and Leios block events, computes latency statistics - entrypoint-analysis.py: Main loop that periodically analyzes logs and reports assertions (p95 latency thresholds, block propagation) Signed-off-by: Chris Gianelloni <[email protected]>
Observability infrastructure for local testing (enabled via --profile observability): - prometheus.yml: Metrics scraping configuration for cardano-nodes - loki.yml: Log aggregation configuration with TSDB storage - alloy.river: Grafana Alloy config to ship logs from /logs to Loki - grafana/provisioning/datasources: Prometheus and Loki datasources - grafana/provisioning/dashboards: Leios overview dashboard with log panels for each node and error/warning filtering Signed-off-by: Chris Gianelloni <[email protected]>
Dockerfile and scripts for building immdb-server container for Antithesis testing: - Dockerfile.immdb-server: Multi-stage build using Blink Labs base image, builds immdb-server and leiosdemo202510 from ouroboros-consensus leios-prototype branch - init-upstream.sh: Generates leios.db and schedule.json using leiosdemo202510, extracts immutable chain data, patches genesis paths - run-upstream.sh: Runtime script with optional WAN emulation Signed-off-by: Chris Gianelloni <[email protected]>
Dockerfile and scripts for building cardano-node-leios container for Antithesis testing: - Dockerfile.cardano-node: Multi-stage build using Blink Labs base image, builds cardano-node from leios-prototype branch with patched ouroboros-consensus reference for LeiosDemoDb support - init-node0.sh: Initializes node0 data directory with leios.db, topology.json, and patched genesis paths - init-downstream.sh: Initializes downstream node connecting to node0 - run-cardano-node.sh: Runtime script with optional WAN emulation - setup-wan-emulation.sh: tc-based network shaping for local testing Signed-off-by: Chris Gianelloni <[email protected]>
* Add files via upload Signed-off-by: EarnCoinPool <[email protected]> * Update tools.js - Add Dingo Node Add Dingo Node Signed-off-by: EarnCoinPool <[email protected]> * fix(dingo): use horitontal logo w/ text Signed-off-by: Chris Gianelloni <[email protected]> --------- Signed-off-by: EarnCoinPool <[email protected]> Signed-off-by: Chris Gianelloni <[email protected]> Co-authored-by: Chris Gianelloni <[email protected]> Co-authored-by: Chris Gianelloni <[email protected]>
Fixes #1541 Signed-off-by: Aurora Gaffney <[email protected]>