Agenda
UTC Date & Time
Resources
- Previous call: PQ Interop #029 - Forkcast
- Facilitator email: will@ethereum.org
- Facilitator Telegram: @corcoranwill
- Telegram: PQ Interop — threads:
#general,#devnet-1,#devnet-2,#devnet-3,#devnet-4,#devnet-5,#tooling,#leanVM,#onboarding
High-Level Documents
- Devnet-0 : lean consensus client interop
- Devnet-1 : PQ signature signing & verification
- Devnet-2 : single-layer PQ signature aggregation
- Devnet-3 : aggregator role separation + subnet aggregation
- Devnet-4 : recursive aggregation
Overview
A. Devnet-3: Implementation Status (Devnet N)
B. Devnet-4: Specification Status (Devnet N+1)
C. Devnet-5: Early Specification Discussion
D. Metrics & Observability
Previous Call Meeting Minutes (Call 29 — Mar 4, 2026)
A. Devnet-3: Implementation Status
Client Readiness
| Client | Implementation | Spec Tests | Interop | Docker | Notes |
|---|---|---|---|---|---|
| Zeam | Devnet-3 merged to main. Follow-up PRs coming. Planning upstream spec changes. Running interop tests with other clients. | ||||
| Ream | Running on long-running devnets. Issues with sync when starting after genesis. Invalid block/state route issues at higher slots under investigation. | ||||
| Qlean | Created dev2 and dev3 branches. Checkpoint sync added but issues remain (node doesn’t accept new blocks after restart). Note: Kamil stepping down as Quadrivium CEO, joining EF. Ruslan now primary contact. | ||||
| Lantern | Fixed fork block replay bug. Long-running devnet with Qlean + Ethlambda stable at 20,000+ slots. Added commit hash to logs. | ||||
| Ethlambda | Deprecated Devnet-2. Fixed 16 issues from non-finalizing runs. OOM errors when chain doesn’t finalize (under investigation). Added leanSig XMSS compatibility tests with Ream. | ||||
| Gean | Completed Devnet-2 (leanMultisig integration, checkpoint sync). Local multiclient interop with leanQuickStart working (justification/finalization). One PR pending review. Working on persistent storage (BoltDB vs PebbleDB). | ||||
| Lighthouse | No representative on call. | ||||
| Grandine | No representative on call. | ||||
| Nimbus | No representative on call. |
Legend:
Complete |
In progress |
Not started |
Unknown
Long-Running Devnet-3 Status
- Lantern + Qlean + Ethlambda: Stable, finalizing 20,000+ slots
- 6-node devnet (Katya): Running with temp replacements for Ethlambda/Grandine
- Recovery test successful: Devnet stalled at ~500 slots, recovered via checkpoint sync to 2,500 slots
B. Devnet-4: Specification Status
Spec PR Status
- Anshal (Zeam) raised PR, addressing Gajinder’s comments
- Test cases to be addressed once core changes approved
- High-level design doc in PM repo needs updating (Anshal)
Blocking Issue: ZK-Friendly Encoding
- Problem: Current leanMultisig API doesn’t use leanSig bindings
- Planned: ZK-friendly encoding based on Benedict’s paper
- Status: Not ready in leanSig or leanMultisig yet
- Emil: Working on it but timeline uncertain due to competing priorities
- Clients waiting on this before full Devnet-4 implementation
Subnet Configuration
- Issue: Subnet count hardcoded as 1 in spec
- Resolution: Move to chain config (Anshal to raise PR)
- Future: Testing with multiple subnets will require more validators/machines
- Resource opportunity: Dev (via Kamil) can potentially coordinate 600 university machines for large-scale P2P testing
C. Devnet-5: Early Specification Discussion
Problem Statement
Currently, proposers don’t sign over the block — only sign proposer attestation. Want to sign both for better security.
Challenge: One-time signature constraint prevents signing two different messages with same key at same slot.
Options Discussed
| Option | Description | Drawback |
|---|---|---|
| ZK SNARK | Hide signatures so two can’t be linked | Currently not ZK, only succinct |
| Single message | Treat two messages as one | Dependency issue — second message depends on signature of first |
| Double lifetime | Use even indices for attestations, odd for proposer (2^32 → 2^31 effective) | 2x keygen time |
| Separate keys | Chain-based signature for proposer (updates pubkey each time) | Two keys per validator, complexity |
| Short + long XMSS | Short lifetime for proposer, long for attester | Key management complexity |
Resolution for Devnet-5
- Approach: Generate 2 keys per validator, enroll both in state at genesis
- Benefit: Proposer attestation signed independently → can aggregate normally
- Trade-off: 2x keygen time, but protocol simplicity worth it
- Emil: API changes for this are straightforward in LeanVM
Open Question
- Long-term solution for mainnet still TBD (may revisit ZK once LeanVM supports it)
D. Metrics & Observability
Devnet-3 Metrics
- Request: All clients implement Devnet-3 metrics (who is aggregator, which subnet)
- Reason: Needed before scaling to more validators
- Dashboard: Katya to update once clients report metrics
Current Issues
| Client | Issue |
|---|---|
| Ream | Sync issues when starting after genesis; invalid block state routes at high slots |
| Qlean | Checkpoint sync not accepting new blocks after restart |
| Ethlambda | OOM when chain doesn’t finalize |
Action Items
| Owner | Action | Status |
|---|---|---|
| Anshal (Zeam) | Address Gajinder’s comments on Devnet-4 spec PR | This week |
| Anshal (Zeam) | Update Devnet-4 high-level design doc | Pending |
| Anshal (Zeam) | PR to move subnet count from hardcoded to config | Pending |
| Emil | Complete ZK-friendly encoding in leanSig/leanMultisig | In progress (no ETA) |
| Ream | Investigate sync issues (post-genesis start, invalid block state routes) | In progress |
| Qlean | Debug checkpoint sync (blocks not accepted after restart) | In progress |
| Ethlambda | Fix OOM when finality lost | In progress |
| Gean | Complete persistent storage implementation (BoltDB/PebbleDB) | This week |
| Katya | Update dashboard for Devnet-3 metrics once clients ready | Pending |
| Kamil | Connect Will with Dev re: 600 university machines for P2P testing | Pending |
| All clients | Implement Devnet-3 metrics (aggregator, subnet) | ASAP |
| All clients | Review Devnet-4 spec PR | Ongoing |
Meeting Time: Wednesday, March 11, 2026 at 14:00 UTC (60 minutes)