Skip to content

Add ERC: AI Inference Proof Verification Interfaces#1771

Open
JimmyShi22 wants to merge 25 commits into
ethereum:masterfrom
JimmyShi22:master
Open

Add ERC: AI Inference Proof Verification Interfaces#1771
JimmyShi22 wants to merge 25 commits into
ethereum:masterfrom
JimmyShi22:master

Conversation

@JimmyShi22
Copy link
Copy Markdown

@JimmyShi22 JimmyShi22 commented May 26, 2026

ERC-8274 v0.1 — Initial draft

This PR introduces ERC-8274, defining two minimal abstract interfaces for on-chain AI inference proof verification.

What this ERC defines

IProofVerifier — implemented by proof backends (zkML, opML, TEE, oracle, multisig). Exposes a uniform stateless entry point:

function verify(bytes32 inputHash, bytes32 outputHash, bytes calldata metadata, bytes calldata proof) external view returns (bool);
function name() external view returns (string memory);
function version() external view returns (string memory);
function proofProfile() external view returns (bytes32);

metadata carries backend-specific context (model identifier, agent ID, signing registry, etc.). proof carries the cryptographic material (ZK proof, EIP-712 signature, TEE attestation, multisig aggregate). proofProfile() returns a collision-resistant identifier SHOULD derived from keccak256(abi.encodePacked(name(), version())), with implementations MAY including additional factors (e.g. a circuit commitment hash) for finer-grained collision resistance.

IVerificationMethod — implemented by consuming contracts to declare which verifier they use and emit VerifierUpdated on any change.

Key design decisions

  • Stateless verifier: no per-session or per-model state; all context is passed through function parameters. A single deployed instance serves multiple models and agents.
  • OCP alignment: implementations SHOULD follow OCP (Observation Commitment Protocol, damonzwicker/observation-commitment-protocol) — the unifying recompute → compare → confirm inclusion primitive satisfied by all five paradigms.
  • Input provenance: verify() does not guarantee input trustworthiness. Consumers that require it are RECOMMENDED to adopt the WYRIWE three-commitment scheme (TMerlini/wyriwe) alongside verify().
  • On-chain proof anchoring: verify() provides no temporal guarantee. Consumers that require proof binding are RECOMMENDED to verify an ERC-8263 anchor alongside verify().

Reference implementations included

  1. zkML / SP1 (SP1InferenceVerifier) — decodes programVKey and publicValues from metadata; proofProfile() includes VERIFIER_HASH to distinguish across SP1 verifier versions.
  2. Multisig / Oracle (MultisigInferenceVerifier) — EIP-712 InferenceAttestation over (inputHash, outputHash, registry, timestamp); proof is concatenated 65-byte signatures; passes when valid signature count reaches THRESHOLD. Derived from TMerlini's BountySettlement proof-of-concept (https://gist.github.com/TMerlini/bf3abd30c332cccb257d0e5bdff1ff95).
  3. Composition with ERC-8183ProofEvaluator implements IVerificationMethod and gates ACP.complete() / ACP.reject() on verify() result.
  4. Composition with ERC-8004 — decodes agentId from metadata as bytes32(uint256(erc8004AgentId)) and resolves via IErc8004IdentityRegistry.getAgentWallet().

Pre-submission alignment

  • Damon Zwicker (OCP author) — OCP as the unifying primitive and the recompute → compare → confirm inclusion framing are applied with his input from the Ethereum Magicians thread.
  • Tiago Merlini (ERC-8004 author, WYRIWE) — Input Provenance rationale references WYRIWE; multisig reference implementation derived from his BountySettlement contract.
  • VincentWu (ERC-8263 author) — confirmed on the Ethereum Magicians thread that ERC-8263 ↔ ERC-8274 cross-references are deferred to ERC-8263 v0.3, to avoid coupling v0.1 ship to ERC-8263 v0.2 publication timing.

Out of scope (deferred)

  • ERC-8263 cross-reference paragraph (waiting on ERC-8263 v0.3)
  • opML optimistic backend reference implementation
  • TEE backend reference implementation (AWS Nitro / Intel TDX)

Discussion

Ethereum Magicians thread: https://ethereum-magicians.org/t/draft-erc-universal-ai-inference-verification-registry/28083

@eip-review-bot
Copy link
Copy Markdown
Collaborator

eip-review-bot commented May 26, 2026

File ERCS/erc-8274.md

Requires 1 more review from Editors: @g11tech, @jochem-brouwer, @samwilsn, @xinbenlv

@github-actions github-actions Bot added w-ci and removed w-ci labels May 26, 2026
@eip-review-bot eip-review-bot changed the title Add ERC: Standard Interfaces for AI Inference Proof Verification Add ERC: AI Inference Proof Verification Interfaces May 26, 2026
@github-actions github-actions Bot added w-ci and removed w-ci labels May 26, 2026
@github-actions github-actions Bot removed the w-ci label May 26, 2026
@JimmyShi22 JimmyShi22 changed the title Add ERC: AI Inference Proof Verification Interfaces Add ERC-8288: AI Inference Proof Verification Interfaces May 26, 2026
@JimmyShi22 JimmyShi22 changed the title Add ERC-8288: AI Inference Proof Verification Interfaces Add ERC-8xxx: AI Inference Proof Verification Interfaces May 26, 2026
@JimmyShi22 JimmyShi22 changed the title Add ERC-8xxx: AI Inference Proof Verification Interfaces Add ERC: AI Inference Proof Verification Interfaces May 26, 2026
Comment thread ERCS/erc-8288.md Outdated
Comment thread ERCS/erc-8288.md Outdated
Comment thread ERCS/erc-8288.md Outdated
Co-authored-by: Andrew B Coathup <28278242+abcoathup@users.noreply.github.com>
@github-actions github-actions Bot added w-ci and removed c-new labels May 28, 2026
@eip-review-bot eip-review-bot changed the title Add ERC: AI Inference Proof Verification Add ERC: AI Inference Proof Verification Interfaces May 28, 2026
@github-actions github-actions Bot added w-ci and removed w-ci labels May 28, 2026
… implementations (SP1 zkML, multisig/oracle), add ERC-8183/ERC-8004 composition examples, revise rationale and security considerations
@damonzwicker
Copy link
Copy Markdown

This is a clean v0.1. The four-parameter verify() with explicit metadata separation is the right call — keeps proof bytes opaque while giving backends a stable channel for model identifier, agent ID, and registry context.
The OCP alignment section is accurate. recompute → compare → confirm inclusion as the unifying primitive across all five paradigms is exactly the right framing. The interface is backend-agnostic because OCP's guarantee is backend-agnostic.
proofProfile() returning bytes32 via keccak256(abi.encodePacked(name(), version())) is cleaner than the string format from earlier drafts. Right call.
Looking forward to seeing this through review.
— Damon Zwicker (OCP)

@damonzwicker
Copy link
Copy Markdown

damonzwicker commented May 29, 2026 via email

@damonzwicker
Copy link
Copy Markdown

damonzwicker commented May 29, 2026 via email

@JimmyShi22 JimmyShi22 changed the title Add ERC: AI Inference Proof Verification Interfaces Add ERC: AI Inference Proof Verification May 29, 2026
@damonzwicker
Copy link
Copy Markdown

damonzwicker commented May 29, 2026 via email

@eip-review-bot eip-review-bot changed the title Add ERC: AI Inference Proof Verification Add ERC: AI Inference Proof Verification Interfaces May 29, 2026
@github-actions github-actions Bot removed the w-ci label May 29, 2026
@github-actions
Copy link
Copy Markdown

The commit b37acd7 (as a parent of 2b2037d) contains errors.
Please inspect the Run Summary for details.

@github-actions github-actions Bot added the w-ci label May 29, 2026
…dings

- Remove ERC-8263 number pattern from On-Chain Proof Anchoring section
  to resolve eipw markdown-link-first conflict with HTMLProofer (ERC-8263
  PR ethereum#1748 not yet merged; cross-reference deferred to v0.2)
- Rename Rationale subsections to Primitive/Design/Query/Result pattern
  for symmetric coverage framing
@github-actions github-actions Bot removed the w-ci label May 29, 2026
@JimmyShi22
Copy link
Copy Markdown
Author

@damonzwicker all check passed

@JimmyShi22
Copy link
Copy Markdown
Author

@abcoathup Hi editor, the ERC draft is fully prepared and ready for the official review and merging process. Thank you for your assistance with the next steps—your support is much appreciated!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants