Skip to main content

55 posts tagged with "ledger"

View All Tags

· 2 min read
Kevin Hammond

Issue Caused by Large Reference Scripts on Cardano Mainnet

On 25th June 2025, a Cardano user inserted a series of transactions, each containing 194 large reference scripts onto the mainnet chain, funded from 3 wallets containing around 20K ada each. High deserialisation costs for these reference scripts impacted the node, resulting in network disruption to block producer nodes, an increase in network load, and some slowdown in transaction throughput.

The direct effect lasted about 12 hours until it was stopped by a community member, at a cost of 4603 ada to the user who had created the transactions. Overall, the network responded extemely well to the increased load, showing a high level of resilience, with some reduction in transaction throughput related to the overall high system load. The community response to the event was positive, praising the speed of response, the robustness of the Cardano network, the cohesion of the Cardano community, and its ability to diagnose and manage issues such as this.

Mitigations Deployed

The general issue had already been identified, and a mitigation (costing for reference scripts) had been prepared as part of the Chang hard fork, but not yet deployed to mainnet. Based on the event, stronger mitigations were prepared, including restricting large reference scripts, and changing the cost model. These mitigations were deployed via node versions 8.9.4, 8.12.1 or 8.12.2, and incorporated into node version 9.0.0 or later for the Chang hard fork.

Public Reports on the Incident

Coindesk Report

Nasdaq Report

· 3 min read
Alexey Kuleshevich

High level summary

One specific Conway feature that received a lot of debate has finally been implemented, namely disallowing stake credentials from withdrawing rewards, that are backed by a key hash and have not delegated to any DRep. This feature will go into effect after the bootstrap phase.

A whole lot more tests were added and few minor bug fixes have been implemented as well. In particular GovInfoEvent ledger event has been fixed, which is unlikely to affect anyone, but it is worth pointing out. Ledger state deserialization bug was fixed that was necessary for the cardano-node-9.1.1 release. Some tech dept was taken care of, like cleanup of unnecessary predicate failures and fixing some flaky tests from Byron and Alonzo eras.

Low level summary

Features

  • pull-4218 - Remove maxMajorPV from Globals
  • pull-4589 - Fix deserialization of bad Ptrs in IncrementalStake
  • pull-4555 - Disallow withdrawals to non-delegated keyhashes post-bootstrap
  • pull-4600 - Stop reporting invalid refund when stake credential is not registered
  • pull-4604 - Fix enacted Set in GovInfoEvent
  • pull-4616 - Change ConwayWdrlNotDelegatedToDRep to wrap KeyHashes
  • pull-4609 - Removed DRepAlreadyRegisteredForStakeKeyDELEG

Testing

  • pull-4565 - ENACT conformance
  • pull-4541 - Fix failing tests in cardano-ledger-alonzo-test
  • pull-4585 - Fixes a property test "Ran out of tries on suchThatT"
  • pull-4543 - Increased the probability of generating the same hash more than once
  • pull-4574 - Byron: Force startTime in genesis data to be strict
  • pull-4596 - fix both reproduceable failures
  • pull-4586 - Byron: Fix failing ts_prop_elaboratedCertsValid test by moving mainnet-genesis.json to the appropriate path
  • pull-4584 - Sort Proposals when translating to SpecRep
  • pull-4546 - Ts additions prime spec cert steps
  • pull-4607 - Refactor debug tracing of QuickCheck discards
  • pull-4597 - DELEG Imp spec

Infrastructure and releasing

  • pull-4578 - Stop generation of haddock for internal modules
  • pull-4611 - Fix haddock: remove --show-all to test
  • pull-4569 - Fix fourmolu version for pre-commit shell
  • pull-4587 - docs: update README.md
  • pull-4591 - cardano-node-9.1 backport: Implement a fix for inability to deserialize pointers in Conway
  • pull-4590 - cardano-node-9.2 backport: Implement a fix for inability to deserialize pointers in Conway
  • pull-4593 - Plutus 1.33
  • pull-4614 - Changelog for cardano-node-9.2
  • pull-4608 - Remove dependency bounds on QuickCheck

