Skip to content

Commit

Permalink
cardano-ledger upgrade: use new predicate failure API with Mismatch
Browse files Browse the repository at this point in the history
  • Loading branch information
neilmayhew authored and lehins committed Dec 20, 2024
1 parent ea81b54 commit a36a72f
Showing 1 changed file with 38 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -353,41 +353,51 @@ instance MaxTxSizeUTxO (ShelleyEra c) where
, mismatchExpected = txSizeLimit }

instance MaxTxSizeUTxO (AllegraEra c) where
maxTxSizeUTxO x y =
maxTxSizeUTxO txSize txSizeLimit =
SL.ApplyTxError . pure
$ ShelleyEra.UtxowFailure
$ ShelleyEra.UtxoFailure
$ AllegraEra.MaxTxSizeUTxO x y
$ AllegraEra.MaxTxSizeUTxO
$ L.Mismatch { mismatchSupplied = txSize
, mismatchExpected = txSizeLimit }

instance MaxTxSizeUTxO (MaryEra c) where
maxTxSizeUTxO x y =
maxTxSizeUTxO txSize txSizeLimit =
SL.ApplyTxError . pure
$ ShelleyEra.UtxowFailure
$ ShelleyEra.UtxoFailure
$ AllegraEra.MaxTxSizeUTxO x y
$ AllegraEra.MaxTxSizeUTxO
$ L.Mismatch { mismatchSupplied = txSize
, mismatchExpected = txSizeLimit }

instance MaxTxSizeUTxO (AlonzoEra c) where
maxTxSizeUTxO x y =
maxTxSizeUTxO txSize txSizeLimit =
SL.ApplyTxError . pure
$ ShelleyEra.UtxowFailure
$ AlonzoEra.ShelleyInAlonzoUtxowPredFailure
$ ShelleyEra.UtxoFailure
$ AlonzoEra.MaxTxSizeUTxO x y
$ AlonzoEra.MaxTxSizeUTxO
$ L.Mismatch { mismatchSupplied = txSize
, mismatchExpected = txSizeLimit }

instance MaxTxSizeUTxO (BabbageEra c) where
maxTxSizeUTxO x y =
maxTxSizeUTxO txSize txSizeLimit =
SL.ApplyTxError . pure
$ ShelleyEra.UtxowFailure
$ BabbageEra.UtxoFailure
$ BabbageEra.AlonzoInBabbageUtxoPredFailure
$ AlonzoEra.MaxTxSizeUTxO x y
$ AlonzoEra.MaxTxSizeUTxO
$ L.Mismatch { mismatchSupplied = txSize
, mismatchExpected = txSizeLimit }

instance MaxTxSizeUTxO (ConwayEra c) where
maxTxSizeUTxO x y =
maxTxSizeUTxO txSize txSizeLimit =
SL.ApplyTxError . pure
$ ConwayEra.ConwayUtxowFailure
$ ConwayEra.UtxoFailure
$ ConwayEra.MaxTxSizeUTxO x y
$ ConwayEra.MaxTxSizeUTxO
$ L.Mismatch { mismatchSupplied = txSize
, mismatchExpected = txSizeLimit }

-----

Expand Down Expand Up @@ -455,37 +465,43 @@ txMeasureAlonzo st tx@(ShelleyTx _txid tx') =
limit = pparams ^. L.ppMaxTxExUnitsL

exunits =
validateMaybe (exUnitsTooBigUTxO limit txsz) $ do
validateMaybe (exUnitsTooBigUTxO txsz limit) $ do
guard $ pointWiseExUnits (<=) txsz limit
Just $ fromExUnits txsz

class ExUnitsTooBigUTxO era where
exUnitsTooBigUTxO :: ExUnits -> ExUnits -> SL.ApplyTxError era

instance Crypto c => ExUnitsTooBigUTxO (AlonzoEra c) where
exUnitsTooBigUTxO x y =
exUnitsTooBigUTxO txsz limit =
SL.ApplyTxError . pure
$ ShelleyEra.UtxowFailure
$ AlonzoEra.ShelleyInAlonzoUtxowPredFailure
$ ShelleyEra.UtxoFailure
$ AlonzoEra.ExUnitsTooBigUTxO x y
$ AlonzoEra.ExUnitsTooBigUTxO
$ L.Mismatch { mismatchSupplied = txsz
, mismatchExpected = limit }

instance Crypto c => ExUnitsTooBigUTxO (BabbageEra c) where
exUnitsTooBigUTxO x y =
exUnitsTooBigUTxO txsz limit =
SL.ApplyTxError . pure
$ ShelleyEra.UtxowFailure
$ BabbageEra.AlonzoInBabbageUtxowPredFailure
$ AlonzoEra.ShelleyInAlonzoUtxowPredFailure
$ ShelleyEra.UtxoFailure
$ BabbageEra.AlonzoInBabbageUtxoPredFailure
$ AlonzoEra.ExUnitsTooBigUTxO x y
$ AlonzoEra.ExUnitsTooBigUTxO
$ L.Mismatch { mismatchSupplied = txsz
, mismatchExpected = limit }

instance Crypto c => ExUnitsTooBigUTxO (ConwayEra c) where
exUnitsTooBigUTxO x y =
exUnitsTooBigUTxO txsz limit =
SL.ApplyTxError . pure
$ ConwayEra.ConwayUtxowFailure
$ ConwayEra.UtxoFailure
$ ConwayEra.ExUnitsTooBigUTxO x y
$ ConwayEra.ExUnitsTooBigUTxO
$ L.Mismatch { mismatchSupplied = txsz
, mismatchExpected = limit }

-----

Expand Down Expand Up @@ -546,17 +562,19 @@ txMeasureConway st tx@(ShelleyTx _txid tx') =
limit = SL.maxRefScriptSizePerTx

refScriptBytes =
validateMaybe (txRefScriptsSizeTooBig limit txsz) $ do
validateMaybe (txRefScriptsSizeTooBig txsz limit) $ do
guard $ txsz <= limit
Just $ IgnoringOverflow $ ByteSize32 $ fromIntegral txsz

class TxRefScriptsSizeTooBig era where
txRefScriptsSizeTooBig :: Int -> Int -> SL.ApplyTxError era

instance Crypto c => TxRefScriptsSizeTooBig (ConwayEra c) where
txRefScriptsSizeTooBig x y =
txRefScriptsSizeTooBig txsz limit =
SL.ApplyTxError . pure
$ ConwayEra.ConwayTxRefScriptsSizeTooBig x y
$ ConwayEra.ConwayTxRefScriptsSizeTooBig
$ L.Mismatch { mismatchSupplied = txsz
, mismatchExpected = limit }

-----

Expand Down

0 comments on commit a36a72f

Please sign in to comment.