Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
36c388e
feat(crypto)!: track leanVM main (internalized XMSS + reworked aggreg…
MegaRedHand Jul 24, 2026
6b41823
build(deps): pin leanVM to main HEAD (a73ab11) instead of tracking th…
MegaRedHand Jul 24, 2026
5e67159
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Jul 24, 2026
cd293eb
build(deps): bump leanVM pin to c83b40f
MegaRedHand Jul 27, 2026
d68b246
feat(crypto)!: keep pubkeys off the proof wire
MegaRedHand Jul 27, 2026
db7bc13
fix(crypto): use leanVM's facade and prove one at a time
TomWambsgans Jul 27, 2026
02e7099
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Jul 28, 2026
29a858e
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Jul 29, 2026
fcd4a42
refactor(types): drop xmss dep, static-assert wire sizes in crypto
MegaRedHand Jul 29, 2026
7fb26d2
refactor(crypto): report both sizes when the XMSS wire-size guard fires
MegaRedHand Jul 29, 2026
80080a0
build(deps): track leanVM a5909d1 and prove on the system allocator
MegaRedHand Jul 30, 2026
64b109a
refactor(crypto): hand out prover setup and the permit together
MegaRedHand Jul 30, 2026
97cbe1d
refactor(crypto): hold the prover permit only across the prove call
MegaRedHand Jul 30, 2026
80930d2
refactor(crypto): let the decoding paths acquire the prover up front
MegaRedHand Jul 30, 2026
3760b9d
feat(crypto): make the prover arena an opt-in
MegaRedHand Jul 30, 2026
31817c8
feat(cli): add --prover-arena to opt into the leanVM arena
MegaRedHand Jul 30, 2026
e2a66a8
refactor(crypto): initialize leanVM once at startup instead of lazily
MegaRedHand Jul 30, 2026
afe5e67
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Jul 30, 2026
a93b49e
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Jul 31, 2026
c2fa7ae
Merge remote-tracking branch 'origin/main' into build/leanvm-track-main
MegaRedHand Aug 4, 2026
8f6a6b6
fix(tests): size placeholder pubkeys from PUBLIC_KEY_SIZE
MegaRedHand Aug 4, 2026
b834663
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 4, 2026
37f5c48
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 4, 2026
116e473
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 4, 2026
691df39
fix(tests): size the merged placeholder pubkeys from PUBLIC_KEY_SIZE
MegaRedHand Aug 4, 2026
86d5cb8
Merge remote-tracking branch 'origin/main' into build/leanvm-track-main
MegaRedHand Aug 5, 2026
2e18b3c
Merge remote-tracking branch 'origin/main' into build/leanvm-track-main
MegaRedHand Aug 5, 2026
08aa352
Merge remote-tracking branch 'origin/main' into build/leanvm-track-main
MegaRedHand Aug 7, 2026
c5e0173
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 10, 2026
abf11f9
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 12, 2026
5ed24c3
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 13, 2026
f2586bf
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 19, 2026
ff7d0cc
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 19, 2026
2e1d4bc
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 25, 2026
c959352
Merge remote-tracking branch 'origin/main' into build/leanvm-track-main
MegaRedHand Aug 26, 2026
998142e
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Aug 26, 2026
c6902bb
Merge branch 'main' into build/leanvm-track-main
MegaRedHand Sep 1, 2026
5d9f136
fix(bin): repair the benchmark corpus and stale crypto references aft…
MegaRedHand Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ crates/
└─ src/metrics.rs # State transition timing + counters
common/
├─ types/ # Core types (State, Block, Attestation, Checkpoint)
├─ crypto/ # XMSS aggregation (leansig wrapper)
├─ crypto/ # XMSS sign/verify + aggregation (leanVM wrapper)
├─ metrics/ # Prometheus re-exports, TimingGuard, gather utilities
└─ test-fixtures/ # Spec-fixture loading (prod dep of rpc's Hive test driver)
net/
Expand Down Expand Up @@ -262,9 +262,15 @@ actual_slot = finalized_slot + 1 + relative_index

**XMSS (eXtended Merkle Signature Scheme):**
- Post-quantum signature scheme
- 52-byte public keys, 2536-byte signatures (`SIGNATURE_SIZE` in `common/types/src/signature.rs`)
- Wire sizes: `PUBLIC_KEY_SIZE` (`common/types/src/state.rs`) and `SIGNATURE_SIZE`
(`common/types/src/attestation.rs`), static-asserted against leanVM's scheme
constants in `common/crypto/src/signature.rs`
- Epoch-based to prevent reuse
- Aggregation via leanVM (previously leanMultisig) for efficiency
- Signing, verification, and aggregation all come from leanVM, which internalized
XMSS in its own `xmss` crate; there is no external leanSig dependency
- `ethlambda_crypto::init_leanvm(use_arena)` must run once at startup, before any
proving or proof decoding. `--prover-arena` opts into leanVM's bump arena,
which trades bounded RSS for proving throughput

**Signature Aggregation (Two-Phase):**
1. **Gossip signatures**: Fresh XMSS from network → aggregate via leanVM
Expand Down Expand Up @@ -307,7 +313,7 @@ one port is supported and not a misconfiguration. See [`docs/rpc.md`](docs/rpc.m
```yaml
GENESIS_TIME: 1770407233
GENESIS_VALIDATORS:
- attestation_pubkey: "cd323f232b34ab26d6db7402c886e74ca81cfd3a..." # 52-byte XMSS pubkeys (hex)
- attestation_pubkey: "cd323f232b34ab26d6db7402c886e74ca81cfd3a..." # XMSS pubkeys, hex, PUBLIC_KEY_SIZE bytes
proposal_pubkey: "b7b0f72e24801b02bda64073cb4de6699a416b37..."
```
- Validator indices are assigned sequentially (0, 1, 2, ...) based on array order
Expand Down Expand Up @@ -392,7 +398,8 @@ behavior.
## External Dependencies

**Critical:**
- `leansig`: XMSS signatures (leanEthereum project)
- `xmss` / `lean-multisig` (leanVM): XMSS signatures and recursive aggregation,
pinned to one revision (leanEthereum project)
- `libssz` / `libssz-derive` / `libssz-types`: SSZ serialization
- `libssz-merkle`: Merkle tree hashing (`hash_tree_root()`)
- `spawned-concurrency`: Actor model
Expand Down
Loading
Loading