Skip to main content

58 posts tagged with "ledger"

View All Tags

· 2 min read
Alexey Kuleshevich

High level summary

Major milestone was reached this period. We've implemented CIP-0069 that improves PlutusV3 functionality by making spending datums optional and enforcing all scripts to have exactly one argument. This feature allows for spending scripts to be usable for other purposes, like minting for example.

Couple of important bugs have been fixed:

  • Script execution for certificates with the same plutus script did not execute correctly.
  • Prevent delegation to a non-existent pool.

With this feature complete and a few bug fixes we were also able to mark Conway era and CIP-1694 as feature complete and ready for release. Naturally, testing of Conway era will continue all the way into the hard fork.

Low level summary

Conway

  • pull-4374 - CIP-0069
  • pull-4394 - Fix Certifying Redeemer issue
  • pull-4400 - Check that the pool being delegated to exists for ConwayDelegCert
  • pull-4409 - Update to plutus-ledger-api-1.30

Testing

  • pull-4384 - Re-enabled Full NewEpochstate test
  • pull-4397 - Add a lens to HasSubState
  • pull-4399 - New simple examples for maps
  • pull-4403 - constrained-generators: Add lookup_ for maps
  • pull-4414 - constrained-generators: Hotfix failing test
  • pull-4411 - constrained-generators: introduce a hook for naming variables

Infrastructure and releasing

  • pull-4424 - GHA: Downgrade the version of actions/upload-artifact
  • pull-4426 - Take care of all compiler warnings for GHC-9.8
  • pull-4407 - Change the default ghc version to 9.6.5
  • pull-4416 - Bump urllib3 from 1.26.18 to 1.26.19 in /doc

· 3 min read
Alexey Kuleshevich

High level summary

This time around we continued on testing the Conway era and improving our conformance tests. Thanks to this extensive testing we found and fixed a few more bugs in the Conway implementation. We fixed bugs related to DRep expiry and the choice of correct threshold for the committee voting. One important feature that was implemented is ignoring the minimun committee size during the bootstrap phase, in order to avoid a deadlock situation in case that enough committeee members were to resign. We've also improved the correctness of our CDDL specification and improved the safety by restricting some of the types of protocol parameters.

Low level summary

Conway

  • pull-4350 - Add identity instance for Inject
  • pull-4361 - Fixed a bug in RATIFY
  • pull-4358 - DRep expiry update with number of dormant epochs
  • pull-4365 - Create pool stake distribution query for voting
  • pull-4376 - Ignore ppCommitteeMinSize during bootstrap
  • pull-4364 - DRep state query and related tests
  • pull-4357 - Specify numeric ranges explicitly in conway cddl files

Testing and formal spec

  • pull-4339 - constrained-generators: introduce tools for controlling test case distribution
  • pull-4348 - Conformance: GOVCERT
  • pull-4213 - Utxow Predicate failure tests
  • pull-4351 - Enable retrying flaky tests in nightly CI
  • pull-4345 - constrained-generators: Add explanation :: [String] -> Pred fn -> Pred fn
  • pull-4362 - Threshold translation in conformance testing
  • pull-4369 - constrained-generators: Add flip_ to avoid having to add new native functions
  • pull-4377 - constrained-generators: propagate information backwards in the solver
  • pull-4389 - Fixed issue #4340. Problem with futurePParams not adequate in Conway.
  • pull-4378 - Conformance: POOL
  • pull-4388 - Improved the translation of PParamUpdate in conformance
  • pull-4355 - Fix order of arguments to verifyVrf

Infrastructure and releasing

  • pull-4352 - Remove dependency on deprecated ansi-wl-print package
  • pull-4344 - constrained-generators: identify and fix an issue with big bodies to ifElse
  • pull-4338 - Add conformance testing for ENACT
  • pull-4354 - Added conformance test for DELEG
  • pull-4367 - Fixed 8.10 not building
  • pull-4368 - Ensure GitHub CI fails when tests are skipped due to a build failure
  • pull-4373 - Add -rtsopts to all test suites

· 2 min read
Alexey Kuleshevich

High level summary

Most of the focus was on the conformance testing this time around. We had completed conformance tests for CERT and RATIFY rules and progressed on some of the others. This also resulted in some improvements to the constraint-generators framework. Besides that we've also fixed Stake Pool Operator stake distribution calculation that is used for voting by including proposal deposits that are currently locked in the system. One of the Ledger team members was also performing duties of a release engineer, so we also facilitated the latest cardano-node-8.11 release.

Low level summary

Features and fixes

  • pull-4324 - Proposal deposits in SPO voting stake
  • pull-4316 - Complete EraScript hierarchy with missing classes
  • pull-4287 - Fix various minor issues in the Shelley & Babbage specs

Testing

  • pull-4320 - CERT conformance
  • pull-4334 - RATIFY conformance
  • pull-4337 - Fix RATIFY conformance
  • pull-4325 - constrained-generators: soundness tests and bugfixes
  • pull-4323 - constrained-generators: clean up interface
  • pull-4336 - constrained-generators: Introduce fromList_ :: (HasSpec fn a, Ord a) => Term fn [a] -> Term fn (Set a)

