Files
chains/thresholdvm
zeekay f4c7055d45 chains: complete Ringtail → Corona purge across thresholdvm + quantumvm + dexvm
Continuation of dc31d5b (quantumvm consumer-side leak after consensus
repo migration) — the rename was incomplete; this pass closes it.

Identifier renames in chains/{quantumvm,thresholdvm,dexvm}:
  - NTTForwardRingtail / NTTInverseRingtail / BatchNTTForwardRingtail
        → NTTForward/Inverse/BatchNTTForwardCorona (Quasar GPU dispatch)
  - LaneRingtail (CertLane enum)
        → LaneCorona
  - ProtocolRingtail (Protocol enum)
        → ProtocolCorona (string value already "corona")
  - All Ringtail-prefixed local identifiers in quantumvm/{quasar,
    quasar_witness,block,vm,vm_test,signer,stamper,service}.go,
    thresholdvm/{client,protocols,rpc,types/{ceremony,share},
    runtime/m_chain_adapter,cert/lane_test,protocol_executor_test}.go,
    dexvm/factory.go

Directory + file rename:
  thresholdvm/protocol/ringtail_general/ringtail.go
        → thresholdvm/protocol/corona_general/corona.go
  package ringtail_general → package corona_general

evm/main.go: replace single `precompile/ringtail` blank-import with
the canonical LP-4200 unified PQCrypto block (mlkem 0x012201,
mldsa 0x012202, slhdsa 0x012203, pulsar 0x012204, p3q 0x012205,
corona 0x012206) + xwing.

External test that imports threshold's renamed wrapper:
  thresholdvm/protocol_executor_test.go now imports
  "github.com/luxfi/threshold/protocols/corona" (was protocols/ringtail).
  Resolves via the workspace `./threshold` entry pointing at the
  local renamed wrapper; downstream chains/go.mod still pins
  luxfi/threshold v1.5.5 and will tidy clean once threshold cuts the
  next tag.

Build: go build ./... PASS (only harmless duplicate-rpath warnings
from the cevm cgo link).
Tests:
  thresholdvm + subpackages PASS
  quantumvm PASS
2026-05-14 09:33:22 -07:00
..

ThresholdVM

ThresholdVM is a Go library, not a chain.

Per LP-134 (Lux Chain Topology), the legacy T-Chain custody monolith is split into two operational chains, both served by this substrate:

  • thresholdvm in MPC mode → M-Chain — bridge custody for external wallets, threshold signing ceremonies (CGGMP21 / FROST / Ringtail-gen).
  • thresholdvm in FHE mode → F-Chain — TFHE keygen, encrypted EVM, confidential compute.

chains/thresholdvm/ is the shared library; the runtime presence lives on M-Chain or F-Chain depending on which adapter the runtime registers. The legacy "T-Chain" name is retained only for teleportvm (LP-6332), an unrelated cross-chain teleport message bus.

                    +--------------------------------+
                    |         ThresholdVM            |
                    |  (ceremony state machine,      |
                    |   share envelope, lane API,    |
                    |   subject binding)             |
                    +----------------+---------------+
                                     |
                 +-------------------+-------------------+
                 |                                       |
        +--------v--------+                     +--------v--------+
        |     M-Chain     |                     |     F-Chain     |
        |  (MPC: CGGMP21, |                     | (FHE: TFHE,     |
        |   FROST,        |                     |  bootstrap-key  |
        |   Ringtail-gen) |  --bootstrap key--> |  gen, encrypted |
        |                 |                     |  EVM)           |
        +-----------------+                     +-----------------+
        ceremony_root:                          ceremony_root:
        mchain_ceremony_root                    fchain_fhe_root
        block time ~500ms                       block time ~2s
        sign-oriented                           compute-oriented

What this directory contains

Path Role
types/ Ceremony, Participant, Share, Proof — pure data types, no chain logic
protocol/ Protocol-specific verifier interfaces (impl ships with the chain that uses it)
cert/ QuasarCertLane integration: lane registration + certificate-subject binding
runtime/ MChainAdapter and FChainAdapter interfaces the two chains implement
docs/ Architecture + per-chain integration notes

What this directory is not

  • Not a Lux VM. There is no factory.go exposed to chains.Manager.
  • Not a chain ID. M-Chain and F-Chain are the chains; they have their own validator sets, ceremony roots, and block cadence.
  • Not a registry of secrets, keys, or signed material. State lives on M-Chain or F-Chain, never here.

Why split

LP-134 deprecates LP-5013 ("T-Chain MPC Custody"). T-Chain previously mixed MPC ceremonies and FHE compute under one validator set, one ceremony root, one block cadence. Sign-oriented (sub-second, latency critical) and compute-oriented (multi-second, throughput critical) workloads have incompatible scaling profiles. Splitting them lets each scale on its own validator set.

The substrate stays one piece because the ceremony state machine is identical across both: registered participants → round 1 commitments → round 2 shares → finalized cert. Only the per-protocol payload (carried by (offset, len) indirection in the share envelope) differs.

Permissionless participation

Both M-Chain and F-Chain inherit P-Chain's permissionless validator model. Anyone with stake on P-Chain can delegate to the M-Chain or F-Chain validator subset (or both). No allowlist. No central authority. Bitcoin-like decentralization carries through — the threshold scheme itself enforces honest-majority safety, the chain enforces liveness.

Cross-chain handoff

When M-Chain finishes a ceremony whose output feeds F-Chain (e.g., a TFHE bootstrap key generated by FROST DKG on M-Chain), the output crosses via a CertLane artifact:

  1. M-Chain finalizes ceremony, emits cert with lane MChainFROST and mchain_ceremony_root updated.
  2. F-Chain consumes the artifact via its FChainBootstrap lane, binds it into fchain_fhe_root.
  3. Quasar 3.0's certificate_subject binds both roots in the same round, making cross-chain replay structurally impossible.

The handoff envelope is defined in cert/lane.go; the typed adapter in runtime/.

Migration from T-Chain

LP-5013 is deprecated. The legacy chain at chains/thresholdvm/ (this directory's vm.go, block.go, factory.go, fhe/, cmd/) hosts the migration shims that route legacy TChain* cert lanes to the appropriate MChain* / FChain* verifiers during the one-epoch grace window. After the grace window closes, the shims are removed and only the substrate (this README's directory tree) remains.

Activation

ThresholdVM substrate activates with Quasar 3.0 on 2025-12-25, alongside the M-Chain and F-Chain genesis events. Versions before that date target the legacy T-Chain layout.

References

LP Topic
LP-019 Threshold MPC for Bridge Signing (M-Chain protocols)
LP-013 FHE on GPU (F-Chain compute)
LP-076 Universal Threshold Cryptography Framework
LP-134 Lux Chain Topology — defines the M/F split
LP-132 QuasarGPU Execution Adapter — lane verifiers run here
LP-020 Quasar Consensus 3.0 — certificate_subject binding

License

Copyright (C) 2019-2025 Lux Industries Inc. MIT licensed.