@@ -23,11 +23,11 @@ module Cardano.Ledger.Allegra.TxAuxData (
2323 AllegraTxAuxDataRaw (.. ),
2424 metadataAllegraTxAuxDataL ,
2525 AllegraEraTxAuxData (.. ),
26- timelockScriptsAllegraTxAuxDataL ,
26+ nativeScriptsAllegraTxAuxDataL ,
2727) where
2828
2929import Cardano.Ledger.Allegra.Era (AllegraEra )
30- import Cardano.Ledger.Allegra.Scripts (Timelock )
30+ import Cardano.Ledger.Allegra.Scripts (AllegraEraScript )
3131import Cardano.Ledger.Binary (
3232 Annotator ,
3333 DecCBOR (.. ),
@@ -45,7 +45,7 @@ import Cardano.Ledger.MemoBytes (
4545 getMemoRawType ,
4646 getMemoSafeHash ,
4747 lensMemoRawType ,
48- mkMemoizedEra ,
48+ mkMemoized ,
4949 )
5050import Cardano.Ledger.Shelley.Core
5151import Cardano.Ledger.Shelley.TxAuxData (Metadatum , validMetadatum )
@@ -63,6 +63,7 @@ import Control.DeepSeq (NFData, deepseq)
6363import Data.Map.Strict (Map )
6464import Data.Sequence.Strict (StrictSeq )
6565import qualified Data.Sequence.Strict as StrictSeq
66+ import Data.Typeable (Typeable )
6667import Data.Word (Word64 )
6768import GHC.Generics (Generic )
6869import Lens.Micro (Lens' )
@@ -74,16 +75,18 @@ import NoThunks.Class (NoThunks)
7475data AllegraTxAuxDataRaw era = AllegraTxAuxDataRaw
7576 { atadrMetadata :: ! (Map Word64 Metadatum )
7677 -- ^ Structured transaction metadata
77- , atadrNativeScripts :: ! (StrictSeq (Timelock era ))
78+ , atadrNativeScripts :: ! (StrictSeq (NativeScript era ))
7879 -- ^ Pre-images of script hashes found within the TxBody, but which are not
7980 -- required as witnesses. Examples include:
8081 -- - Token policy IDs appearing in transaction outputs
8182 -- - Pool reward account registrations
8283 }
83- deriving (Generic , Eq )
84+ deriving (Generic )
85+
86+ deriving instance Eq (NativeScript era ) => Eq (AllegraTxAuxDataRaw era )
8487
8588class EraTxAuxData era => AllegraEraTxAuxData era where
86- timelockScriptsTxAuxDataL :: Lens' (TxAuxData era ) (StrictSeq (Timelock era ))
89+ nativeScriptsTxAuxDataL :: Lens' (TxAuxData era ) (StrictSeq (NativeScript era ))
8790
8891instance EraTxAuxData AllegraEra where
8992 type TxAuxData AllegraEra = AllegraTxAuxData AllegraEra
@@ -95,77 +98,88 @@ instance EraTxAuxData AllegraEra where
9598 validateTxAuxData _ (AllegraTxAuxData md as) = as `deepseq` all validMetadatum md
9699
97100metadataAllegraTxAuxDataL ::
98- forall era . Era era => Lens' (AllegraTxAuxData era ) (Map Word64 Metadatum )
101+ forall era .
102+ ( Era era
103+ , EncCBOR (NativeScript era )
104+ ) =>
105+ Lens' (AllegraTxAuxData era ) (Map Word64 Metadatum )
99106metadataAllegraTxAuxDataL =
100107 lensMemoRawType @ era atadrMetadata $
101108 \ txAuxDataRaw md -> txAuxDataRaw {atadrMetadata = md}
102109
103110instance AllegraEraTxAuxData AllegraEra where
104- timelockScriptsTxAuxDataL = timelockScriptsAllegraTxAuxDataL
111+ nativeScriptsTxAuxDataL = nativeScriptsAllegraTxAuxDataL
105112
106- timelockScriptsAllegraTxAuxDataL ::
113+ nativeScriptsAllegraTxAuxDataL ::
107114 forall era .
108- Era era =>
109- Lens' (AllegraTxAuxData era ) (StrictSeq (Timelock era ))
110- timelockScriptsAllegraTxAuxDataL =
115+ ( Era era , EncCBOR ( NativeScript era )) =>
116+ Lens' (AllegraTxAuxData era ) (StrictSeq (NativeScript era ))
117+ nativeScriptsAllegraTxAuxDataL =
111118 lensMemoRawType @ era atadrNativeScripts $
112119 \ txAuxDataRaw ts -> txAuxDataRaw {atadrNativeScripts = ts}
113120
114- deriving instance Show (AllegraTxAuxDataRaw era )
121+ deriving instance Show (NativeScript era ) => Show ( AllegraTxAuxDataRaw era )
115122
116- deriving instance Era era => NoThunks (AllegraTxAuxDataRaw era )
123+ deriving instance ( Era era , NoThunks ( NativeScript era )) => NoThunks (AllegraTxAuxDataRaw era )
117124
118- instance NFData (AllegraTxAuxDataRaw era )
125+ instance NFData (NativeScript era ) => NFData ( AllegraTxAuxDataRaw era )
119126
120127newtype AllegraTxAuxData era = MkAlegraTxAuxData (MemoBytes (AllegraTxAuxDataRaw era ))
121128 deriving (Generic )
122- deriving newtype (Eq , ToCBOR , SafeToHash )
129+ deriving newtype (ToCBOR , SafeToHash )
130+
131+ deriving instance Eq (NativeScript era ) => Eq (AllegraTxAuxData era )
123132
124133instance Memoized (AllegraTxAuxData era ) where
125134 type RawType (AllegraTxAuxData era ) = AllegraTxAuxDataRaw era
126135
127136deriving via
128137 (Mem (AllegraTxAuxDataRaw era))
129138 instance
130- Era era => DecCBOR (Annotator (AllegraTxAuxData era ))
139+ AllegraEraScript era => DecCBOR (Annotator (AllegraTxAuxData era ))
131140
132141type instance MemoHashIndex (AllegraTxAuxDataRaw era ) = EraIndependentTxAuxData
133142
134143instance HashAnnotated (AllegraTxAuxData era ) EraIndependentTxAuxData where
135144 hashAnnotated = getMemoSafeHash
136145
137- deriving newtype instance Show (AllegraTxAuxData era )
146+ deriving newtype instance Show (NativeScript era ) => Show ( AllegraTxAuxData era )
138147
139- deriving newtype instance Era era => NoThunks (AllegraTxAuxData era )
148+ deriving newtype instance ( Era era , NoThunks ( NativeScript era )) => NoThunks (AllegraTxAuxData era )
140149
141- deriving newtype instance NFData (AllegraTxAuxData era )
150+ deriving newtype instance NFData (NativeScript era ) => NFData ( AllegraTxAuxData era )
142151
143- instance EqRaw (AllegraTxAuxData era )
152+ instance Eq ( NativeScript era ) => EqRaw (AllegraTxAuxData era )
144153
145154pattern AllegraTxAuxData ::
146155 forall era.
147- Era era =>
156+ ( Era era
157+ , EncCBOR (NativeScript era)
158+ ) =>
148159 Map Word64 Metadatum ->
149- StrictSeq (Timelock era) ->
160+ StrictSeq (NativeScript era) ->
150161 AllegraTxAuxData era
151162pattern AllegraTxAuxData blob sp <- (getMemoRawType -> AllegraTxAuxDataRaw blob sp)
152163 where
153- AllegraTxAuxData blob sp = mkMemoizedEra @ era $ AllegraTxAuxDataRaw blob sp
164+ AllegraTxAuxData blob sp = mkMemoized (eraProtVerLow @ era ) $ AllegraTxAuxDataRaw blob sp
154165
155166{-# COMPLETE AllegraTxAuxData #-}
156167
157168--------------------------------------------------------------------------------
158169-- Serialisation
159170--------------------------------------------------------------------------------
160171
161- instance Era era => EncCBOR (AllegraTxAuxDataRaw era ) where
172+ instance ( Era era , EncCBOR ( NativeScript era )) => EncCBOR (AllegraTxAuxDataRaw era ) where
162173 encCBOR (AllegraTxAuxDataRaw blob sp) =
163174 encode (Rec AllegraTxAuxDataRaw !> To blob !> To sp)
164175
165176-- | Encodes memoized bytes created upon construction.
166177instance Era era => EncCBOR (AllegraTxAuxData era )
167178
168- instance Era era => DecCBOR (Annotator (AllegraTxAuxDataRaw era )) where
179+ instance
180+ (Era era , Typeable (NativeScript era ), DecCBOR (Annotator (NativeScript era ))) =>
181+ DecCBOR (Annotator (AllegraTxAuxDataRaw era ))
182+ where
169183 decCBOR =
170184 peekTokenType >>= \ case
171185 TypeMapLen -> decodeFromMap
0 commit comments