Skip to main content

· One min read
Damian Nadales

High level summary

For the past two weeks the Consensus team:

  • Resumed work on implementing the initialization and internals of the second iteration of the in-memory ledger database.
  • Resumed work on integrating the new ledger database API for UTxO HD.
  • Simplified query versioning for downstream users (863 and 403).
  • Confirmed the cause of missed leadership checks due to ledger snapshots (868).
  • Derived principles for the versioning/declaration of queries, since Conway complicates it (864 and 866).
  • Unblocked the Node Team in the work on rollback-insensitive leadership schedule queries (4765).
  • Drafted the (Pre-Genesis) Bootstrap State Machine (808).

· 4 min read
Alexey Kuleshevich

High level summary

Major Conway related development was the refactoring of how we distinguish Plutus language versions in every era, thus drasticly improving the type safety and getting us much closer to PlutusV3 integration.

There has also been many bug fixes and improvements since the last update. Some important bug fixes are:

  • missing "protocolVersion" field in JSON instance for Babbage and Conway protocol parameters
  • requiring witnesses for DRep registration
  • new committee governance action ratification was implemented incorrectly
  • guard against invalid protocol versions in hard fork initiation proposals
  • failures during updates of Plutus CostModels were not retained
  • fixed the types for some protocol parameters in order to prevent values that are too large
  • serialization and CDDL fixes

A few useful features have been also implemented, like new ledger events, doubling the limit for Url length, consensus query, JSON instances and so on. It was also required for testing to implement a reliable transaction fee estimation function, which is now available not only for testing, but also for cardano-cli.

Low level summary

Conway

  • pull-3915 - Utilize Inject type class for Val's inject
  • pull-3899 - Bring Plutus language version to the type level
  • pull-3917 - Ensure DRepRegistration certificate requires a witness
  • pull-3921 - Fix committee validation in Ratify
  • pull-3935 - Fixed a bug in Conway.Rules.Gov
  • pull-3956 - Allow 128 byte Url and DnsNames for decoder version atleast 9.
  • pull-3954 - Fix how we update CostModels
  • pull-3947 - Change the type of some pparam fields to align with how they are represented in Consensus
  • pull-3951 - Conway genesis DRep injection
  • pull-3961 - Switch ContextError to an injective type family from a data family
  • pull-3963 - Abstract getWitsVKeyNeeded
  • pull-3933 - Improve cbor serialization of TxWits in Conway
  • pull-3971 - ToJson instances for context error
  • pull-3977 - Added GetAccountStateQuery
  • pull-3975 - Add policy hash protection to TreasuryWithdrawals and ParameterChange

Testing

  • pull-3892 - Translate DRep expiry test from ConwayFeatures to Imp GovSpec
  • pull-3913 - Add certs to conformance testing
  • pull-3911 - Add a Preds to generate valid GovActionStates.
  • pull-3929 - Improve comment on unit_interval in cddl
  • pull-3950 - Use discard to avoid bad traces for fixOutput
  • pull-3935 - Add some Imp tests for HardForkInitiation.
  • pull-3964 - Ignore thunks in utxosDeposited
  • pull-3962 - Add estimateMinFeeTx
  • pull-3976 - Introduce accurate min fee calculation function: calcMinFeeTx

Improvements

  • pull-3930 - Change type of mintedTxBodyL to PolicyID
  • pull-3924 - Split type classes out of eras Core module
  • pull-3934 - Type safety bugfixes
  • pull-3949 - Add FromJSON BabbagePParams instance
  • pull-3953 - Babbage / Conway PParams JSON serialization
  • pull-3946 - Epoch interval instances
  • pull-3932 - Add ledger event TxUTxODiff
  • pull-3969 - Add missing stake key deposit in formal spec
  • pull-3973 - Move functionality of Cardano.Ledger.Pretty to Test.Cardano.Ledger.Generic.PrettyCore

