Verification Flow
Verifier Participation Flow
Key Principle: Verification parameters must be read from on-chain
verificationParams, never trust off-chain data.
Model: Spec & Instance
A Verifier consists of two independent parts:
Verifier Spec (Specification Contract)
- Defines "what this type of transaction needs to verify" — verification parameter format, EIP-712 signature structure,
check()verification logic - Deal Contracts reference a specific Spec when written and verify the Verifier's signature legitimacy through the Spec's
check() - Specifies the
abi.encodeformat ofspecParamsfor off-chain services to decode on-chain parameters - One Spec corresponds to one type of verification business; immutable after deployment
- Multiple Verifier instances can share the same Spec, forming a competitive market
- Implements the
VerifierSpecbase contract
Verifier Instance (On-chain Contract + Off-chain Service)
- On-chain contract: Inherits
VerifierBase, exposesowner(),signer(),spec(),DOMAIN_SEPARATOR, and providesreportResult()entry - Off-chain service: Listens to platform messages, handles
request_sign(generate signed quotes) andnotify_verify(execute verification and submit results)
check()only recovers the signer address. The Deal Contract compares the recovered address againstIVerifier(verifier).signer()before accepting the quote.
If you need to design a brand new verification specification (defining new parameter formats and signature structures), see Creating a Verifier Spec.