Skip to main content

54 posts tagged with "ledger"

View All Tags

· 2 min read
Alexey Kuleshevich

High level summary

Final changes for the next Hard Fork to protocol version 10.0:

  • Ensure that it is still possible to unregister the reward account and withdraw the funds in the same transaction
  • Fix a bug in recently introduced feature, which ensures DRep existence for all stake credential delegations.

More Conway testing and continued progress on conformance tests.

Low level summary

Features

  • pull-4684 - Revert Mismatch-related changes of ShelleyPoolPredFailure serialization
  • pull-4661 - Add GovRemovedVotes event
  • pull-4697 - Minor fixups from internal audit
  • pull-4709 - Fix drep delegation invariant preservation
  • pull-4715 - Adjust semantics of ConwayWdrlNotDelegatedToDRep

Testing

  • pull-4683 - constrained-generators: Improve some error messages
  • pull-4689 - Set maxTxSize relative to generated tx in Utxo conformance tests
  • pull-4680 - constrained-generators: More tests for append and singleton
  • pull-4665 - Remove the proposals workaround from UTXO conformance, add LEDGER conformance
  • pull-4705 - Implement some of the tests in Alonzo.Imp.UtxowSpec.Valid
  • pull-4707 - Add imp tests for drep delegation
  • pull-4677 - Added example Tx specification

Infrastructure and releasing

  • pull-4681 - Update CHANGELOG files following release for 10.0
  • pull-4686 - Bump up version in cardano-ledger-shelley changelog
  • pull-4688 - Add nix develop to main README.md
  • pull-4701 - Ensure repo is buildable on Windows
  • pull-4656 - Align with Governance audit
  • pull-4706 - Add changelog section for cardano-node-10.0 and 9.2.1
  • pull-4710 - Cardano ledger conway 1.17.1.0
  • pull-4716 - Release/cardano ledger conway 1.17.2.0

· 2 min read
Alexey Kuleshevich

High level summary

We implemented the remaining improvements and fixes discovered in Conway, to be fixed during the bootstrap period:

* protection against deposit loses
* ensuring that DReps exist before delegating
* updates to SPO vote threshold calculation
* improved well-formedness check

Additionally, we added two new rules: Mempool and HardFork, that will allow us to flexibly add processing logic in the future. We also dropped pointers for Conway and enhanced predicate failure reporting for pre-Conway eras.

Finally, we added more tests - both unit and conformance tests.

Low level summary

  • pull-4647 - Drop pointers from UMap in Conway
  • pull-4642 - Mempool rule
  • pull-4553 - Address issues in auto-generated CDDL specification
  • pull-4650 - Check ppuCoinsPerUTxOBytes well-formedness
  • pull-4648 - Updated conformance to work with new MAlonzo types
  • pull-4653 - Improve color output in Imp spec
  • pull-4603 - Add more tests for voting behaviour
  • pull-4639 - Prevent non-registered return accounts for proposals' deposits and TreasuryWithdrawals
  • pull-4632 - Export Unsafe constructors for TxBody, TxBodyRaw and MemoBytes
  • pull-4654 - Add applyTxOpts to ApplyTx
  • pull-4657 - HardFork rule
  • pull-4659 - Change how SPO votes are counted
  • pull-4660 - UTXO conformance with Babbage transactions
  • pull-4652 - Ensure dreps exist prior to delegation
  • pull-4649 - Mismatch type for predicate failures
  • pull-4676 - constrained-generators: (++.) and singleton_ for lists
  • pull-4679 - Fixes for release

· 2 min read
Alexey Kuleshevich

High level summary

Aside from more testing and overall quality-of-life improvements on the ledger test suite side, we have implemented a couple of important features that will be enabled after the next intra-era hard fork:

  • Translation of RegTxCert and UnRegTxCert to PlutusV3 scripts context will now be done correctly, which means deposit and refund respectively, will actually be translated.
  • Treasury withdrawals that are empty or sum up to zero will no longer be allowed.

Some performance improvements and a bug fix to a ledger event were also implemented during this period.

Low level summary

Features

  • pull-4623 - Change GovInfoEvent's "unclaimed" field from Set to a Map
  • pull-4627 - Fix Conway implementation of RegTxCert and UnRegTxCert
  • pull-4643 - Improve certificate performance
  • pull-4630 - Disallow empty withdrawals
  • pull-4646 - Don't return ZeroTreasuryWithdrawals failure during bootstrap

Testing

  • pull-4497 - Show coloured tree-diff output in ImpTests
  • pull-4615 - Prevent HSpec from messing with ImpSpec colors
  • pull-4625 - Additional DELEG tests
  • pull-4599 - Move TxInfo golden tests to new package
  • pull-4629 - Add TxInfo golden test for Conway
  • pull-4575 - Ts salvage newtylespecs

Infrastructure and releasing

· One min read
Kevin Hammond

Unexpected Ledger State Replay in the Conway era

An issue was identified shortly before the Chang hard fork: it was found that ledger state snapshots would break ledger replay in the Conway era under mainnet conditions. The ledger and consensus teams worked rapidly to resolve the issue with a hotfix released within 24 hours of the hard fork. In order to avoid pauses in node availability, it was recommended that users should not restart their node process until they had upgraded their node to the hotfix - this included any node type: relays, block producers, DB-Sync nodes, etc.

The issue is documented here. The cause was a slight inconsistency between the ledger state snapshots that were written and those that could be read back; a side effect of the removal of pointer addresses in the Conway era. Nodes version 9.1.1 and later resolve this issue.

Further Details

Node version 9.1.1

GitHub Issue

· 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