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.
29 lines
1.0 KiB
JSON
29 lines
1.0 KiB
JSON
{
|
|
"curve": "secp256k1",
|
|
"n": 5,
|
|
"t": 3,
|
|
"seed": "lens.dkg.kat.v1",
|
|
"group_key_hex": "032886818473e9eed5c261f3ce33659632acff06e95245cf570ce55564e1b4fc4f",
|
|
"shares_hex": {
|
|
"1": "23a35acf279c76980446a2372818a9513ac164f38465f92de3a293703341aa10",
|
|
"2": "662292c58d27f8e592b3381979741836c5a3209d2730fec625c3a98624ab7fcb",
|
|
"3": "9c2ae0381d055a7259872b35a16846ca74a458d8e6403e01f0db13a0f48ec209",
|
|
"4": "c5bc4326d7349b3e58c27b8b9ff5350c47c50da6c193b6e144e8d1c0a2eb70ca",
|
|
"5": "e2d6bb91bbb5bb499065291b751ae2fc3f053f06b92b696421ece3e52fc18c0e"
|
|
},
|
|
"verification_shares_hex": {
|
|
"1": "03014d0423e7eabbb53f39635e54140eb9dfc0cd6b2cf8c55135bb38c600cd7592",
|
|
"2": "029438c5a104a1d06078949ebc25a0c8e061a285ecf0057d516cf7a83fb06c5bf6",
|
|
"3": "02fc0a974a936f8ab641514de3013330ef49cef9d5869e6cbeac63bd6c9a1725bd",
|
|
"4": "038922e97c0d7f476f015b3f3746351fbc307e716d0d6e3ace4f1ce35b7177e857",
|
|
"5": "025c7d8400925cdb757c423017bb00078afa6a3b5ae5c7c78aae0c22002b7f7da2"
|
|
},
|
|
"party_order": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
]
|
|
}
|