Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 33 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.
Partial rotation is a KERI key management mechanism that enables rotation events where only a threshold-satisfying subset of pre-rotated keys participates, allowing controllers to expose some keys while keeping others in reserve, thereby supporting flexible delegation patterns and enhanced through selective key exposure.
Partial rotation is a sophisticated key management mechanism within KERI that extends the fundamental pre-rotation concept to enable more flexible and secure key rotation strategies. Unlike standard rotation where all pre-rotated keys must be exposed and rotated simultaneously, partial rotation allows controllers to selectively expose and rotate only a subset of their pre-committed keypairs while maintaining others in reserve (unexposed).
The process accomplishes several critical objectives:
Partial rotation is used when controllers need to:
Key participants in partial rotation include:
Partial rotation follows a precise sequence of operations defined in Document 1:
The rotation event must include two critical structural elements:
Next Threshold Field (nt): All establishment events gain a new field specifying the minimum number of signatures required from the next pre-rotated key set. This field is a string representation of an integer or fractional weight threshold:
"nt": "3"
This represents a requirement for 3 signatures from the next key set, independent of how many keys are in that set.
Next Keys Field (n) Structure: The n field changes from a single XORed digest string to an ordered list of individual key digests. Each digest corresponds to one next public key in sequential order:
"n": [
"ETNZH3ULvYawyZ-i0d8JZU6JR2nmAoAfSVPzhzS6b5CM",
"EYAfSVPzhzaU6JR2nmoTNZH3ULvwyZb6b5CMi0d8JZAS",
"EnmwyZdi0d8JZAoTNZYAfSVPzhzaU6JR2H3ULvS6b5CM",
"ETNZH3ULvS6bYAfSVPzhzaU6JR2nmwyZfi0d8JZ5s8bk",
"EJR2nmwyZ2i0dzaU6ULvS6b5CM8JZAoTNZH3YAfSVPzh"
]
This ordered list structure serves multiple purposes:
The controller selects which subset of pre-rotated keys to expose in the current rotation. This involves:
nt from prior event)k fieldThe prior next key list consists of the public keys that were previously committed to via their digests. Only the subset being rotated needs to be revealed.
A valid partial rotation requires satisfying two distinct thresholds as specified in Document 12:
Current Threshold Validation:
kt field specifies the current signing thresholdk fieldPrior Next Threshold Validation:
nt field specifies the prior next thresholdThis dual-threshold mechanism ensures:
Keys not exposed in the current rotation remain in reserve:
The rotation event is anchored in the KEL:
Partial rotation imposes specific cryptographic constraints:
Digest Consistency: All key digests must use consistent cryptographic algorithms. The derivation code prepended to each digest specifies the algorithm used. Validators must verify digest derivation codes match expected algorithms.
Signature Verification: Each signature must be verified against its corresponding public key using the algorithm specified by the key's derivation code. The signature attachment must include an index indicating which key from the current or prior key list was used.
Threshold Satisfaction: Both current and prior thresholds must be satisfied. For fractionally-weighted thresholds, the sum of weights from signing keys must meet or exceed the threshold value.
Ordered List Integrity: The next key digest list order must be preserved. Position in the list determines which key corresponds to which signer in multi-sig scenarios.
Partial rotation has specific timing requirements:
Sequential Processing: Rotation events must be processed in strict sequence number order. Out-of-order events must be escrowed until prior events are received and validated.
Witness Coordination: For indirect mode operations, witnesses must coordinate to achieve agreement on the rotation event before it becomes stable. The KAACE algorithm governs this coordination.
Key Exposure Timing: Reserved keys should only be exposed when needed. Premature exposure increases attack surface without providing operational benefit.
Recovery Window: Controllers should maintain sufficient reserved keys to enable recovery from key compromise scenarios without requiring complete identifier abandonment.
Partial rotation implementations must handle several error conditions:
Threshold Violation: If either current or prior threshold is not satisfied, the rotation event is invalid and must be rejected. This prevents unauthorized rotations.
Digest Mismatch: If an exposed public key does not match its committed digest from the prior event, the rotation is invalid. This prevents key substitution attacks.
Sequence Number Errors: If the rotation event's sequence number does not follow the prior event, it must be escrowed or rejected depending on whether it's out-of-order or duplicitous.
Signature Verification Failures: Any signature that fails cryptographic verification invalidates the rotation. All signatures must verify successfully.
Duplicity Detection: If multiple conflicting rotation events exist for the same sequence number, duplicity is detected and the controller is marked as duplicitous.
Reserve rotation is a primary use case where controllers maintain backup keypairs that remain unexposed. As documented in Document 8:
Strategic Key Management:
Security Benefits:
Implementation Strategy:
Custodial rotation enables sophisticated delegation as described in Document 5:
Authority Separation:
Business Model Enablement: As noted in Document 10, custodial rotation addresses a critical adoption challenge:
Implementation Pattern:
Partial rotation supports sophisticated multi-signature scenarios:
Flexible Membership:
Threshold Structures:
"kt": "2" for 3-member group"kt": "3" for 4-member group"kt": "0.66" for 66% thresholdKey Generation:
Key Storage:
Rotation Planning:
Security Monitoring:
Witness Coordination:
Client Implementation:
Protocol Compatibility:
Governance Integration:
Implementations must support the modified establishment event syntax:
Next Threshold Field: Add nt field to all establishment events (inception and rotation). This field must be validated as a string representation of integer or fractional threshold.
Ordered Digest List: Change n field from single XORed string to ordered array of individual digests. Maintain strict ordering as position determines key correspondence in multi-sig scenarios.
Backward Compatibility: Consider supporting both old and new syntax during transition period. Detect syntax version from event structure.
Implement dual threshold validation:
kt field against k field keysnt field against prior event's n field digestsImplement secure key storage for partial rotation:
Implement comprehensive error detection: