Add ERC: AI Inference Proof Verification Interfaces#1771
Open
JimmyShi22 wants to merge 43 commits into
Open
Conversation
Collaborator
File
|
…input-trust rationale
abcoathup
reviewed
May 27, 2026
abcoathup
reviewed
May 27, 2026
abcoathup
reviewed
May 27, 2026
Co-authored-by: Andrew B Coathup <28278242+abcoathup@users.noreply.github.com>
…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
Author
|
@damonzwicker all check passed |
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! |
…cture - Shorten description to ≤140 chars and remove forbidden word 'standard' - Add markdown links for first occurrences of ERC-8281, ERC-8299, ERC-8263 - Move 'Composability in Practice' inside Reference Implementation - Rename original Reference Implementation content to 'Coding in Practice' - Demote Layer 1/2/3 from ### to ####
…rop unmerged ERC numbers - Add [EIP-712](./eip-712.md) link at first plain-text occurrence (eipw markdown-link-first) - Remove ERC-8275 from bullet point (unmerged, no file to link to) - Replace ERC-8281/8299/8263 references with OCP/WYRIWE/descriptive text (HTMLProofer: files don't exist)
Concrete wiring of the attestation/judgment variant per t/28083 ethereum#97-#102: inner-layer verify semantics + verdict encoding, Type A/B deterministic-bool aggregation (derived confidence, outcome-oracle dependency stated explicitly, self-dealing guard), recordPointer accountability invariants, optional WYRIWE L4 execution binding, production reference data.
…, conformance-aligned
Carries TMerlini's expanded WYRIWE subsection ('drop it in, no PR needed from my side') with three constructions aligned to the filed ERC-8299 normative text per the same-day conformance review: sanitizationPipelineHash keeps the || rawInputHash binding; non-sentinel inputHash = keccak256(sanitized_input) per the verification invariant; the judgment mapping uses the L4 JudgmentExecutionAttestation fields (verdictHash = keccak256(verdict_artifact_ref || rawProposalHash)) rather than overloading L3 fields. Co-authored-by: TMerlini <tmerlini@users.noreply.github.com>
…n (t/28083 ethereum#106) Per TMerlini's ask: one note distinguishing sanitizationPipelineHash (pipeline declared + bound to a raw input) from inputHash (what the model received) so the two commitments read as complementary, not contradictory.
…section Composability in Practice: add Judgment Validator subsection (attestation/judgment)
ERC-8299, ERC-8263, ERC-8275 not yet merged — eipw markdown-link-first and HTMLProofer both fail when referenced by number without an existing target file. Replace with WYRIWE, proof anchoring, and settlement periodId respectively.
Per t/28083 convergence + JimmyShi22 go-ahead (ethereum#122). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…tionCompleted event
…tionCompleted event
|
The commit 10ed575 (as a parent of 6c9f1d2) contains errors. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ERC-8274 v0.2 — Two-layer inference verification interfaces
This PR introduces ERC-8274, defining three minimal abstract interfaces organized into two composable layers for on-chain AI inference proof verification.
What this ERC defines
IProofVerifier— inner algorithm layer, implemented by proof system providers (ZK teams, TEE vendors, oracle networks, attestation gateways). Stateless. Answers: "is this proof cryptographically valid for this input and output?"IAgentVerifier— outer application layer, implemented by agent developers. Stateful. Wraps one or moreIProofVerifier(s). Answers: "for this task, was this agent authorized and does the proof confirm it?"IAgentVerifiable— declaration layer for settlement contracts; declares whichIAgentVerifieris in use and emitsAgentVerifierUpdatedon any change.Key design decisions
Two-layer separation. Proof system providers implement
IProofVerifierwithout knowing the application context. Agent developers implementIAgentVerifierwithout being coupled to a specific proof system. Settlement contracts callIAgentVerifierwithout knowing the backend. Each layer is independently deployable and auditable.verificationDigestcommitment.IAgentVerifier.verify()returns abytes32digest computed fromkeccak256(abi.encode(taskId, agentId, inputHash, outputHash, valid, agentProofProfile)).VerificationCompletedcarries all preimage fields alongside the digest, making every record independently verifiable by any observer without querying live contract state — following OCP's recompute → compare → confirm model.proofSystem()paradigm taxonomy. Four paradigms are named:zk,op,tee,attestation. Withinattestation, three variants are named:multisig,wyriwe,judgment. This allows consumers to inspect and reason about trust assumptions without reading implementation internals.metadataownership. Invariant deployment configuration (circuit key, enclave hash, signer registry address) is stored inIAgentVerifierand passed toIProofVerifieron each call. Settlement contracts never encode or see it.OCP alignment.
VerificationCompletedis designed so any observer can apply OCP's three-step procedure (recompute → compare → confirm inclusion) independently, covering both on-chain and off-chain verification contexts.Input provenance.
IProofVerifier.verify()'sinputHashmaps directly to WYRIWE's triple-commitmentinput_hashfield.WyriweProofVerifieris already deployed on mainnet and implementsIProofVerifierdirectly.Proof anchoring.
verify()confirms cryptographic validity but not when the proof was generated. The proof anchoring rationale section describes how an on-chain anchor registry closes this gap at theIAgentVerifierlayer.Reference implementation (3-layer stack)
SP1ProofVerifier(Layer 1 —IProofVerifier) — ZK backend; decodesprogramVKeyfrommetadata;proofProfile()includesVERIFIER_HASHto fingerprint the specific verifier deployment.AgentVerifier(Layer 2 —IAgentVerifier) — wrapsSP1ProofVerifier; storesmetadataand authorized agent set; enforces single-usetaskId; computes and emitsverificationDigest.ProofEvaluator(Layer 3 — ERC-8183 settlement) — implementsIAgentVerifiable; callsIAgentVerifier.verify()at settlement time; forwardsverificationDigestasjob.reason.Pre-submission alignment
VerificationCompletedevent design; discussed in the Ethereum Magicians thread.inputHashcontract;WyriweProofVerifierprovides a ready-madeIProofVerifierbackend;attestation/wyriweis a namedproofSystem()variant.Changes from v0.1
IProofVerifier+IVerificationMethod) with two-layer architecture (IProofVerifier+IAgentVerifier+IAgentVerifiable)verify()is no longerview; returns(bool valid, bytes32 verificationDigest)instead ofboolname()+version()withproofSystem()(paradigm/variant string) andproofProfile()(deployment fingerprint)VerificationCompletedevent withagentProofProfileand full preimage fieldsverificationDigestcommitment following OCPmetadataownership clarified: stored inIAgentVerifier, never exposed to settlement contractsComposability in Practicesection (ERC-8183 and WYRIWE integration examples)Discussion
Ethereum Magicians thread: https://ethereum-magicians.org/t/erc-8274-ai-inference-proof-verification/28083