Skip to content

Transaction validation - phase 1 (MS5.6) #200

@sandtreader

Description

@sandtreader

Description

Validate transaction witness signatures and other 'phase 1' items. This equates to transaction validation for Conway Era

Intersect Milestone

MS5.6

Acceptance Criteria

  • "Able to phase 1 validate all existing Transactions (TXs)"
  • Validate from Conway era (M)
  • Validate pre-Conway eras (S)

This means implementing the UTXO and UTXOW rule sets from the Haskell ledger - see lists in #329 and #424, for each era (Shelley, Mary, Allegra ...)

This should output a ValidationResult message on 'cardano.validation.tx-phase-1'. Errors should be typed and reflect the Haskell ledger rule names.

(UTXOW - UTxO Witness)

Expected Deliverables

  • "Transaction Phase 1 validation module"

Actually an upgrade to existing modules TxUnpacker and UTXOState (possibly others as required)

  • "Test cases and reports"

We'll need to show that we can
a) Validate all blocks in Mainnet to a recent tip (considered the source of truth for this)
b) Generate validation failures on a set of injected bad blocks triggering each rule - we think the "Golden Tests" contain these.

Design notes

Note about eras: that most rules are just copied forward. In cases like MIRs where functionality is removed, it simply won't be triggered. So we should have a single ruleset, we don't need to distinguish eras in the code, unless there is some case where the behaviour /changes/ between eras, in which case a simple if statement on the BlockInfo era will suffice.

Sub-issues

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions