mirror of
https://github.com/luxfi/threshold.git
synced 2026-10-30 15:15:53 +00:00
Adds the Tier A formal-artifact cluster for protocols/frost (Lux profile of Komlo-Goldberg / IETF FROST). Mirrors luxfi/pulsar's Tier A structure adapted to Schnorr threshold signing. - proofs/easycrypt/FROST_N1.ec — Class N1 byte-equality reduction - proofs/easycrypt/FROST_N1_Refinement.ec — round-1/2/combine refinement - proofs/easycrypt/FROST_Ciphersuite_Ed25519.ec — Ed25519 ciphersuite - proofs/easycrypt/FROST_Ciphersuite_Secp256k1_Taproot.ec — BIP-340 ciphersuite - proofs/easycrypt/FROST_N4.ec — DKG public-key preservation - proofs/easycrypt/lemmas/FROST_CT.ec — constant-time obligations - proofs/easycrypt/AXIOM-INVENTORY.md — honest enumeration - proofs/lean-easycrypt-bridge.md — Lean↔EC bridge map - jasmin/lib/ + jasmin/single-party/ + jasmin/threshold/ — Jasmin scaffolds Plus shared scripts/check-high-assurance.sh that gates all three protocols (frost, cmp, bls) at admit budget 1/1 with skip-friendly jasminc and easycrypt invocations. Admit budget: 1/1 (one-line group-identity admit in FROST_N4 closure).
31 lines
1.1 KiB
Plaintext
31 lines
1.1 KiB
Plaintext
// FROST shared parameters.
|
|
//
|
|
// These constants are shared by both pinned ciphersuites. The
|
|
// ciphersuite-specific scalar field, curve, and hash are in the
|
|
// single-party/ subdirectory.
|
|
|
|
// Number of bytes per scalar (both Ed25519 and secp256k1).
|
|
param int FROST_SCALAR_BYTES = 32;
|
|
|
|
// Number of bytes per group element (compressed encoding).
|
|
// Ed25519: 32-byte y-with-sign encoding (RFC 8032 §5.1.2).
|
|
// secp256k1 BIP-340: 32-byte x-only encoding (BIP-340 §2).
|
|
param int FROST_POINT_BYTES = 32;
|
|
|
|
// Signature byte length (R || s for both ciphersuites).
|
|
param int FROST_SIG_BYTES = 64;
|
|
|
|
// Maximum supported quorum size for the threshold layer.
|
|
// Matches the Lux profile cap in SPEC.md §2.3.
|
|
param int FROST_MAX_QUORUM = 1024;
|
|
|
|
// Maximum supported message length for the threshold layer.
|
|
// Bounded to keep stack allocations static.
|
|
param int FROST_MAX_MSG = 4096;
|
|
|
|
// Round-1 commit byte length per party: D_i || E_i = 32 + 32 = 64.
|
|
param int FROST_R1_COMMIT_BYTES = 64;
|
|
|
|
// Round-2 response byte length per party: z_i = 32 bytes.
|
|
param int FROST_R2_RESPONSE_BYTES = 32;
|