Skip to content

Commit d750ceb

Browse files
committed
Extract enacted treasury withdrawals
1 parent 3355fb1 commit d750ceb

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

cardano-db-sync/src/Cardano/DbSync/Era/Universal/Insert/LedgerEvent.hs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@ import Cardano.DbSync.Era.Cardano.Insert (insertEpochSyncTime)
1919
import qualified Cardano.DbSync.Era.Shelley.Generic as Generic
2020
import Cardano.DbSync.Era.Universal.Adjust (adjustEpochRewards)
2121
import Cardano.DbSync.Era.Universal.Epoch (insertPoolDepositRefunds, insertProposalRefunds, insertRewardRests, insertRewards)
22-
import Cardano.DbSync.Era.Universal.Insert.GovAction (updateDropped)
22+
import Cardano.DbSync.Era.Universal.Insert.GovAction
2323
import Cardano.DbSync.Era.Universal.Validate (validateEpochRewards)
2424
import Cardano.DbSync.Error
2525
import Cardano.DbSync.Ledger.Event
2626
import Cardano.DbSync.Types
2727
import Cardano.DbSync.Util
2828
import Cardano.Prelude
2929
import Cardano.Slotting.Slot (EpochNo (..))
30+
import Control.Monad.Extra (whenJust)
3031
import Control.Monad.Trans.Control (MonadBaseControl)
3132
import qualified Data.Map.Strict as Map
3233
import qualified Data.Set as Set
@@ -101,6 +102,12 @@ insertNewEpochLedgerEvents syncEnv currentEpochNo@(EpochNo curEpoch) =
101102
let en' = filter (\e -> Set.notMember (garGovActionId e) uncl) en
102103
ex' = filter (\e -> Set.notMember (garGovActionId e) uncl) ex
103104
insertProposalRefunds ntw (subFromCurrentEpoch 1) currentEpochNo cache (en' <> ex') -- TODO: check if they are disjoint to avoid double entries.
105+
forM_ en $ \gar -> whenJust (garMTreasury gar) $ \treasuryMap -> do
106+
gaId <- resolveGovActionProposal (garGovActionId gar)
107+
lift $ void $ DB.updateGovActionEnacted gaId (unEpochNo currentEpochNo)
108+
forM_ (Map.toList treasuryMap) $ \(_ra, _c) ->
109+
-- TODO: Add reward
110+
pure ()
104111
LedgerMirDist rwd -> do
105112
unless (Map.null rwd) $ do
106113
let rewards = Map.toList rwd

cardano-db-sync/src/Cardano/DbSync/Ledger/Event.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ module Cardano.DbSync.Ledger.Event (
2020
splitDeposits,
2121
) where
2222

23-
import Cardano.Db hiding (AdaPots, EpochNo, SyncState, epochNo)
23+
import Cardano.Db hiding (AdaPots, EpochNo, SyncState, TreasuryWithdrawals, epochNo)
2424
import qualified Cardano.DbSync.Era.Shelley.Generic as Generic
2525
import Cardano.DbSync.Era.Shelley.Generic.Tx.Shelley
2626
import Cardano.DbSync.Types
@@ -29,8 +29,8 @@ import Cardano.Ledger.Address (RewardAccount)
2929
import qualified Cardano.Ledger.Allegra.Rules as Allegra
3030
import Cardano.Ledger.Alonzo.Rules (AlonzoBbodyEvent (..), AlonzoUtxoEvent (..), AlonzoUtxowEvent (..))
3131
import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
32-
import Cardano.Ledger.Api (GovActionId, GovActionState (..), ProposalProcedure (..))
3332
import Cardano.Ledger.Coin (Coin (..))
33+
import Cardano.Ledger.Conway.Governance
3434
import Cardano.Ledger.Conway.Rules as Conway
3535
import qualified Cardano.Ledger.Core as Ledger
3636
import Cardano.Ledger.SafeHash (SafeHash)
@@ -83,6 +83,7 @@ data GovActionRefunded = GovActionRefunded
8383
{ garGovActionId :: GovActionId StandardCrypto
8484
, garDeposit :: Coin
8585
, garReturnAddr :: RewardAccount StandardCrypto
86+
, garMTreasury :: Maybe (Map (RewardAccount StandardCrypto) Coin)
8687
, garIsEnacted :: Bool -- True for enacted, False for retired, possibly redundant
8788
}
8889
deriving (Eq)
@@ -267,8 +268,13 @@ toLedgerEventConway evt hasRewards =
267268
{ garGovActionId = gasId gas
268269
, garDeposit = pProcDeposit $ gasProposalProcedure gas
269270
, garReturnAddr = pProcReturnAddr $ gasProposalProcedure gas
271+
, garMTreasury = mWithrawal
270272
, garIsEnacted = isEnacted
271273
}
274+
where
275+
mWithrawal = case pProcGovAction (gasProposalProcedure gas) of
276+
TreasuryWithdrawals mp _ -> Just mp
277+
_ -> Nothing
272278

273279
instance All ConvertLedgerEvent xs => ConvertLedgerEvent (HardForkBlock xs) where
274280
toLedgerEvent hasRewards =

0 commit comments

Comments
 (0)