Highlights
⚠️ Warning: this distribution will reset thecardano-transactiondatabase of the signer and the aggregator, and a new full scan of the Cardano chain will be triggered- Breaking Changes: Removed the
v1backend of Cardano database from the Mithril client CLI and library (usev2backend instead) - Cardano Node Support: Added support for Cardano node
10.6.2and10.7.1in the signer, aggregator, and client. Cardano node11.0.1is also supported - Stable Signer Release: Bumped the Mithril signer to version
1.0.0, marking it as production-ready on therelease-mainnetnetwork - Static Builds: All nodes are now statically built using the
musltarget on GitHub and Hydra CI pipelines (glibcno longer required).
What's Changed
- fix(signer): avoid panic on invalid signed_beacon id by @leepl37 in #2940
- core(stm/snark): integrate certificate circuit prototype as it is (future_snark) by @hjeljeli32 in #2938
- feat(stm): Implementation of the digest trait for the Poseidon hash from Midnight by @damrobi in #2936
- SNARK-friendly STM: New Key Registration by @curiecrypt in #2880
- refactor: SNARK-friendly version of Aggregate Verification Key by @jpraynaud in #2951
- fix(signer): avoid sqlite bind panic by @leepl37 in #2953
- feat(stm): Merkle Tree Leaf for Snark proof by @curiecrypt in #2957
- docs: rotate documentation for
2603distribution by @jpraynaud in #2924 - docs: final CHANGELOG for
2603.1distribution by @jpraynaud in #2962 - docs: add dev blog posts for distribution
2603by @jpraynaud in #2965 - feat: also import blocks into cardano database when importing data from chain by @Alenar in #2960
- refactor(stm): Remove possibility of panic during conversion from
KeyRegistrationtoMerkleTreeby @damrobi in #2959 - feat(stm): Implementing pre-aggregation primitives and fixes by @damrobi in #2964
- docs(website): fix
kprotocol parameter description by @jpraynaud in #2975 - feat: optional throttling when reading blocks from the chain by @Alenar in #2966
- Implement artifacts builder for cardano blocks and transactions by @turmelclem in #2963
- Update 2026-01-29-distribution-2603.md by @olgahryniuk in #2986
- fix: synchronization from incomplete certificate chain in follower aggregator by @jpraynaud in #2978
- feat: implement a DMQ consumer deduplicator by @jpraynaud in #2977
- test(snark): Golden tests for the STM Halo2 circuit by @hjeljeli32 in #2968
- implement artifact rest api routes for cardano blocks and transactions by @turmelclem in #2980
- refactor: preliminary works before addition of
CardanoBlocksTransactionssignable builder by @Alenar in #2992 - fix: DMQ publisher error on rejected local submission response by @jpraynaud in #2972
- fix(devnet): Docker images by @jpraynaud in #2996
- fix(stm): Fix the implementation difference for schnorr signature between cpu and circuit by @damrobi in #2994
- feat: add Copilot review guidelines in CI by @jpraynaud in #2999
- feat: compute and persist blocks transactions block range roots by @Alenar in #2995
- implement signing configuration for cardano blocks and transactions by @turmelclem in #2991
- feat(stm): SNARK Key registration by @curiecrypt in #2976
- feat: support Cardano node
10.6by @jpraynaud in #2838 - fix(ci): correct file name for Copilot review instructions by @jpraynaud in #3006
- ci: fix publish to crates and package promote to npm by @Alenar in #3007
- feat: add cardano blocks transactions signable builder by @Alenar in #3003
- refactor(snark): remove halo2/off-circuit and switch to STM types by @hjeljeli32 in #3002
- feat(stm): Computation of the target value for the SNARK lottery by @damrobi in #2979
- fix: snapshot converter breaking change since cardano version 10.6.2 by @turmelclem in #3014
- feat: update protocol parameters for release/pre-release networks by @jpraynaud in #3019
- chore: update dependencies for distribution
2608by @jpraynaud in #3018 - fix: panic at startup in aggregator by @jpraynaud in #3024
- fix: panic at startup in aggregator v2 by @jpraynaud in #3025
- feat(stm): Add from_raw conversion function for BaseFieldElement by @damrobi in #3027
- fix(persistence): avoid hitting SQLite limits when doing blocks and transactions bulk storage by @Alenar in #3045
- Remove legacy db restauration message for version 10.6.2 and upper by @turmelclem in #3044
- perf: tune cardano blocks and transactions import throttling by @Alenar in #3048
- fix: flakiness in STM tests with
future_snarkin CI by @jpraynaud in #3026 - fix: add timeout to Pallas
chainsynccalls in Pallas chain reader by @jpraynaud in #3052 - perf: optimize blocks and transactons retrieval from sqlite by @Alenar in #3057
- feat(aggregator): implement v2 routes for cardano transaction and block proofs(#2988) by @leepl37 in #3005
- refactor(stm): Fix the number of iterations for lottery target computation by @damrobi in #3046
- feat: authenticated SNARK signer registration by @jpraynaud in #3016
- feat: support aggregator capabilities in aggregator discovery by @jpraynaud in #2844
- test(stm): add negative single-signature tests by @leepl37 in #2985
- feat(ci): manually trigger
Pre-ReleaseandReleaseworkflows by @jpraynaud in #3059 - refactor(stm): align circuit domain separation tags by @hjeljeli32 in #3051
- refactor: rework sqlite connection pool by @Alenar in #3060
- fix: apply
cargo sort -wformatting following its 2.1 version by @Alenar in #3064 - docs: fix DMQ setup documentation by @jpraynaud in #3063
- feat(stm): Signer and Signature for SNARK Proof System by @curiecrypt in #3009
- refactor(stm): error handling by @hjeljeli32 in #3055
- fix: apply
cargo sort -wfollowing release of version2.1.1by @jpraynaud in #3077 - refactor(stm): Ensuring type consistency for SNARK circuit by @damrobi in #3071
- refactor+test: prover preparatory work by @Alenar in #3072
- perf: fix cardano blocks with transactions retrieval in
mainnetnetwork by @Alenar in #3081 - refactor(halo2): Decouple circuit from Midnight types by @hjeljeli32 in #3076
- feat(stm): Compute the Lottery Target Value in
MerkleTreeSnarkLeafby @damrobi in #3082 - refactor(halo2): align circuit's naming to STM by @hjeljeli32 in #3084
- feat: SNARK-friendly certificate chain by @jpraynaud in #3073
- feat: add "v2" prover for blocks and transactions by @Alenar in #3085
- docs: add dev blog post about new mainnet protocol parameters by @jpraynaud in #3087
- feat(stm): Prepare Prover Witness by @curiecrypt in #3075
- infra: upgrade
pre-release-previewanddev-previewVM by @jpraynaud in #3092 - feat: upgrade DMQ node to
0.3.0.0-preby @jpraynaud in #3086 - refactor(halo2): modularity enhancement by @hjeljeli32 in #3089
- feat: implement static builds for Mithril nodes in CI by @turmelclem in #2998
- perf: add prover v2 benchmark script by @Alenar in #3094
- feat(stm): Create SNARK proof with circuit by @curiecrypt in #3093
- feat(halo2): switch Halo2 transcript hash to Poseidon by @hjeljeli32 in #3096
- feat: avoid storage and diffusion of unconsistent network configuration and epoch settings by @Alenar in #3095
- implement list of transactions proofs and artifacts v2 in client by @turmelclem in #3083
- feat(stm): Verify SNARK proof by @damrobi in #3090
- feat(client): decommission Cardano DB v1 backend in client library and CLI by @leepl37 in #3088
- fix: diffusion of inconsistents network configs from leader aggregator by @Alenar in #3111
- feat: upgrade DMQ node to
0.3.0.1by @jpraynaud in #3108 - fix(stm): fixed
compute_snark_avktest taking too long by @damrobi in #3109 - Implement examples for block and transactions by @turmelclem in #3102
- feat: wire SNARK proof in aggregate signature by @jpraynaud in #3103
- feat: deploy SNARK prover in
devnetworks by @jpraynaud in #3105 - feat: upgrade release process by @jpraynaud in #3113
- implement cardano blocks and transaction in client CLI by @turmelclem in #3112
- chore: upgrade reqwest to
0.13by @Alenar in #3117 - support backward compatilibity for cardano-transaction command in end-to-end test by @turmelclem in #3118
- feat: support SNARK proof generation by @damrobi in #3115
- explorer: upgrade, fix lints and most vulnerabilities by @Alenar in #3166
- feat: upgrade DMQ node to
0.4.1.0by @jpraynaud in #3170 - feat: support partial block ranges for blocks transactions certifications by @Alenar in #3116
- Sign security parameter offset by @turmelclem in #3168
- feat: add feature-gated halo2_ivc prototype module by @hjeljeli32 in #3171
- refactor: add versioned CBOR codec to STM by @jpraynaud in #3169
- Fix block depth in certify subcommands table result and JSON by @turmelclem in #3175
- feat: Mithril/Cardano bundle Docker image by @jpraynaud in #3177
- feat(client-cli): add feedbacks for blocks and transactions certification commands by @Alenar in #3182
- refactor: remove minimal
-1offset from blocks transactions beacon computation by @Alenar in #3176 - fix(nix): nix check CA certificates failures by @Alenar in #3184
- feat(explorer): add support for cardano blocks transactions without certification by @Alenar in #3181
- fix: unstable signed entity hash computation by @Alenar in #3185
- refactor(stm): Sync non-recursive circuit, reduce bit length of
lower_thanby @curiecrypt in #3174 - feat(nix): add Windows x86_64 cross-compilation by @disassembler in #3167
- Implement cardano blocks and transactions in WASM client by @turmelclem in #3179
- docs: update Cardano Docker bundle runbook by @jpraynaud in #3188
- feat: support for Cardano
10.7snapshot converter by @jpraynaud in #3186 - feat: upgrade DMQ node to
0.4.2.0by @jpraynaud in #3197 - feat: support for Cardano
10.7ledger state snapshot structure by @jpraynaud in #3180 - fix: anticipate Rust
1.95clippy warnings by @Alenar in #3201 - Run cardano transaction v2 and cardano block commands in CI by @turmelclem in #3198
- feat: support for Cardano
10.7configuration by @jpraynaud in #3187 - docs: add documentation for Cardano Blocks and Transactions in website by @jpraynaud in #3203
- feature: cardano blocks transactions certification in explorer by @Alenar in #3207
- fix: e2e compatibility rules for Cardano
10.7by @jpraynaud in #3209 - chore: update dependencies for distribution
2617by @jpraynaud in #3214 - refactor(end-to-end): read transaction and block hashes from immutables files by @turmelclem in #3208
- chore: make signer stable with
1.0.0version by @jpraynaud in #3219 - fix: conversion of ledger state snapshot to LSM flavour by @jpraynaud in #3220
- refactor(stm): Enhance selection in witness prep by @curiecrypt in #3190
- Add golden tests for IVC by @hjeljeli32 in #3204
- docs: update CHANGELOG with
2617.0distribution by @jpraynaud in #3021
New Contributors
- @hjeljeli32 made their first contribution in #2938
- @disassembler made their first contribution in #3167
Full Changelog: 2603.1...2617.0
Crates Versions
| Crate | Version |
|---|---|
| mithril-aggregator | 0.8.47 |
| mithril-client | 0.14.5 |
| mithril-client-cli | 0.13.9 |
| mithril-client-wasm | 0.10.4 |
| mithril-common | 0.6.67 |
| mithril-signer | 1.0.0 |
| mithril-stm | 0.10.5 |
Networks Compatibility ⚠️
| Network | Compatible |
|---|---|
| release-mainnet | ✔ |
| release-preprod | ✔ |
| pre-release-preview | ✔ |
| testing-preview | ⛔ |
Cardano Node Compatibility
| Network | Mithril Aggregator | Mithril Signer |
|---|---|---|
| release-mainnet | Cardano 10.6.2+(*) |
Cardano 10.6.2+(*) |
| release-preprod | Cardano 10.6.2+(*) |
Cardano 10.6.2+(*) |
| pre-release-preview | Cardano 10.6.2+(*) |
Cardano 10.6.2+(*) |
| testing-preview | Cardano 10.6.2+(*) |
Cardano 10.6.2+(*) |
*: Up to the latest Cardano node version released at the time of this release.
Platform Support
Summary of the platforms for which pre-built binaries are provided.
| Binary | Linux x64 | Linux arm64 | macOS arm64 | Windows x64 |
|---|---|---|---|---|
| mithril-aggregator | ✔ | ✔ ⁽*⁾ | ⛔ | ⛔ |
| mithril-signer | ✔ | ✔ ⁽*⁾ | ⛔ | ⛔ |
| mithril-client | ✔ | ✔ ⁽*⁾ | ✔ | ✔ |
⁽*⁾
Download a binary asset
To simplify the installation and updating of Mithril binaries, we have created a one line installer that downloads and installs the Mithril binaries for you.
This installer is available for Linux and macOS and supports the Mithril signer, Mithril aggregator, and Mithril client CLI.
Use the following commands to install the Mithril nodes:
- Download the Mithril signer in the current directory:
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/input-output-hk/mithril/refs/heads/main/mithril-install.sh | sh -s -- -c mithril-signer -d 2617.0 -p $(pwd)- Download the Mithril client CLI in the current directory:
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/input-output-hk/mithril/refs/heads/main/mithril-install.sh | sh -s -- -c mithril-client -d 2617.0 -p $(pwd)- Download the Mithril aggregator in the current directory:
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/input-output-hk/mithril/refs/heads/main/mithril-install.sh | sh -s -- -c mithril-aggregator -d 2617.0 -p $(pwd)Verify the authenticity of a downloaded asset
Detailed procedure to verify an asset
- Step 1: Identify the downloaded asset on your computer YOUR_ASSET_FILE
- Step 2: Download the signed checksum file from this link CHECKSUM.asc and save it in the same folder as the asset
- Step 3: In your terminal, go to the asset folder by running:
cd ***YOUR_ASSET_FOLDER***
- Step 4: Then verify the checksum of the asset by running:
sha256sum -c ./CHECKSUM.asc 2>/dev/null | grep ***YOUR_ASSET_FILE***
You must see:
./***YOUR_ASSET_FILE***: OK
- Step 5: Download the public key file from this link public-key.gpg and save it in the same folder as the asset
- Step 6: Then import the GPG public key:
gpg --import ./public-key.gpg
You must see something like:
gpg: key : public key "Input Output / Mithril <mithril@iohk.io>" imported
gpg: Total number processed: 1
gpg: imported: 1
- Step 7: Then verify the GPG signature of the checksum file:
gpg --verify ./CHECKSUM.asc
You must see something like:
gpg: Signature made Mon 05 Dec 2022 04:53:54 PM CET
gpg: using RSA key 35EDE9D47BBA62A2F388E655899ACD26B8BCA0D2
gpg: Good signature from "Input Output / Mithril <mithril@iohk.io>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 35ED E9D4 7BBA 62A2 F388 E655 899A CD26 B8BC A0D2
The signature is valid if and only if:
- there is a line with
gpg: Good signature from "Input Output / Mithril <mithril@iohk.io>" - there is a line with
Primary key fingerprint: 73FC 4C3D FD55 DBDC 428A D2B5 BE04 3B79 FDA4 C2EE
- Step 8:
If you successfully validated all the steps of this process, then you have successfully verified the authenticity of the asset ✔️
If not, contact us at [mithril@iohk.io] and let us know of the outcome of your run of this process⚠️
Download a Docker image
You can directly pull prebuilt Mithril Docker images:
| Binary | Image name | URL |
|---|---|---|
| mithril-aggregator | mithril-aggregator:2617.0-2478748 | ghcr.io/input-output-hk/mithril-aggregator:2617.0-2478748 |
| mithril-signer | mithril-signer:2617.0-2478748 | ghcr.io/input-output-hk/mithril-signer:2617.0-2478748 |
| mithril-client | mithril-client:2617.0-2478748 | ghcr.io/input-output-hk/mithril-client:2617.0-2478748 |