The Threshold VM runs the T-chain, a dedicated chain for **executing
threshold cryptographic protocols** — signing sessions, threshold FHE
operations, session management, quotas. It is the hot path. The K-chain
(Key VM, LP-043) is the cold path that owns keys; the T-chain borrows them
to sign.
Precompile address nibble: C=7 (see LP-129 Registry).
T-chain supports these threshold signing protocols:
T-chain also hosts threshold FHE: threshold decryption of FHE ciphertexts
that were encrypted under a T-chain-held FHE key. Used by Z-chain for
encrypted rollup state disclosure.
type SignSession struct {
ID [32]byte
KeyRecordID [32]byte // Reference to K-chain KeyRecord
Protocol Protocol // CGGMP21 | FROST | BLS | ...
Message []byte
Committee []ids.NodeID
Status Status // Pending | InProgress | Complete | Failed | Expired
StartedAt uint64 // Block timestamp
ExpiresAt uint64 // Block timestamp + SignTimeout
Signatures map[ids.NodeID][]byte // Partial sigs
Result []byte // Combined signature (when Complete)
}
Sessions run for at most SignTimeout (default 5 min). Expired sessions
release their reserved committee seats and are marked Failed.
For each session, T-chain samples a committee from the validators that hold
a share of the referenced key (as recorded by K-chain).
Committee size rules:
selection
quorum certs (LP-045).
See LP-045 for why thousand-validator monolithic sessions are the wrong shape.
T-chain hosts:
to any single party)
Threshold FHE integrates with Z-chain (ZK rollups) for **private disclosure
of encrypted state**: Z-chain commits to a ciphertext on-chain, authorized
parties request threshold decryption via T-chain, result is revealed only
once quorum is reached.
CreateKey(T, N, scheme) | K-chain | State: key lifecycle |SignMessage(keyID, msg) | T-chain | Protocol: session execution |RotateKey(keyID) | K-chain | State: cold path |DecryptFHE(ciphertextID) | T-chain | Protocol: threshold decrypt session |github.com/luxfi/chains/thresholdvm/ |github.com/luxfi/chains/keyvm/ |github.com/luxfi/threshold/ |github.com/luxfi/threshold/protocols/mldsa/ |