The normal behavior is that verifier updates keep claim() operational.
The issue is that updateVerifier() does not validate newVerifier != address(0). If owner sets zero verifier and later unpauses, claim() attempts to call verify on address zero and fails for all claims until verifier is changed again.
Likelihood:
Owner can call updateVerifier(address(0)) while paused; no guard prevents it.
Existing test demonstrates this assignment succeeds.
Impact:
Claim path can be unavailable after unpause due to invalid verifier target.
Protocol availability depends on a follow-up admin correction.
Written reproduction flow:
Owner pauses contract.
Owner sets verifier to address(0).
Owner unpauses.
Any user calling claim() hits failed external verifier call path and cannot claim.
Add a guard in updateVerifier(IVerifier newVerifier).
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.