Skip to content

Commit 19e438e

Browse files
unnawutclaude
andcommitted
drop arbitrary leansig.* workload; xmss.* already measures leanSpec PROD_CONFIG
`SIGTargetSumLifetime20W4NoOff` (V=39, W=4, TARGET_SUM=293, LIFETIME=2^20) turned out to be a leanSig-internal benchmark sample — only used by leanSig's own `src/bin/main.rs`, not pinned by any consensus client, spec, or leanMultisig configuration. Our `xmss.*` workload already measures `leansig_wrapper::LeanSigScheme`, whose parameters (DIMENSION=46, BASE=8, TARGET_SUM=200, LOG_LIFETIME=32) exactly mirror leanSpec's `PROD_CONFIG` per `workspace/leanSpec/src/lean_spec/subspecs/xmss/constants.py`. So the leansig.* group was a duplicate of nothing — measuring a configuration no one ships. Drop: - The `leansig` workload module (workloads.rs). - The Cli::Leansig{Keygen,Sign,Verify} variants + dispatch (main.rs). - The three Workload entries in ALL_WORKLOADS (bench.py). - The README "Workload groups" entry for leanSig. Also drop `samples_override=300` on xmss.sign. The override was statistically motivated when signing was randomized per-attempt (rng-driven `rho`); cv ≈ 0.85 made n=30 give a ±30% CI on the mean. devnet5's signing is fully derandomized — `rho` is a deterministic PRF output of (sk.prf_key, epoch, message, attempts) — so for the fixed (sk, epoch, message) the time_loop measures the same instance each iteration and within-run cv collapses to CPU-clock noise. On M1 Max devnet5: cv ≈ 0.014 at n=30, 95% CI on the mean ≈ ±0.5%. The trade-off is that we now measure one specific (epoch, message) instance rather than an average over the geometric retry distribution, but that was already the case at n=300; the override only narrowed the within-instance noise, not across-instance variation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent eef1b0d commit 19e438e

9 files changed

Lines changed: 127982 additions & 122 deletions

README.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,15 @@ to Pages).
1212

1313
## Workload groups
1414

15-
1. **leanSig** (variant `SIGTargetSumLifetime20W4NoOff`, lifetime 2^20) —
16-
sign / verify
17-
2. **xmss** (the XMSS inside `leanEthereum/leanMultisig`, which is what
18-
leanSpec actually consumes) — sign / verify at crate defaults
19-
3. **leanMultisig aggregation** at `LOG_INV_RATE_PROD=2` — flat
15+
1. **xmss** — leanSpec `PROD_CONFIG` GeneralizedXMSS (DIMENSION=46,
16+
BASE=8, TARGET_SUM=200, LOG_LIFETIME=32), the scheme leanMultisig's
17+
mainnet ships. sign / verify by default; opt-in keygen via
18+
`--include-keygen`.
19+
2. **leanMultisig aggregation** at `LOG_INV_RATE_PROD=2` — flat
2020
aggregation over 125 / 250 / 500 / 1000 sigs, plus tree aggregation
2121
with fan-in 2 / 4 / 8 over 125 / 250 / 500-sig leaves. 13 aggregate
2222
variants total, all run by default.
2323

24-
Key-generation is opt-in (`--include-keygen`) because lifetime-2^20 keygen
25-
adds significant wall time.
26-
2724
## Running on a target machine
2825

2926
### Prerequisites

0 commit comments

Comments
 (0)