There are functions modifier's using and implementation inconsistencies between:
ConfidencePoolFactory::unpause and ConfidencePool::unpause and
ConfidencePoolFactory::pause and ConfidencePool::pause
This difficults code readability between contracts and different behavior (reverts signatures) in this methods
Unlike ConfidencePool::unpause
https://github.com/CodeHawks-Contests/2026-07-bc-confidence-pools/blob/58e8ba4ce3f3277866e4926f3140e597f9554a1e/src/ConfidencePool.sol#L668
ConfidencePoolFactory::unpause does not implement a pause status modifier check
https://github.com/CodeHawks-Contests/2026-07-bc-confidence-pools/blob/58e8ba4ce3f3277866e4926f3140e597f9554a1e/src/ConfidencePoolFactory.sol#L169
This leads to codebase protocol modifier implementation inconsistencies due to ConfidencePool::pause has a custom revert in whenPoolNotPaused modifier:
But ConfidencePoolFactory::pause not:
This difficults code readability between contracts and shows distinct behavior for the same method with same intended functionality between contracts
The same happens between ConfidencePool::unpause and ConfidencePoolFactory::unpause
Likelihood:
High, this distinct behavior (custom / inherited revert) will be present each time a call to ConfidencePool::unpause or ConfidencePoolFactory::unpause fails
Impact:
Low, the difference between implementation (modifier usage) ConfidencePool and ConfidencePoolFactory pause methods, difficults code readability between contracts and different behavior
To show the difference between reverts add the following test in test/unit/ConfidencePoolFactory.t.sol
And exec test:
Output
For ConfidencePool
Exec test
Observe output
As it is shown, one method (ConfidencePool::pause) reverts with a clearly custom message but the other one (ConfidencePoolFactory::pause) reverts with a generic non descriptive OZ library message
Implement a similar ConfidencePool whenPoolPaused modifier to ConfidencePoolFactory::unpause and ConfidencePoolFactory::pause functions
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.