Skip to content

Commit faa449b

Browse files
committed
fix resolveGovActionProposal for stake addrs whitelist
1 parent 54dfd2a commit faa449b

File tree

3 files changed

+68
-49
lines changed

3 files changed

+68
-49
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ insertBlockUniversal syncEnv shouldLog withinTwoMins withinHalfHour blk details
142142
]
143143

144144
whenStrictJust (apNewEpoch applyResult) $ \newEpoch -> do
145-
insertOnNewEpoch tracer iopts blkId (Generic.blkSlotNo blk) epochNo newEpoch
145+
insertOnNewEpoch syncEnv blkId (Generic.blkSlotNo blk) epochNo newEpoch
146146

147147
insertStakeSlice syncEnv $ apStakeSlice applyResult
148148

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,29 +61,29 @@ import Database.Persist.Sql (SqlBackend)
6161
--------------------------------------------------------------------------------------------
6262
insertOnNewEpoch ::
6363
(MonadBaseControl IO m, MonadIO m) =>
64-
Trace IO Text ->
65-
InsertOptions ->
64+
SyncEnv ->
6665
DB.BlockId ->
6766
SlotNo ->
6867
EpochNo ->
6968
Generic.NewEpoch ->
7069
ExceptT SyncNodeError (ReaderT SqlBackend m) ()
71-
insertOnNewEpoch tracer iopts blkId slotNo epochNo newEpoch = do
70+
insertOnNewEpoch syncEnv blkId slotNo epochNo newEpoch = do
7271
whenStrictJust (Generic.euProtoParams epochUpdate) $ \params ->
7372
lift $ insertEpochParam tracer blkId epochNo params (Generic.euNonce epochUpdate)
7473
whenStrictJust (Generic.neAdaPots newEpoch) $ \pots ->
7574
insertPots blkId slotNo epochNo pots
7675
whenStrictJust (Generic.neDRepState newEpoch) $ \dreps -> when (ioGov iopts) $ do
7776
let (drepSnapshot, ratifyState) = finishDRepPulser dreps
7877
lift $ insertDrepDistr epochNo drepSnapshot
79-
updateRatified epochNo (toList $ rsEnacted ratifyState)
80-
updateExpired epochNo (toList $ rsExpired ratifyState)
78+
updateEnacted syncEn
8179
whenStrictJust (Generic.neEnacted newEpoch) $ \enactedSt ->
8280
when (ioGov iopts) $
83-
updateEnacted epochNo enactedSt
81+
updateEnacted syncEnv True epochNo enactedSt
8482
where
8583
epochUpdate :: Generic.EpochUpdate
8684
epochUpdate = Generic.neEpochUpdate newEpoch
85+
tracer = getTrace syncEnv
86+
iopts = getInsertOptions syncEnv
8787

8888
insertEpochParam ::
8989
(MonadBaseControl IO m, MonadIO m) =>

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

Lines changed: 61 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ where
3030
import qualified Cardano.Crypto as Crypto
3131
import Cardano.Db (DbWord64 (..))
3232
import qualified Cardano.Db as DB
33-
import Cardano.DbSync.Api.Types (SyncEnv (..))
33+
import Cardano.DbSync.Api.Types (InsertOptions (..), SyncEnv (..), SyncOptions (..))
3434
import Cardano.DbSync.Cache (queryOrInsertRewardAccount, queryPoolKeyOrInsert)
3535
import Cardano.DbSync.Cache.Types (CacheNew (..))
36+
import Cardano.DbSync.Config.Types (ShelleyInsertConfig (..))
3637
import qualified Cardano.DbSync.Era.Shelley.Generic as Generic
3738
import Cardano.DbSync.Era.Shelley.Generic.ParamProposal
3839
import Cardano.DbSync.Era.Universal.Insert.Other (toDouble)
@@ -89,7 +90,7 @@ insertGovActionProposal syncEnv blkId txId govExpiresAt mmCommittee (index, pp)
8990
_ -> pure Nothing
9091
prevGovActionDBId <- case mprevGovAction of
9192
Nothing -> pure Nothing
92-
Just prevGovActionId -> Just <$> resolveGovActionProposal prevGovActionId
93+
Just prevGovActionId -> resolveGovActionProposal syncEnv prevGovActionId
9394
govActionProposalId <-
9495
lift $
9596
DB.insertGovActionProposal $
@@ -180,17 +181,26 @@ insertGovActionProposal syncEnv blkId txId govExpiresAt mmCommittee (index, pp)
180181
--------------------------------------------------------------------------------------
181182
resolveGovActionProposal ::
182183
MonadIO m =>
184+
SyncEnv ->
183185
GovActionId StandardCrypto ->
184-
ExceptT SyncNodeError (ReaderT SqlBackend m) DB.GovActionProposalId
185-
resolveGovActionProposal gaId = do
186+
ExceptT SyncNodeError (ReaderT SqlBackend m) (Maybe DB.GovActionProposalId)
187+
resolveGovActionProposal syncEnv gaId = do
186188
gaTxId <-
187189
liftLookupFail "resolveGovActionProposal.queryTxId" $
188190
DB.queryTxId $
189191
Generic.unTxHash $
190192
gaidTxId gaId
191193
let (GovActionIx index) = gaidGovActionIx gaId
192-
liftLookupFail "resolveGovActionProposal.queryGovActionProposalId" $
193-
DB.queryGovActionProposalId gaTxId (fromIntegral index) -- TODO: Use Word32?
194+
case ioShelley insertOpts of
195+
-- if we have whitelist for stake addresses then don't input the proposal
196+
ShelleyStakeAddrs _ -> pure Nothing
197+
_ -> do
198+
result <-
199+
liftLookupFail "resolveGovActionProposal.queryGovActionProposalId" $
200+
DB.queryGovActionProposalId gaTxId (fromIntegral index) -- TODO: Use Word32?
201+
pure $ Just result
202+
where
203+
insertOpts = soptInsertOptions $ envOptions syncEnv
194204

