Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
97111bc
chore(aggregator-discovery): scaffold new crate
jpraynaud Oct 28, 2025
3be68f4
feat(aggregator-discovery): add models for aggregator endpoint
jpraynaud Oct 29, 2025
166c031
feat(aggregator-discovery): introduce 'AggregatorDiscoverer' trait
jpraynaud Oct 29, 2025
9ab4d58
feat(aggregator-discovery): create test double for 'AggregatorDiscove…
jpraynaud Oct 29, 2025
a34afed
feat(aggregator-discovery): add 'HttpConfigAggregatorDiscoverer'
jpraynaud Oct 30, 2025
76e6ab7
refactor(aggregator-discovery): 'AggregatorDiscoverer' returns an ite…
jpraynaud Nov 10, 2025
09dfc38
feat(aggregator-discovery): add 'ShuffleAggregatorDiscoverer' decorator
jpraynaud Nov 10, 2025
353e9e3
wip(aggregator-discovery): add 'CapableAggregatorDiscoverer' decorator
jpraynaud Nov 10, 2025
6a3ecca
fix(aggregator-discovery): 'CapableAggregatorDiscovererIterator' impl…
jpraynaud Nov 14, 2025
6ee5693
test(aggregator-discovery): add tests for 'CapableAggregatorDiscovere…
jpraynaud Nov 14, 2025
30d4d5d
refactor(client): prepare client builder for aggregator discovery
jpraynaud Nov 14, 2025
b7b9eed
fix(aggregator-discovery): remove unneeded 'crate-type' in 'Cargo.toml'
jpraynaud Nov 17, 2025
4681baa
refactor(aggregator-discovery): remove the 'rand' feature
jpraynaud Nov 18, 2025
857d931
feat(client): implement basic aggregator discoverer
jpraynaud Nov 17, 2025
2273b77
feat(aggregator-discovery): implement aggregator discovery in client …
jpraynaud Nov 17, 2025
55a5843
feat(aggregator-discovery): add HTTP timeouts
jpraynaud Nov 18, 2025
8b19110
refactor(aggregator-discoverer): introduce 'RequiredAggregatorCapabil…
jpraynaud Nov 18, 2025
426aa37
chore(client): re-export missing types from common
jpraynaud Nov 18, 2025
6b35ce4
chore(client): update capabilities to required capabilities
jpraynaud Nov 18, 2025
c55e43b
wip(client-cli)
jpraynaud Nov 19, 2025
c9f8423
wip(client-cli): new aggregator discovery command
jpraynaud Nov 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ jobs:
# the same name (we only want to document those anyway)
cargo doc --no-deps --lib -p mithril-stm -p mithril-common \
-p mithril-cardano-node-chain -p mithril-cardano-node-internal-database \
-p mithril-aggregator-client -p mithril-build-script -p mithril-cli-helper \
-p mithril-aggregator-client -p mithril-aggregator-discovery -p mithril-build-script -p mithril-cli-helper \
-p mithril-dmq -p mithril-doc -p mithril-doc-derive \
-p mithril-era -p mithril-metric -p mithril-persistence -p mithril-resource-pool \
-p mithril-ticker -p mithril-signed-entity-lock -p mithril-signed-entity-preloader \
Expand Down
23 changes: 23 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ members = [
"internal/cardano-node/mithril-cardano-node-chain",
"internal/cardano-node/mithril-cardano-node-internal-database",
"internal/mithril-aggregator-client",
"internal/mithril-aggregator-discovery",
"internal/mithril-build-script",
"internal/mithril-cli-helper",
"internal/mithril-dmq",
Expand Down
38 changes: 28 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
COMPONENTS = mithril-aggregator mithril-client mithril-client-cli mithril-client-wasm \
mithril-common mithril-relay mithril-signer mithril-stm \
internal/mithril-build-script internal/mithril-cli-helper internal/mithril-doc \
COMPONENTS = demo/protocol-demo \
internal/cardano-node/mithril-cardano-node-chain \
internal/cardano-node/mithril-cardano-node-internal-database \
internal/mithril-aggregator-client \
internal/mithril-aggregator-discovery \
internal/mithril-build-script \
internal/mithril-cli-helper \
internal/mithril-dmq \
internal/mithril-doc-derive internal/mithril-era internal/mithril-metric internal/mithril-persistence \
internal/mithril-doc \
internal/mithril-doc-derive \
internal/mithril-era \
internal/mithril-metric \
internal/mithril-persistence \
internal/mithril-protocol-config \
internal/mithril-resource-pool internal/mithril-ticker \
internal/cardano-node/mithril-cardano-node-chain internal/cardano-node/mithril-cardano-node-internal-database \
internal/signed-entity/mithril-signed-entity-lock internal/signed-entity/mithril-signed-entity-preloader \
internal/tests/mithril-api-spec internal/tests/mithril-test-http-server \
demo/protocol-demo \
mithril-test-lab/mithril-aggregator-fake mithril-test-lab/mithril-end-to-end
internal/mithril-resource-pool \
internal/mithril-ticker \
internal/signed-entity/mithril-signed-entity-lock \
internal/signed-entity/mithril-signed-entity-preloader \
internal/tests/mithril-api-spec \
internal/tests/mithril-test-http-server \
mithril-aggregator \
mithril-client \
mithril-client-cli \
mithril-client-wasm \
mithril-common \
mithril-relay \
mithril-signer \
mithril-stm \
mithril-test-lab/mithril-aggregator-fake \
mithril-test-lab/mithril-end-to-end
GOALS := $(or $(MAKECMDGOALS),all)
NON_COMPONENT_GOALS := check-format format

Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,10 @@ This repository consists of the following parts:
- [**Mithril signer**](./mithril-signer): the node of the **Mithril network** responsible for producing individual signatures that are collected and aggregated by the **Mithril aggregator**.

- [**Internal**](./internal): the shared tools and API used by **Mithril** crates.
- [**Mithril aggregator client**](./internal/mithril-aggregator-client): a client to request data from a Mithril Aggregator, used by **Mithril network** nodes and client library.

- [**Mithril aggregator client**](./internal/mithril-aggregator-client): a client to request data from a Mithril aggregator, used by **Mithril network** nodes and client library.

- [**Mithril aggregator discovery**](./internal/mithril-aggregator-discovery): mechanisms to discover available Mithril aggregator, used by **Mithril network** nodes and client library.
Copy link

Copilot AI Nov 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected grammar: 'aggregator' should be 'aggregators'.

Suggested change
- [**Mithril aggregator discovery**](./internal/mithril-aggregator-discovery): mechanisms to discover available Mithril aggregator, used by **Mithril network** nodes and client library.
- [**Mithril aggregator discovery**](./internal/mithril-aggregator-discovery): mechanisms to discover available Mithril aggregators, used by **Mithril network** nodes and client library.

Copilot uses AI. Check for mistakes.

- [**Mithril build script**](./internal/mithril-build-script): a toolbox for Mithril crates that uses a build script phase.

Expand Down Expand Up @@ -113,11 +116,13 @@ This repository consists of the following parts:
- [**Mithril signed entity prealoader**](./internal/signed-entity/mithril-signed-entity-preloader): a **preload** mechanism for the Cardano transaction signed entity, used by **Mithril network** nodes.

- [**tests**](./internal/tests): shared testing tools used by **Mithril** crates.

- [**Mithril api spec**](./internal/tests/mithril-api-spec): toolset to verify conformity of http routes against an Open Api specification, used by **Mithril network** nodes.

- [**Mithril test http server**](internal/tests/mithril-test-http-server): provides a test http server, used by **Mithril network** nodes.

- [**Mithril test lab**](./mithril-test-lab): the suite of tools that allow us to test and stress the **Mithril** protocol implementations.

- [**Mithril devnet**](./mithril-test-lab/mithril-devnet): the private **Mithril/Cardano network** used to scaffold a **Mithril network** on top of a **Cardano network**.

- [**Mithril end to end**](./mithril-test-lab/mithril-end-to-end): the tool used to run test scenarios against a **Mithril devnet**.
Expand Down
38 changes: 38 additions & 0 deletions internal/mithril-aggregator-discovery/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[package]
name = "mithril-aggregator-discovery"
description = "Mechanisms to discover aggregator available in a Mithril network."
Copy link

Copilot AI Nov 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected grammar: 'aggregator available' should be 'aggregators available'.

Suggested change
description = "Mechanisms to discover aggregator available in a Mithril network."
description = "Mechanisms to discover aggregators available in a Mithril network."

Copilot uses AI. Check for mistakes.
version = "0.1.0"
authors.workspace = true
documentation.workspace = true
edition.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
include = ["**/*.rs", "Cargo.toml", "README.md", ".gitignore"]

[dependencies]
anyhow = { workspace = true }
async-trait = { workspace = true }
mithril-common = { path = "../../mithril-common" }
mithril-aggregator-client = { path = "../mithril-aggregator-client" }
rand = { version = "0.9.2"}
reqwest = { workspace = true, features = [
"default",
"gzip",
"zstd",
"deflate",
"brotli"
] }
serde = { workspace = true }
serde_json = { workspace = true }
slog = { workspace = true }
slog-scope = "4.4.0"
thiserror = { workspace = true }
tokio = { workspace = true, features = ["sync", "rt-multi-thread"] }

[dev-dependencies]
mockall = { workspace = true }
httpmock = "0.8.1"
slog-async = { workspace = true }
slog-term = { workspace = true }
tokio = { workspace = true, features = ["macros"] }
19 changes: 19 additions & 0 deletions internal/mithril-aggregator-discovery/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.PHONY: all build test check doc

CARGO = cargo

all: test build

build:
${CARGO} build --release

test:
${CARGO} test

check:
${CARGO} check --release --all-features --all-targets
${CARGO} clippy --release --all-features --all-targets
${CARGO} fmt --check

doc:
${CARGO} doc --no-deps --open
3 changes: 3 additions & 0 deletions internal/mithril-aggregator-discovery/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Mithril-aggregator-discovery

This crate provides mechanisms to discover aggregators in a Mithril network.
Loading
Loading