Skip to content

Mithril v2617.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Apr 07:56
2617.0
2478748

Highlights

  • ⚠️ Warning: this distribution will reset the cardano-transaction database of the signer and the aggregator, and a new full scan of the Cardano chain will be triggered
  • Breaking Changes: Removed the v1 backend of Cardano database from the Mithril client CLI and library (use v2 backend instead)
  • Cardano Node Support: Added support for Cardano node 10.6.2 and 10.7.1 in the signer, aggregator, and client. Cardano node 11.0.1 is also supported
  • Stable Signer Release: Bumped the Mithril signer to version 1.0.0, marking it as production-ready on the release-mainnet network
  • Static Builds: All nodes are now statically built using the musl target on GitHub and Hydra CI pipelines (glibc no 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 2603 distribution by @jpraynaud in #2924
  • docs: final CHANGELOG for 2603.1 distribution by @jpraynaud in #2962
  • docs: add dev blog posts for distribution 2603 by @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 KeyRegistration to MerkleTree by @damrobi in #2959
  • feat(stm): Implementing pre-aggregation primitives and fixes by @damrobi in #2964
  • docs(website): fix k protocol 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 CardanoBlocksTransactions signable 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.6 by @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 2608 by @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_snark in CI by @jpraynaud in #3026
  • fix: add timeout to Pallas chainsync calls 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-Release and Release workflows 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 -w formatting 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 -w following release of version 2.1.1 by @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 mainnet network by @Alenar in #3081
  • refactor(halo2): Decouple circuit from Midnight types by @hjeljeli32 in #3076
  • feat(stm): Compute the Lottery Target Value in MerkleTreeSnarkLeaf by @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-preview and dev-preview VM by @jpraynaud in #3092
  • feat: upgrade DMQ node to 0.3.0.0-pre by @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.1 by @jpraynaud in #3108
  • fix(stm): fixed compute_snark_avk test 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 dev networks 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.13 by @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.0 by @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 -1 offset 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_than by @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.7 snapshot converter by @jpraynaud in #3186
  • feat: upgrade DMQ node to 0.4.2.0 by @jpraynaud in #3197
  • feat: support for Cardano 10.7 ledger state snapshot structure by @jpraynaud in #3180
  • fix: anticipate Rust 1.95 clippy warnings by @Alenar in #3201
  • Run cardano transaction v2 and cardano block commands in CI by @turmelclem in #3198
  • feat: support for Cardano 10.7 configuration 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.7 by @jpraynaud in #3209
  • chore: update dependencies for distribution 2617 by @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.0 version 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.0 distribution by @jpraynaud in #3021

New Contributors

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 ✔ ⁽*⁾

⁽*⁾⚠️ Linux arm64 builds are provided on a best-effort basis and are not officially supported.

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