Skip to main content

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released a new one-line installer for the pre-built Mithril binaries, simplifying the update process for SPO signers. They also published an overview of the protocol security on the documentation website. The team began implementing a new type of certification for the Cardano database to enable differential updates, scaffolding a new signed entity type, and progressing on the computation of the message to sign. Additionally, they adapted the WASM client npm package to support NodeJS and started working on a cache for certificate verification in the WASM client.

Finally, the team completed the removal of legacy store adapters from the codebase and explored solutions for signer registration in networks with multiple aggregators.

Low level overview

  • Published a dev blog post about the new One line installer for Mithril binaries
  • Released a new protocol Security page on the documentation website
  • Completed the issue Make client WASM npm package compatible with NodeJS #2091
  • Completed the issue Schedule nightly builds with a workflow dispatcher #2092
  • Completed the issue Create new signed entity type for Incremental Cardano DB #2121
  • Completed the issue Get rid of store adapters in signer and aggregator #2118
  • Worked on the issue Handle cache for certificate verification in WASM client #1484
  • Worked on the issue Implement signable builder for Incremental Cardano DB #2122
  • Worked on the issue Activate Pythagoras Mithril era #2034
  • Worked on the issue Explore Signer Registration Solutions #2029
  • Completed the issue Next protocol parameters in status page are invalid #2134
  • Completed the issue Snapshot Client can not deserialize artifact list #2140
  • Completed the issue Preprod Mithril snapshot error #2129

· 2 min read
Alexey Kuleshevich

High level summary

The most notable change this period is extraction of a testing framework ImpSpec that we developed for testing Ledger implementation. This meant extracting reusable functionality, packaging into a seperate library and releasing it to Hackage.

Most of the efforts are still dedicated to improving our tests and working on conformance testing.

Low level summary

Features

  • pull-4765 - Pass epochNo from BBODY instead of re-computing it in downstream rules

Testing

  • pull-4743 - Fix looping issue in constrained-generators
  • pull-4741 - Various executable spec improvements
  • pull-4746 - Added LEDGERS conformance
  • pull-4747 - Fixed translation of StakeReference
  • pull-4700 - Test SPO vote counting
  • pull-4744 - Guardrail in Imp genesis
  • pull-4745 - Extract ImpSpec into its own package
  • pull-4739 - Improve the propagation of explanations when a Spec fails.
  • pull-4755 - constrained-generators: Fix test failure related to narrowing of fold specs
  • pull-4708 - Continue implementing the tests in Alonzo.Imp.UtxowSpec.Valid
  • pull-4756 - Updated spec to fix a conformance failure

Infrastructure and releasing

  • pull-4750 - Update CHaP and Hackage
  • pull-4763 - Move ImpSpec into its own repo
  • pull-4758 - Add a hidden skiplist file for git fsck and a note about using it
  • pull-4759 - Documented RatifyState

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released a new version of the Protocol Insights dashboard. They also completed implementing the new status route in the aggregator and upgraded the explorer to display its information. Additionally, the team completed the refactoring of the beacon used to snapshot the Cardano database and started working on the activation of the Pythagoras Mithril era on the pre-release-preview network.

Finally, they worked on removing the legacy store adapters in the signer and aggregator and explored solutions for signer registration when multiple aggregators are running on a Mithril network.

Low level overview

  • Published a dev blog post about the new Protocol Insights dashboard
  • Completed the issue Create a new /status route in aggregator #2071
  • Completed the issue Remove network field from CardanoDbBeacon #1957
  • Completed the issue Refactor pruning with upkeep service in signer/aggregator #2075
  • Completed the issue Implement the new metrics in the Mithril Protocol Insights dashboard #2076
  • Completed the issue Add command to create Genesis keypair in aggregator #2074
  • Completed the issue testing-preview and testing-sanchonet aggregators panic with FOREIGN KEY constraint failed error #2120
  • Completed the issue Display aggregator status information in explorer #2073
  • Completed the issue Failures of some STM property based tests #2109
  • Worked on the issue Make client WASM npm package compatible with NodeJS #2091
  • Worked on the issue Get rid of store adapters in signer and aggregator #2118
  • Worked on the issue Activate Pythagoras Mithril era #2034
  • Worked on the issue Schedule nightly builds with a workflow dispatcher #2092
  • Worked on the issue Explore Signer Registration Solutions #2029

· 3 min read
Jordan Millar

2024-10-29T00:00:00Z - 2024-11-20T00:00:00Z

High level summary

