This is a draft extension to ERC-8004 defining a standard contract interface for validation networks — implementations where the validatorAddress in ERC-8004’s Validation Registry is a network of independent validators rather than a single party.
Draft spec: https://github.com/pokt-network/erc-8004-vni
What we’re trying to fix
ERC-8004’s Validation Registry is deliberately unopinionated about who validates, and that’s correct. But that surface has left two distinct security questions to be answered per-implementation, with no portable answer to either:
1. How is the validator itself trusted?
A single validatorAddress is a single trust anchor. If that party is compromised, bribed, or colludes with the agent being validated, the validation is worthless — and ERC-8004 reduces to a more expensive way to write a reputation entry. Three patterns have emerged in practice, none of them portable:
-
Single-validator addresses — operationally simple, but reintroduce the centralized-trust assumption ERC-8004 was designed to relax.
-
TEE-based attesters — strong cryptographic guarantees, but with hardware-trust dependencies and a limited qualifying-operator set.
-
Bespoke threshold schemes — each team rolls its own selection rules, attestation format, and verification path. Clients integrating with multiple networks write per-network glue code.
No shared interface today lets a client say “give me N validators, drawn from at least D distinct operators, with a deadline of T, and return a verifiable bundle of their signed attestations.” Every team building this property is building it from scratch.
2. How is the work trusted?
Multi-validator selection is necessary but not sufficient. Even granting that a network claims to have called N validators across D operators, the relying party still needs evidence that the network actually selected those validators, ran the work, and collected the attestations it returns. Without that evidence, a multi-validator network collapses to its aggregator’s word — operationally no stronger than a single validator that happens to publish a list of names.
This second question admits a spectrum of answers: signature-only attestations (anyone can verify signatures, but selection is taken on trust); indexer-attested selection (a third-party indexer of the validator network’s state vouches that selection was legitimate); light-client verification of the underlying network’s consensus state on Ethereum (no third party needed); zk or TEE execution proofs of selection-and-verification. Any conforming network sits somewhere on that spectrum, and the interface should make that placement visible to clients rather than implicit.
What the extension does
Three pieces, strictly additive to ERC-8004:
-
IValidationNetwork— a contract interface that wraps the existing Validation Registry. A conforming network implements selection, accepts off-chain attestations from the selected validators, aggregates, and writes back through ERC-8004’s existingvalidationResponse. Mandatory addressee verification onsubmit()closes a griefing path where a third party can burn a network’s resources on requests not addressed to it. -
SelectionPolicy— a canonical policy struct with operator-diversity (minOperators) as a first-class field, alongsideselectionSize,minResponses,deadlineSeconds, andverdictMode. Networks enforceminOperatorsat selection time; a network whose effective operator count cannot satisfy a policy MUST refuse it viasupports()rather than silently degrade. -
EIP-712 attestation envelope — a typed-data structure each validator signs off-chain, with the aggregated bundle written to the Validation Registry’s
responseURIas canonical (JCS) JSON. The same verification code works across any conforming network.
The Validation Registry contract is not modified. Single-address validators continue to work unchanged. Any sufficiently decentralized substrate — permissionless RPC networks, restaking-based AVSs, TEE consortia, decentralized oracle networks — can implement the interface.
What v0.1 doesn’t yet specify
Pre-publication review surfaced one significant gap: v0.1 defines the attestation format but leaves the verification model implicit. Networks at different points on the trust spectrum above all look identical at the contract surface. The likely v0.2 addition is a verificationModel() view (and possibly an operatorModel() view) so that a relying party can introspect what they’re trusting before they submit. We’d appreciate input on the right enumeration and granularity.
Open questions
-
Verification model surface. Should the interface require networks to declare a verification model, and what’s the right enumeration? (See above.)
-
Policy schema. Fixed canonical struct with an opaque
extensionsfield, or registry-defined and extensible at this layer? (Current lean: fixed.) -
Validation-network registry contract. Yes or no? (Current lean: no — clients pass
validatorAddressdirectly to ERC-8004; discovery happens at the agent/indexer layer.) -
EIP-7702 hooks for sponsored validation — in scope for v1, or follow-on?
-
Cost discovery. Is a single
uint256fromquote()expressive enough, or does pricing need structure? -
Spectrum verdicts (
verdictMode = mean) — follow-on extension or v1?
Full list in §Open Questions of the draft.
Who we’d like to hear from
The agent ecosystem is settling on ERC-8004 as the trust-layer primitive, and the multi-validator question is being answered in production right now. We’d rather have one portable interface than several incompatible ones.
Particularly interested in feedback from teams running TEE consortia, restaking AVSs, decentralized oracle networks, and permissionless RPC networks — the interface is designed to admit you on equal footing, and we’d like to confirm that holds in practice. Co-authors welcome.