Skip to content

security: fixes for #90, #91, #93; agent-side mitigation for #92 - #94

Merged
paulgnz merged 1 commit into
mainfrom
security/contract-batch-2026-09b
Sep 25, 2026
Merged

paulgnz merged 1 commit into
mainfrom
security/contract-batch-2026-09b

Conversation

@paulgnz

@paulgnz paulgnz commented Sep 25, 2026

Copy link
Copy Markdown
Collaborator

agentescrow (no ABI change)

agentvalid (additive: tables openchals, chalseq)

openclaw

Closes #90, #91, #93 once deployed (will close manually after mainnet hash verification).

Tests: agentescrow 280 passing (5 new, from the #90 PoC plus fee cases), agentvalid 53 passing (4 new, from the #91 PoC), openclaw arbitrator-guard tests (4).
ABI diff against mainnet: agentescrow unchanged; agentvalid adds tables openchals and chalseq only.

…#92

agentescrow (no ABI change)
- #90: cleanstale also removes refunded jobs (state 7, escrow settled) older than
  stale_after, so a createjob+cancel loop no longer leaves permanent rows
- #93: arbitrate applies the platform fee to the agent's share, as approve does;
  still waived when the owner resolves as fallback

agentvalid (additive: tables openchals, chalseq)
- #91: at most 3 unfunded challenges per challenger; cancelchal and expireunfund
  delete the row instead of flagging it; challenge ids come from a monotonic
  counter so a deleted id is never reused

openclaw
- #92: xpr_accept_job and xpr_submit_bid refuse jobs whose arbitrator is not in
  TRUSTED_ARBITRATORS (default protonnz); jobs with no arbitrator are allowed
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.

[security] agentescrow: createjob + cancel loop grows contract RAM without bound (openjobs cap and cleanstale bypassed)

1 participant