Major Enhancements

  • Added anchor hash checks to transaction build to validate transaction data integrity
  • Introduced a new check-node-configuration command to verify genesis file hashes
  • Implemented checks to ensure stake addresses in proposals are registered on-chain, preventing potential deposit losses
  • Added options to create constitutional committee members in testnet data generation
  • Released cardano-cli-10.1.1.0 and updated to cardano-api-10.2.0.0

Code Quality and Architecture

  • Removed direct dependencies from ouroboros-* packages, improving module separation
  • Restored stable query commands at the top level for better user experience
  • Refactored various components and removed unused code elements
  • Enhanced transaction submission to print transaction hash for better traceability

API Improvements

  • Added functionality to extract anchor data from certificates
  • Improved Value parser parameterization based on transaction role
  • Exposed necessary functions and types from underlying libraries
  • Restored aarch64 architecture support
  • Updated error handling for Plutus script failures

Testing Enhancements

  • Added supplemental datum Plutus test
  • Added verification checks for stake registration/deregistration
  • Improved test infrastructure for proposal anchors and constitution

cardano-cli

cardano-api

cardano-node

cardano-testnet

docs

  • None

CI & project maintenance

· 4 min read
Michael Karg

High level summary

  • Benchmarking: Further Governance action / voting benchmarks on Node 10.0.
  • Development: New protoype for database-backed persistence layer in our analysis tool locli.
  • Workbench: More fine-grained genesis caching; export cluster topology for Leios simulation.
  • Tracing: Final round of metrics alignment complete; prepared for typed-protocols-0.3 bump; new tracing system rollout starting with Node 10.2.

Low level overview

Benchmarking

We've been working on improving the voting workload for benchmarks along two axes: Firstly, reduce the (slight) overhead that decentralized vote submission induces. Secondly, introduce a scaling parameter - namely the number of votes submitted per transaction, and hence the number of proposals to be considered simultaneously for tallying and ratification. On the way, we improved upon timing of submissions, as this has caused benchmarks to abort mid-run every now and then: in those cases, a newly created UTxO entry just hadn't settled across the cluster when it was supposed to be reused for consumption.

Scaling of the voting workload is currently under analysis.

Development

Our analysis and reporting tool, locli ("LogObject CLI") has a few drawbacks as far as system resource usage goes; it requires a huge amount of RAM, and initialization (i.e. loading and parsing trace output) is quite slow. Moreover, there is no intermediate, potentially exposable or queryable, representation of data besides the trace messages themselves.

We're working on a prototype that introduces a database persistence layer as that intermediate representation. Not only does that open up raw benchmarking data to other means of querying or processing outside locli. Initializing the tool from the database has also shown to require much less RAM, and to improve duration of the initialization phase. Furthermore, on-disk representation is much more efficient that way - which is no small benefit when raw benchmarking data for a single run can occupy north of 64GiB.

The prototype has yet to be fully integrated into the analysis pipeline for validation, however, initial observations are promising.

Workbench

For our benchmarks, we rely on staked geneses, as the cluster needs control all stake, and such, block production, to yield meaningful performance metrics. As creating a staked genesis of that extent is an expensive operation, we use a caching mechanism for those. Small changes in the benchmarking profile, such as protocol version or parameters, Plutus cost models or execution budgets would usually trigger the creation of a new cache entry. We've now factored out from cache entry resolution all those variables that do not impact staking itself. We then created a mechnanism to patch those changes into genesis files after cache retrieval, when preparing them for a benchmarking run. This adds flexibility for creating profiles, and reduces the time to deploy a run to the cluster.

We also delivered a comprehensive description of our cluster to the Leios innovation team. This includes the definition of our artificially constrained topology, as well as a latency matrix for node connections in that topology, assigning a weight to all edges in the graph. The Leios team intends to use that material to implement a large-scale simulation of the algorithm, and thus gain representative timings for diffusion and propagation.

Tracing

The alignment of metrics names between legacy and new tracing system is now complete - which should minimize the migration effort of existing dashboards for the community. The only differences that remain are motivated by increasing compliance with existing standards like e.g. OpenMetrics. Furthermore, a few metrics still missing in the new system have now been ported over, such as node.start.time or served.block.latest.

We're all set for the expected bump to typed-protocols-0.3: both forwarder packages trace-forward and ekg-forward for the new tracing system have been adapted to the new API and are passing all tests.

Last not least, we've settled on a rollout plan for the new tracing system. The new system will set to be the default with the upcoming Node release 10.2. This is achieved by a change of configuration only - there is no need for different Node builds. The cardano-node binary will contain both tracing systems for a considerable grace period: 3 - 6 months after release. This should give the community ample time to adjust for necessary changes in downstream services or dashboards that consume trace or metrics output.

We'll provide a comprehensive hands-on migration guide summarizing those changes for the user.