@@ -43,6 +43,8 @@ import Cardano.Ledger.Conway.Rules (
4343 gsCertificates ,
4444 gsProposalProcedures ,
4545 gsVotingProcedures ,
46+ validateTreasuryValue ,
47+ validateWithdrawalsDelegated ,
4648 )
4749import Cardano.Ledger.Conway.State
4850import Cardano.Ledger.Dijkstra.Era (
@@ -67,6 +69,7 @@ import Cardano.Ledger.Dijkstra.Rules.SubPool (DijkstraSubPoolEvent, DijkstraSubP
6769import Cardano.Ledger.Dijkstra.Rules.SubUtxow (DijkstraSubUtxowPredFailure (.. ))
6870import Cardano.Ledger.Dijkstra.Rules.Utxow (DijkstraUtxowPredFailure (.. ))
6971import Cardano.Ledger.Dijkstra.TxCert
72+ import Cardano.Ledger.Rules.ValidationMode (runTest )
7073import Cardano.Ledger.Shelley.LedgerState
7174import Cardano.Ledger.Shelley.Rules (
7275 LedgerEnv (.. ),
@@ -230,6 +233,7 @@ dijkstraSubLedgersTransition ::
230233 , EraRule " SUBGOVCERT" era ~ DijkstraSUBGOVCERT era
231234 , Embed (EraRule " SUBGOV" era ) (DijkstraSUBLEDGER era )
232235 , Embed (EraRule " SUBUTXOW" era ) (DijkstraSUBLEDGER era )
236+ , InjectRuleFailure " SUBLEDGER" ConwayLedgerPredFailure era
233237 , InjectRuleEvent " SUBPOOL" PoolEvent era
234238 , InjectRuleEvent " SUBPOOL" DijkstraSubPoolEvent era
235239 , InjectRuleFailure " SUBPOOL" ShelleyPoolPredFailure era
@@ -244,22 +248,28 @@ dijkstraSubLedgersTransition ::
244248 TransitionRule (EraRule " SUBLEDGER" era )
245249dijkstraSubLedgersTransition = do
246250 TRC
247- ( LedgerEnv slot mbCurEpochNo _ pp _
248- , ledgerState
251+ ( LedgerEnv slot mbCurEpochNo _ pp chainAccountState
252+ , ledgerState@ ( LedgerState utxoState certState)
249253 , tx
250254 ) <-
251255 judgmentContext
252256
253257 curEpochNo <- maybe (liftSTS $ epochFromSlot slot) pure mbCurEpochNo
254258 let txBody = tx ^. bodyTxL
255- let govState = ledgerState ^. lsUTxOStateL . utxosGovStateL
259+ let govState = utxoState ^ . utxosGovStateL
256260 let committee = govState ^. committeeGovStateL
257261 let proposals = govState ^. proposalsGovStateL
262+ accounts = certState ^. certDStateL . accountsL
263+
264+ runTest $ validateTreasuryValue txBody (chainAccountState ^. casTreasuryL)
265+
266+ runTest $ validateWithdrawalsDelegated accounts tx
267+
258268 certStateAfterSubCerts <-
259269 trans @ (EraRule " SUBCERTS" era ) $
260270 TRC
261271 ( SubCertsEnv tx pp curEpochNo committee (proposalsWithPurpose grCommitteeL proposals)
262- , ledgerState ^. lsCertStateL
272+ , certState
263273 , StrictSeq. fromStrict $ txBody ^. certsTxBodyL
264274 )
265275 let govEnv =
@@ -287,8 +297,8 @@ dijkstraSubLedgersTransition = do
287297 utxoStateAfterSubUtxow <-
288298 trans @ (EraRule " SUBUTXOW" era ) $
289299 TRC
290- ( UtxoEnv @ era slot pp (ledgerState ^. lsCertStateL)
291- , ledgerState ^. lsUTxOStateL
300+ ( UtxoEnv @ era slot pp certState
301+ , utxoState
292302 , tx
293303 )
294304 pure $
0 commit comments