RaidzATTENTION, WITH PROOF.

EIP-712 proof schema and reason taxonomy

Schema version: 2026-09-03.1

Backlog item: VERIFY-001

Status: frozen for local implementation and contract review

This specification does not authorize deployment, verifier-key use, settlement with real value, or a token action. It defines the signed proof contract that VERIFY-002 and CONTRACT-002 must implement and test.

Domain

Every proof uses the EIP-712 domain below. Chain ID and verifying contract are runtime values and are signed by EIP-712 domain separation; a proof from another chain or escrow must fail closed.

FieldValue / type
nameRaidzCampaignEscrow
version1
chainIduint256, positive
verifyingContractnon-zero escrow address

Primary types

Initial verification uses Verification; the retention recheck uses Retention. Both bind the same ordered fields:

uint256 campaignId
address creator
bytes32 deliverableHash
uint8 status
uint16 reasonCode
uint256 amount
uint256 nonce
uint256 observedAt
uint256 expiry

For Verification, amount is the exact gross creator reward from which the canonical 70/30 split is calculated. For Retention, it is the exact retained amount. observedAt is when the verifier observed the evidence, and expiry must be later than observedAt. The digest is single-use. The contract must still enforce current time, campaign state, creator, hash, amount, nonce, signer authorization, distinct 2-of-3 quorum and replay rules.

Status codes

CodeNameProof kindSettlement behavior
1VERIFIEDInitialRelease the immediate portion and enter retention
2REJECTEDInitialRelease the full reservation to unused campaign value
3REVIEW_FLAGInitialNever settle; retain the obligation pending fresh evidence
4RETENTION_VALIDRetentionRelease retained value to the creator
5RETENTION_INVALIDRetentionReturn only retained value to the project

Successful statuses (VERIFIED, RETENTION_VALID) require reason NONE. Every rejection, invalidation, or review flag requires a non-zero known reason.

Reason codes

RangeCodes
0NONE
100–106 evidenceDELIVERABLE_NOT_FOUND, CREATOR_OWNERSHIP_MISMATCH, PUBLISHED_OUTSIDE_WINDOW, DELIVERABLE_HASH_MISMATCH, REQUIRED_DISCLOSURE_MISSING, CONTENT_CHANGED, CONTENT_DELETED
200–202 policyPOLICY_METRIC_INFLATION, POLICY_PROHIBITED_CLAIM, POLICY_JURISDICTION_BLOCK
300–301 integrityDUPLICATE_SUBMISSION, FRAUD_SIGNAL
400–402 exceptional reviewSOURCE_UNAVAILABLE, AMBIGUOUS_EVIDENCE, MANUAL_REVIEW_REQUIRED

The numeric registry in packages/domain/src/proof-schema.ts is canonical for local implementations. Codes are append-only within schema version 1; existing meanings must not be reassigned. Human explanations and private evidence remain offchain, while the signed reason code makes the economic decision attributable without publishing personal scoring data.