Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 181 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.
An establishment event is a key event in KERI that creates or modifies the authoritative key state of an Autonomic Identifier (AID), including inception events (identifier creation) and rotation events (key rotation), which define the current controlling key pairs and witness configuration.
An establishment event is a fundamental key event type in the KERI protocol that establishes or changes the key state of an Autonomic Identifier (AID). According to the KERI specification, establishment events form a critical subsequence within the complete Key Event Log (KEL), representing moments when the authoritative control over an identifier is defined or transferred.
Establishment events serve three primary purposes:
The establishment event subsequence forms the backbone of an identifier's security history. While a KEL may contain various event types, establishment events represent the critical moments when control authority is established or transferred.
The KERI specification mandates strict field ordering for establishment events. Implementations MUST preserve this ordering during serialization to ensure consistent SAID computation across different implementations. The canonical ordering places common fields first (v, t, d, i, s, p) followed by establishment-specific fields (kt, k, nt, n, bt, b, c, a).
When creating inception events for self-addressing identifiers, both the d and i fields must contain identical values. The derivation process requires:
d and i fields with dummy # characters of appropriate lengthi must match the derivation code for dRotation events require validation against two thresholds:
kt): Signatures must satisfy this threshold using keys from the k arraynt from previous event): Signatures must also satisfy this threshold using the revealed pre-rotated keysThis dual-threshold requirement is critical for security and must be enforced in all rotation validations.
Witness configuration changes in rotation events use three fields:
wr (witness rotation/cuts): AIDs to remove from witness poolwa (witness additions): AIDs to add to witness poolwt (witness threshold): Updated threshold valueImplementations must apply cuts before additions and validate that the resulting witness pool satisfies the new threshold.
For implementations supporting partial rotation:
Establishment events are organized as a subsequence within the complete KEL. This means:
s field) increments across all events, not just establishment eventsEvery establishment event contains several critical components:
Version String (v): Specifies the KERI protocol version and serialization format (e.g., KERI10JSON000188_)
Event Type (t): Identifies the specific establishment event type:
icp - Inception eventrot - Rotation eventdip - Delegated inception eventdrt - Delegated rotation eventIdentifier (i): The AID prefix being established or rotated
Sequence Number (s): Monotonically increasing event counter (hexadecimal encoded)
Digest (d): Self-addressing identifier (SAID) of the event itself
Prior Event Digest (p): Cryptographic digest of the previous event (absent in inception)
Current Keys (k): Array of current authoritative public keys
Current Threshold (kt): Signing threshold for current keys
Next Key Digests (n): Array of digests of pre-rotated keys
Next Threshold (nt): Signing threshold for next keys (in partial rotation implementations)
Witness Configuration:
wt - Witness thresholdw - Array of witness AIDswr - Witness rotation (cuts)wa - Witness additionsConfiguration Traits (c): Array of configuration flags
Establishment events follow strict field ordering as specified in the KERI protocol. The canonical field order for establishment events is:
[v, t, d, i, s, p, kt, k, nt, n, bt, b, c, a]
Where:
v = Version stringt = Event typed = Event digest (SAID)i = Identifier prefixs = Sequence numberp = Prior event digestkt = Current signing thresholdk = Current keys arraynt = Next thresholdn = Next key digests arraybt = Witness threshold (backer threshold)b = Witness array (backers)c = Configuration arraya = Anchors array (for seals)Establishment events are encoded using CESR (Composable Event Streaming Representation), which supports dual text/binary encoding:
Text Domain: JSON serialization with CESR version string
{
"v": "KERI10JSON000188_",
"t": "icp",
"d": "EH7Oq9oxCgYa-nnNLvwhp9sFZpALILlRYyB-6n4WDi7w",
"i": "EH7Oq9oxCgYa-nnNLvwhp9sFZpALILlRYyB-6n4WDi7w",
"s": "0",
"kt": "1",
"k": ["DSuhyBcPZEZLK-fcw5tzHn2N46wRCG_ZOoeKtWTOunRA"],
"nt": "1",
"n": ["EPYuj8mq_PYYsoBKkzX1kxSPGYBWaIya3slgCOyOtlqU"],
"bt": "0",
"b": [],
"c": [],
"a": []
}
Binary Domain: Compact binary representation using CESR encoding
Version String: Fixed format with embedded size information
KERI10JSON000188_ where 000188 is the byte countSequence Number: Hexadecimal string representation
Keys and Digests: CESR-encoded qualified cryptographic primitives
Thresholds: String representation of integer or fractional weights
Inception Event Creation:
The inception event is the first and only establishment event that creates an AID. The process involves:
For self-addressing identifiers, the inception event requires special handling where both the d (digest) and i (identifier) fields must contain identical values after derivation.
Rotation Event Creation:
Rotation events transfer control authority to new keys:
p fieldn fieldEstablishment events are immutable once created and signed. However, they enable state changes through:
Key Rotation: The primary update mechanism
Witness Rotation: Changes the witness pool
wr field specifies witnesses to remove (cuts)wa field specifies witnesses to addwt field updates the witness thresholdPartial Rotation: Advanced rotation mechanism
Establishment event verification involves multiple steps:
Structural Verification:
Cryptographic Verification:
d field) matches computed digestp field) matches previous eventThreshold Verification:
kt) is satisfied by attached signaturesbt) is satisfied by witness receiptsSemantic Verification:
Establishment events are fundamental to:
KERI Protocol: Core identifier management
ACDC Protocol: Credential issuance foundation
IPEX Protocol: Presentation exchange security
Establishment events follow a strict lifecycle:
Phase 1: Creation
Phase 2: Signing
Phase 3: Witnessing
Phase 4: Publication
Phase 5: Verification
Establishment events interact with several related data structures:
Key Event Log (KEL):
Key Event Receipt Log (KERL):
Key State:
Transaction Event Log (TEL):
Seals:
For non-transferable identifiers, there is exactly one establishment event - the inception event. These identifiers:
For transferable identifiers, multiple establishment events are expected:
Delegated establishment events (dip, drt) include additional requirements:
Establishment events provide critical security guarantees:
Duplicity Evidence: Multiple versions of establishment events for the same sequence number constitute detectable duplicity
Forward Security: Pre-rotation commitments protect against key compromise
Backward Chaining: Prior event digests create tamper-evident history
Threshold Security: Multi-signature thresholds prevent single-point compromise
Witness Consensus: Distributed witnessing provides Byzantine fault tolerance
Post-Quantum Resistance: Digest-based pre-rotation provides quantum-safe properties
nt field specifies the next threshold (may differ from kt)n field contains an ordered list of next key digests (not a single XORed digest)Establishment events must be encoded using CESR with:
Implementations should maintain mechanisms to detect duplicitous establishment events:
For high-performance implementations:
Implementations must handle various error conditions: