All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
As a minor extension, we have adopted a slightly different versioning convention for the Mithril distributions (https://mithril.network/doc/adr/3#decision)
- Crates versions:
Crate | Version |
---|---|
N/A | - |
-
BREAKING changes in Mithril client library, CLI, and WASM:
- Remove deprecated
network
field from the internalCardanoDbBeacon
. - The Mithril certificates of type
CardanoImmutableFilesFull
can't be verified anymore with the previous clients. - Clients from distribution
2445
and earlier must be updated. - Aggregators from distribution
2445
and earlier must be updated andrecompute their certificate hashes
.
- Remove deprecated
-
Add Node.js and bundler targets to the Mithril client WASM library npm package.
-
Add a one line shell installation script for the Mithril nodes.
-
Add execution rights to pre-built binaries of the Mithril nodes packaged with GitHub releases.
-
Implement the
/status
route on the aggregator's REST API to provide information about its current status. -
Implement a new
genesis generate-keypair
command in aggregator CLI to generate a new genesis keypair. -
Update to Rust
1.83
. -
UNSTABLE Cardano database incremental certification:
- Implement the new signed entity type
CardanoDatabase
. - Implement the signable builder for the signed entity type
CardanoDatabase
.
- Implement the new signed entity type
-
Crates versions:
Crate | Version |
---|---|
N/A | - |
-
BREAKING changes in Mithril client library, CLI, and WASM:
- Remove deprecated
beacon
field from Mithril certificates. - Clients from distribution
2430
and above are compatible with this change.
- Remove deprecated
-
Support for Prometheus metrics endpoint in aggregator.
-
Support for stable Cardano stake distribution client library, CLI and WASM.
-
Support for
Cardano node
10.1.2
in the signer and the aggregator. -
Deprecate
protocol
andnext_protocol
in favor ofsigner_registration_protocol
in the/epoch-settings
route. -
Fix an issue that caused unnecessary re-scan of the Cardano chain when importing transactions.
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.102 |
mithril-client | 0.10.1 |
mithril-client-cli | 0.10.1 |
mithril-client-wasm | 0.6.1 |
mithril-common | 0.4.79 |
mithril-signer | 0.2.209 |
mithril-stm | 0.3.31 |
-
Decentralization of the signature orchestration:
-
Optimizations of the state machine used by the signer to create individual signatures.
-
Support for buffering of incoming single signatures by the aggregator if it can not aggregate them yet.
-
Expose the Cardano transactions signing configuration for the current and upcoming epoch via the
/epoch-settings
route. -
Signer computes what to sign independently of the aggregator.
-
Deprecate aggregator
/certificate-pending
route as the signer does not need it anymore.
-
-
Support for new
Pythagoras
Mithril era. -
Support for signing the protocol parameters in the Genesis certificate.
-
Refactor the builder of the protocol messages, and add support for protocol parameters and epoch parts.
-
Support for
Cardano node
9.2.1
in the signer and the aggregator. -
Support for stable Cardano transaction client library, CLI and WASM.
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.83 |
mithril-client | 0.9.2 |
mithril-client-cli | 0.9.15 |
mithril-client-wasm | 0.5.2 |
mithril-common | 0.4.69 |
mithril-signer | 0.2.200 |
mithril-stm | 0.3.30 |
-
BREAKING changes in Mithril client WASM:
- Implementation of seamless transition from unstable to stable features.
- A new
unstable
option in the client allows the usage of unstable features. - The previous
client.unstable
implementation is not supported anymore and must be replaced withclient
.
-
Support for Mithril nodes footprint support in Prometheus monitoring in infrastructure.
-
Add support for custom HTTP headers in Mithril client WASM library.
-
Support
file://
URLs for snapshot locations in Mithril client. -
Add feature options
num-integer-backend
andrug-backend
formithril-common
andmithril-client
crates. Allows to disablerug-backend
and avoidLGPL
license usage. -
Post
Chang
hard fork cleanup of the CI, devnet and infrastructure. -
Cardano transactions certification (stable for signer and aggregator):
- Support for Mithril signer memory optimization when signing Cardano transactions with multiple Merkle tree storage backends.
- Support infinite preloading of Cardano transactions in signer.
- Fix Cardano transactions rollbacks creating panics in signer and aggregator.
-
Cardano stake distribution certification (stable for signer and aggregator):
- Implement the signable and artifact builders for the signed entity type
CardanoStakeDistribution
. - Implement the HTTP routes related to the signed entity type
CardanoStakeDistribution
on the aggregator REST API. - Added support in the
mithril-client
library for retrievingCardanoStakeDistribution
by epoch or by hash, and for listing all availableCardanoStakeDistribution
. - Implement
CardanoStakeDistribution
commands under the--unstable
flag in the Mithril client CLI to list all availableCardanoStakeDistribution
and to download artifact by epoch or hash. - Implement
mithril-client
library functions related toCardanoStakeDistribution
within the WASM library. - Add new tab Cardano Stake Distribution in the explorer.
- Implement the signable and artifact builders for the signed entity type
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.63 |
mithril-client | 0.8.18 |
mithril-client-cli | 0.9.12 |
mithril-client-wasm | 0.4.1 |
mithril-common | 0.4.51 |
mithril-signer | 0.2.182 |
mithril-stm | 0.3.29 |
-
mithril-aggregator
node produces artifact for different signed entity types in parallel. -
Fix
Agency is theirs
error in theChainReader
when the underlyingChain sync
client does not have agency. -
Support for
Cardano node
9.1.0
in the signer and the aggregator. -
Support better disk configuration in terraform deployments with the CI/CD workflows.
-
UNSTABLE Cardano transactions certification:
- Make Cardano transaction signing settings configurable via the CD.
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.50 |
mithril-client | 0.8.10 |
mithril-client-cli | 0.9.9 |
mithril-client-wasm | 0.3.8 |
mithril-common | 0.4.38 |
mithril-signer | 0.2.170 |
mithril-stm | 0.3.26 |
-
Provide a feature to the
mithril-client
crate to allow selection of the TLS implementation used by the dependentreqwest
crate. -
Implement a reset mechanism for mutable resources returned to a pool (
ResourcePool
) to keep it in a consistent state. -
Implement a lock mechanism on
SignedEntityType
to prevent concurrent work on a same entity type. -
Extended CI build and test steps for MacOS
arm64
runners and include pre-built binaries for MacOSarm64
in the releases. -
Add a regularly run upkeep task to the
mithril-aggregator
andmithril-signer
to clean up stale data and optimize their databases. -
Support for
Cardano node
9.0.0
in the signer and the aggregator. -
Refactor the Cardano node configuration in the infrastructure.
-
Add prettier configuration to standardize the code formatting in the repository.
-
Field
beacon
becomes optional inCertificatePendingMessage
response of/certificate-pending
route. -
UNSTABLE Cardano transactions certification:
- Optimize the performances of the computation of the proof with a Merkle map.
- Handle rollback events from the Cardano chain by removing stale data.
- Preload Cardano transactions and Block Range Roots at signer & aggregator startup.
- Chunk the Cardano transactions import in
mithril-signer
to reduce disk footprint by running the pruning process more frequently. - Add a database connection pool on the Cardano transaction repository for increased performances of the prover.
- Import Cardano transactions with Chain Sync mini protocol and Pallas chain reader.
- Avoid aggregator and signer being blocked when importing the Cardano transactions.
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.40 |
mithril-client | 0.8.7 |
mithril-client-cli | 0.9.6 |
mithril-client-wasm | 0.3.7 |
mithril-common | 0.4.29 |
mithril-signer | 0.2.161 |
mithril-stm | 0.3.24 |
-
BREAKING changes in Mithril client CLI:
- The deprecated
snapshot
command is removed from the Mithril client CLI - Use the
cardano-db snapshot
command instead.
- The deprecated
-
Update website and explorer user interface to use the new mithril logo.
-
UNSTABLE Cardano transactions certification:
- Support computation of the Cardano Transactions signature and proving with the pre-computed Block Range Merkle Roots retrieved from the database.
- Prune Cardano Transactions from the signer database after the Block Range Merkle Roots have been computed.
- Implement a Chain Reader which retrieves blocks from the Cardano chain with Pallas through the
chainsync
mini-protocol. - Implement a Resource Pool and use it for caching Block Range Merkle maps used by the Cardano transactions prover and improving the throughput.
- Change the beacon of the Cardano Transactions to a block number instead of an immutable file number.
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.16 |
mithril-client | 0.8.3 |
mithril-client-cli | 0.9.2 |
mithril-client-wasm | 0.3.3 |
mithril-common | 0.4.13 |
mithril-signer | 0.2.141 |
mithril-stm | 0.3.22 |
-
BREAKING changes in Mithril client CLI:
- Certificate chain structure has been modified to remove coupling with immutable file number.
- Client needs to be updated to verify certificate chain.
-
Support incremental import for Cardano Transactions instead of scanning the whole immutable database for every signing round.
-
Chain observers support the retrieval of the current Cardano chain point.
-
Deprecate
portable
feature ofmithril-stm
andmithril-client
:- Instead, always enable BLST
portable
feature inmithril-stm
for runtime check of intel ADX instruction set. portable
feature now has no effect and should be removed from crate dependencies.- Removed it from all other crates (including
mithril-common
).
- Instead, always enable BLST
-
Switched memory allocator to
jemallocator
on signer and aggregator to avoid memory fragmentation when signing transactions (which lead to RES memory not being properly returned to the OS). -
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.5.0 |
mithril-client | 0.8.0 |
mithril-client-cli | 0.8.0 |
mithril-client-wasm | 0.3.0 |
mithril-common | 0.4.0 |
mithril-signer | 0.2.130 |
mithril-stm | 0.3.19 |
-
GitHub release: https://github.com/input-output-hk/mithril/releases/tag/2412.0
-
DEPRECATED the
snapshot
command in the Mithril client CLI:- Renamed to
cardano-db snapshot
. - Will be removed in 2 distributions.
- Renamed to
-
Support for
Prometheus
endpoint for metrics in signer (setup guide). -
Full support for chain observer with
Pallas
in signer and aggregator. -
Support for
Cardano node
8.9.0
in the signer and the aggregator. -
Bug fixes and performance improvements.
-
Crates versions:
Crate | Version |
---|---|
mithril-aggregator | 0.4.49 |
mithril-client | 0.6.9 |
mithril-client-cli | 0.7.6 |
mithril-client-wasm | 0.2.5 |
mithril-common | 0.3.21 |
mithril-signer | 0.2.116 |
mithril-stm | 0.3.17 |