Files
chains/thresholdvm/types/proof.go
T
zeekay e032ec4b05 feat(thresholdvm): stage design docs and protocol scaffolding
Stages the ThresholdVM engineering record under chains/thresholdvm/:

Docs (engineering record, 502 LOC):
- DESIGN.md, LLM.md, README.md
- docs/ARCHITECTURE.md, docs/F_CHAIN_INTEGRATION.md, docs/M_CHAIN_INTEGRATION.md

Source scaffolding (1289 LOC):
- cert/      — QuasarCertLane registration + subject binding (M/F shared)
- types/     — ceremony, participant, proof, share substrate types
- protocol/  — package surfaces for cggmp21, frost, corona_general, tfhe_keygen
- runtime/   — F-chain and M-chain adapters

All Go files carry the Lux license header. Nothing here is generated or
fixture data; this is the signed-off design surface for the ThresholdVM
library used by M-chain and F-chain.
2026-04-28 09:17:47 -07:00

31 lines
1.1 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package types
// Proof is the verification artifact emitted at ceremony Finalize. It
// is consumed by Quasar 3.0's cert pipeline (LP-020) and bound into
// certificate_subject (LP-134).
//
// The substrate defines the envelope; the per-protocol payload (the
// actual signature, group public key, FHE key, etc.) is opaque bytes
// indexed by Lane. Verifiers in cert/lane.go decode it.
type Proof struct {
CeremonyID CeremonyID
Kind CeremonyKind
Lane CertLane
// Payload is the protocol-specific final artifact: a signature
// for sign-oriented ceremonies, a TFHE evaluation key for keygen
// ceremonies, etc.
Payload []byte
// Aggregate is the aggregate signature over the participant
// commitments (used when the chain itself attests to the
// ceremony before forwarding to Quasar).
Aggregate [64]byte
}
// Empty reports whether p is the zero value.
func (p Proof) Empty() bool {
return p.Kind == KindUnknown && len(p.Payload) == 0
}