Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial pass at pparams testing #217

Merged
merged 5 commits into from
Jun 2, 2024

Conversation

Quantumplation
Copy link
Contributor

This is a first pass at testing the implementation of fold_pparams, as described in #180

In particular, it only checks that the resulting fold results in the correct major protocol version, until we add serialization/deserialization to the MultiEraProtocolParams object (which is what I'll work on next). After we have that serialization, I'll drop the different protocol-parameters.json files into src/ledger/pparams/test_data/mainnet/expected_params and update the tests.

This tries to integrate / document the information / reality of how protocol versions have historically been treated; in particular, there is a protocol version that is used to negotiate in the networking stack, and there's a protocol version (maybe better called a ledger version) that is used to determine the semantics of the ledger, and they used to not agree.

I'm still not sure my comments are correct, or that I have a perfect grasp on this, but I plan to sync with @JaredCorduan on this when he has some spare cycles.

Some other things that might be useful to do:

  • Add a small local utility to test_data for "refreshing" this test data?
    • These kinds of black-box tests will be quite common, so having a pattern for being able to refresh the test data with examples from the new era would be helpful
  • Move the pparams handling into pallas itself
    • Probably best for me to leave this to @scarmuega, as he has a better vision for how everything is going to fit together

Source:
https://github.com/cardano-foundation/CIPs/blob/master/CIP-0059/feature-table.md

Also, based on a dump of byron-era protocol upgrades, the first upgrade has protocol version 0.
Adds some handling for the intra-era hardforks up through conway.
Also tries to document some of the quirks with interpreting different
version numbers etc.
Uses the `crawler` example from pallas to grab a bunch of mainnet update proposals.
Tests that folding to each of these epochs works and produces the correct protocol version.

The assertion here is just on the protocol version, with a pending todo to test this more
thoroughly once we can serialize / deserialize the interim protocol parameter files.
@scarmuega
Copy link
Member

amazing!

yes, I can move it to pallas after the next release.

@scarmuega scarmuega merged commit ce9d59f into txpipe:main Jun 2, 2024
@Quantumplation Quantumplation deleted the pi/test-pparams branch June 3, 2024 01:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants