Skip to content

Commit 74f2a56

Browse files
committed
Add DijkstraTx
1 parent 912c0e6 commit 74f2a56

File tree

3 files changed

+77
-22
lines changed
  • eras/dijkstra/impl
    • src/Cardano/Ledger/Dijkstra
    • testlib/Test/Cardano/Ledger/Dijkstra/Binary
  • libs/cardano-ledger-api/src/Cardano/Ledger/Api

3 files changed

+77
-22
lines changed

eras/dijkstra/impl/src/Cardano/Ledger/Dijkstra/Tx.hs

Lines changed: 70 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
{-# LANGUAGE DataKinds #-}
22
{-# LANGUAGE DeriveGeneric #-}
33
{-# LANGUAGE DerivingStrategies #-}
4+
{-# LANGUAGE DerivingVia #-}
5+
{-# LANGUAGE FlexibleContexts #-}
46
{-# LANGUAGE FlexibleInstances #-}
7+
{-# LANGUAGE GADTs #-}
58
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
69
{-# LANGUAGE LambdaCase #-}
710
{-# LANGUAGE MultiParamTypeClasses #-}
811
{-# LANGUAGE PatternSynonyms #-}
12+
{-# LANGUAGE StandaloneDeriving #-}
913
{-# LANGUAGE TypeFamilies #-}
1014
{-# LANGUAGE TypeOperators #-}
1115
{-# LANGUAGE UndecidableInstances #-}
1216
{-# OPTIONS_GHC -Wno-orphans #-}
1317

1418
module Cardano.Ledger.Dijkstra.Tx (
19+
DijkstraTx (..),
1520
Tx (..),
1621
validateDijkstraNativeScript,
1722
) where
1823

19-
import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..))
24+
import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..), StrictMaybe)
2025
import Cardano.Ledger.Alonzo.Tx (
2126
AlonzoEraTx,
22-
AlonzoTx (..),
27+
IsValid,
2328
alonzoTxEqRaw,
24-
auxDataAlonzoTxL,
25-
bodyAlonzoTxL,
26-
isValidAlonzoTxL,
27-
sizeAlonzoTxF,
28-
witsAlonzoTxL,
2929
)
30-
import Cardano.Ledger.Binary (Annotator, DecCBOR (..), EncCBOR, ToCBOR)
30+
import Cardano.Ledger.Binary (Annotator, DecCBOR (..), EncCBOR (..), ToCBOR (..))
3131
import Cardano.Ledger.Conway.Tx (AlonzoEraTx (..), Tx (..), getConwayMinFeeTx)
3232
import Cardano.Ledger.Core
3333
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
@@ -41,51 +41,103 @@ import Cardano.Ledger.Dijkstra.TxBody (DijkstraEraTxBody (..))
4141
import Cardano.Ledger.Dijkstra.TxWits ()
4242
import Cardano.Ledger.Keys.WitVKey (witVKeyHash)
4343
import Cardano.Ledger.MemoBytes (EqRaw (..))
44-
import Control.DeepSeq (NFData)
44+
import Control.DeepSeq (NFData (..))
4545
import qualified Data.Set as Set
4646
import Data.Typeable (Typeable)
47+
import Data.Word (Word32)
4748
import GHC.Generics (Generic)
4849
import Lens.Micro (Lens', lens, (^.))
49-
import NoThunks.Class (NoThunks)
50+
import NoThunks.Class (InspectHeap (..), NoThunks)
51+
52+
data DijkstraTx l era where
53+
DijkstraTx ::
54+
{ dtBody :: !(TxBody TopTx era)
55+
, dtWits :: !(TxWits era)
56+
, dtIsValid :: !IsValid
57+
, dtAuxData :: !(StrictMaybe (TxAuxData era))
58+
} ->
59+
DijkstraTx TopTx era
60+
DijkstraSubTx ::
61+
{ dstBody :: !(TxBody SubTx era)
62+
, dstWits :: !(TxWits era)
63+
, dstAuxData :: !(StrictMaybe (TxAuxData era))
64+
} ->
65+
DijkstraTx SubTx era
66+
67+
deriving instance EraTx era => Eq (DijkstraTx l era)
68+
69+
deriving instance EraTx era => Show (DijkstraTx l era)
70+
71+
instance NFData (DijkstraTx l era) where
72+
rnf = undefined
73+
74+
deriving via
75+
InspectHeap (DijkstraTx l era)
76+
instance
77+
( Era era
78+
, Typeable l
79+
) =>
80+
NoThunks (DijkstraTx l era)
81+
82+
instance (EraTx era, Typeable l) => ToCBOR (DijkstraTx l era) where
83+
toCBOR = undefined
84+
85+
instance EncCBOR (DijkstraTx l era) where
86+
encCBOR = undefined
87+
88+
instance (EraTx era, Typeable l) => DecCBOR (Annotator (DijkstraTx l era)) where
89+
decCBOR = undefined
5090

5191
instance HasEraTxLevel Tx DijkstraEra where
5292
toSTxLevel (MkDijkstraTx _) = undefined
5393

54-
mkBasicDijkstraTx :: TxBody l DijkstraEra -> AlonzoTx l DijkstraEra
94+
mkBasicDijkstraTx :: TxBody l DijkstraEra -> DijkstraTx l DijkstraEra
5595
mkBasicDijkstraTx = undefined
5696

5797
instance EraTx DijkstraEra where
58-
newtype Tx l DijkstraEra = MkDijkstraTx {unDijkstraTx :: AlonzoTx l DijkstraEra}
98+
newtype Tx l DijkstraEra = MkDijkstraTx {unDijkstraTx :: DijkstraTx l DijkstraEra}
5999
deriving newtype (Eq, Show, NFData, NoThunks, ToCBOR, EncCBOR)
60100
deriving (Generic)
61101

62102
mkBasicTx = MkDijkstraTx . mkBasicDijkstraTx
63103

64-
bodyTxL = dijkstraTxL . bodyAlonzoTxL
104+
bodyTxL = dijkstraTxL . bodyDijkstraTxL
65105
{-# INLINE bodyTxL #-}
66106

67-
witsTxL = dijkstraTxL . witsAlonzoTxL
107+
witsTxL = dijkstraTxL . witsDijkstraTxL
68108
{-# INLINE witsTxL #-}
69109

70-
auxDataTxL = dijkstraTxL . auxDataAlonzoTxL
110+
auxDataTxL = dijkstraTxL . auxDataDijkstraTxL
71111
{-# INLINE auxDataTxL #-}
72112

73-
sizeTxF = dijkstraTxL . sizeAlonzoTxF
113+
sizeTxF = dijkstraTxL . sizeDijkstraTxF
74114
{-# INLINE sizeTxF #-}
75115

76116
validateNativeScript = validateDijkstraNativeScript
77117
{-# INLINE validateNativeScript #-}
78118

79119
getMinFeeTx = getConwayMinFeeTx
80120

121+
bodyDijkstraTxL :: Lens' (DijkstraTx l era) (TxBody l era)
122+
bodyDijkstraTxL = undefined
123+
124+
witsDijkstraTxL :: Lens' (DijkstraTx l era) (TxWits era)
125+
witsDijkstraTxL = undefined
126+
127+
auxDataDijkstraTxL :: Lens' (DijkstraTx l era) (StrictMaybe (TxAuxData era))
128+
auxDataDijkstraTxL = undefined
129+
130+
sizeDijkstraTxF :: Lens' (DijkstraTx l era) Word32
131+
sizeDijkstraTxF = undefined
132+
81133
instance EqRaw (Tx l DijkstraEra) where
82134
eqRaw = alonzoTxEqRaw
83135

84-
dijkstraTxL :: Lens' (Tx l DijkstraEra) (AlonzoTx l DijkstraEra)
136+
dijkstraTxL :: Lens' (Tx l DijkstraEra) (DijkstraTx l DijkstraEra)
85137
dijkstraTxL = lens unDijkstraTx (\x y -> x {unDijkstraTx = y})
86138

87139
instance AlonzoEraTx DijkstraEra where
88-
isValidTxL = dijkstraTxL . isValidAlonzoTxL
140+
isValidTxL = undefined -- dijkstraTxL . isValidAlonzoTxL
89141
{-# INLINE isValidTxL #-}
90142

91143
instance Typeable l => DecCBOR (Annotator (Tx l DijkstraEra)) where

eras/dijkstra/impl/testlib/Test/Cardano/Ledger/Dijkstra/Binary/Annotator.hs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import Cardano.Ledger.Binary.Coders
1515
import Cardano.Ledger.Core
1616
import Cardano.Ledger.Dijkstra (DijkstraEra)
1717
import Cardano.Ledger.Dijkstra.Scripts
18-
import Cardano.Ledger.Dijkstra.Tx (Tx (..))
18+
import Cardano.Ledger.Dijkstra.Tx (DijkstraTx, Tx (..))
1919
import Cardano.Ledger.Dijkstra.TxBody (TxBody (..))
2020
import Cardano.Ledger.MemoBytes (decodeMemoized)
2121
import Data.Typeable (Typeable)
@@ -37,4 +37,7 @@ instance Era era => DecCBOR (DijkstraNativeScriptRaw era) where
3737
instance Era era => DecCBOR (DijkstraNativeScript era) where
3838
decCBOR = MkDijkstraNativeScript <$> decodeMemoized decCBOR
3939

40-
deriving newtype instance DecCBOR (Tx TopTx DijkstraEra)
40+
instance Typeable l => DecCBOR (DijkstraTx l DijkstraEra) where
41+
decCBOR = undefined
42+
43+
deriving newtype instance Typeable l => DecCBOR (Tx l DijkstraEra)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ import Cardano.Ledger.Core
9999
import Cardano.Ledger.Credential (Credential (..))
100100
import Cardano.Ledger.Dijkstra (DijkstraEra)
101101
import Cardano.Ledger.Dijkstra.Scripts
102-
import Cardano.Ledger.Dijkstra.Tx (Tx (..))
102+
import Cardano.Ledger.Dijkstra.Tx (Tx (..), DijkstraTx (..))
103103
import Cardano.Ledger.Dijkstra.TxBody (TxBody (..), upgradeProposals)
104104
import Cardano.Ledger.Dijkstra.TxCert (DijkstraTxCertUpgradeError)
105105
import Cardano.Ledger.Internal.Era (EraHasName (..))
@@ -608,7 +608,7 @@ instance EraApi DijkstraEra where
608608
type TxBodyUpgradeError DijkstraEra = DijkstraTxBodyUpgradeError
609609
upgradeTx (MkConwayTx (AlonzoTx b w valid aux)) =
610610
fmap MkDijkstraTx $
611-
AlonzoTx
611+
DijkstraTx
612612
<$> upgradeTxBody b
613613
<*> pure (upgradeTxWits w)
614614
<*> pure valid

0 commit comments

Comments
 (0)