mirror of
https://github.com/luxfi/lens.git
synced 2026-10-30 16:21:16 +00:00
Lens is the curve-based threshold signing kernel for Lux. It is the classical analogue of Pulsar (the lattice kernel at github.com/luxfi/pulsar). Both kernels share the same lifecycle shape — Bootstrap → Reshare* → Reanchor — and the same activation circuit-breaker contract. They differ only in the math field: Pulsar over R_q (Module-LWE), Lens over a prime-order curve group (discrete log). Curves shipped: Ed25519, secp256k1, Ristretto255. Each has a deterministically-derived secondary Pedersen generator H from a Lens-specific nothing-up-my-sleeve tag. Sign math: FROST 2-round Schnorr threshold signing per RFC 9591 (Komlo-Goldberg 2020). Verifier checks z·G ?= R + c·X under the unchanged group public key. Reshare math: HJKY97 zero-poly Refresh + Desmedt-Jajodia ReshareToNewSet over the curve scalar field. Master secret s is preserved; only the share distribution rotates per epoch. Activation cert message format: QUASAR-LENS-ACTIVATE-v1, byte-equivalent shape to QUASAR-PULSAR-ACTIVATE-v1. Hash suite: HashSuite interface with Lens-SHA3 (production, cSHAKE256 / KMAC256 / TupleHash256) and Lens-BLAKE3 (legacy) profiles. DKG: distributed FROST DKG with Feldman commitments. No trusted dealer required at genesis if the chain prefers proper distributed DKG. KAT oracles: cmd/reshare_oracle and cmd/dkg_oracle emit deterministic JSON vectors for cross-language byte-equality validation against a future luxcpp/crypto/lens/ port. Tests: full unit + integration coverage on every shipped curve. 60 unique tests, 0 failures.
16 lines
1.6 KiB
Plaintext
16 lines
1.6 KiB
Plaintext
cfe6d161dc9318d3fed376b87b6523e58f1ceb0f948529e0dff06694431d2618 scripts/kat/dkg_ed25519_n5_t3.json
|
|
572df516d476c14a2b63fb0a83decc2762afc5edb77b3fa7f1868d9d98266e0f scripts/kat/dkg_ed25519_n7_t5.json
|
|
3acd42f54ed10c568798984535636ef670ca295c6316f8d1c7f600ebcd44db96 scripts/kat/dkg_ristretto255_n5_t3.json
|
|
e58b8b38d68b3381f7517849455be3db60b29027916cd829e207cb6b2b83641a scripts/kat/dkg_ristretto255_n7_t5.json
|
|
baae098c54a4718427d32e0c1cd5f1b0f6bf336213aecfda2fe4d26c9768f92b scripts/kat/dkg_secp256k1_n5_t3.json
|
|
2984eec6e3a97f4dfa012f6129d1152853bb92f4cb7b80ca14011b42a9911e4d scripts/kat/dkg_secp256k1_n7_t5.json
|
|
6676f9d39a5420ac704036afc5298c01a3aefc4d281b0f26e568696d124dc0b8 scripts/kat/refresh_ed25519_t3.json
|
|
8b849d7231bae99dde27b665df5da7474b19c51384a33a41a8ad74ed451386db scripts/kat/refresh_ristretto255_t3.json
|
|
2c51908d73c806d8164aee8173e57cf317865fadc99a4a5d793e7b58e02806a6 scripts/kat/refresh_secp256k1_t3.json
|
|
9fd5ad233f309e7cf9feee0e2b7c09f874d252d4f530ce25441ef6c9aa97a695 scripts/kat/reshare_ed25519_told3_tnew3.json
|
|
9c0f09d6815ba0b53bad35c46e32aa2a7539f7a71f3fe84ce6306b6d743d6db9 scripts/kat/reshare_ed25519_told3_tnew5.json
|
|
6e0d98209f8eacd133e3280203437b1354c30cd46dcefbe2dce8fe985d5391d8 scripts/kat/reshare_ristretto255_told3_tnew3.json
|
|
d9debbd2d1c989fd9526f7ce264e9e90b509321f5bede897caba65b1f5640b5d scripts/kat/reshare_ristretto255_told3_tnew5.json
|
|
02834b5392f6a80add07f78335526fad8a76bc0225a0a170b7896dbbd52d2ef3 scripts/kat/reshare_secp256k1_told3_tnew3.json
|
|
c0261061975880a627d40e7dae8f4dd46eb8d0f11fd64ea8bfe77e5227b0e95f scripts/kat/reshare_secp256k1_told3_tnew5.json
|