fix: store agreement proposals without the signer signature - #1061
fix: store agreement proposals without the signer signature#1061MoonBoi9001 wants to merge 3 commits into
Conversation
|
what about doing the opposite? i.e, having the service store the signature but the agent to ignore it. Is there any downside to that? There isn't an immediate use for the signature, but it is proof that can be potentially valuable. |
|
Makes sense, will look into it |
The indexer-agent reads proposals indexer-rs writes to the shared table and rejects any whose stored signature is non-empty, since on-chain acceptance is offer-based; strip the signature before storing while still authenticating it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01USBDULGGvrHzVTKWgxfYz4
The header said signature and signer-authorization checks are not performed here, but the proposal path now recovers the EIP-712 signer and requires the agreement-manager role before storing; the signature is stripped only once that check passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01USBDULGGvrHzVTKWgxfYz4
A proposal re-sent with a different signature over identical terms must replay as idempotent rather than a conflict, since the stored form drops the signature. Add a two-signer test that proves this, plus a shared context builder it needs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01USBDULGGvrHzVTKWgxfYz4
7b11731 to
64a20c6
Compare
|
Closing as superseded. Store-with-signature — the suggestion in review here — already shipped on The other half — having the indexer-agent ignore the stored signature instead of rejecting it as a |
TL;DR
This makes the indexer service remove the signature before saving an indexing proposal.
Motivation
When the service receives an indexing-agreement proposal it first verifies the sender's signature, then saves the proposal for the agent to act on. The agent no longer uses that signature to accept on-chain — it accepts against the payer's posted on-chain offer — so it now treats any saved proposal that still carries a signature as a mistake and refuses it. The result is that every proposal the service saves is discarded by the agent and no agreement can be accepted. Clearing the signature before saving, while still verifying it first, lets the two services line up again.
Summary
Generated with Claude Code
https://claude.ai/code/session_01USBDULGGvrHzVTKWgxfYz4