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,17 @@ 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 (
83+ TxBody (.. ),
84+ conwayProposalsDeposits ,
85+ conwayRedeemerPointer ,
86+ conwayRedeemerPointerInverse ,
87+ )
7688import Cardano.Ledger.Dijkstra.Era (DijkstraEra )
7789import Cardano.Ledger.Dijkstra.PParams ()
7890import Cardano.Ledger.Dijkstra.Scripts ()
@@ -91,7 +103,7 @@ import Cardano.Ledger.MemoBytes (
91103import Cardano.Ledger.TxIn (TxIn )
92104import Cardano.Ledger.Val (Val (.. ))
93105import Control.DeepSeq (NFData )
94- import Data.Coerce (coerce )
106+ import Data.Coerce (Coercible , coerce )
95107import qualified Data.OSet.Strict as OSet
96108import Data.Sequence.Strict (StrictSeq )
97109import Data.Set (Set )
@@ -133,7 +145,27 @@ instance NFData DijkstraTxBodyRaw
133145deriving instance Show DijkstraTxBodyRaw
134146
135147basicDijkstraTxBodyRaw :: DijkstraTxBodyRaw
136- basicDijkstraTxBodyRaw = undefined
148+ basicDijkstraTxBodyRaw =
149+ DijkstraTxBodyRaw
150+ mempty
151+ mempty
152+ mempty
153+ mempty
154+ SNothing
155+ SNothing
156+ OSet. empty
157+ (Withdrawals mempty )
158+ mempty
159+ (ValidityInterval SNothing SNothing )
160+ mempty
161+ mempty
162+ SNothing
163+ SNothing
164+ SNothing
165+ (VotingProcedures mempty )
166+ OSet. empty
167+ SNothing
168+ mempty
137169
138170instance DecCBOR DijkstraTxBodyRaw where
139171 decCBOR =
@@ -433,7 +465,7 @@ instance EraTxBody DijkstraEra where
433465 pure $
434466 DijkstraTxBody
435467 { dtbSpendInputs = ctbSpendInputs
436- , dtbOutputs = undefined <$> ctbOutputs
468+ , dtbOutputs = unsafeMapSized upgradeTxOut <$> ctbOutputs
437469 , dtbCerts = OSet. mapL coerce ctbCerts
438470 , dtbWithdrawals = ctbWithdrawals
439471 , dtbTxfee = ctbTxfee
@@ -453,12 +485,31 @@ instance EraTxBody DijkstraEra where
453485 , dtbTreasuryDonation = ctbTreasuryDonation
454486 }
455487
488+ upgradeGovAction ::
489+ Coercible (PParamsHKD StrictMaybe (PreviousEra era )) (PParamsHKD StrictMaybe era ) =>
490+ GovAction (PreviousEra era ) -> GovAction era
491+ upgradeGovAction (ParameterChange x y z) = ParameterChange (coerce x) (coerce y) z
492+ upgradeGovAction (HardForkInitiation x y) = HardForkInitiation (coerce x) y
493+ upgradeGovAction (TreasuryWithdrawals x y) = TreasuryWithdrawals x y
494+ upgradeGovAction (NoConfidence x) = NoConfidence x
495+ upgradeGovAction (UpdateCommittee x y z w) = UpdateCommittee x y z w
496+ upgradeGovAction (NewConstitution x y) = NewConstitution x (coerce y)
497+ upgradeGovAction InfoAction = InfoAction
498+
456499upgradeProposals :: ProposalProcedure ConwayEra -> ProposalProcedure DijkstraEra
457- upgradeProposals = undefined
500+ upgradeProposals ProposalProcedure {.. } =
501+ ProposalProcedure
502+ { pProcDeposit = pProcDeposit
503+ , pProcReturnAddr = pProcReturnAddr
504+ , pProcGovAction = upgradeGovAction pProcGovAction
505+ , pProcAnchor = pProcAnchor
506+ }
458507
459508dijkstraTotalDepositsTxBody ::
460509 PParams DijkstraEra -> (KeyHash StakePool -> Bool ) -> TxBody DijkstraEra -> Coin
461- dijkstraTotalDepositsTxBody = undefined
510+ dijkstraTotalDepositsTxBody pp isPoolRegisted txBody =
511+ getTotalDepositsTxCerts pp isPoolRegisted (txBody ^. certsTxBodyL)
512+ <+> conwayProposalsDeposits pp txBody
462513
463514instance AllegraEraTxBody DijkstraEra where
464515 vldtTxBodyL = lensMemoRawType @ DijkstraEra dtbrVldt $
@@ -493,9 +544,9 @@ instance AlonzoEraTxBody DijkstraEra where
493544 \ txb x -> txb {dtbrNetworkId = x}
494545 {-# INLINE networkIdTxBodyL #-}
495546
496- redeemerPointer = undefined -- conwayRedeemerPointer
547+ redeemerPointer = conwayRedeemerPointer
497548
498- redeemerPointerInverse = undefined -- conwayRedeemerPointerInverse
549+ redeemerPointerInverse = conwayRedeemerPointerInverse
499550
500551instance BabbageEraTxBody DijkstraEra where
501552 sizedOutputsTxBodyL = lensMemoRawType @ DijkstraEra dtbrOutputs $
0 commit comments