Skip to main content

50 posts tagged with "ledger"

View All Tags

· 2 min read
Alexey Kuleshevich

High level summary

Quite a useful and desired feature described in CIP-0110 of allowing reference scripts for PlutusV1 has been implemented for Conway.

For the most part we are now spending time on writing tests and enhancing out tooling that we use for testing. This is paying out dividends since we are finding and fixing important Conway related bugs. Notable bugs that were squashed this time around are related to using incorrect stake distribution for both DReps and Stake Pools.

Low level summary

Conway

  • pull-4059 - Enable Plutus v1 reference scripts in Conway
  • pull-4088 - Committee query improvements
  • pull-4115 - Switch to using the correct stake pool distribution for voting
  • pull-4116 - Fix Drep stake distribution

Testing

  • pull-4100 - PPU wellformedness tests
  • pull-4097 - Test that unwithdrawn rewards contribute to voting power
  • pull-4102 - fix prop_DELEG in STS tests
  • pull-4106 - Imp script fixes
  • pull-4118 - Add test for maps with small domains
  • pull-4119 - NewConstraints phase1. Add BoolFn And and Or and tests
  • pull-4120 - Newconstaints phase2 rename IsUniverse (BaseUniverse), Fn (BaseFn)
  • pull-4130 - Added tests for checking proposal network IDs
  • pull-4114 - Imp Bootstrap address support

Improvements

Specification

Releasing

  • pull-4105 - Update RELEASING with revisioning instructions
  • pull-4117 - Use plutus-ledger-api 1.22.1

· 3 min read
Alexey Kuleshevich

High level summary

Last few weeks were spent mostly on implementing various fixes, writing tests and improving capabilities of our testing frameworks. Important bug fixes are:

  • Retention of Anchor for proposal procedures in the ledger state in order for users to be able to query the node for those anchors
  • JSON serialization of rational numbers in protocol parameters and governance procedures are encoded without loss of precision

Feature wise, we've added a new protocol parameter that controls the contribution of reference scripts sizes in the transaction fee calculation formula.

Major achievement that is worth announcing is a Haskell package named cuddle that we developed over the last few months. Soon we will be transitioning to specifying CDDL in Haskell for all eras using that package. It will be used to compile the CDDL specification that developers in the community rely on so much. There are enormous benefits in using this tool, when compared to writing CDDL specification manually. Namely it allows us to reduce duplication and reuse common and unchanged specification from previous eras. It also improves safety and correctness of our specification and decoders, because it ensures that the specification is well typed and it uses QuickCheck to generate random data for validating that our decoders are implemented according to the spec.

Low level summary

Conway

  • pull-4031 - Further proposals improvements. Take 2
  • pull-3996 - Index aware PlutusPurpose
  • pull-3983 - Include reference scripts size in min fee calculation
  • pull-4040 - Redeemers serialization fixes
  • pull-4033 - Make Conway-specific queries only available in Conway
  • pull-4028 - Embed ProposalProcedure in GovActionState
  • pull-4056 - Reduce duplication in Conway UTXOW rule
  • pull-4055 - Update MinFeeRefScriptCoinsPerByte.
  • pull-4053 - Rename committeeQuorum to committeeThreshold
  • pull-4058 - Fix ToJSON instance of BoundedRatio to avoid precision loss
  • pull-4070 - Rename AsIndex to AsIx
  • pull-4065 - Remove ConwayPool rule definition

Improvements

  • pull-4037 - Add capability to hash Plutus scripts directly
  • pull-4030 - Report Plutus ScriptHash upon execution failure

Testing

  • pull-3895 - Constrained v2
  • pull-3981 - Test proposals rewrite
  • pull-4051 - Full support of random and quickcheck-transformers in impTest
  • pull-4050 - Fixed the "All Tx are valid on traces of length 150" intermittent bug
  • pull-4049 - Support for Plutus scripts in ImpTest
  • pull-4075 - Discontinue the mingw target in the nix build
  • pull-4072 - Fix ouroborus-consensus serialization roundtrip test
  • pull-4080 - Test that a resigned CC cannot be reelected without removal
  • pull-4083 - Fix flakyness at the cost of turning test on during development
  • pull-4084 - Fix intermittent test failures in leader-proportion test

Specification

  • pull-4015 - Shelley ledger spec: amend erratum on nonce stabilization window
  • pull-4064 - Fix wrong prose for new epoch environment
  • pull-4081 - Fix MIR rule using wrong values for treasury and reserves

Releasing

· 2 min read
Alexey Kuleshevich

High level summary

One very important Conway feature that became available since last report is the ability for Stake Pool Operators to vote on some of the security relevant protocol parameter updates. We organized proposal hierarchy into a cohesive implementation, which together with good tests gives us confidence in its correctness.

We also fixed a few important bugs:

  • Preventing Constitutional Committee Members from voting on governance actions that they should not be allowed to vote on.
  • Prevent deposits from appearing in orphaned reward accounts after the staking credential has been unregistered, but before the proposal procedure deposit has been returned.
  • Ensure Sets are encoded in CBOR with tag 258 by default

Further improvements in testing tools and addition of more tests.

Low level summary

Conway

  • pull-3982 - Added SPO voting thresholds for security relevant parameters
  • pull-3978 - Proposals pruning rewrite
  • pull-4003 - Prefix Set encoding with tag 258
  • pull-3999 - Add PParamUpdates to the plutus context, by transforming them to Plutus Data
  • pull-4008 - Fixed a bug in GOV rule
  • pull-4013 - Remove EnactState from ConwayGovState
  • pull-4025 - Further improvements to Proposals
  • pull-4021 - Move unclaimed rewards from proposals to treasury

Testing

  • pull-3997 - Added DRep delegation injections to Conway
  • pull-4023 - Add a function registerInState to EraTransition
  • pull-4005 - Fixes in Shelley Imp framework and other small things
  • pull-4004 - Verify that enacted gov action is removed
  • pull-4016 - Fix Arbitrary instance and invariant checking for Proposals

Improvements

Releasing

· One min read
Alexey Kuleshevich

High level summary

Last week's achievement was that we finished PlutusV3 integration, which a massive piece of work.

Low level summary

Conway

Testing

  • pull-3989 - Fix too many discards.
  • pull-3986 - Remove libs/cardano-ledger-pretty
  • pull-3991 - Imp native script support
  • pull-3993 - Change Test.Cardano.Ledger.Generic.Proof so that there is no more Crypto Evidence.

Releasing

  • pull-3988 - Bump jinja2 from 3.1.2 to 3.1.3 in /doc

· 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