mirror of
https://github.com/luxfi/chains.git
synced 2026-07-27 03:39:41 +00:00
chains: rename thresholdvm → mpcvm (LP-134 T-Chain retirement finished)
Under LP-0130's canonical roster, chains/thresholdvm/ hosts the M-Chain VM (MPC threshold signing). The package name "thresholdvm" was the last piece of T-Chain nomenclature still shipping in code — legacy from the pre-LP-134 shared-substrate design. Renamed to mpcvm/ so the package name matches the M-Chain letter and LP-7100 spec. - chains/thresholdvm/ → chains/mpcvm/ (dir + inner files + package decl) - Sed-replace thresholdvm → mpcvm across .go / .md / .yml / .json / .sh - Fee/settlement primitive references now say mpcvm - LLM.md canonical chain roster (LP-0130) already points at mpcvm/ F-Chain runtime pieces (fhe/, protocol/tfhe_keygen/, runtime/f_chain_adapter.go) stay under mpcvm/ for now — they consume the same shared threshold primitives. A follow-up extract to chains/fhevm/ can happen once F-Chain runtime graduates. Co-authored-by: Hanzo Dev <dev@hanzo.ai>
This commit is contained in:
+1
-1
@@ -10,6 +10,6 @@
|
||||
{"vm": "oraclevm", "image": "ghcr.io/luxfi/chains/oraclevm", "cgo": "0"},
|
||||
{"vm": "quantumvm", "image": "ghcr.io/luxfi/chains/quantumvm", "cgo": "0"},
|
||||
{"vm": "relayvm", "image": "ghcr.io/luxfi/chains/relayvm", "cgo": "0"},
|
||||
{"vm": "thresholdvm", "image": "ghcr.io/luxfi/chains/thresholdvm", "cgo": "0"},
|
||||
{"vm": "mpcvm", "image": "ghcr.io/luxfi/chains/mpcvm", "cgo": "0"},
|
||||
{"vm": "zkvm", "image": "ghcr.io/luxfi/chains/zkvm", "cgo": "0"}
|
||||
]
|
||||
|
||||
@@ -34,8 +34,8 @@ domain-execution chain that MUST consume UTXO settlement via the
|
||||
| `zkvm/` | **Z** | Rollup / private commitment + nullifier. Shielded supply is an X-escrow wrapper (LP-0130 §2, I-5) | LP-8000 |
|
||||
| `aivm/` | **A** | Inference receipt + attestation. Rides B's settlement engine (LP-0130 §9) | LP-5000 |
|
||||
| `bridgevm/` | **B** | Cross-chain message lifecycle. Fees deducted from bridged amount (LP-0130 §8) | LP-6000 |
|
||||
| `thresholdvm/` | **M** | MPC signing / custody. Service fees paid by originating chain (LP-0130 §7); no user M-balance | LP-7100 |
|
||||
| `thresholdvm/fhe/` | **F** | FHE runtime. Encrypted supply reconciles to X-escrow (LP-0130 §2, I-5) | LP-8200 |
|
||||
| `mpcvm/` | **M** | MPC signing / custody. Service fees paid by originating chain (LP-0130 §7); no user M-balance | LP-7100 |
|
||||
| `mpcvm/fhe/` | **F** | FHE runtime. Encrypted supply reconciles to X-escrow (LP-0130 §2, I-5) | LP-8200 |
|
||||
|
||||
**Service VMs** (not canonical primary chains under LP-0130):
|
||||
|
||||
|
||||
+2
-2
@@ -12,8 +12,8 @@ operator daemons (no luxd validator required), the same way `mpcd` and
|
||||
|---|---|---|---|
|
||||
| R-Chain (relay) | `chains/relayvm/` (shim) | `luxfi/relay/vm/` | `luxfi/relay/cmd/relayd` |
|
||||
| O-Chain (oracle) | `chains/oraclevm/` (shim) | `luxfi/oracle/vm/` | `luxfi/oracle/cmd/oracled` |
|
||||
| M-Chain (MPC threshold) | `luxfi/chains/thresholdvm/` (canonical, MPC mode) | (same) | n/a — runs in luxd |
|
||||
| F-Chain (FHE) | `luxfi/chains/thresholdvm/` (canonical, FHE mode) | (same) | `luxfi/fhe/cmd/fhed` (standalone FHE daemon) |
|
||||
| M-Chain (MPC threshold) | `luxfi/chains/mpcvm/` (canonical, MPC mode) | (same) | n/a — runs in luxd |
|
||||
| F-Chain (FHE) | `luxfi/chains/mpcvm/` (canonical, FHE mode) | (same) | `luxfi/fhe/cmd/fhed` (standalone FHE daemon) |
|
||||
| C-Chain (EVM) | `chains/evm/` | uses `chains/evm/cevm` (C++/GPU FFI shim) or pure-Go (default) via build tags | n/a — runs in luxd |
|
||||
| A-Chain (AI) | `chains/aivm/` | `luxfi/ai` | n/a |
|
||||
| I-Chain (identity) | `chains/identityvm/` | `luxfi/id` | n/a |
|
||||
|
||||
@@ -39,6 +39,6 @@ Or copy binaries to `~/.lux/plugins/<vmid>`.
|
||||
| relayvm | R-Chain | Cross-chain relay |
|
||||
| servicenodevm | S-Chain | Service node registry |
|
||||
| teleportvm | T-Chain | Unified teleport (bridge + relay + oracle) |
|
||||
| thresholdvm (MPC) | M-Chain | MPC ceremonies (CGGMP21, FROST, Pulsar-general) — bridge custody for external wallets |
|
||||
| thresholdvm (FHE) | F-Chain | FHE compute + TFHE bootstrap-key generation (encrypted EVM) |
|
||||
| mpcvm (MPC) | M-Chain | MPC ceremonies (CGGMP21, FROST, Pulsar-general) — bridge custody for external wallets |
|
||||
| mpcvm (FHE) | F-Chain | FHE compute + TFHE bootstrap-key generation (encrypted EVM) |
|
||||
| zkvm | Z-Chain | Groth16 over BLS12-381 (rolls N × ML-DSA-65 sigs into 192-byte proof) |
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// signs, and wraps a single-signer Warp message.
|
||||
//
|
||||
// Every VM that emits a cross-chain Warp message — bridgevm reshare gossip,
|
||||
// zkvm FHE task callbacks, thresholdvm decryption fulfillments — calls
|
||||
// zkvm FHE task callbacks, mpcvm decryption fulfillments — calls
|
||||
// BuildSigned. The build→sign→wrap sequence lives here and nowhere else, so
|
||||
// there is exactly one way to turn (networkID, sourceChainID, payload) into a
|
||||
// transmittable signed Warp envelope.
|
||||
|
||||
@@ -11,7 +11,7 @@ flowchart LR
|
||||
Stake[Validator stake + delegation]
|
||||
end
|
||||
|
||||
subgraph Substrate["thresholdvm (library, this repo)"]
|
||||
subgraph Substrate["mpcvm (library, this repo)"]
|
||||
SM[Ceremony state machine]
|
||||
Share[Share envelope: offset/len]
|
||||
Lane[QuasarCertLane registration]
|
||||
@@ -228,7 +228,7 @@ or boot-time failure, not a silent semantic bug.
|
||||
|
||||
Per LP-134 (Lux Chain Topology) and LP-7050 (Supersession Map), T-Chain is
|
||||
fully removed. Its threshold concerns decompose onto two chains that import
|
||||
this same `thresholdvm` **library** substrate in process:
|
||||
this same `mpcvm` **library** substrate in process:
|
||||
|
||||
- **M-Chain** (`mpcvm`, LP-7100) — CGGMP21, FROST, Pulsar-general threshold
|
||||
signing for bridge custody. Owns all threshold signing.
|
||||
@@ -1,4 +1,4 @@
|
||||
# LLM context — `chains/thresholdvm/`
|
||||
# LLM context — `chains/mpcvm/`
|
||||
|
||||
## What this is
|
||||
|
||||
@@ -16,7 +16,7 @@ shared by both chains.
|
||||
- Do **not** turn this back into a chain. No `factory.go` exposed to
|
||||
`chains.Manager`. No new VM ID. M-Chain and F-Chain are the chains.
|
||||
- Do **not** import M-Chain or F-Chain code from this package. The
|
||||
dependency graph is `mchain → thresholdvm` and `fchain → thresholdvm`;
|
||||
dependency graph is `mchain → mpcvm` and `fchain → mpcvm`;
|
||||
reverse edges are forbidden.
|
||||
- Do **not** add a protocol implementation here. Protocol packages
|
||||
expose **interfaces only**; impls live in the chain that runs the
|
||||
@@ -12,7 +12,7 @@ chains, each of which consumes this library substrate:
|
||||
- **F-Chain** (`fhevm`, LP-8200) — TFHE keygen, encrypted EVM, threshold
|
||||
decrypt, confidential compute. Owns *all* encrypted computation.
|
||||
|
||||
`chains/thresholdvm/` is the shared **library** these two chains import in
|
||||
`chains/mpcvm/` is the shared **library** these two chains import in
|
||||
process — it is not itself a chain and has no genesis, no validators, no
|
||||
block production. There is **no** `teleportvm` and **no** "T-Chain": teleport
|
||||
IS `bridgevm` (B-Chain, LP-6000). Any live identifier still naming "T-Chain",
|
||||
@@ -99,7 +99,7 @@ in `runtime/`.
|
||||
|
||||
## Migration from T-Chain
|
||||
|
||||
LP-5013 is deprecated. The legacy chain at `chains/thresholdvm/` (this
|
||||
LP-5013 is deprecated. The legacy chain at `chains/mpcvm/` (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
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
//go:build cgo
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
// dlopen probe for the MPCVM GPU plugin. Runs once at package init() and
|
||||
// pins the resolved GPUBackend into the gpuBackend singleton. Probe order
|
||||
@@ -18,7 +18,7 @@ package thresholdvm
|
||||
// search path: $DYLD_LIBRARY_PATH, $LD_LIBRARY_PATH, system dirs).
|
||||
//
|
||||
// The probe is intentionally silent on failure: a host with no GPU still
|
||||
// boots; thresholdvm just runs on the CPU reference (the existing
|
||||
// boots; mpcvm just runs on the CPU reference (the existing
|
||||
// protocol/, factory.go, executor.go state machine, unchanged by this
|
||||
// bridge).
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// LaneVerifier is the contract a chain implements to validate shares
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
type stubVerifier struct{ lane types.CertLane }
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// Client provides access to thresholdvm services. Per LP-134, this serves
|
||||
// Client provides access to mpcvm services. Per LP-134, this serves
|
||||
// M-Chain (MPC mode) and F-Chain (FHE mode); legacy T-Chain MPC routes here.
|
||||
type Client struct {
|
||||
endpoint string
|
||||
@@ -544,7 +544,7 @@ func (c *Client) Health(ctx context.Context) (map[string]interface{}, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// IsReady checks if thresholdvm (M-Chain MPC mode per LP-134) is ready
|
||||
// IsReady checks if mpcvm (M-Chain MPC mode per LP-134) is ready
|
||||
func (c *Client) IsReady(ctx context.Context) (bool, error) {
|
||||
info, err := c.GetInfo(ctx)
|
||||
if err != nil {
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/luxfi/log"
|
||||
"github.com/luxfi/chains/thresholdvm"
|
||||
"github.com/luxfi/chains/mpcvm"
|
||||
"github.com/luxfi/sys/ulimit"
|
||||
"github.com/luxfi/vm/chain"
|
||||
"github.com/luxfi/vm/rpc"
|
||||
@@ -26,7 +26,7 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
f := &thresholdvm.Factory{}
|
||||
f := &mpcvm.Factory{}
|
||||
raw, err := f.New(log.Root())
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "factory error: %s\n", err)
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/node/vms/pcodecs"
|
||||
@@ -29,7 +29,7 @@ both chains' binaries.
|
||||
+----------+---------------+
|
||||
|
|
||||
+--------v---------+
|
||||
| thresholdvm |
|
||||
| mpcvm |
|
||||
| (this library) |
|
||||
| |
|
||||
| types/ |
|
||||
@@ -1,7 +1,7 @@
|
||||
# M-Chain Integration
|
||||
|
||||
This document describes how `chains/mchain/` plugs into the
|
||||
`thresholdvm` substrate when running in **MPC mode** (per LP-134).
|
||||
`mpcvm` substrate when running in **MPC mode** (per LP-134).
|
||||
The same substrate, running in FHE mode, serves F-Chain — see
|
||||
`F_CHAIN_INTEGRATION.md` for that side. The legacy "T-Chain" name is
|
||||
removed entirely: teleport IS `bridgevm` (B-Chain, LP-6000), there is no `teleportvm` (LP-6332 superseded by LP-6000 per LP-7050).
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/ids"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"github.com/luxfi/node/vms/types/fee"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
@@ -3,14 +3,14 @@
|
||||
|
||||
//go:build cgo
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
// GPU bridge — dlopen + dlsym substrate for the MPCVM state-machine kernels.
|
||||
//
|
||||
// This file binds Go to the host launchers exported by the per-backend GPU
|
||||
// plugins in the lux GPU plugin backends/<X>/. Unlike the cevm bridge
|
||||
// which links statically through pkg-config (libevm + libevm-gpu), the
|
||||
// thresholdvm bridge is a runtime overlay: zero compile-time dependency on
|
||||
// mpcvm bridge is a runtime overlay: zero compile-time dependency on
|
||||
// the plugin, no pkg-config, no link-time resolution. Either the dlopen
|
||||
// succeeds at init() and GPUBackend is populated, or it doesn't and
|
||||
// callers fall back to the CPU reference (the Go state machine in
|
||||
@@ -212,7 +212,7 @@ import (
|
||||
// resolved at init() time. Callers check this to fall back to the CPU
|
||||
// reference (the protocol/ + executor.go state machine, which is unchanged
|
||||
// by this bridge).
|
||||
var ErrGPUNotAvailable = errors.New("thresholdvm: GPU backend not available (no plugin dlopened)")
|
||||
var ErrGPUNotAvailable = errors.New("mpcvm: GPU backend not available (no plugin dlopened)")
|
||||
|
||||
// GPUBackendKind is the resolved plugin family. Matches the dlopen probe
|
||||
// order in backend.go: cuda → hip → metal → vulkan → webgpu.
|
||||
@@ -419,7 +419,7 @@ func assertSizes() {
|
||||
for _, c := range checks {
|
||||
if int(c.got) != c.want {
|
||||
panic(fmt.Sprintf(
|
||||
"thresholdvm: GPU layout mismatch — %s sizeof=%d want=%d. "+
|
||||
"mpcvm: GPU layout mismatch — %s sizeof=%d want=%d. "+
|
||||
"Rebuild gpu-kernels (ops/mpcvm/cuda/mpcvm_kernels_common.cuh) "+
|
||||
"or update the Go struct.", c.name, c.got, c.want))
|
||||
}
|
||||
@@ -507,7 +507,7 @@ func (g *GPUBackend) CeremonyApply(
|
||||
return 0, ErrGPUNotAvailable
|
||||
}
|
||||
if desc == nil || len(ceremonies) == 0 {
|
||||
return 0, fmt.Errorf("thresholdvm.CeremonyApply: nil desc or empty ceremonies")
|
||||
return 0, fmt.Errorf("mpcvm.CeremonyApply: nil desc or empty ceremonies")
|
||||
}
|
||||
var (
|
||||
ceremonyApplied uint32
|
||||
@@ -543,7 +543,7 @@ func (g *GPUBackend) CeremonyApply(
|
||||
runtime.KeepAlive(emptyContribOps)
|
||||
runtime.KeepAlive(emptyContributions)
|
||||
if rc != 0 {
|
||||
return 0, fmt.Errorf("thresholdvm.CeremonyApply: launcher rc=%d", int(rc))
|
||||
return 0, fmt.Errorf("mpcvm.CeremonyApply: launcher rc=%d", int(rc))
|
||||
}
|
||||
return ceremonyApplied, nil
|
||||
}
|
||||
@@ -568,7 +568,7 @@ func (g *GPUBackend) KeyShareApply(
|
||||
}
|
||||
if desc == nil || len(ceremonies) == 0 ||
|
||||
len(keyShares) == 0 || len(contributions) == 0 {
|
||||
return 0, 0, 0, fmt.Errorf("thresholdvm.KeyShareApply: nil desc or empty arena")
|
||||
return 0, 0, 0, fmt.Errorf("mpcvm.KeyShareApply: nil desc or empty arena")
|
||||
}
|
||||
rc := C.call_ceremony_sweep(
|
||||
g.fnCeremonySweep,
|
||||
@@ -590,7 +590,7 @@ func (g *GPUBackend) KeyShareApply(
|
||||
runtime.KeepAlive(keyShares)
|
||||
runtime.KeepAlive(contributions)
|
||||
if rc != 0 {
|
||||
return 0, 0, 0, fmt.Errorf("thresholdvm.KeyShareApply: launcher rc=%d", int(rc))
|
||||
return 0, 0, 0, fmt.Errorf("mpcvm.KeyShareApply: launcher rc=%d", int(rc))
|
||||
}
|
||||
return roundAdvance, finalized, failed, nil
|
||||
}
|
||||
@@ -611,7 +611,7 @@ func (g *GPUBackend) ContributionApply(
|
||||
return 0, ErrGPUNotAvailable
|
||||
}
|
||||
if desc == nil || len(ceremonies) == 0 || len(contributions) == 0 {
|
||||
return 0, fmt.Errorf("thresholdvm.ContributionApply: nil desc or empty arena")
|
||||
return 0, fmt.Errorf("mpcvm.ContributionApply: nil desc or empty arena")
|
||||
}
|
||||
var (
|
||||
ceremonyApplied uint32
|
||||
@@ -644,7 +644,7 @@ func (g *GPUBackend) ContributionApply(
|
||||
runtime.KeepAlive(ceremonies)
|
||||
runtime.KeepAlive(contributions)
|
||||
if rc != 0 {
|
||||
return 0, fmt.Errorf("thresholdvm.ContributionApply: launcher rc=%d", int(rc))
|
||||
return 0, fmt.Errorf("mpcvm.ContributionApply: launcher rc=%d", int(rc))
|
||||
}
|
||||
return contributionApplied, nil
|
||||
}
|
||||
@@ -668,12 +668,12 @@ func (g *GPUBackend) MPCTransition(
|
||||
return nil, ErrGPUNotAvailable
|
||||
}
|
||||
if g.fnComputeLeaves == nil || g.fnComposeRoot == nil {
|
||||
return nil, fmt.Errorf("thresholdvm.MPCTransition: %w (compute_leaves or compose_root missing)",
|
||||
return nil, fmt.Errorf("mpcvm.MPCTransition: %w (compute_leaves or compose_root missing)",
|
||||
ErrGPUNotAvailable)
|
||||
}
|
||||
if desc == nil || state == nil ||
|
||||
len(ceremonies) == 0 || len(keyShares) == 0 || len(contributions) == 0 {
|
||||
return nil, fmt.Errorf("thresholdvm.MPCTransition: nil desc/state or empty arena")
|
||||
return nil, fmt.Errorf("mpcvm.MPCTransition: nil desc/state or empty arena")
|
||||
}
|
||||
|
||||
// Scratch buffers consumed by compute_leaves and feeding compose_root.
|
||||
@@ -709,7 +709,7 @@ func (g *GPUBackend) MPCTransition(
|
||||
nil,
|
||||
)
|
||||
if rc != 0 {
|
||||
return nil, fmt.Errorf("thresholdvm.MPCTransition compute_leaves: launcher rc=%d", int(rc))
|
||||
return nil, fmt.Errorf("mpcvm.MPCTransition compute_leaves: launcher rc=%d", int(rc))
|
||||
}
|
||||
|
||||
rc = C.call_compose_root(
|
||||
@@ -744,7 +744,7 @@ func (g *GPUBackend) MPCTransition(
|
||||
runtime.KeepAlive(shareMask)
|
||||
runtime.KeepAlive(contributionMask)
|
||||
if rc != 0 {
|
||||
return nil, fmt.Errorf("thresholdvm.MPCTransition compose_root: launcher rc=%d", int(rc))
|
||||
return nil, fmt.Errorf("mpcvm.MPCTransition compose_root: launcher rc=%d", int(rc))
|
||||
}
|
||||
return &result, nil
|
||||
}
|
||||
@@ -3,17 +3,17 @@
|
||||
|
||||
//go:build !cgo
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import "errors"
|
||||
|
||||
// ErrGPUNotAvailable is returned by GPUBackend methods when the build was
|
||||
// produced without CGo. The thresholdvm GPU substrate is a runtime overlay
|
||||
// produced without CGo. The mpcvm GPU substrate is a runtime overlay
|
||||
// that requires dlopen()/dlsym() — under !cgo there is no way to reach the
|
||||
// host launchers, so every method on GPUBackend short-circuits to this
|
||||
// error and callers fall back to the CPU reference (the Go state machine
|
||||
// in protocol/, factory.go, executor.go — unchanged).
|
||||
var ErrGPUNotAvailable = errors.New("thresholdvm: GPU backend not available (built without CGo)")
|
||||
var ErrGPUNotAvailable = errors.New("mpcvm: GPU backend not available (built without CGo)")
|
||||
|
||||
// GPUBackendKind mirrors the cgo variant so the package surface is
|
||||
// identical regardless of build mode. Under nocgo every value is None.
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2026, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
@@ -12,7 +12,7 @@ package cggmp21
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// Verifier validates a CGGMP21 share payload. It is registered into
|
||||
+1
-1
@@ -16,7 +16,7 @@ package corona_general
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// Verifier validates Corona-general share payloads. Registered as
|
||||
@@ -11,7 +11,7 @@ package frost
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// Verifier validates FROST share payloads. Registered as the
|
||||
@@ -20,7 +20,7 @@ package tfhe_keygen
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// Producer is implemented by M-Chain. It runs the MPC ceremony that
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
@@ -6,8 +6,8 @@ package runtime
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/cert"
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/cert"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// FChainAdapter is the contract F-Chain implements. Same state
|
||||
@@ -15,8 +15,8 @@ package runtime
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/luxfi/chains/thresholdvm/cert"
|
||||
"github.com/luxfi/chains/thresholdvm/types"
|
||||
"github.com/luxfi/chains/mpcvm/cert"
|
||||
"github.com/luxfi/chains/mpcvm/types"
|
||||
)
|
||||
|
||||
// MChainAdapter is the contract M-Chain implements. The substrate
|
||||
@@ -29,8 +29,8 @@
|
||||
// ThresholdService key/decryption committees; owns FHE jobs and
|
||||
// threshold-decrypt. This is F-Chain's surface (LP-8200).
|
||||
//
|
||||
// thresholdvm itself remains a LIBRARY: there is no T-Chain, no teleportvm.
|
||||
package thresholdvm
|
||||
// mpcvm itself remains a LIBRARY: there is no T-Chain, no teleportvm.
|
||||
package mpcvm
|
||||
|
||||
import "github.com/luxfi/threshold/pkg/party"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (C) 2019-2026, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import "testing"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
||||
// See the file LICENSE for licensing terms.
|
||||
|
||||
// Package thresholdvm implements the shared threshold VM substrate — a LIBRARY,
|
||||
// Package mpcvm implements the shared threshold VM substrate — a LIBRARY,
|
||||
// not a chain — consumed by M-Chain (MPC: CGGMP21/FROST/Pulsar-general threshold
|
||||
// signing for bridge custody of external wallets, LP-7100) and F-Chain (FHE:
|
||||
// TFHE compute / threshold decrypt, LP-8200). Per LP-134 / LP-7050 there is NO
|
||||
// T-Chain and NO teleportvm; teleport IS bridgevm (B-Chain, LP-6000). Any live
|
||||
// identifier still naming "T-Chain" or "ThresholdVM-as-a-chain" is stale.
|
||||
// See ../README.md.
|
||||
package thresholdvm
|
||||
package mpcvm
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -250,7 +250,7 @@ func (vm *VM) Initialize(
|
||||
// fee.Validate passes for the sentinel even with zero MinTxFee.
|
||||
vm.feePolicy = newFeePolicy()
|
||||
if err := fee.Validate(vm.feePolicy); err != nil {
|
||||
return fmt.Errorf("thresholdvm: fee policy: %w", err)
|
||||
return fmt.Errorf("mpcvm: fee policy: %w", err)
|
||||
}
|
||||
|
||||
// Parse configuration
|
||||
Reference in New Issue
Block a user