· 2 min read
Alexey Kuleshevich

High level summary

Ledger team continued working on conformance tests and other improvements to the ledger test suite. There was a lot of communication with community members and other core teams about the upcoming hard fork. Some of the Conway specific changes that could affect DApp developer where documented:

There was a minor bug discovered and fixed in how DRep expiration was initialized, which doesn't have any impact on the upcoming Chang hard fork, since DReps cannot affect ratification during the bootstrap phase.

Low level summary

Features

  • pull-4547 - Drep registration expiration fix
  • pull-4554 - Fix cddl hash data comment
  • pull-4550 - ADR for fee computation changes in Conway
  • pull-4570 - Fix wording in the spec where unclaimed rewards go into treasury

Testing

  • pull-4529 - Alternative Agda cert- steps in conformance tests
  • pull-4528 - Add tools for debugging CBOR dumps
  • pull-4548 - Enable QuerySpec in cardano-ledger-api for both Conway versions
  • pull-4561 - Configure Imp tests with realistic SPO voting thresholds
  • pull-4579 - Added overlooked no registered test for RegCert
  • pull-4576 - Remove minMajorPV and maxMajorPV from Constants

Infrastructure and releasing

  • pull-4534 - Use compression for archiving
  • pull-4551 - Add GHA check for formal spec SRP validity
  • pull-4558 - Stop including VCS directories in data passed to test jobs
  • pull-4562 - Fix incorrect version in Conway CHANGELOG
  • pull-4560 - cardano-node 9.2 release test suite fix
  • pull-4573 - Fixup changelogs and versions

· 2 min read
Alexey Kuleshevich

High level summary

Some minor new features have been added, namely ledger state queries that are necessary for figuring out votes for current proposals and functionality for computing the size of transaction necessary for network communication. Other than that most of the focus still continued to be on improving Conway testing coverage and addition of conformance tests.

Low level summary

Conway

  • pull-4514 - Add governance related state queries
  • pull-4521 - Added method to compute over-the-wire CBOR encoded transaction size

Testing

  • pull-4518 - Made conformsToImpl discard generator failures
  • pull-4508 - Make Imp tests setup more realistic
  • pull-4496 - Enable conformance testing for RATIFY
  • pull-4544 - Updated translation of UnRegDRep deposit

Infrastructure and releasing

  • pull-4531 - Free up disk space in the GHA CI runner before building
  • pull-4526 - cabal.project: Bump index-states and remove allow-newer
  • pull-4532 - Fix cardano-ledger-core version
  • pull-4536 - Bump plutus to 1.32.0.0
  • pull-4537 - GHA: fix cabal version mismatch between build and test job
  • pull-4540 - Free up disk space in the GHA CI runner before testing
  • pull-4545 - Update formal-ledger-specifications SRP

· 2 min read
Alexey Kuleshevich

High level summary

Same as with the prior report we are focusing on testing Conway features and conformance testing. One bug was discovered and fixed as a result of this testing, which would only have affected Conway functionality until after the bootstrap phase is over. We also finished fully defining Conway CDDL specification in Haskell.

Low level summary

Conway

  • pull-4516 - Use motionNoConfidence drep thresholds to ratify NoConfidence
  • pull-4503 - Improvements to plutus debug

Testing

  • pull-4485 - Improvements for GOVCERT conformance test
  • pull-4495 - Update executable ledger spec
  • pull-4494 - Added minitracing over things with ExecSpecRule instances
  • pull-4440 - Implement more tests in Alonzo.Imp.UtxowSpec.Invalid
  • pull-4493 - constrained-generators: some special-case hooks for the prettyprinter
  • pull-4501 - constrained-generators: Add a callback to saturate constraints
  • pull-4483 - constrained-generators: Start on a tutorial / cheat sheet
  • pull-4437 - Test Conway CDDL using Cuddle
  • pull-4506 - Fix PParams and PParamsUpdate field order for conformance tests
  • pull-4510 - Auto-generate Conway CDDL using Cuddle

Infrastructure and releasing