mirror of
https://github.com/luxfi/precompile.git
synced 2026-07-27 03:33:45 +00:00
fix(corona): relabel Corona/Pulsar as Module-LWE, not Ring-LWE
Corona is a Module-LWE threshold signature (Ringtail/Raccoon line, ePrint 2024/1113; module dims M=8, N=7 over Z_q[X]/(X^256+1), rank>1). Pulsar is Module-LWE (FIPS-204 ML-DSA). Neither is Ring-LWE; the "M" in ML-KEM/ML-DSA is Module. Fixes the 0x012206 slot-map comments (p3q, magnetar, starkfri, modules/registerer), the Corona precompile doc comments, the registry CORONA description string, and the README/LLM/corona-README docs. Comments, strings, and docs only — no identifier, precompile address, selector, gas value, or on-chain digest changed.
This commit is contained in:
@@ -28,7 +28,7 @@ All crypto-heavy precompiles have GPU fast paths via `github.com/luxfi/accel` an
|
||||
node. Removed; awaiting a real accel SLH-DSA kernel.
|
||||
- `frost/` -- `accelcrypto.BatchVerify(SigECDSA, ...)` for Schnorr verification
|
||||
- `cggmp21/` -- `accelcrypto.BatchVerify(SigECDSA, ...)` for ECDSA verification
|
||||
- `corona/` -- `accellattice.NTTForward()` for polynomial deserialization (Ring-LWE threshold; renamed from Corona in LP-4200)
|
||||
- `corona/` -- `accellattice.NTTForward()` for polynomial deserialization (Module-LWE threshold; renamed from Corona in LP-4200)
|
||||
- `blake3/` -- `accelcrypto.Hash(HashBlake3, ...)` for hash256 and Merkle tree batch hashing
|
||||
- `fhe/` -- `accelfhe.Add/Sub/Multiply` in `performFHEOperation()` GPU fast path
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Geth provides `NewPrecompileAdapter()` to wrap these into geth-compatible precom
|
||||
|---------|---------|-------------|-----|
|
||||
| `frost` | `0x0800...0002` | FROST Schnorr threshold verify (secp256k1/Ed25519) | 50k + 5k/signer |
|
||||
| `cggmp21` | `0x0800...0003` | CGGMP21 threshold ECDSA verify (secp256k1) | 75k + 10k/signer |
|
||||
| `Corona` | `0x0200...000B` | Ring-LWE lattice threshold verify (post-quantum) | 150k + 10k/party |
|
||||
| `Corona` | `0x0200...000B` | Module-LWE lattice threshold verify (post-quantum) | 150k + 10k/party |
|
||||
|
||||
### Curves & Signatures
|
||||
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ The Pulsar Threshold precompile enables verification of lattice-based threshold
|
||||
|
||||
Pulsar implements a threshold signature scheme based on:
|
||||
- **Lattice Cryptography**: LWE problem hardness
|
||||
- **Ring Learning With Errors**: Polynomial ring operations
|
||||
- **Module Learning With Errors**: Polynomial ring operations
|
||||
- **Threshold Secret Sharing**: Shamir's secret sharing over rings
|
||||
- **Two-Round Protocol**: Efficient distributed key generation and signing
|
||||
|
||||
|
||||
+3
-3
@@ -19,8 +19,8 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
// ContractCoronaThresholdAddress is the address of the Corona Ring-LWE threshold signature precompile.
|
||||
// LP-4200 unified PQCrypto block (Ring-LWE threshold): 0x012206.
|
||||
// ContractCoronaThresholdAddress is the address of the Corona Module-LWE threshold signature precompile.
|
||||
// LP-4200 unified PQCrypto block (Module-LWE threshold, Ringtail/Raccoon): 0x012206.
|
||||
// Was 0x020000...000B which collides with FHE precompile space (0x0200...0080+).
|
||||
ContractCoronaThresholdAddress = common.HexToAddress("0x0000000000000000000000000000000000012206")
|
||||
|
||||
@@ -65,7 +65,7 @@ const (
|
||||
|
||||
type coronaThresholdPrecompile struct{}
|
||||
|
||||
// Address returns the address of the Corona Ring-LWE threshold signature precompile
|
||||
// Address returns the address of the Corona Module-LWE threshold signature precompile
|
||||
func (p *coronaThresholdPrecompile) Address() common.Address {
|
||||
return ContractCoronaThresholdAddress
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
// 0x012204 = Pulsar (Module-LWE threshold FIPS 204, byte-equal)
|
||||
// 0x012205 = P3Q (rollup-commit PQ verifier; kind-byte dispatch
|
||||
// to Pulsar/Corona/Magnetar — see precompile/p3q, LP-218)
|
||||
// 0x012206 = Corona (Ring-LWE threshold signatures)
|
||||
// 0x012206 = Corona (Module-LWE threshold signatures)
|
||||
// 0x012207 = Magnetar ← this precompile (hash-based threshold FIPS 205)
|
||||
// 0x012208 = HQC (code-based KEM, family-disjoint backup)
|
||||
// 0x012220 = STARK-FRI (strict-PQ STARK / FRI — see precompile/starkfri, LP-221)
|
||||
|
||||
@@ -156,7 +156,7 @@ var (
|
||||
// 0x12204 = Pulsar (Module-LWE threshold, FIPS 204 byte-equal)
|
||||
// 0x12205 = P3Q (rollup-commit PQ verifier; kind-byte dispatch
|
||||
// to Pulsar/Corona/Magnetar — LP-218)
|
||||
// 0x12206 = Corona (Ring-LWE threshold)
|
||||
// 0x12206 = Corona (Module-LWE threshold)
|
||||
// 0x12207 = Magnetar (hash-based threshold, FIPS 205 byte-equal)
|
||||
// 0x12208 = HQC (code-based KEM, family-disjoint backup)
|
||||
// 0x12220 = STARK-FRI (strict-PQ STARK / FRI verifier — LP-221)
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@
|
||||
// 0x012203 = SLH-DSA (hash-based signature, FIPS 205)
|
||||
// 0x012204 = Pulsar (Module-LWE threshold, FIPS 204 byte-equal)
|
||||
// 0x012205 = P3Q ← this precompile (LP-218 rollup-commit verifier)
|
||||
// 0x012206 = Corona (Ring-LWE threshold)
|
||||
// 0x012206 = Corona (Module-LWE threshold, Ringtail/Raccoon)
|
||||
// 0x012207 = Magnetar (SLH-DSA threshold, FIPS 205 byte-equal)
|
||||
// 0x012208 = HQC (code-based KEM, family-disjoint backup)
|
||||
//
|
||||
@@ -169,7 +169,7 @@ const (
|
||||
// libraries land (see LP-220 §"Per-kind specs").
|
||||
const (
|
||||
KindPulsar uint8 = 0x01 // FIPS 204 ML-DSA (Module-LWE threshold, byte-equal)
|
||||
KindCorona uint8 = 0x02 // Ring-LWE threshold (Corona eprint 2024/1113)
|
||||
KindCorona uint8 = 0x02 // Module-LWE threshold (Corona eprint 2024/1113)
|
||||
KindMagnetar uint8 = 0x03 // FIPS 205 SLH-DSA (hash-based threshold)
|
||||
)
|
||||
|
||||
|
||||
@@ -533,7 +533,7 @@ var AllPrecompiles = []PrecompileInfo{
|
||||
// Threshold/MPC (P=5) → LP-5xxx
|
||||
{FROSTCChain, "FROST", "Schnorr threshold signatures", 25000, []string{"C", "Q"}, "LP-5xxx"},
|
||||
{CGGMP21CChain, "CGGMP21", "ECDSA threshold signatures", 50000, []string{"C", "Q"}, "LP-5xxx"},
|
||||
{CoronaCChain, "CORONA", "Threshold Ring-LWE signatures (PQ)", 75000, []string{"C", "Q"}, "LP-5xxx"},
|
||||
{CoronaCChain, "CORONA", "Threshold Module-LWE signatures (PQ)", 75000, []string{"C", "Q"}, "LP-5xxx"},
|
||||
{LSSCChain, "LSS", "Lux Secret Sharing", 10000, []string{"C", "Q"}, "LP-5xxx"},
|
||||
{DKGCChain, "DKG", "Distributed Key Generation", 100000, []string{"C", "Q"}, "LP-5xxx"},
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
// 0x012203 = SLH-DSA (hash-based signature, FIPS 205)
|
||||
// 0x012204 = Pulsar (Module-LWE threshold FIPS 204, byte-equal)
|
||||
// 0x012205 = P3Q (Post-Quantum Pulsar Proof — see precompile/p3q)
|
||||
// 0x012206 = Corona (Ring-LWE threshold)
|
||||
// 0x012206 = Corona (Module-LWE threshold)
|
||||
// 0x012207 = Magnetar (SLH-DSA threshold, FIPS 205 byte-equal)
|
||||
// 0x012208 = HQC (code-based KEM, family-disjoint backup)
|
||||
// 0x012220 = STARK-FRI ← this precompile (strict-PQ STARK / FRI / SHAKE)
|
||||
|
||||
Reference in New Issue
Block a user