22{-# LANGUAGE DerivingVia #-}
33{-# LANGUAGE FlexibleContexts #-}
44{-# LANGUAGE FlexibleInstances #-}
5+ {-# LANGUAGE LambdaCase #-}
56{-# LANGUAGE MultiParamTypeClasses #-}
67{-# LANGUAGE RankNTypes #-}
78{-# LANGUAGE ScopedTypeVariables #-}
89{-# LANGUAGE TypeFamilies #-}
10+ {-# LANGUAGE TypeOperators #-}
911{-# LANGUAGE UndecidableInstances #-}
1012{-# OPTIONS_GHC -Wno-orphans #-}
1113
12- module Cardano.Ledger.Conway.TxOut () where
14+ module Cardano.Ledger.Conway.TxOut (upgradeBabbageTxOut ) where
1315
1416import Cardano.Ledger.Babbage.Core
1517import Cardano.Ledger.Babbage.TxOut (
@@ -27,6 +29,7 @@ import Cardano.Ledger.Conway.Era (ConwayEra)
2729import Cardano.Ledger.Conway.PParams ()
2830import Cardano.Ledger.Conway.Scripts ()
2931import Cardano.Ledger.Plutus.Data (Datum (.. ), translateDatum )
32+ import Data.Coerce (coerce )
3033import Data.Maybe.Strict (StrictMaybe (.. ))
3134import Lens.Micro
3235
@@ -35,8 +38,7 @@ instance EraTxOut ConwayEra where
3538
3639 mkBasicTxOut addr vl = BabbageTxOut addr vl NoDatum SNothing
3740
38- upgradeTxOut (BabbageTxOut addr value d s) =
39- BabbageTxOut addr value (translateDatum d) (upgradeScript <$> s)
41+ upgradeTxOut = upgradeBabbageTxOut
4042
4143 addrEitherTxOutL = addrEitherBabbageTxOutL
4244 {-# INLINE addrEitherTxOutL #-}
@@ -62,3 +64,18 @@ instance BabbageEraTxOut ConwayEra where
6264
6365 referenceScriptTxOutL = referenceScriptBabbageTxOutL
6466 {-# INLINE referenceScriptTxOutL #-}
67+
68+ upgradeBabbageTxOut ::
69+ ( Value era ~ Value (PreviousEra era )
70+ , EraScript (PreviousEra era )
71+ , EraScript era
72+ ) =>
73+ BabbageTxOut (PreviousEra era ) ->
74+ BabbageTxOut era
75+ upgradeBabbageTxOut = \ case
76+ TxOutCompact' ca cv -> TxOutCompact' ca cv
77+ TxOutCompactDH' ca cv dh -> TxOutCompactDH' ca cv dh
78+ TxOutCompactDatum ca cv bd -> TxOutCompactDatum ca cv (coerce bd)
79+ TxOutCompactRefScript ca cv d s -> TxOutCompactRefScript ca cv (translateDatum d) (upgradeScript s)
80+ TxOut_AddrHash28_AdaOnly c a28e cc -> TxOut_AddrHash28_AdaOnly c a28e cc
81+ TxOut_AddrHash28_AdaOnly_DataHash32 c a28e cc dh32 -> TxOut_AddrHash28_AdaOnly_DataHash32 c a28e cc dh32
0 commit comments