Skip to content

Commit 9ce9345

Browse files
committed
Made TxBody a data family
1 parent de5a136 commit 9ce9345

File tree

67 files changed

+470
-939
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+470
-939
lines changed

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

Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
{-# LANGUAGE UndecidableSuperClasses #-}
1717
{-# LANGUAGE ViewPatterns #-}
1818
{-# OPTIONS_GHC -Wno-orphans #-}
19+
{-# OPTIONS_GHC -Wno-redundant-constraints #-}
1920

2021
module Cardano.Ledger.Allegra.TxBody (
2122
AllegraEraTxBody (..),
22-
AllegraTxBody (
23+
TxBody (
2324
MkAllegraTxBody,
2425
AllegraTxBody,
2526
atbAuxDataHash,
@@ -57,7 +58,6 @@ import Cardano.Ledger.Binary.Coders (
5758
(!>),
5859
)
5960
import Cardano.Ledger.Coin (Coin (..))
60-
import Cardano.Ledger.Compactible (Compactible (..))
6161
import Cardano.Ledger.Core
6262
import Cardano.Ledger.MemoBytes (
6363
EqRaw,
@@ -195,55 +195,39 @@ emptyAllegraTxBodyRaw =
195195
-- ===========================================================================
196196
-- Wrap it all up in a newtype, hiding the insides with a pattern construtor.
197197

198-
newtype AllegraTxBody e = MkAllegraTxBody (MemoBytes (AllegraTxBodyRaw () e))
199-
deriving newtype (SafeToHash, ToCBOR, DecCBOR)
198+
instance Memoized (TxBody AllegraEra) where
199+
type RawType (TxBody AllegraEra) = AllegraTxBodyRaw () AllegraEra
200200

201-
instance Memoized (AllegraTxBody era) where
202-
type RawType (AllegraTxBody era) = AllegraTxBodyRaw () era
201+
deriving instance Eq (TxBody AllegraEra)
203202

204-
deriving instance
205-
(Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) =>
206-
Eq (AllegraTxBody era)
207-
208-
deriving instance
209-
(Era era, Show (TxOut era), Show (TxCert era), Compactible (Value era), Show (PParamsUpdate era)) =>
210-
Show (AllegraTxBody era)
203+
deriving instance Show (TxBody AllegraEra)
211204

212-
deriving instance Generic (AllegraTxBody era)
205+
deriving instance Generic (TxBody AllegraEra)
213206

214-
deriving newtype instance
215-
(Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) =>
216-
NoThunks (AllegraTxBody era)
207+
deriving newtype instance NoThunks (TxBody AllegraEra)
217208

218-
deriving newtype instance
219-
( NFData (TxOut era)
220-
, NFData (TxCert era)
221-
, NFData (PParamsUpdate era)
222-
, Era era
223-
) =>
224-
NFData (AllegraTxBody era)
209+
deriving newtype instance NFData (TxBody AllegraEra)
225210

226211
-- | Encodes memoized bytes created upon construction.
227-
instance Era era => EncCBOR (AllegraTxBody era)
212+
instance EncCBOR (TxBody AllegraEra)
228213

229214
type instance MemoHashIndex (AllegraTxBodyRaw c era) = EraIndependentTxBody
230215

231-
instance Era era => HashAnnotated (AllegraTxBody era) EraIndependentTxBody where
216+
instance HashAnnotated (TxBody AllegraEra) EraIndependentTxBody where
232217
hashAnnotated = getMemoSafeHash
233218

234219
-- | A pattern to keep the newtype and the MemoBytes hidden
235220
pattern AllegraTxBody ::
236-
forall era.
237-
(EraTxOut era, EraTxCert era) =>
221+
(EraTxOut AllegraEra, EraTxCert AllegraEra) =>
238222
Set TxIn ->
239-
StrictSeq (TxOut era) ->
240-
StrictSeq (TxCert era) ->
223+
StrictSeq (TxOut AllegraEra) ->
224+
StrictSeq (TxCert AllegraEra) ->
241225
Withdrawals ->
242226
Coin ->
243227
ValidityInterval ->
244-
StrictMaybe (Update era) ->
228+
StrictMaybe (Update AllegraEra) ->
245229
StrictMaybe TxAuxDataHash ->
246-
AllegraTxBody era
230+
TxBody AllegraEra
247231
pattern AllegraTxBody
248232
{ atbInputs
249233
, atbOutputs
@@ -276,7 +260,7 @@ pattern AllegraTxBody
276260
validityInterval
277261
update
278262
auxDataHash =
279-
mkMemoizedEra @era $
263+
mkMemoizedEra @AllegraEra $
280264
AllegraTxBodyRaw
281265
{ atbrInputs = inputs
282266
, atbrOutputs = outputs
@@ -292,7 +276,8 @@ pattern AllegraTxBody
292276
{-# COMPLETE AllegraTxBody #-}
293277

294278
instance EraTxBody AllegraEra where
295-
type TxBody AllegraEra = AllegraTxBody AllegraEra
279+
newtype TxBody AllegraEra = MkAllegraTxBody (MemoBytes (AllegraTxBodyRaw () AllegraEra))
280+
deriving newtype (SafeToHash, ToCBOR, DecCBOR)
296281

297282
mkBasicTxBody = mkMemoizedEra @AllegraEra emptyAllegraTxBodyRaw
298283

@@ -365,6 +350,4 @@ instance AllegraEraTxBody AllegraEra where
365350
\txBodyRaw vldt -> txBodyRaw {atbrValidityInterval = vldt}
366351
{-# INLINEABLE vldtTxBodyL #-}
367352

368-
instance
369-
(Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) =>
370-
EqRaw (AllegraTxBody era)
353+
instance EqRaw (TxBody AllegraEra)

eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Arbitrary.hs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ import Cardano.Ledger.Shelley.Scripts (
2828
pattern RequireSignature,
2929
)
3030

31+
import Cardano.Ledger.Allegra (AllegraEra)
3132
import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..))
32-
import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (AllegraTxBody))
33+
import Cardano.Ledger.Allegra.TxBody (pattern AllegraTxBody)
3334
import Cardano.Ledger.Core
3435
import Cardano.Ledger.Shelley.API (ShelleyTxAuxData (ShelleyTxAuxData))
35-
import Data.Maybe.Strict (StrictMaybe)
3636
import Data.Sequence.Strict (StrictSeq, fromList)
3737
import Generic.Random (genericArbitraryU)
3838
import Test.Cardano.Ledger.Shelley.Arbitrary (genMetadata', sizedNativeScriptGens)
@@ -102,15 +102,7 @@ instance
102102
where
103103
arbitrary = genericArbitraryU
104104

105-
instance
106-
( EraTxOut era
107-
, EraTxCert era
108-
, Arbitrary (TxOut era)
109-
, Arbitrary (PParamsHKD StrictMaybe era)
110-
, Arbitrary (TxCert era)
111-
) =>
112-
Arbitrary (AllegraTxBody era)
113-
where
105+
instance Arbitrary (TxBody AllegraEra) where
114106
arbitrary =
115107
AllegraTxBody
116108
<$> arbitrary

eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Binary/Annotator.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module Test.Cardano.Ledger.Allegra.Binary.Annotator (
1414
module Test.Cardano.Ledger.Shelley.Binary.Annotator,
1515
) where
1616

17+
import Cardano.Ledger.Allegra (AllegraEra)
1718
import Cardano.Ledger.Allegra.Scripts
1819
import Cardano.Ledger.Allegra.TxAuxData
1920
import Cardano.Ledger.Allegra.TxBody
@@ -76,6 +77,6 @@ instance
7677
decCBOR = pure <$> decCBOR
7778

7879
deriving via
79-
Mem (AllegraTxBodyRaw () era)
80+
Mem (AllegraTxBodyRaw () AllegraEra)
8081
instance
81-
AllegraEraTxBody era => DecCBOR (Annotator (AllegraTxBody era))
82+
DecCBOR (Annotator (TxBody AllegraEra))

eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/TreeDiff.hs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{-# LANGUAGE DataKinds #-}
22
{-# LANGUAGE FlexibleContexts #-}
3+
{-# LANGUAGE FlexibleInstances #-}
34
{-# LANGUAGE MonoLocalBinds #-}
45
{-# LANGUAGE UndecidableInstances #-}
56
{-# OPTIONS_GHC -Wno-orphans #-}
@@ -8,6 +9,7 @@ module Test.Cardano.Ledger.Allegra.TreeDiff (
89
module Test.Cardano.Ledger.Shelley.TreeDiff,
910
) where
1011

12+
import Cardano.Ledger.Allegra (AllegraEra)
1113
import Cardano.Ledger.Allegra.Rules
1214
import Cardano.Ledger.Allegra.Scripts
1315
import Cardano.Ledger.Allegra.TxAuxData
@@ -38,12 +40,7 @@ instance
3840
) =>
3941
ToExpr (AllegraTxBodyRaw ma era)
4042

41-
instance
42-
( ToExpr (TxOut era)
43-
, ToExpr (TxCert era)
44-
, ToExpr (Update era)
45-
) =>
46-
ToExpr (AllegraTxBody era)
43+
instance ToExpr (TxBody AllegraEra)
4744

4845
-- Rules/Utxo
4946
instance

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{-# LANGUAGE DataKinds #-}
22
{-# LANGUAGE FlexibleContexts #-}
33
{-# LANGUAGE FlexibleInstances #-}
4+
{-# LANGUAGE PatternSynonyms #-}
45
{-# LANGUAGE ScopedTypeVariables #-}
56
{-# LANGUAGE TypeApplications #-}
67
{-# LANGUAGE UndecidableInstances #-}
@@ -11,7 +12,7 @@ module Cardano.Ledger.Alonzo (
1112
AlonzoEra,
1213
AlonzoTxOut,
1314
MaryValue,
14-
AlonzoTxBody,
15+
pattern AlonzoTxBody,
1516
AlonzoScript,
1617
AlonzoTxAuxData,
1718
)
@@ -27,7 +28,7 @@ import Cardano.Ledger.Alonzo.Transition ()
2728
import Cardano.Ledger.Alonzo.Translation ()
2829
import Cardano.Ledger.Alonzo.Tx ()
2930
import Cardano.Ledger.Alonzo.TxAuxData (AlonzoTxAuxData)
30-
import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody, AlonzoTxOut)
31+
import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut, TxBody (AlonzoTxBody))
3132
import Cardano.Ledger.Alonzo.TxWits ()
3233
import Cardano.Ledger.Alonzo.UTxO ()
3334
import Cardano.Ledger.Mary.Value (MaryValue)

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
{-# LANGUAGE MultiParamTypeClasses #-}
1111
{-# LANGUAGE NamedFieldPuns #-}
1212
{-# LANGUAGE OverloadedStrings #-}
13+
{-# LANGUAGE PatternSynonyms #-}
1314
{-# LANGUAGE ScopedTypeVariables #-}
1415
{-# LANGUAGE StandaloneDeriving #-}
1516
{-# LANGUAGE TypeApplications #-}
@@ -52,7 +53,7 @@ module Cardano.Ledger.Alonzo.Tx (
5253
txdats',
5354
txscripts',
5455
txrdmrs,
55-
AlonzoTxBody (..),
56+
TxBody (AlonzoTxBody),
5657
-- Figure 4
5758
totExUnits,
5859
alonzoMinFeeTx,
@@ -82,9 +83,9 @@ import Cardano.Ledger.Alonzo.Scripts (
8283
)
8384
import Cardano.Ledger.Alonzo.TxBody (
8485
AlonzoEraTxBody (..),
85-
AlonzoTxBody (..),
8686
AlonzoTxBodyUpgradeError,
8787
ScriptIntegrityHash,
88+
TxBody (AlonzoTxBody),
8889
)
8990
import Cardano.Ledger.Alonzo.TxWits (
9091
AlonzoEraTxWits (..),

0 commit comments

Comments
 (0)