Post-Quantum (PQ) Interop #30, March 11, 2026

Agenda

UTC Date & Time

March 11, 2026, 14:00 UTC

Resources

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 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: Devnet-3 merged to main. Follow-up PRs coming. Planning upstream spec changes. Running interop tests with other clients.
Ream :white_check_mark: :white_check_mark: :large_orange_diamond: :white_check_mark: Running on long-running devnets. Issues with sync when starting after genesis. Invalid block/state route issues at higher slots under investigation.
Qlean :white_check_mark: :large_orange_diamond: :large_orange_diamond: :white_check_mark: 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 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: Fixed fork block replay bug. Long-running devnet with Qlean + Ethlambda stable at 20,000+ slots. Added commit hash to logs.
Ethlambda :white_check_mark: :white_check_mark: :large_orange_diamond: :large_orange_diamond: 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 :white_check_mark: :white_check_mark: :large_orange_diamond: :large_orange_diamond: 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 :hourglass_not_done: :hourglass_not_done: :hourglass_not_done: :hourglass_not_done: No representative on call.
Grandine :red_question_mark: :red_question_mark: :red_question_mark: :red_question_mark: No representative on call.
Nimbus :red_question_mark: :red_question_mark: :red_question_mark: :red_question_mark: No representative on call.

Legend: :white_check_mark: Complete | :large_orange_diamond: In progress | :hourglass_not_done: Not started | :red_question_mark: 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)

GitHub Issue

Meeting Summary:

The team provided updates on various development work including fixes for technical issues, improvements to devnet runs, and progress on specifications and implementations across multiple versions. Several team members reported on client updates, including new features and performance improvements, while the specs team focused on interop between different clients and released new versions. The team discussed network topology concerns and propagation optimizations, with particular attention to proof and block size optimization strategies, and concluded with updates on devnet 3 status and refactoring requirements.

Click to expand detailed summary

Gajinder provided updates on the Zoom team’s work, including fixes for issues with ForkChoice and payload processing, as well as a specification correction for finalization in the straight transition function. The team also worked on devnet 3 runs, addressed issues discovered by Katya and Path, and improved the Lean Quick Start process. Additionally, they discussed ongoing work on DevNet 4 and 5, with Anshal’s PR for DevNet 4 awaiting review and a proposal to merge DevNet 5 changes directly into DevNet for itself.

Will demonstrated a new Cloud Code tool for generating weekly development summaries and highlighted PRs for discussion. Shariq reported on devnet debugging progress, including fixes for consensus issues and checkpoint sync problems, with clients now stable at 1,000 finalized slots. The team discussed ongoing work on devnet 4 specifications and signature serialization changes, with PRs pushed to align with other clients’ implementations of fixed bytes.

The team discussed progress on several fronts. Ruslan reported on the ForkChoice endpoint, merged devnet 3 requests, and identified issues with Docker ports becoming busy when starting the application. Shaaibu updated on implementing persistent storage using BulchDB and separating signature aggregation from blob production for devnet 3 requirements. The team is working on automating interop tests and expects to raise a PR on LingQuickstart by the end of the week to participate in multi-client interop.

Pablo reported on client updates, including the implementation of a circular buffer to address memory issues, a new concurrency framework called Spawn, networking improvements, and the addition of pending lead metrics. Thomas shared that the specs team focused on interop between the lean spec and other clients, particularly noting improved performance of PoS 801 compared to Poseidon 2, with results showing only 1.8x slower performance in plain text scenarios. The team also released Plonkist 3 0.5.

The team discussed updates on research and development, including progress on devnet 4 and the inclusion of new zk-friendly encodings in the Lintig PR. Thomas announced an upcoming Poseidon-focused proof call next week. Gajinder raised concerns about the P2P topology needed for multiple subnets, including how validators should handle Gossip attestation messages and the overall strategy for spreading signed attestation messages efficiently.

Kamil expressed concerns about using Grid for attestation propagation due to privacy issues, suggesting instead to focus on optimizing block and proof propagation. Gajinder highlighted the need to first determine an appropriate topology before addressing propagation optimizations, noting that the current star topology requires all nodes to be connected directly, which limits optimization opportunities.

Gajinder and Kamil discussed the need to increase the number of nodes in their network to measure propagation time for blocks and proofs. They explored the possibility of optimizing block size and data packets, but Gajinder explained that it may not be feasible to have a single proof in a block due to varying registration data and multiple attestation data. They considered targeting optimizations for an aggregator to deliver data in a single packet, but acknowledged that block size would likely be broken into multiple packets due to the nature of their system.

The team discussed optimizing proof size and transmission in blocks by potentially aggregating across different messages. Gajinder proposed creating a single proof that could be independently verified against individual messages without requiring all messages to be present. The group agreed this approach should be possible, though the exact implementation details need further exploration. Separately, Katya provided an update on devnet 3, reporting it was running on 9 servers with some issues due to outdated images, and requested updates on API and metrics flags from all teams for refactoring purposes.

Next Steps:

  • All client teams: Review and implement the upstream PR for finalization issue (spec change #443) to avoid consensus issues
  • All client teams: Review Anshal’s DevNet 4 PR
  • Zoom team: Review the DevNet 5 PR for separating proposer and tester key
  • Ream team: Continue reviewing the DevNet 4 spec PR
  • Clean team: Investigate and fix the crash in compute-only ghost head function found by Kat
  • Clean team: Find solution for docker ports becoming busy when using network host from Link Start
  • Jean team: Raise a PR on LeanQuickStart by end of this week to participate in multi-client interop
  • All client teams: Provide API and metrics flags updates in the tooling channel in response to Katya’s message for LeanQuickStart refactoring
  • Katya: Replace ZIM with updated image once available
  • Katya: Notify Grandine team in chat about memory leaks issue
  • Gajinder and team: Investigate P2P topology requirements for greater than one subnet configuration this week
  • Gajinder and Emil: Continue discussion after call about independent message verification for aggregated proofs
  • Thomas and team: Work on integrating Raul’s team’s broadcast/P2P work into Lean spec and lean devnet

Recording Access:

YouTube recording available: https://youtu.be/vr8nx9FkajQ