Skip to main content
Your contract receives an attestation (a signed payload plus one aggregate signature) and checks it on-chain. You don’t run a node, trust a relayer, or deploy a feed contract per chain. The same attestation works on every chain below.
Install the interface with Foundry:
Call verify and apply your own policy:
verify returns (false, code) instead of reverting, so always check ok. Full guide, consumer library and result codes: Verify on EVM.

Get an attestation to test with

Request one from a backend with the SDK or from an agent with MCP. The SDK builds the calldata for you:
Verifier addresses for each network are on Deployments.

Before you ship

Verification proves that enough selected nodes signed this exact payload. Your contract still owns the rest:
  • Pin the sourceId you expect and require a minimum signaturesRequired.
  • Enforce freshness: a non-zero maxAge on EVM and Starknet, or compare timestamp / 1000 with the chain clock.
  • Reject replays when an old attestation could be submitted twice.
  • Decode value with the source’s encoding and bound-check it.
The full list is the consumer checklist.