11{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE DeriveGeneric #-}
33{-# LANGUAGE DerivingStrategies #-}
4+ {-# LANGUAGE FlexibleContexts #-}
45{-# LANGUAGE FlexibleInstances #-}
56{-# LANGUAGE GeneralizedNewtypeDeriving #-}
67{-# LANGUAGE MultiParamTypeClasses #-}
@@ -36,6 +37,8 @@ module Cardano.Ledger.Dijkstra.TxBody (
3637 dtbCurrentTreasuryValue ,
3738 dtbTreasuryDonation
3839 ),
40+ upgradeProposals ,
41+ upgradeGovAction ,
3942 DijkstraTxBodyRaw (.. ),
4043) where
4144
@@ -44,7 +47,7 @@ import Cardano.Ledger.Babbage.TxBody (
4447 babbageAllInputsTxBodyF ,
4548 babbageSpendableInputsTxBodyF ,
4649 )
47- import Cardano.Ledger.BaseTypes (Network , StrictMaybe , fromSMaybe )
50+ import Cardano.Ledger.BaseTypes (Network , StrictMaybe ( .. ) , fromSMaybe )
4851import Cardano.Ledger.Binary (
4952 DecCBOR (.. ),
5053 EncCBOR (.. ),
@@ -71,8 +74,12 @@ import Cardano.Ledger.Binary.Coders (
7174import Cardano.Ledger.Coin (Coin , decodePositiveCoin )
7275import Cardano.Ledger.Conway (ConwayEra )
7376import Cardano.Ledger.Conway.Core
74- import Cardano.Ledger.Conway.Governance (ProposalProcedure , VotingProcedures (.. ))
75- import Cardano.Ledger.Conway.TxBody (TxBody (.. ))
77+ import Cardano.Ledger.Conway.Governance (
78+ GovAction (.. ),
79+ ProposalProcedure (.. ),
80+ VotingProcedures (.. ),
81+ )
82+ import Cardano.Ledger.Conway.TxBody (TxBody (.. ), conwayProposalsDeposits , conwayRedeemerPointer , conwayRedeemerPointerInverse )
7683import Cardano.Ledger.Dijkstra.Era (DijkstraEra )
7784import Cardano.Ledger.Dijkstra.PParams ()
7885import Cardano.Ledger.Dijkstra.Scripts ()
@@ -91,7 +98,7 @@ import Cardano.Ledger.MemoBytes (
9198import Cardano.Ledger.TxIn (TxIn )
9299import Cardano.Ledger.Val (Val (.. ))
93100import Control.DeepSeq (NFData )
94- import Data.Coerce (coerce )
101+ import Data.Coerce (Coercible , coerce )
95102import qualified Data.OSet.Strict as OSet
96103import Data.Sequence.Strict (StrictSeq )
97104import Data.Set (Set )
@@ -133,7 +140,27 @@ instance NFData DijkstraTxBodyRaw
133140deriving instance Show DijkstraTxBodyRaw
134141
135142basicDijkstraTxBodyRaw :: DijkstraTxBodyRaw
136- basicDijkstraTxBodyRaw = undefined
143+ basicDijkstraTxBodyRaw =
144+ DijkstraTxBodyRaw
145+ mempty
146+ mempty
147+ mempty
148+ mempty
149+ SNothing
150+ SNothing
151+ OSet. empty
152+ (Withdrawals mempty )
153+ mempty
154+ (ValidityInterval SNothing SNothing )
155+ mempty
156+ mempty
157+ SNothing
158+ SNothing
159+ SNothing
160+ (VotingProcedures mempty )
161+ OSet. empty
162+ SNothing
163+ mempty
137164
138165instance DecCBOR DijkstraTxBodyRaw where
139166 decCBOR =
@@ -433,7 +460,7 @@ instance EraTxBody DijkstraEra where
433460 pure $
434461 DijkstraTxBody
435462 { dtbSpendInputs = ctbSpendInputs
436- , dtbOutputs = undefined <$> ctbOutputs
463+ , dtbOutputs = unsafeMapSized upgradeTxOut <$> ctbOutputs
437464 , dtbCerts = OSet. mapL coerce ctbCerts
438465 , dtbWithdrawals = ctbWithdrawals
439466 , dtbTxfee = ctbTxfee
@@ -453,12 +480,31 @@ instance EraTxBody DijkstraEra where
453480 , dtbTreasuryDonation = ctbTreasuryDonation
454481 }
455482
483+ upgradeGovAction ::
484+ Coercible (PParamsHKD StrictMaybe (PreviousEra era )) (PParamsHKD StrictMaybe era ) =>
485+ GovAction (PreviousEra era ) -> GovAction era
486+ upgradeGovAction (ParameterChange x y z) = ParameterChange (coerce x) (coerce y) z
487+ upgradeGovAction (HardForkInitiation x y) = HardForkInitiation (coerce x) y
488+ upgradeGovAction (TreasuryWithdrawals x y) = TreasuryWithdrawals x y
489+ upgradeGovAction (NoConfidence x) = NoConfidence x
490+ upgradeGovAction (UpdateCommittee x y z w) = UpdateCommittee x y z w
491+ upgradeGovAction (NewConstitution x y) = NewConstitution x (coerce y)
492+ upgradeGovAction InfoAction = InfoAction
493+
456494upgradeProposals :: ProposalProcedure ConwayEra -> ProposalProcedure DijkstraEra
457- upgradeProposals = undefined
495+ upgradeProposals ProposalProcedure {.. } =
496+ ProposalProcedure
497+ { pProcDeposit = pProcDeposit
498+ , pProcReturnAddr = pProcReturnAddr
499+ , pProcGovAction = upgradeGovAction pProcGovAction
500+ , pProcAnchor = pProcAnchor
501+ }
458502
459503dijkstraTotalDepositsTxBody ::
460504 PParams DijkstraEra -> (KeyHash StakePool -> Bool ) -> TxBody DijkstraEra -> Coin
461- dijkstraTotalDepositsTxBody = undefined
505+ dijkstraTotalDepositsTxBody pp isPoolRegisted txBody =
506+ getTotalDepositsTxCerts pp isPoolRegisted (txBody ^. certsTxBodyL)
507+ <+> conwayProposalsDeposits pp txBody
462508
463509instance AllegraEraTxBody DijkstraEra where
464510 vldtTxBodyL = lensMemoRawType @ DijkstraEra dtbrVldt $
@@ -493,9 +539,9 @@ instance AlonzoEraTxBody DijkstraEra where
493539 \ txb x -> txb {dtbrNetworkId = x}
494540 {-# INLINE networkIdTxBodyL #-}
495541
496- redeemerPointer = undefined -- conwayRedeemerPointer
542+ redeemerPointer = conwayRedeemerPointer
497543
498- redeemerPointerInverse = undefined -- conwayRedeemerPointerInverse
544+ redeemerPointerInverse = conwayRedeemerPointerInverse
499545
500546instance BabbageEraTxBody DijkstraEra where
501547 sizedOutputsTxBodyL = lensMemoRawType @ DijkstraEra dtbrOutputs $
0 commit comments