Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions eras/conway/impl/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
- `ConwayUtxowPredFailure`
* Remove `NoThunks` instance for `ConwayContextError`
* Make `ConwayContextError` constructors lazy
* Make `ZeroTreasuryWithdrawals` a permanent check for all eras (not just post-Babbage).

### `testlib`

Expand Down
5 changes: 2 additions & 3 deletions eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Gov.hs
Original file line number Diff line number Diff line change
Expand Up @@ -546,9 +546,8 @@ conwayGovTransition = do
-- Guardrails script hash check
runTest $ checkGuardrailsScriptHash @era constitutionPolicy proposalPolicy

unless (hardforkConwayBootstrapPhase $ pp ^. ppProtocolVersionL) $
-- The sum of all withdrawals must be positive
F.fold wdrls /= mempty ?! (injectFailure . ZeroTreasuryWithdrawals) pProcGovAction
-- The sum of all withdrawals must be positive
F.fold wdrls /= mempty ?! (injectFailure . ZeroTreasuryWithdrawals) pProcGovAction
UpdateCommittee _mPrevGovActionId membersToRemove membersToAdd _qrm -> do
let conflicting = Set.intersection (Map.keysSet membersToAdd) membersToRemove
in failOnNonEmptySet conflicting (injectFailure . ConflictingCommitteeUpdate)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1105,28 +1105,31 @@ withdrawalsSpec =
}

it "Fails for empty withdrawals" $ do
mkTreasuryWithdrawalsGovAction [] >>= expectZeroTreasuryFailurePostBootstrap
mkTreasuryWithdrawalsGovAction [] >>= expectZeroTreasuryFailure

accountAddress1 <- registerAccountAddress
mkTreasuryWithdrawalsGovAction [(accountAddress1, zero)] >>= expectZeroTreasuryFailurePostBootstrap
mkTreasuryWithdrawalsGovAction [(accountAddress1, zero)] >>= expectZeroTreasuryFailure

accountAddress2 <- registerAccountAddress
let withdrawals = [(accountAddress1, zero), (accountAddress2, zero)]

mkTreasuryWithdrawalsGovAction withdrawals >>= expectZeroTreasuryFailurePostBootstrap
mkTreasuryWithdrawalsGovAction withdrawals >>= expectZeroTreasuryFailure

wdrls <- mkTreasuryWithdrawalsGovAction $ withdrawals ++ [(accountAddress2, Coin 100_000)]
proposal <- mkProposal wdrls
submitBootstrapAwareFailingProposal_ proposal $
FailBootstrap [disallowedProposalFailure proposal]
where
expectZeroTreasuryFailurePostBootstrap wdrls = do
expectZeroTreasuryFailure wdrls = do
proposal <- mkProposal wdrls
void $
submitBootstrapAwareFailingProposal proposal $
FailBootstrapAndPostBootstrap $
FailBoth
{ bootstrapFailures = [disallowedProposalFailure proposal]
{ bootstrapFailures =
[ disallowedProposalFailure proposal
, injectFailure $ ZeroTreasuryWithdrawals wdrls
]
, postBootstrapFailures = [injectFailure $ ZeroTreasuryWithdrawals wdrls]
}

Expand Down
Loading