Skip to content

Scope verifier replay protection by airnode#49

Merged
andreogle merged 1 commit into
andreogle:mainfrom
saviro-orin:fix/verifier-airnode-replay-scope
Jul 10, 2026
Merged

Scope verifier replay protection by airnode#49
andreogle merged 1 commit into
andreogle:mainfrom
saviro-orin:fix/verifier-airnode-replay-scope

Conversation

@saviro-orin

@saviro-orin saviro-orin commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Problem

Replay protection used only the signed payload hash. An unrelated signer could consume another signer’s replay slot, and a caller could burn valid data against an unrelated callback or selector.

Changes

  • scope replay state by signer
  • scope precise delivery replay state by signer, payload, callback address, and selector
  • preserve fulfilled(airnode, requestHash) as an informational compatibility getter
  • add tests proving independent signers, callbacks, and selectors cannot block each other
  • update consumer documentation

Verification

  • 43 Foundry tests passed, including new callback/selector burn regressions
  • invariant suites passed
  • Slither analyzed 4 contracts with 101 detectors and reported 0 findings
  • book production build passed

Compatibility

The enforcement semantics change intentionally. Existing fulfilled(address,bytes32) callers remain source-compatible; fulfilledDelivery(bytes32) exposes the precise delivery state.

@saviro-orin saviro-orin requested a review from andreogle as a code owner July 10, 2026 02:47
@saviro-orin saviro-orin force-pushed the fix/verifier-airnode-replay-scope branch 2 times, most recently from 763696f to 498ba1e Compare July 10, 2026 03:32
@saviro-orin saviro-orin force-pushed the fix/verifier-airnode-replay-scope branch from 498ba1e to 345e218 Compare July 10, 2026 20:36
@andreogle andreogle merged commit f3413d5 into andreogle:main Jul 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants