Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 185 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 Transaction Event Log (TEL) is a cryptographically verifiable, append-only log of transactions that tracks state changes (such as credential issuance and revocation) by anchoring to a controlling Event Log (), enabling any to cryptographically verify the state of a .
The Transaction Event Log (TEL) is a fundamental data structure in the KERI ecosystem that extends the Key Event Log (KEL) architecture to support state tracking for credentials and other transactional data. While KELs establish control authority over cryptographic keys, TELs focus on tracking state transitions for verifiable credentials and other registry-managed entities.
TELs serve three critical functions within the KERI/ACDC ecosystem:
The TEL architecture implements a separation of concerns between identifier control (KEL) and credential state (TEL). The KEL establishes control authority over keys used to commit to TEL events and sign credentials, while TEL events establish the issuance/revocation state of credentials issued by the identifier controller.
TELs are organized as hash-linked data structures where each event contains:
The TEL ecosystem consists of two primary log types:
Management TEL: Signals registry creation and tracks the list of Registrars (analogous to KEL Backers) that provide backing services for individual credential TELs. The management TEL can rotate the Registrar list through specific event types.
VC TEL (Virtual Credential Transaction Event Log): Tracks the issued or revoked state of each individual verifiable credential and contains a reference to its corresponding management TEL.
All TEL events share common fields with KEL events but with important distinctions:
{
"v": "KERI10JSON000188_",
"i": "ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM",
"s": "3",
"t": "iss",
"d": "EKJccEf2Zf1xKh4dG3Y8FWS7a6s4reAXRZOkogZ2A",
"dt": "2023-01-15T09:30:00.000000+00:00",
"ri": "EACmRy7xMwsxUelUauaXtMxTfPAMPAI6FkekeolOjkggt"
}
Field Definitions:
v (version): KERI version string with serialization formati (identifier): The AID of the registry or credentials (sequence number): Registry-specific "clock" (not KEL sequence)t (type): Event type (iss, rev, bis, brv, vcp, vrt)d (digest): SAID of the eventdt (datetime): ISO 8601 timestampri (registry identifier): Reference to management TELA critical distinction: the s field in TEL events represents a registry-specific "clock" rather than following the KEL's sequence numbering. Each transaction set can have its own clock mechanism:
This independence allows each registry to maintain its own sequencing logic while still anchoring to the KEL for authorization.
TEL events anchor to their controlling KEL using event source seals with JSON structure:
{
"s": "3",
"d": "ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM"
}
These seals are delivered as CESR-encoded attachments in the form of event source seal triples (duples of sequence number and digest):
-GAB
0AAAAAAAAAAAAAAAAAAAAAAw
ELvaU6Z-i0d8JJR2nmwyYAZAoTNZH3UfSVPzhzS6b5CM
The -GAB prefix is a CESR group framing code indicating an event source seal triple attachment follows.
TELs use CESR (Composable Event Streaming Representation) encoding, supporting:
All serializations maintain insertion-ordered field maps for deterministic SAID computation.
Management TEL Inception (vcp event):
The management TEL establishes the Virtual Credential Registry (VCR) and designates initial Registrars.
VC TEL Inception (credential issuance):
iss or bis) in VC TELCredential Revocation (rev or brv event):
{
"v": "KERI10JSON000188_",
"i": "credential_AID",
"s": "1",
"t": "rev",
"d": "event_SAID",
"dt": "2023-06-15T14:30:00.000000+00:00",
"ri": "registry_AID",
"p": "prior_event_SAID"
}
Revocation events:
p field (hash chaining)Registrar Rotation (vrt event):
The management TEL can rotate its Registrar list:
{
"v": "KERI10JSON000188_",
"i": "registry_AID",
"s": "2",
"t": "vrt",
"d": "event_SAID",
"ba": ["new_registrar_AID"],
"br": ["removed_registrar_AID"]
}
TEL Verification Process:
Validators verify authoritative state by:
Notably, TEL events do not require signatures - their authenticity derives from the digest commitment and signatures in the anchoring KEL events.
ACDC Credential Lifecycle:
TELs are fundamental to ACDC (Authentic Chained Data Container) credential management:
iss (simple) or bis (registry-backed) eventsrev (simple) or brv (registry-backed) eventsIPEX (Issuance and Presentation Exchange):
The IPEX protocol relies on TELs for:
vLEI Ecosystem:
GLEIF's verifiable Legal Entity Identifier system uses TELs extensively:
Grace Period Mechanism:
TELs implement a 90-day grace period for credential transitions:
State Transitions:
NULL → ISSUED → REVOKED
↑ ↓ ↓
└───────┴─────────┘
(grace period)
KEL (Key Event Log):
ACDC (Authentic Chained Data Container):
ri fieldCESR (Composable Event Streaming Representation):
TELs support privacy-preserving revocation where:
Public TELs (PTEL):
Private TELs:
Registrars serve as backers for TELs, analogous to witnesses for KELs:
The management TEL tracks the Registrar list, enabling rotation for operational flexibility and security.
TEL security derives from:
TELs inherit KERI's duplicity detection:
Any validator can verify TEL state by:
No trust in intermediaries is required - verification is cryptographically complete.
Digest Computation: TEL events must be serialized in canonical form before computing the digest that will be anchored in the KEL. Use insertion-ordered field maps and compact JSON serialization (no whitespace) for deterministic SAID generation.
Seal Placement: Event source seals should be placed in KEL interaction events (ixn) or rotation events (rot). The seal contains the TEL event sequence number and digest, creating the cryptographic link.
Signature Verification: When verifying TEL events, validators must:
Management TEL First: Always create the management TEL before creating any VC TELs. The management TEL establishes the registry infrastructure and Registrar list that will back individual credential TELs.
Registrar Threshold: Set the Registrar threshold (bt field) to provide Byzantine fault tolerance. A threshold of (n+1)/2 where n is the number of Registrars provides safety against up to (n-1)/2 faulty Registrars.
Registrar Selection: Choose Registrars that are:
Event Ordering: TEL sequence numbers are registry-specific and independent of KEL sequence numbers. Maintain separate sequence counters for each TEL.
State Computation: Current credential state is computed by replaying the VC TEL event sequence:
Grace Period Handling: Implement the 90-day grace period for credential transitions:
Public vs. Private TELs: Choose TEL type based on privacy requirements:
Blinded Revocation: For privacy-preserving revocation:
Caching: Cache TEL state computations to avoid replaying entire event sequences on every verification. Invalidate cache when new events are received.
Batch Processing: Process multiple TEL events in batches when possible to reduce KEL anchoring overhead.
Registrar Queries: Query multiple Registrars in parallel to reduce latency. Use the first consistent response from threshold number of Registrars.
Inconsistent TELs: If different Registrars provide inconsistent TEL versions:
Missing Events: If TEL events are missing:
Stale State: Implement freshness checks: