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

TxInfo memoization #4854

Merged
merged 4 commits into from
Jan 30, 2025

Implement memoization of Plutus script context computation

6caaebf
Select commit
Loading
Failed to load commit list.
Merged

TxInfo memoization #4854

Implement memoization of Plutus script context computation
6caaebf
Select commit
Loading
Failed to load commit list.
IOG Hydra / ci/hydra-build:x86_64-linux.ghc8107.checks.cardano-ledger-babbage:test:tests succeeded Jan 30, 2025 in 6h 5m 13s

Build succeeded

1 failed steps

Details

Failed Steps

Step 1

Derivation

/nix/store/3igv0nkny3fqc25wwhr8k8glbl8irz8d-cardano-ledger-babbage-test-tests-1.11.0.0-check.drv

Log

Running phase: unpackPhase
unpacking source archive /nix/store/ixskq9b1f7ri8zy50yx4sdrrvykfr23b-source-eras-babbage-impl-test-tests-root
source root is source-eras-babbage-impl-test-tests-root
Running phase: patchPhase
Running phase: buildPhase
/nix/store/nb8i9a6dqkv4qkz7i8ql4fn58myhvmi5-cardano-ledger-babbage-test-tests-1.11.0.0/bin:
patching script interpreter paths in /build/tmp.8lQ2mq6A90/bin

Babbage
  Golden translation tests
    golden/translation.cbor [✔] (3004ms)
  Upgrade from Alonzo to Babbage
    upgradeTxOut is preserved through serialization [✔] (245ms)
      +++ OK, passed 100 tests.
    upgradeTxCert is preserved through serialization [✔] (122ms)
      +++ OK, passed 100 tests.
    upgradeTxAuxData is preserved through serialization [✔] (1985ms)
      +++ OK, passed 100 tests.
    upgradeTxWits is preserved through serialization [✔] (11570ms)
      +++ OK, passed 100 tests.
    upgradeTxBody is preserved through serialization [✔] (12212ms)
      +++ OK, passed 100 tests.
    upgradeTx is preserved through serialization [✔] (24492ms)
      +++ OK, passed 100 tests.
    upgradeScript is preserved through serialization [✔] (719ms)
      +++ OK, passed 100 tests.
    From: AlonzoTxOut AlonzoEra To BabbageTxOut BabbageEra [✔] (337ms)
      +++ OK, passed 100 tests.
  RoundTrip
    Alonzo era types
      Data BabbageEra [✔] (86ms)
        +++ OK, passed 100 tests.
      BinaryData BabbageEra [✔] (87ms)
        +++ OK, passed 100 tests.
      CostModels [✔] (1117843ms)
        +++ OK, passed 100 tests.
      Datum doesn't roundtrip
        Datum BabbageEra [‐]
          # PENDING: No reason given
    Core Type Families
      MaryValue [✔] (4086ms)
        +++ OK, passed 100 tests.
      CompactForm MaryValue [✔] (14001ms)
        +++ OK, passed 100 tests.
      BabbageTxOut BabbageEra [✔] (351ms)
        +++ OK, passed 100 tests.
      ShelleyTxCert BabbageEra [✔] (116ms)
        +++ OK, passed 100 tests.
      PParams BabbageEra [✔] (1094838ms)
        +++ OK, passed 100 tests.
      PParamsUpdate BabbageEra [✔] (575280ms)
        +++ OK, passed 100 tests.
      AlonzoScript BabbageEra [✔] (757ms)
        +++ OK, passed 100 tests.
      AlonzoTxAuxData BabbageEra [✔] (7017ms)
        +++ OK, passed 100 tests.
      AlonzoTxWits BabbageEra [✔] (10084ms)
        +++ OK, passed 100 tests.
      BabbageTxBody BabbageEra [✔] (27852ms)
        +++ OK, passed 100 tests.
      AlonzoTx BabbageEra [✔] (43861ms)
        +++ OK, passed 100 tests.
      MemPack/CBOR Roundtrip BabbageTxOut BabbageEra [✔] (140ms)
        +++ OK, passed 100 tests.
    Core State Types
      BootstrapWitness [✔] (25ms)
        +++ OK, passed 100 tests.
      SnapShots [✔] (82700ms)
        +++ OK, passed 100 tests.
      DState BabbageEra [✔] (18129ms)
        +++ OK, passed 100 tests.
      PState BabbageEra [✔] (53337ms)
        +++ OK, passed 100 tests.
      CommitteeState BabbageEra [✔] (639ms)
        +++ OK, passed 100 tests.
      VState BabbageEra [✔] (16789ms)
        +++ OK, passed 100 tests.
      CertState BabbageEra [✔] (102220ms)
        +++ OK, passed 100 tests.
      UTxO BabbageEra [✔] (12343ms)
        +++ OK, passed 100 tests.
    State Types Families
      ShelleyGovState BabbageEra [✔] (3852207ms)
        +++ OK, passed 100 tests.
    State Types
      UTxOState BabbageEra [✔] (4319883ms)
        +++ OK, passed 100 tests.
      EpochState BabbageEra [✔] (4462367ms)
        +++ OK, passed 100 tests.
      NewEpochState BabbageEra [✔] (4776747ms)
        +++ OK, passed 100 tests.
    Predicate Failures
      ShelleyDelegPredFailure BabbageEra [✔] (5ms)
        +++ OK, passed 100 tests.
      ShelleyDelegsPredFailure BabbageEra [✔] (378ms)
        +++ OK, passed 100 tests.
      ShelleyDelplPredFailure BabbageEra [✔] (80ms)
        +++ OK, passed 100 tests.
      ShelleyLedgerPredFailure BabbageEra [✔] (508ms)
        +++ OK, passed 100 tests.
      ShelleyLedgersPredFailure BabbageEra [✔] (838ms)
        +++ OK, passed 100 tests.
      ShelleyPoolPredFailure BabbageEra [✔] (29ms)
        +++ OK, passed 100 tests.
      ShelleyPpupPredFailure BabbageEra [✔] (43ms)
        +++ OK, passed 100 tests.
      BabbageUtxoPredFailure BabbageEra [✔] (11332ms)
        +++ OK, passed 100 tests.
      BabbageUtxowPredFailure BabbageEra [✔] (1962ms)
        +++ OK, passed 100 tests.
      AlonzoUtxosPredFailure BabbageEra [✔] (1025ms)
        +++ OK, passed 100 tests.
  CDDL
    Ruby-based
      coin: MaryValue [✔] (2773ms)
      transaction_body: Annotator (MemoBytes (BabbageTxBodyRaw BabbageEra)) [✔] (7457ms)
      auxiliary_data: Annotator (MemoBytes (AlonzoTxAuxDataRaw BabbageEra)) [✔] (2642ms)
      native_script: Annotator (Timelock * BabbageEra) [✔] (2726ms)
      plutus_data: Annotator (MemoBytes (PlutusData BabbageEra)) [✔] (3705ms)
      transaction_output: BabbageTxOut BabbageEra [✔] (2694ms)
      script: Annotator (AlonzoScript BabbageEra) [✔] (2736ms)
      datum_option: Datum BabbageEra [✔] (2684ms)
      transaction_witness_set: Annotator (MemoBytes (AlonzoTxWitsRaw BabbageEra)) [✔] (2650ms)
      protocol_param_update: BabbagePParams StrictMaybe BabbageEra [✔] (9862ms)
      cost_models: CostModels [✔] (16670ms)
      redeemers: Annotator (MemoBytes (RedeemersRaw BabbageEra)) [✔] (2644ms)
      transaction: Annotator (AlonzoTx BabbageEra) [✔] (3218ms)
    Huddle
      coin: MaryValue [✔] (1ms)
      transaction_body: Annotator (MemoBytes (BabbageTxBodyRaw BabbageEra)) [✔] (2564ms)
      auxiliary_data: Annotator (MemoBytes (AlonzoTxAuxDataRaw BabbageEra)) [✔] (167ms)
      native_script: Annotator (Timelock * BabbageEra) [✔] (73ms)
      plutus_data: Annotator (MemoBytes (PlutusData BabbageEra)) [✔] (761ms)
      transaction_output: BabbageTxOut BabbageEra [✔] (184ms)
      script: Annotator (AlonzoScript BabbageEra) [✔] (94ms)
      datum_option: Datum BabbageEra [✔] (180ms)
      transaction_witness_set: Annotator (MemoBytes (AlonzoTxWitsRaw BabbageEra)) [✔] (928ms)
      protocol_param_update: BabbagePParams StrictMaybe BabbageEra [✔] (11049ms)
      cost_models: CostModels [✔] (231135ms)
      redeemers: Annotator (MemoBytes (RedeemersRaw BabbageEra)) [✔] (378ms)
      transaction: Annotator (AlonzoTx BabbageEra) [✔] (216ms)
  Babbage
    RoundTrip JSON
      PParams BabbageEra [✔] (338321ms)
        +++ OK, passed 100 tests.
  Imp
    ShelleyImpSpec
      LEDGER
        Transactions update UTxO [✔] (1209ms)
      EPOCH
        Runs basic transaction [✔] (10406ms)
        Crosses epoch boundaries [✔] (3226ms)
      UTXOW
        Bootstrap Witness
          Valid Witnesses [✔] (2ms)
          InvalidWitnessesUTXOW [✔] (2ms)
        MissingVKeyWitnessesUTXOW [✔] (1ms)
        MissingScriptWitnessesUTXOW [✔] (1ms)
        MissingTxBodyMetadataHash [✔]
        MissingTxMetadata [✔]
        ConflictingMetadataHash [✔]
        ExtraneousScriptWitnessesUTXOW [✔]
      UTXO
        ShelleyUtxoPredFailure
          ValueNotConservedUTxO [✔] (7ms)
    ShelleyPureTests
      StakeDistrIncludesRewards [✔] (18955ms)
        +++ OK, passed 100 tests.
    AllegraImpSpec
      UTXOW
        InvalidMetadata [✔] (3ms)
    MaryImpSpec
      UTXO
        Mint a Token [✔] (16ms)
        ShelleyUtxoPredFailure
          ValueNotConservedUTxO [✔] (1ms)
    AlonzoImpSpec
      UTXO
        Wrong network ID [✔] (1ms)
        PlutusV1
          Too many execution units for tx [✔] (5ms)
          Insufficient collateral [✔] (12ms)
        PlutusV2
          Too many execution units for tx [✔] (5ms)
          Insufficient collateral [✔] (4ms)
      UTXOS
        PlutusV1
          Spending scripts with a Datum
            redeemerSameAsDatum [✔] (2136ms)
            purposeIsWellformedWithDatum [✔] (7414ms)
            datumIsWellformed [✔] (8956ms)
            inputsOutputsAreNotEmptyWithDatum [✔] (4080ms)
          Valid transaction marked as invalid [✔]
          Invalid transaction marked as valid [✔] (33ms)
          Invalid plutus script fails in phase 2 [✔] (11ms)
          Scripts pass in phase 2
            purposeIsWellformedWithDatum [✔] (11ms)
            datumIsWellformed [✔] (9ms)
            inputsOutputsAreNotEmptyWithDatum [✔] (12ms)
          No cost model [✔] (6ms)
        PlutusV2
          Spending scripts with a Datum
            redeemerSameAsDatum [✔] (5963ms)
            purposeIsWellformedWithDatum [✔] (9813ms)
            datumIsWellformed [✔] (4500ms)
            inputsOutputsAreNotEmptyWithDatum [✔] (5617ms)
          Valid transaction marked as invalid [✔] (3ms)
          Invalid transaction marked as valid [✔] (625ms)
          Invalid plutus script fails in phase 2 [✔] (9ms)
          Scripts pass in phase 2
            purposeIsWellformedWithDatum [✔] (7ms)
            datumIsWellformed [✔] (7ms)
            inputsOutputsAreNotEmptyWithDatum [✔] (7ms)
          No cost model [✔] (4ms)
      UTXOW
        Valid transactions
          PlutusV1
            Validating SPEND script [✔] (17ms)
            Not validating SPEND script [✔] (29ms)
            Validating CERT script [✔] (8ms)
            Not validating CERT script [✔] (80ms)
            Validating WITHDRAWAL script [✔] (6ms)
            Not validating WITHDRAWAL script [✔] (59ms)
            Validating MINT script [✔] (17ms)
            Not validating MINT script [✔] (61ms)
          PlutusV2
            Validating SPEND script [✔] (15ms)
            Not validating SPEND script [✔] (45ms)
            Validating CERT script [✔] (25ms)
            Not validating CERT script [✔] (190ms)
            Validating WITHDRAWAL script [✔] (7ms)
            Not validating WITHDRAWAL script [✔] (111ms)
            Validating MINT script [✔] (11ms)
            Not validating MINT script [✔] (130ms)
          Validating scripts everywhere [‐]
            # PENDING: not implemented yet
          Acceptable supplimentary datum [‐]
            # PENDING: not implemented yet
          Multiple identical certificates [‐]
            # PENDING: not implemented yet
          Non-script output with datum [‐]
            # PENDING: not implemented yet
        Invalid transactions
          Phase 1 script failure [✔] (1ms)
          PlutusV1
            MissingRedeemers [✔] (5ms)
            MissingRequiredDatums [✔] (5ms)
            NotAllowedSupplementalDatums [✔] (20ms)
            PPViewHashesDontMatch
              Mismatched [✔] (6ms)
              Missing [✔] (6ms)
            UnspendableUTxONoDatumHash [✔] (8ms)
            No ExtraRedeemers on same script certificates [✔] (51ms)
            Missing phase-2 script witness [✔] (12ms)
            Redeemer with incorrect purpose [✔] (6ms)
            Missing witness for collateral input [✔] (6ms)
            Extra Redeemer
              Minting [✔] (4ms)
              Spending [✔] (16ms)
              Multiple equal plutus-locked certs [✔] (22ms)
          PlutusV2
            MissingRedeemers [✔] (5ms)
            MissingRequiredDatums [✔] (10ms)
            NotAllowedSupplementalDatums [✔] (3ms)
            PPViewHashesDontMatch
              Mismatched [✔] (12ms)
              Missing [✔] (7ms)
            UnspendableUTxONoDatumHash [✔] (46ms)
            No ExtraRedeemers on same script certificates [✔] (26ms)
            Missing phase-2 script witness [✔] (17ms)
            Redeemer with incorrect purpose [✔] (4ms)
            Missing witness for collateral input [✔] (15ms)
    BabbageImpSpec
      UTXOW
        MalformedScriptWitnesses [✔] (4ms)
        MalformedReferenceScripts [✔]
        ExtraRedeemers/RedeemerPointerPointsToNothing [✔] (5ms)
        P1 reference scripts must be witnessed [✔] (1ms)
  CostModels
    CBOR deserialization
      valid CostModels deserialize correctly, both independently and within PParamsUpdate [✔] (142468ms)
        +++ OK, passed 100 tests.
      CostModels with less than expected parameters within PParamsUpdate [✔] (262ms)
        +++ OK, passed 100 tests.
      unknown CostModels deserialize correctly within PParamsUpdate starting with Conway [✔] (39ms)
        +++ OK, passed 100 tests.
    applyPPUpdates [✔] (371989ms)
      +++ OK, passed 100 tests.
  TxWits
    AlonzoTxWits deserialization
      plutus scripts
        fails to deserialize if fields contain an empty collection [✔] (32ms)
          +++ OK, passed 100 tests.
        fails to deserialize if empty or if it contains duplicates, starting with Conway [✔] (84ms)
          +++ OK, passed 100 tests.
        fails to deserialize if empty, starting with Conway [✔] (47ms)
          +++ OK, passed 100 tests.

Finished in 21912.4593 seconds
172 examples, 0 failures, 5 pending
buildPhase completed in 6 hours 5 minutes 12 seconds
post-build-hook: upload /nix/store/05x6pzhkkhbb7i2s17ypqvclzavpwm74-cardano-ledger-babbage-test-tests-1.11.0.0-check
post-build-hook: 171172