195205
insertParamProposal ::
196206
(MonadBaseControl IO m, MonadIO m) =>
@@ -290,32 +300,35 @@ insertVotingProcedure ::
290300
(Word16, (GovActionId StandardCrypto, VotingProcedure StandardConway)) ->
291301
ExceptT SyncNodeError (ReaderT SqlBackend m) ()
292302
insertVotingProcedure syncEnv txId voter (index, (gaId, vp)) = do
293-
govActionId <- resolveGovActionProposal gaId
294-
votingAnchorId <- whenMaybe (strictMaybeToMaybe $ vProcAnchor vp) $ lift . insertVotingAnchor txId DB.OtherAnchor
295-
(mCommitteeVoterId, mDRepVoter, mStakePoolVoter) <- case voter of
296-
CommitteeVoter cred -> do
297-
khId <- lift $ insertCommitteeHash cred
298-
pure (Just khId, Nothing, Nothing)
299-
DRepVoter cred -> do
300-
drep <- lift $ insertCredDrepHash cred
301-
pure (Nothing, Just drep, Nothing)
302-
StakePoolVoter poolkh -> do
303-
poolHashId <- lift $ queryPoolKeyOrInsert "insertVotingProcedure" syncEnv (envCache syncEnv) CacheNew False poolkh
304-
pure (Nothing, Nothing, Just poolHashId)
305-
void
306-
. lift
307-
. DB.insertVotingProcedure
308-
$ DB.VotingProcedure
309-
{ DB.votingProcedureTxId = txId
310-
, DB.votingProcedureIndex = index
311-
, DB.votingProcedureGovActionProposalId = govActionId
312-
, DB.votingProcedureCommitteeVoter = mCommitteeVoterId
313-
, DB.votingProcedureDrepVoter = mDRepVoter
314-
, DB.votingProcedurePoolVoter = mStakePoolVoter
315-
, DB.votingProcedureVoterRole = Generic.toVoterRole voter
316-
, DB.votingProcedureVote = Generic.toVote $ vProcVote vp
317-
, DB.votingProcedureVotingAnchorId = votingAnchorId
318-
}
303+
maybeGovActionId <- resolveGovActionProposal syncEnv gaId
304+
case maybeGovActionId of
305+
Nothing -> pure ()
306+
Just govActionId -> do
307+
votingAnchorId <- whenMaybe (strictMaybeToMaybe $ vProcAnchor vp) $ lift . insertVotingAnchor txId DB.OtherAnchor
308+
(mCommitteeVoterId, mDRepVoter, mStakePoolVoter) <- case voter of
309+
CommitteeVoter cred -> do
310+
khId <- lift $ insertCommitteeHash cred
311+
pure (Just khId, Nothing, Nothing)
312+
DRepVoter cred -> do
313+
drep <- lift $ insertCredDrepHash cred
314+
pure (Nothing, Just drep, Nothing)
315+
StakePoolVoter poolkh -> do
316+
poolHashId <- lift $ queryPoolKeyOrInsert "insertVotingProcedure" syncEnv (envCache syncEnv) CacheNew False poolkh
317+
pure (Nothing, Nothing, Just poolHashId)
318+
void
319+
. lift
320+
. DB.insertVotingProcedure
321+
$ DB.VotingProcedure
322+
{ DB.votingProcedureTxId = txId
323+
, DB.votingProcedureIndex = index
324+
, DB.votingProcedureGovActionProposalId = govActionId
325+
, DB.votingProcedureCommitteeVoter = mCommitteeVoterId
326+
, DB.votingProcedureDrepVoter = mDRepVoter
327+
, DB.votingProcedurePoolVoter = mStakePoolVoter
328+
, DB.votingProcedureVoterRole = Generic.toVoterRole voter
329+
, DB.votingProcedureVote = Generic.toVote $ vProcVote vp
330+
, DB.votingProcedureVotingAnchorId = votingAnchorId
331+
}
319332

320333
insertVotingAnchor :: (MonadIO m, MonadBaseControl IO m) => DB.TxId -> DB.AnchorType -> Anchor StandardCrypto -> ReaderT SqlBackend m DB.VotingAnchorId
321334
insertVotingAnchor txId anchorType anchor =
@@ -430,19 +443,25 @@ updateEnacted ::
430443
ExceptT SyncNodeError (ReaderT SqlBackend m) ()
431444
updateEnacted epochNo enactedState = do
432445
whenJust (strictMaybeToMaybe (grPParamUpdate enactedState)) $ \prevId -> do
433-
gaId <- resolveGovActionProposal $ getPrevId prevId
434-
lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
446+
mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId
447+
case maybeGaId of
448+
Nothing -> pure ()
449+
Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
435450

436451
whenJust (strictMaybeToMaybe (grHardFork enactedState)) $ \prevId -> do
437-
gaId <- resolveGovActionProposal $ getPrevId prevId
438-
lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
452+
mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId
453+
case maybeGaId of
454+
Nothing -> pure ()
455+
Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
439456

440457
whenJust (strictMaybeToMaybe (grCommittee enactedState)) $ \prevId -> do
441-
gaId <- resolveGovActionProposal $ getPrevId prevId
442-
lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
458+
mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId
459+
case maybeGaId of
460+
Nothing -> pure ()
461+
Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
443462

444463
whenJust (strictMaybeToMaybe (grConstitution enactedState)) $ \prevId -> do
445-
gaId <- resolveGovActionProposal $ getPrevId prevId
446-
lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)
447-
where
448-
getPrevId = unGovPurposeId
464+
mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId
465+
case maybeGaId of
466+
Nothing -> pure ()
467+
Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo)

0 commit comments

Comments
 (0)