chore: Update tx-generator cardano-node master ref
Signed-off-by: Chris Gianelloni <[email protected]>
Signed-off-by: Chris Gianelloni <[email protected]>
Signed-off-by: Chris Gianelloni <[email protected]>
This commit removes out-of-spec test data generated by the weighted Fait-Accompli prototype written in rust. This prototype accepts target commitee sizes beyond the number of pools with strictly positive stake, whereas both our model and implementation turn such cases into an error. To keep the conformance testing consitent, rust_results.json now only contains the results up to a target committee size of 2052, corresponding to the number of pools with strictly positive stake in the example weight distribution. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit defined the weighted Fait-Accompli with local soritition voting scheme (WFALS) using the separate WFA and LS components. This includes the definition of both persistent and non-pesistent abstract votes and abstract certificates. NOTE: it is the job of the low-level vote and certificate implementation to provide the plumbing needed to convert between abstract and concrete values, possibly allowing the same concrete definitions to work with multiple voting commitee implementations. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit reorganizes the existing model and conformance test infrastructure for WFALS in anticipation to the the tests for the real implementation implemented in the next commit. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit adds conformance tests for the real WFALS implementation. In particular, we chech that the real implementation matches both the precomputed output of the rust prototype as well as the WFALS model against random stake distributions and target committee sizes. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit defines some common test helpers used by the upcoming property and conformance tests for both WFALS and EveryoneVotes. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit uses the previously defined BLS-based crypto helpers to implement a TestCrypto scheme to be used by the upcoming property tests for WFALS and EveryoneVotes. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements EveryoneVotes a simpler alternative to WFALS where every voter with non-negative stake is entitled to vote. This exists as a baseline to run benchmarks against later on. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements property tests for the EveryoneVotes implementatation asserting that: * votes cast by eligible voters are successfully verifiable under the same voting committee, and * fake (illegal) votes are successfully rejected Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements the local sortition fallback scheme needed by wFA^LS to allocate non-persistent voters. Each non-persistent voter provides a VRF output that gets normalized and compared against the output of a numerically-stable stake-weighted Poisson distribution. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements BLS-based crypto helpers to simplify the implementation of crypto schemes used for voting committees. It includes both single and aggregate signature and VRF signing and verification, as well as swap-attack-resistant aggregate VRF verification via linearization. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements a generic interface that can be used to instantiate multiple voting committee schemes using multiple crypto backends for vote and certificate signing and validation. The main CryptoSupportsVotingCommittee type class allows implementations to define abstract votes and certificate types, check when a node should vote, and forge and verify certificates and votes. In addition, it provides a wrapper that allows us to keep track of two simultaneous voting committees, the one corresponding to the current epoch, and the one from the previous one. This is needed to validate votes and certificates arriving slightly late at the beginning of a new epoch. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements the deterministic core of the weighted Fait-Accompli algorithm using a precomputed extended stake distribution, shareable across multiple voting committees running on the same epoch. The implementation includes a tiebreaker mechanism to allow altering the order of pools with the same stake when the threshold index between persistent and non-persistent voters would land between them. This can later be instantiated to allow for a fair split across epochs. Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
This commit implements property tests for the real WFALS implementatation asserting that: * votes cast by eligible voters are successfully verifiable under the same voting committee, and * fake (illegal) votes are successfully rejected Co-authored-by: Nicolas BACQUEY <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Agustin Mista <[email protected]>
Additive-then-remove strategy: add ledger-native paths alongside cardano-api, migrate consumers one module at a time (each commit compiles), then atomically remove cardano-api in a single commit. 51 tasks across 5 phases (A-E). Covers pin bump, new type paths, consumer migration, atomic removal, and verification.