Infrastructure and releasing

  • pull-4333 - Fix babbage-test and conway-test versions
  • pull-4332 - Update CHANGELOGs
  • pull-4343 - Bump requests from 2.31.0 to 2.32.0 in /doc

· 3 min read
Alexey Kuleshevich

High level summary

Some of the most important and final Conway features were implemented since the last report:

  • Bootstrap phase is fully implemented
  • HardForkInitiaztion governance action will now correctly take us into the next era that will follow the Conway era.
  • DRep stake distribution now also includes the amount in the reward account and deposits that were left for the governance proposals.
  • CostModels updates for plutus scripts made more flexible, which will allow us adding new primitives for all plutus versions starting with the Conway era.

As always, besides new features, we also wrote a lot of testing functionality. We now have our first and fully functional conformance test for a GOV rule, with a few more in the works. Many improvements and bugfixes to constraint based generating functionality. Last, but not least, we did a major and long awaited improvement to our CI setup that makes it much easier to spot failing tests and deal with potential flakiness.

Low level summary

Conway

  • pull-4275 - Restrict gov actions during bootstrap
  • pull-4253 - Hardfork Initiation into a new era
  • pull-4273 - DRepDistr: Iterate over the DRep delegations in UMap
  • pull-4309 - Add proposal deposits to DRep active voting stake.
  • pull-4284 - Flexible costmodel params
  • pull-4328 - Disable drep thresholds in bootstrap

Testing

  • pull-4295 - Improve generator in ImpTestsState
  • pull-4292 - constrained-generators: add genHint for maps
  • pull-4298 - constrained-generators: utility function for asserting over a reified value
  • pull-4300 - constrained-generators: hotfix of latest derp...
  • pull-4297 - constrained-generators: Fix ifElse dependencies
  • pull-4301 - constrained-generators: Add monitoring capability to get a handle on test case distribution
  • pull-4315 - constrained-generators: Improve error messages and make the tree generator reasonably sized
  • pull-4317 - constrained-generators: Fix bug in reifies
  • pull-4299 - Fix strange CI failure.
  • pull-4285 - Start Conway Imp tests with an initial committee and constitution
  • pull-4303 - Fix test caused by erroneous merge
  • pull-4310 - Fix OMap.assocList
  • pull-4268 - Enable conformance tests for GOV rule

Infrastructure and releasing

  • pull-4276 - Use a separate job for each test suite in GitHub CI
  • pull-4304 - Ensure the CI complete step fails when tests fail
  • pull-4308 - Add a CI status check to prevent merging PRs that contain merges
  • pull-4305 - Use the correct iohk action for installing Haskell in GitHub CI
  • pull-4322 - Bump jinja2 from 3.1.3 to 3.1.4 in /doc

· 2 min read
Alexey Kuleshevich

High level summary

Ability to specify CostModel for PlutusV3 in the genesis file was implemented, which will allow us to execute PlutusV3 as soon as we enter Conway era, which is essential for guardrails script. Important bugs that have been fixed:

  • Invalid reporting of InsufficientCollateral and ValueNotConservedUTxO predicate failures. In case of validation failure a confusing deserialization was reported instead of those predicate failures.
  • Calculation of votes for Constitutional Committee Members did not consider expired members correctly.
  • Useful function redeemerPointer was deprecated without good justification.

Besides bugfixes there was a lot of work done on the testing side. Constraint based data generation is receiving continuous improvements. More unit and property tests for Conway era functionality.

Low level summary

Conway

  • pull-4259 - Undeprecate redeemerPointer and expose it in cardano-ledger-api
  • pull-4252 - Add PlutusV3 CostModel to UpgradeConwayPParams
  • pull-4247 - Change the balance in InsufficientCollateral to DeltaCoin
  • pull-4267 - Expand TxAuxData interface
  • pull-4265 - Inline UTxO and UTxOW PredFailure for Conway
  • pull-4281 - Discount expired CC from CC-size calculation
  • pull-4290 - Add NoThunks instance for UTxO pred failures
  • pull-4288 - Fix burning tokens predicate failure

Testing

  • pull-4241 - Add fixup combinators to ImpTest framework
  • pull-4229 - Shrinking for constrained-generators
  • pull-4244 - Imptests: CommitteeMinSize affects in-flight props
  • pull-4269 - Fix generation bug for sums of positive member spec
  • pull-4266 - Add imptest to propose and enact unknown costmodels
  • pull-4261 - constrained-generators cleanup for hackage
  • pull-4279 - constrained-generators: Fix bug in toPreds for maps + add additional tests
  • pull-4272 - simplify foldMap interface to higher order syntax
  • pull-4283 - constrained-generators: add new test to test suite
  • pull-4286 - constrained-generators: refactor reify to reduce the number of binding sites + delay simplification more to avoid variable capture in higher order syntax

Infrastructure and releasing

  • pull-4260 - Bump idna from 3.3 to 3.7 in /doc
  • pull-4277 - Fixed formatting in HowToProfileLedger.md
  • pull-4282 - Bump plutus deps to 1.26
  • pull-4294 - Avoid cancelling scheduled CI when a new merge happens on master