Releasing

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team worked on implementing the client in the explorer to enable direct verification of certificates from the browser. They also addressed the configuration issue in the signer node service, which occasionally resulted in signers not registering their keys after a restart. Additionally, the team kept implementing a mock aggregator to strengthen Mithril client tests in WASM, continued working on threat modeling and risk analysis for P2P networking, and progressed with the devnet upgrade to support the Conway era.

Finally, they worked on enhancing node communications between Mithril and Cardano and completed the upgrade of the Cardano node topology used in the Mithril networks' infrastructure.

Low level overview

  • Published a development blog post Mithril signer service new configuration
  • Completed the issue Simplify Mithril client CLI download command #1406
  • Completed the issue Make all infra Cardano nodes use P2P topology #1405
  • Completed the issue Implement ChainObserver adapter configuration in aggregator #1396
  • Completed the issue Fix signer node service setup #1404
  • Worked on the issue P2P threat modeling and risk analysis #1350
  • Worked on the issue Implement a fake standalone aggregator #1397
  • Worked on the issue Implement the mithril client WASM package in the explorer #1409
  • Worked on the issue Light Wallet: Implement browser tests with fake aggregator #1407
  • Worked on the issue Activate babbage/conway eras on devnet #1425
  • Worked on the issue Upgrade Cardano node to 8.7.2 #1410
  • Worked on the issue Create a test network on SanchoNet #1173
  • Worked on the issue Enhance Mithril/Cardano node communication #1315

· 2 min read
Marcin Szamotulski

High-level overview of sprint 52

Happy New Year!

In this short sprint we analysed a failure which happened on a new large cluster that's run by IOG. The process exhausted all file handles and was left without any functional connections. The issues apparently is rare, and thus doesn't impose a high risk.

We also continued working on tx-submission: ouroboros-network-3311.

Detailed description

It turned out that the process exhausted the number of file handles leaking multiple /proc/{PID}/stat files open. We suspect that the bug is caused by

  • using lazy IO in iohk-monitoring-framework, and
  • using a recent kernel version

With lazy IO file handles are read as long as the data is required and they are closed only when EOF is reached. We currently suspect that a new linux kernel added something at the end of the /proc/{PID}/stat which is not parsed by iohk-monitoring-framework, so whenever the file is read we leak it (it's never closed) and eventually, there are no file handles to be used by the network layer: the accept loop doesn't return any inbound connection, neither an outbound connection can be created. This issue will be addressed by the profiling team (which owns the logging subsystem).

The fix will be proposed in the future release, in the meantime we suggest to keep observing file handles used by the node.

I would like to thank John Lotoski (IOG), Karl Knutsson (CF), Neil Davies (PNSol) and Michael Karg (IOG) who all contributed to this analysis.

While analysing the log we also found a few smaller issues in the outbound governor which were fixed in [ouroboros-network-#4764].

The IO error indicating exhausting file handles is not currently visible. It is not re-thrown nor logged. This needs to be fixed in a future version. See ouroboros-network-4769.

· One min read
Sebastian Nagel

High-level summary

In between the end-of-year holidays, the Hydra team completed the implementation of the Conway support feature, fixed a minor bug that was hindering tests from running on MacOS, and addressed a regression in the protocol-parameter formats used by the hydra-node. They also worked on off-chain code for incremental decommits, specifically focusing on transaction creation. Furthermore, they conducted a spike on implementing a Chess game using Hydra, with an experience report provided.

What did the team achieve this week

  • Fixed a regression on protocol-parameter formats used by the hydra-node #1226
  • Fixed a minor bug prohibiting tests running on MacOS #1218
  • Complete conway support feature #1227
  • Transaction creation off-chain code for incremental decommits #1218
  • First spike on implementing a Chess game on Hydra report, related to: #1098

What are the goals of next week

  • Fully resolve protocol parameter misalignment #1234
  • Cut a release 0.15.0 to ship offline-mode and conway support
  • Prepare demo for conway support
  • Complete transaction creation and observation for incremental decommits
  • Backend for a hydra-explorer that can track all heads on-chain