zeekayandHanzo Dev 265b0c1560 Go 1.27.1, and the code it can say more simply
Modules declare go 1.27.1 and the build images follow. go fix applied the
modernizers; omitzero is not applied, since it changes what the JSON says.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 19:13:59 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00
2026-07-26 02:53:27 -07:00

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.

S
Description
Pulsar threshold ML-DSA signing daemon
Readme
141 KiB
Languages
Go 100%