Files
zeekayandHanzo Dev b900e032ce build: mark lux-private private, not all of luxfi
GOPRIVATE switches off the module proxy AND checksum verification together.
Covering github.com/luxfi/* meant every luxfi module was fetched straight from
git and trusted without verification — which is how moved tags got captured into
module caches and served from them indefinitely, making the same commit build on
one machine and fail on another.

Nearly all of luxfi is public and on proxy.golang.org, so it belongs under
normal verification. The private org is lux-private.

Twelve luxfi repos are still private AND still 404 on the proxy, so they are
listed individually rather than by wildcard — coverage now matches what actually
needs a direct fetch, and every other luxfi module is verified against
sum.golang.org again:

  bridge broker compliance erc20-go fasthttp graph hsm indexer
  mpc ordering password pool

The right end state is those repos moving to lux-private; until then the
explicit list keeps the exemption honest instead of blanket.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:05:41 -07:00

2.9 KiB

pulsard

The offline threshold ML-DSA (FIPS-204) signer for the Lux Quasar Pulsar finality lane. It implements warp.PulsarThresholdSigner: a Signer turns a 32-byte subject into one warp.PulsarEvidence carrying a single, standard FIPS-204 ML-DSA-65 signature that the chain verifies with warp.VerifyPulsar.

PRODUCE (offline, here)                  VERIFY (on chain, in warp)
  dealerless nonce DKG, BCC, CEF,  ──►    one FIPS-204 ML-DSA-65 verify
  CSCP, blame, aggregate (TALUS)         (warp.VerifyPulsar)

Honest status

Threshold ML-DSA has no native FIPS-204 construction; the dealerless path is the research-grade TALUS construction (arXiv:2603.22109). This module is deliberately split into what is sound and what is pending:

Part Status Where
Service shape (warp.PulsarThresholdSigner) REAL signer.go
FIPS-204 ML-DSA-65 primitives (luxfi/crypto, same lib warp verifies with) REAL via keyera.go, reference.go
Key-era / group-key records (reuse warp.PulsarKeyEra) + resolver REAL keyera.go
Session/nonce plumbing (session id, non-grindable nonce pool) REAL nonce.go, session.go
Typed protocol messages + phase state machine REAL protocol.go, session.go
Mandatory release gate (re-verify via warp.VerifyPulsar) REAL signer.go
Dealerless TALUS threshold crypto FAIL-CLOSED STUB engine.go (ErrThresholdMLDSAUnimplemented), design in docs/talus-design.tex
Trusted-dealer single-party engine REFERENCE / DEV-TEST FOOTGUN reference.go

No fake threshold math is shipped. The default engine fails closed; the only engine that produces a signature is the clearly-labelled, non-threshold ReferenceDealer, which exists solely to prove the verify integration.

The boundary guarantee

Signer.ThresholdSign never returns evidence that does not verify: whatever engine is plugged in, the signature is re-checked with warp.VerifyPulsar (the chain's own verifier) before it leaves the process. Emitted-evidence correctness is a property of pulsard, independent of the engine.

Build & test

SDKROOT="$(xcrun --show-sdk-path)" GOWORK=off GOFLAGS=-mod=mod GOPRIVATE=github.com/lux-private/* \
  go build ./... && go test ./...

Demo (dev/test footgun)

go run ./cmd/pulsard -mode reference   # produces a real group sig, VERIFIED via warp.VerifyPulsar
go run ./cmd/pulsard -mode threshold   # FAIL-CLOSED: ErrThresholdMLDSAUnimplemented (as designed)

Wiring a real engine

A concrete dealerless engine (candidate: github.com/luxfi/pulsar) may be registered behind the ThresholdEngine SPI only after the interop and trust contracts in docs/talus-design.tex (§7) are established and reviewed: interop under mldsa65.Verify, dealerless keygen, malicious-secure CSCP, dual-PQ key independence, and a bounded transcript-distribution caveat.