fix(contracts): scope executor event guard by key - #41
Conversation
|
Known inherited CI blocker: the shared workflow builds |
78862b5 to
079196e
Compare
| assertEq(used, 3); | ||
| } | ||
|
|
||
| function test_nonViewReentrantDAVerifierCannotDoubleSpendTriggerLimit() public { |
There was a problem hiding this comment.
IDAVerifier.verifyDA is declared view, so this production call is a STATICCALL. The -vvvv trace shows the nested addAssertion reverting with StateChangeDuringStaticCall; it never reaches the stale-usage condition, and this test would also pass with the pre-fix accounting order. If non-view verifier reentrancy is an intended threat, the production interface/call path must permit CALL and the test should assert the limit rejection after a successful inner mutation. Otherwise this test only verifies the existing static-call restriction and should not claim to cover reentrant oversubscription.
Addresses ENG-4229.
Scopes transaction-local executor event suppression by
(adopter, assertionId)or(adopter, storageKey), allowing independent mutations while rejecting repeated mutations of the same key.