Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 172 GitHub source documents. All source documents are searchable here.
Last updated: October 7, 2025
This content is meant to be consumed by AI agents via MCP. Click here to get the MCP configuration.
Note: In rare cases it may contain LLM hallucinations.
For authoritative documentation, please consult the official GLEIF vLEI trainings and the ToIP Glossary.
A validator is an entity or agent that evaluates whether a given signed statement attributed to an identifier is valid at the time of its issuance by determining the current authoritative key set from at least one key event log (), applying detection, and assessing whether the statement meets specific use-case requirements beyond cryptographic .
A validator in the KERI (Key Event Receipt Infrastructure) protocol is an entity or agent that performs comprehensive evaluation of signed statements attributed to autonomic identifiers (AIDs). The validator's primary objective is to determine whether a cryptographically signed statement can be trusted for a specific purpose by establishing the authoritative key state at the time of statement issuance and applying additional validation criteria beyond mere cryptographic verification.
The validator role is distinct from but builds upon the verifier role. While a verifier focuses exclusively on cryptographic operations (signature verification, digest validation), a validator performs broader assessment including:
The validator concept is formally defined in the KERI specification maintained by the Trust over IP Foundation. Key specification documents include:
The validator concept has evolved through KERI's development:
Validators operate at the trust assessment layer of the KERI protocol stack, positioned above the cryptographic verification layer but below application-specific business logic:
┌─────────────────────────────────────┐
│ Application Business Logic │
├─────────────────────────────────────┤
│ Validator (Trust Assessment) │ ← Validator Layer
├─────────────────────────────────────┤
│ Verifier (Cryptographic Ops) │
├─────────────────────────────────────┤
│ KERI Event Infrastructure │
└─────────────────────────────────────┘
The validator layer interfaces with multiple KERI infrastructure components:
The validation process follows a structured data flow:
Input Phase:
Key State Establishment Phase:
Verification Phase:
Duplicity Detection Phase:
Policy Application Phase:
Output Phase:
Validators maintain several categories of state:
Cached Key States: Validators typically cache derived key states for frequently validated AIDs to improve performance. Cache invalidation occurs when:
Duplicity Evidence: Validators maintain records of detected duplicity, including:
Validation Policies: Validators store configuration defining:
Trust Decisions: Validators may cache previous validation decisions with associated metadata:
Validators process KERI protocol messages encoded in CESR (Composable Event Streaming Representation). The validator does not define new message types but interprets existing KERI message structures.
Validators process all KERI key event types:
Inception Events (icp):
{
"v": "KERI10JSON0000e6_",
"t": "icp",
"d": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
"i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
"s": "0",
"kt": "1",
"k": ["DqI2cOZ06RwGNwCovYUWExmdKU983IasmUKMmZflvWdQ"],
"n": "E7FuL3Z_KBgt_QAwuZi1lUFNC69wvyHSxnMFUsKjZHss",
"bt": "2",
"b": ["BFUOWBaJz-sB_6b-_u_P9W8hgBQ8Su9mAtN9cY2sVGiY"],
"c": [],
"a": []
}
Validators extract:
i: Identifier prefix (must match digest of inception event for self-addressing identifiers)kt: Current signing thresholdk: Current public keysn: Next key digest (for pre-rotation)bt: Witness threshold (TOAD)b: Witness identifiersRotation Events (rot):
{
"v": "KERI10JSON0000e6_",
"t": "rot",
"d": "E0d8JJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i",
"i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
"s": "1",
"p": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
"kt": "1",
"k": ["DZb5CMZAoTNZH3ULvaU6Z-i0d8JJR2nmwyYAfSVPzhzS"],
"n": "EAoTNZH3ULvaU6Z-i0d8JJR2nmwyYAfSVPzhzS6b5CMZ",
"bt": "2",
"br": [],
"ba": [],
"a": []
}
Validators verify:
p: Prior event digest matches actual prior events: Sequence number increments correctlyk: New keys match pre-committed digest from prior eventInteraction Events (ixn):
{
"v": "KERI10JSON0000a6_",
"t": "ixn",
"d": "E0d8JJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i",
"i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
"s": "2",
"p": "E0d8JJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i",
"a": [
{
"i": "EQzFVaMasUf4cZZBKA0pUbRc9T8yUXRFLyM1JDASYqAA",
"s": "0",
"d": "ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM"
}
]
}
Validators process:
a: Anchor seals referencing external data or eventsValidators process key event receipts from witnesses:
{
"v": "KERI10JSON0000a6_",
"t": "rct",
"d": "E0d8JJR2nmwyYAfSVPzhzS6b5CMZAoTNZH3ULvaU6Z-i",
"i": "EL1L56LyoKrIofnn0oPChS4EyzMHEEk75INJohDS_Bug",
"s": "1"
}
Receipts include signatures from witnesses confirming they have observed and validated the referenced event.
When validating ACDC credentials, validators process:
{
"v": "ACDC10JSON00011c_",
"d": "EBdXt3gIXOf2BBWNHdSXCJnFJL5OuQPyM5K0neuniccM",
"i": "did:keri:EBkPreYpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPM",
"ri": "did:keri:ECmRy7xMwsxUelUauaXtMxTfPAMPAI6FkekeolOjkggt",
"s": "ED6jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A",
"a": {
"d": "EEveY4-9XgOcLxUderzwLIr9Bf7V_NHwY1lkFrn9y2PY",
"i": "did:keri:EpZfFk66jpf3uFv7vklXKhzBrAqjsKAn2EDIPMBkPre",
"dt": "2021-06-27T21:26:21.233257+00:00",
"LEI": "254900OPPU84GM83MG36"
}
}
Validators verify:
i: Issuer AID and its key stateri: Registry identifier for credential statuss: Schema SAID for structural validationa: Attribute block integrityValidators participate in several message exchange patterns:
Direct Validation Pattern (Direct Mode):
Witnessed Validation Pattern (Indirect Mode):
Watcher-Enhanced Validation Pattern:
Judge-Delegated Validation Pattern (Advanced):
Validator state transitions follow this model:
Initial State: Validator has no knowledge of AID
KEL Acquisition State: Validator retrieves KEL from sources
Key State Derivation State: Validator processes KEL to derive key state
Duplicity Assessment State: Validator checks for conflicting KELs
Cryptographic Verification State: Validator verifies signatures
Policy Application State: Validator applies use-case rules
Terminal States:
Validators must respect several timing constraints:
KEL Ordering: Events must be processed in strict sequence number order. Out-of-order events are placed in escrow until missing events arrive.
Timestamp Validation: For time-sensitive statements, validators verify:
Witness Confirmation Timing: Validators may require witness confirmations within a time window to ensure liveness. The TOAD parameter defines minimum witness confirmations required.
Cache Expiration: Cached key states have expiration policies:
Validators operate under a threat model where:
Adversarial Controllers: Controllers may attempt to:
Compromised Infrastructure: Validators must assume:
Timing Attacks: Adversaries may:
Validators provide several security guarantees:
Cryptographic Integrity: Through signature verification, validators guarantee that:
Duplicity Detection: Through KEL comparison, validators guarantee:
Key State Accuracy: Through KEL processing, validators guarantee:
Temporal Validity: Through timestamp checking, validators guarantee:
Validators resist several attack categories:
Live Key Compromise Attacks: If current signing keys are compromised:
Dead Key Compromise Attacks: If old keys are compromised after rotation:
Duplicity Attacks: If controller creates conflicting KELs:
Witness Collusion Attacks: If subset of witnesses collude:
Replay Attacks: If attacker replays old valid statements:
Validators depend on several KERI ecosystem protocols:
KERI Core Protocol: Validators must implement:
CESR Encoding: Validators must parse:
OOBI Protocol: Validators use Out-Of-Band Introductions to:
TEL Protocol: For credential validation, validators must:
ACDC Protocol: For credential validation, validators must:
IPEX Protocol: For presentation validation, validators must:
Validators integrate with external systems through:
Witness Networks: Validators query witnesses via:
Watcher Networks: Validators query watchers via:
DID Resolvers: For did:keri identifiers, validators may:
Credential Registries: Validators query registries via:
Application Systems: Validators provide results to applications via:
KEL Acquisition Performance: Retrieving KELs from multiple sources can be slow. Implementations should:
Duplicity Detection Complexity: Comparing KELs from multiple sources requires:
Key State Derivation Overhead: Processing long KELs can be computationally expensive. Implementations should:
Threshold Evaluation: Determining if witness thresholds are met requires:
Policy Configuration: Validators need flexible policy frameworks:
Caching Strategy: Effective caching dramatically improves performance:
Parallel Processing: Validators can parallelize:
Incremental Validation: For long-lived identifiers:
Resource Management: Validators must manage:
Input Validation: Validators must rigorously validate:
Cryptographic Library Selection: Use well-vetted libraries:
Error Handling: Secure error handling requires:
Witness/Watcher Trust: Validators should:
Embedded Validators: For client applications:
Service-Based Validators: For enterprise deployments:
Distributed Validators: For high-scale systems:
Hybrid Validators: Combining approaches:
Sequential Event Processing: Validators MUST process events in strict sequence number order. Out-of-order events should be placed in escrow until missing events arrive. Implementations should maintain an escrow queue indexed by sequence number.
Key State Caching: For performance, implementations should cache derived key states with event-based invalidation. When a new establishment event is detected, the cached key state must be invalidated and recomputed.
Incremental Updates: For long-lived identifiers with extensive KELs, implementations should support incremental key state updates rather than reprocessing the entire KEL on each validation.
Multi-Source Comparison: Validators should query multiple sources (witnesses, watchers) and compare KEL versions. Implementations must store the source of each KEL version to enable duplicity proof generation.
First-Seen Policy: Implementations must record the first version of each event observed and reject later conflicting versions. This requires persistent storage of first-seen events.
Duplicity Evidence Storage: When duplicity is detected, implementations should store both conflicting versions with metadata (source, timestamp) to enable proof generation and forensic analysis.
Threshold Evaluation: Implementations must correctly evaluate witness thresholds, supporting both numeric thresholds (e.g., "3 of 5") and fractional weight thresholds. The TOAD parameter defines the minimum acceptable threshold.
Parallel Queries: For performance, implementations should query multiple witnesses in parallel with appropriate timeout handling. A subset of witnesses may be slow or unresponsive.
Receipt Verification: Witness receipts must be cryptographically verified using the witness's own AID and key state. Implementations should maintain witness KELs separately from the validated identifier's KEL.
Caching Layers: Implement multi-level caching:
Asynchronous Validation: For non-blocking applications, implement asynchronous validation with callback or promise-based APIs. This allows applications to continue processing while validation completes.
Batch Validation: When validating multiple statements from the same AID, derive key state once and reuse for all statements (if timestamps are compatible).
Fail-Closed Behavior: On any error or ambiguity, validators should reject the statement rather than accept it. This includes:
Timing Attack Prevention: Use constant-time comparison operations for cryptographic values to prevent timing side-channel attacks.
Resource Limits: Implement limits on:
Detailed Logging: Implementations should log:
Graceful Degradation: When infrastructure is unavailable:
Test Vectors: Implementations should be tested against:
Integration Testing: Test validator behavior with: