Skip to content

Commit afd1843

Browse files
committed
WIP
1 parent 74e2b99 commit afd1843

File tree

7 files changed

+54
-42
lines changed

7 files changed

+54
-42
lines changed

eras/allegra/impl/src/Cardano/Ledger/Allegra/Scripts.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@ instance EraScript AllegraEra where
264264

265265
fromNativeScript = id
266266

267+
eqNativeRaw = undefined
268+
267269
instance ShelleyEraScript AllegraEra where
268270
mkRequireSignature = mkRequireSignatureTimelock
269271
getRequireSignature = getRequireSignatureTimelock
@@ -448,8 +450,6 @@ showTimelock (RequireMOf m xs) = "(MOf " ++ show m ++ " " ++ F.foldl' accum ")"
448450
showTimelock (RequireSignature hash) = "(Signature " ++ show hash ++ ")"
449451
showTimelock _ = error "Impossible: All NativeScripts should have been accounted for"
450452

451-
-- | Check the equality of two underlying types, while ignoring their binary
452-
-- representation, which `Eq` instance normally does. This is used for testing.
453453
eqTimelockRaw :: Timelock era -> Timelock era -> Bool
454454
eqTimelockRaw t1 t2 = go (getMemoRawType t1) (getMemoRawType t2)
455455
where

eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ import NoThunks.Class (NoThunks)
7474
data AllegraTxAuxDataRaw era = AllegraTxAuxDataRaw
7575
{ atadrMetadata :: !(Map Word64 Metadatum)
7676
-- ^ Structured transaction metadata
77-
, atadrTimelock :: !(StrictSeq (Timelock era))
77+
, atadrNativeScripts :: !(StrictSeq (Timelock era))
7878
-- ^ Pre-images of script hashes found within the TxBody, but which are not
7979
-- required as witnesses. Examples include:
8080
-- - Token policy IDs appearing in transaction outputs
@@ -108,8 +108,8 @@ timelockScriptsAllegraTxAuxDataL ::
108108
Era era =>
109109
Lens' (AllegraTxAuxData era) (StrictSeq (Timelock era))
110110
timelockScriptsAllegraTxAuxDataL =
111-
lensMemoRawType @era atadrTimelock $
112-
\txAuxDataRaw ts -> txAuxDataRaw {atadrTimelock = ts}
111+
lensMemoRawType @era atadrNativeScripts $
112+
\txAuxDataRaw ts -> txAuxDataRaw {atadrNativeScripts = ts}
113113

114114
deriving instance Show (AllegraTxAuxDataRaw era)
115115

eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
module Cardano.Ledger.Alonzo.Scripts (
2626
PlutusBinary (..),
27-
AlonzoScript (TimelockScript, PlutusScript),
27+
AlonzoScript (NativeScript, PlutusScript),
2828
Script,
2929
isPlutusScript,
3030
validScript,
@@ -426,44 +426,52 @@ pattern RewardingPurpose c <- (toRewardingPurpose -> Just c)
426426

427427
-- Alonzo Script ===============================================================
428428

429-
-- | Scripts in the Alonzo Era, Either a Timelock script or a Plutus script.
429+
-- | Scripts in the Alonzo Era, Either a nativve script or a Plutus script.
430430
data AlonzoScript era
431-
= TimelockScript !(Timelock era)
431+
= NativeScript !(NativeScript era)
432432
| PlutusScript !(PlutusScript era)
433433
deriving (Generic)
434434

435-
instance (Era era, MemPack (PlutusScript era)) => MemPack (AlonzoScript era) where
435+
instance
436+
( Era era
437+
, MemPack (PlutusScript era)
438+
, MemPack (NativeScript era)
439+
) =>
440+
MemPack (AlonzoScript era)
441+
where
436442
packedByteCount = \case
437-
TimelockScript script -> packedTagByteCount + packedByteCount script
443+
NativeScript script -> packedTagByteCount + packedByteCount script
438444
PlutusScript script -> packedTagByteCount + packedByteCount script
439445
packM = \case
440-
TimelockScript script -> packTagM 0 >> packM script
446+
NativeScript script -> packTagM 0 >> packM script
441447
PlutusScript script -> packTagM 1 >> packM script
442448
{-# INLINE packM #-}
443449
unpackM =
444450
unpackTagM >>= \case
445-
0 -> TimelockScript <$> unpackM
451+
0 -> NativeScript <$> unpackM
446452
1 -> PlutusScript <$> unpackM
447453
n -> unknownTagM @(AlonzoScript era) n
448454
{-# INLINE unpackM #-}
449455

450-
deriving instance Eq (PlutusScript era) => Eq (AlonzoScript era)
456+
deriving instance (Eq (PlutusScript era), Eq (NativeScript era)) => Eq (AlonzoScript era)
451457

452-
instance (Era era, NoThunks (PlutusScript era)) => NoThunks (AlonzoScript era)
458+
instance
459+
(Era era, NoThunks (PlutusScript era), NoThunks (NativeScript era)) =>
460+
NoThunks (AlonzoScript era)
453461

454-
instance NFData (PlutusScript era) => NFData (AlonzoScript era) where
462+
instance (NFData (PlutusScript era), NFData (NativeScript era)) => NFData (AlonzoScript era) where
455463
rnf = \case
456-
TimelockScript ts -> rnf ts
464+
NativeScript ts -> rnf ts
457465
PlutusScript ps -> rnf ps
458466

459467
instance (AlonzoEraScript era, Script era ~ AlonzoScript era) => Show (AlonzoScript era) where
460-
show (TimelockScript x) = "TimelockScript " ++ show x
468+
show (NativeScript x) = "NativeScript " ++ show x
461469
show s@(PlutusScript plutus) =
462470
"PlutusScript " ++ show (plutusScriptLanguage plutus) ++ " " ++ show (hashScript @era s)
463471

464472
-- | Both constructors know their original bytes
465-
instance SafeToHash (PlutusScript era) => SafeToHash (AlonzoScript era) where
466-
originalBytes (TimelockScript t) = originalBytes t
473+
instance (SafeToHash (PlutusScript era), SafeToHash (NativeScript era)) => SafeToHash (AlonzoScript era) where
474+
originalBytes (NativeScript t) = originalBytes t
467475
originalBytes (PlutusScript plutus) = originalBytes plutus
468476

469477
isPlutusScript :: AlonzoEraScript era => Script era -> Bool
@@ -473,22 +481,22 @@ instance EraScript AlonzoEra where
473481
type Script AlonzoEra = AlonzoScript AlonzoEra
474482
type NativeScript AlonzoEra = Timelock AlonzoEra
475483

476-
upgradeScript = TimelockScript . translateTimelock
484+
upgradeScript = NativeScript . translateTimelock
477485

478486
scriptPrefixTag = alonzoScriptPrefixTag
479487

480488
getNativeScript = \case
481-
TimelockScript ts -> Just ts
489+
NativeScript ts -> Just ts
482490
_ -> Nothing
483491

484-
fromNativeScript = TimelockScript
492+
fromNativeScript = NativeScript
485493

486494
alonzoScriptPrefixTag ::
487495
(AlonzoEraScript era, AlonzoScript era ~ Script era) =>
488496
Script era ->
489497
BS.ByteString
490498
alonzoScriptPrefixTag = \case
491-
TimelockScript _ -> nativeMultiSigTag -- "\x00"
499+
NativeScript _ -> nativeMultiSigTag -- "\x00"
492500
PlutusScript plutusScript -> BS.singleton (withPlutusScript plutusScript plutusLanguageTag)
493501

494502
instance ShelleyEraScript AlonzoEra where
@@ -598,7 +606,7 @@ instance AlonzoEraScript era => ToCBOR (AlonzoScript era) where
598606

599607
encodeScript :: AlonzoEraScript era => AlonzoScript era -> Encode 'Open (AlonzoScript era)
600608
encodeScript = \case
601-
TimelockScript i -> Sum TimelockScript 0 !> To i
609+
NativeScript i -> Sum NativeScript 0 !> To i
602610
PlutusScript plutusScript -> withPlutusScript plutusScript $ \plutus@(Plutus pb) ->
603611
case plutusSLanguage plutus of
604612
SPlutusV1 -> Sum (PlutusScript . fromJust . mkPlutusScript . Plutus @'PlutusV1) 1 !> To pb
@@ -614,7 +622,7 @@ instance AlonzoEraScript era => DecCBOR (Annotator (AlonzoScript era)) where
614622
{-# INLINE decodeAnnPlutus #-}
615623
decodeScript :: Word -> Decode 'Open (Annotator (AlonzoScript era))
616624
decodeScript = \case
617-
0 -> Ann (SumD TimelockScript) <*! From
625+
0 -> Ann (SumD NativeScript) <*! From
618626
1 -> decodeAnnPlutus SPlutusV1
619627
2 -> decodeAnnPlutus SPlutusV2
620628
3 -> decodeAnnPlutus SPlutusV3
@@ -637,7 +645,7 @@ validScript pv script =
637645
-- | Check the equality of two underlying types, while ignoring their binary
638646
-- representation, which `Eq` instance normally does. This is used for testing.
639647
eqAlonzoScriptRaw :: Eq (PlutusScript era) => AlonzoScript era -> AlonzoScript era -> Bool
640-
eqAlonzoScriptRaw (TimelockScript t1) (TimelockScript t2) = eqTimelockRaw t1 t2
648+
eqAlonzoScriptRaw (NativeScript t1) (NativeScript t2) = eqTimelockRaw t1 t2
641649
eqAlonzoScriptRaw (PlutusScript ps1) (PlutusScript ps2) = ps1 == ps2
642650
eqAlonzoScriptRaw _ _ = False
643651

eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,16 @@ class AllegraEraTxAuxData era => AlonzoEraTxAuxData era where
102102

103103
data AlonzoTxAuxDataRaw era = AlonzoTxAuxDataRaw
104104
{ atadrMetadata :: !(Map Word64 Metadatum)
105-
, atadrTimelock :: !(StrictSeq (Timelock era))
105+
, atadrNativeScripts :: !(StrictSeq (NativeScript era))
106106
, atadrPlutus :: !(Map Language (NE.NonEmpty PlutusBinary))
107107
}
108108
deriving (Generic)
109109

110-
deriving instance Eq (Timelock era) => Eq (AlonzoTxAuxDataRaw era)
110+
deriving instance Eq (NativeScript era) => Eq (AlonzoTxAuxDataRaw era)
111111

112-
deriving instance Show (Timelock era) => Show (AlonzoTxAuxDataRaw era)
112+
deriving instance Show (NativeScript era) => Show (AlonzoTxAuxDataRaw era)
113113

114-
instance NFData (Timelock era) => NFData (AlonzoTxAuxDataRaw era)
114+
instance NFData (NativeScript era) => NFData (AlonzoTxAuxDataRaw era)
115115

116116
deriving via
117117
InspectHeapNamed "AlonzoTxAuxDataRaw" (AlonzoTxAuxDataRaw era)
@@ -121,8 +121,8 @@ deriving via
121121
-- | Encodes memoized bytes created upon construction.
122122
instance Era era => EncCBOR (AlonzoTxAuxData era)
123123

124-
instance Era era => EncCBOR (AlonzoTxAuxDataRaw era) where
125-
encCBOR AlonzoTxAuxDataRaw {atadrMetadata, atadrTimelock, atadrPlutus} =
124+
instance (Era era, EncCBOR (NativeScript era)) => EncCBOR (AlonzoTxAuxDataRaw era) where
125+
encCBOR AlonzoTxAuxDataRaw {atadrMetadata, atadrNativeScripts, atadrPlutus} =
126126
encode $
127127
Tag 259 $
128128
Keyed
@@ -139,7 +139,7 @@ instance Era era => EncCBOR (AlonzoTxAuxDataRaw era) where
139139
]
140140
)
141141
!> Omit null (Key 0 $ To atadrMetadata)
142-
!> Omit null (Key 1 $ To atadrTimelock)
142+
!> Omit null (Key 1 $ To atadrNativeScripts)
143143
!> Omit isNothing (Key 2 $ E (maybe mempty encCBOR) (Map.lookup PlutusV1 atadrPlutus))
144144
!> Omit isNothing (Key 3 $ E (maybe mempty encCBOR) (Map.lookup PlutusV2 atadrPlutus))
145145
!> Omit isNothing (Key 4 $ E (maybe mempty encCBOR) (Map.lookup PlutusV3 atadrPlutus))
@@ -156,7 +156,7 @@ mkAlonzoTxAuxData ::
156156
AlonzoTxAuxData era
157157
mkAlonzoTxAuxData atadrMetadata allScripts =
158158
mkMemoizedEra @era $
159-
AlonzoTxAuxDataRaw {atadrMetadata, atadrTimelock, atadrPlutus}
159+
AlonzoTxAuxDataRaw {atadrMetadata, atadrNativeScripts, atadrPlutus}
160160
where
161161
partitionScripts (tss, pss) =
162162
\case
@@ -165,7 +165,7 @@ mkAlonzoTxAuxData atadrMetadata allScripts =
165165
let lang = plutusScriptLanguage ps
166166
bs = plutusScriptBinary ps
167167
in (tss, Map.alter (Just . maybe (pure bs) (NE.cons bs)) lang pss)
168-
(atadrTimelock, atadrPlutus) =
168+
(atadrNativeScripts, atadrPlutus) =
169169
foldr (flip partitionScripts) (mempty, Map.empty) allScripts
170170

171171
getAlonzoTxAuxDataScripts ::
@@ -217,7 +217,7 @@ instance Era era => DecCBOR (Annotator (AlonzoTxAuxDataRaw era)) where
217217
auxDataField 0 = fieldA (\x ad -> ad {atadrMetadata = x}) From
218218
auxDataField 1 =
219219
fieldAA
220-
(\x ad -> ad {atadrTimelock = atadrTimelock ad <> x})
220+
(\x ad -> ad {atadrNativeScripts = atadrNativeScripts ad <> x})
221221
(D (sequence <$> decodeStrictSeq decCBOR))
222222
auxDataField 2 = fieldA (addPlutusScripts PlutusV1) (D (guardPlutus PlutusV1 >> decCBOR))
223223
auxDataField 3 = fieldA (addPlutusScripts PlutusV2) (D (guardPlutus PlutusV2 >> decCBOR))
@@ -303,8 +303,8 @@ instance AllegraEraTxAuxData AlonzoEra where
303303
timelockScriptsAlonzoTxAuxDataL ::
304304
forall era. Era era => Lens' (AlonzoTxAuxData era) (StrictSeq (Timelock era))
305305
timelockScriptsAlonzoTxAuxDataL =
306-
lensMemoRawType @era atadrTimelock $
307-
\txAuxDataRaw ts -> txAuxDataRaw {atadrTimelock = ts}
306+
lensMemoRawType @era atadrNativeScripts $
307+
\txAuxDataRaw ts -> txAuxDataRaw {atadrNativeScripts = ts}
308308

309309
instance AlonzoEraTxAuxData AlonzoEra where
310310
plutusScriptsTxAuxDataL = plutusScriptsAllegraTxAuxDataL
@@ -344,15 +344,15 @@ pattern AlonzoTxAuxData ::
344344
pattern AlonzoTxAuxData {atadMetadata, atadTimelock, atadPlutus} <-
345345
(getMemoRawType -> AlonzoTxAuxDataRaw atadMetadata atadTimelock atadPlutus)
346346
where
347-
AlonzoTxAuxData atadrMetadata atadrTimelock atadrPlutus =
347+
AlonzoTxAuxData atadrMetadata atadrNativeScripts atadrPlutus =
348348
let unsupportedScripts =
349349
Map.filterWithKey (\lang _ -> lang > eraMaxLanguage @era) atadrPlutus
350350
prefix =
351351
intercalate "," (show <$> Map.keys unsupportedScripts)
352352
++ if Map.size unsupportedScripts > 1 then " languages are" else " language is"
353353
in if Map.null unsupportedScripts
354354
then
355-
mkMemoizedEra @era $ AlonzoTxAuxDataRaw {atadrMetadata, atadrTimelock, atadrPlutus}
355+
mkMemoizedEra @era $ AlonzoTxAuxDataRaw {atadrMetadata, atadrNativeScripts, atadrPlutus}
356356
else error $ prefix ++ " not supported in " ++ eraName @era
357357

358358
{-# COMPLETE AlonzoTxAuxData #-}

eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/Annotator.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ instance Era era => DecCBOR (AlonzoTxAuxDataRaw era) where
132132

133133
auxDataField :: Word -> Field (AlonzoTxAuxDataRaw era)
134134
auxDataField 0 = field (\x ad -> ad {atadrMetadata = x}) From
135-
auxDataField 1 = field (\x ad -> ad {atadrTimelock = atadrTimelock ad <> x}) From
135+
auxDataField 1 = field (\x ad -> ad {atadrNativeScripts = atadrNativeScripts ad <> x}) From
136136
auxDataField 2 = field (addPlutusScripts PlutusV1) (D (guardPlutus PlutusV1 >> decCBOR))
137137
auxDataField 3 = field (addPlutusScripts PlutusV2) (D (guardPlutus PlutusV2 >> decCBOR))
138138
auxDataField 4 = field (addPlutusScripts PlutusV3) (D (guardPlutus PlutusV3 >> decCBOR))

libs/cardano-ledger-api/src/Cardano/Ledger/Api/Era.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ instance EraApi AlonzoEra where
369369
mkMemoizedEra @AlonzoEra $
370370
AlonzoTxAuxDataRaw
371371
{ atadrMetadata = md
372-
, atadrTimelock = translateTimelock <$> scripts
372+
, atadrNativeScripts = translateTimelock <$> scripts
373373
, atadrPlutus = mempty
374374
}
375375

libs/cardano-ledger-core/src/Cardano/Ledger/Core.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,10 @@ class
541541

542542
fromNativeScript :: NativeScript era -> Script era
543543

544+
-- | Check the equality of two underlying types, while ignoring their binary
545+
-- representation, which `Eq` instance normally does. This is used for testing.
546+
eqNativeRaw :: NativeScript era -> NativeScript era -> Bool
547+
544548
isNativeScript :: EraScript era => Script era -> Bool
545549
isNativeScript = isJust . getNativeScript
546550

0 commit comments

Comments
 (0)