chore: bump leanVM to e2592df on devnet5#423
Conversation
Greptile SummaryThis PR bumps the leanVM dependency pin from
Confidence Score: 5/5Safe to merge — the change is a pure upstream API rename with no alterations to call signatures, field accesses, or logic. Every change in lib.rs is a symbol substitution whose before/after shapes are identical. The lock file update is generated and consistent with the Cargo.toml rev bump. The PR was validated with a full workspace build, clippy, and fmt. No functional logic was touched. No files require special attention.
|
| Filename | Overview |
|---|---|
| crates/common/crypto/src/lib.rs | Mechanical rename of all lean-multisig API symbols to match upstream; call signatures, field accesses, and control flow are unchanged |
| crates/common/crypto/Cargo.toml | Dependency rev bumped from 8fcbd779 to e2592df for both lean-multisig and leansig_wrapper; no other changes |
| Cargo.lock | All leanVM crates updated to e2592df; rayon replaced with a custom parallel crate from leanVM; new zk-alloc dependency on parallel; libc added to lean-multisig |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[ethlambda-crypto] -->|imports| B[lean-multisig @ e2592df]
A -->|imports| C[leansig_wrapper @ e2592df]
subgraph "Type-1 (single-message) path"
D[aggregate_single_message_signatures]
E[merge_single_message_aggregates]
F[verify_single_message_aggregate]
end
subgraph "Type-2 (multi-message) path"
G[split_multi_message_aggregate]
H[verify_multi_message_aggregate]
end
B --> D
B --> E
B --> F
B --> G
B --> H
I[aggregate_signatures] --> D
J[aggregate_mixed] --> D
K[aggregate_proofs] --> D
L[verify_aggregated_signature] --> F
M[merge_type_1s_into_type_2] --> E
N[verify_type_2_signature] --> H
O[split_type_2_by_message] --> G
Reviews (2): Last reviewed commit: "Merge branch 'devnet5' into chore/devnet..." | Re-trigger Greptile
45bdff4 to
6961d1d
Compare
Track upstream leanVM at `e2592df` (the repo's `devnet5` branch), previously `8fcbd779` (#408). The aggregation crate renamed its public API since `8fcbd779`; the wrapper in `ethlambda-crypto` adapts to the new names (shapes and fields unchanged): TypeOneMultiSignature -> SingleMessageAggregateSignature TypeTwoMultiSignature -> MultiMessageAggregateSignature aggregate_type_1 -> aggregate_single_message_signatures merge_many_type_1 -> merge_single_message_aggregates split_type_2 -> split_multi_message_aggregate verify_type_1 / verify_type_2 -> verify_single_message_aggregate / verify_multi_message_aggregate Plonky3 `p3-*` crates are pinned back to `3f67d136` (the rev devnet5 already used): newer revs pulled in transitively by leanVM use the unstable `maybe_uninit_slice` feature, which doesn't build on Rust 1.92.0.
6961d1d to
4790212
Compare
🤖 Kimi Code ReviewThe diff updates the Security & Correctness
Code Quality
Dependencies
Verdict Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Claude Code ReviewHere is the review for PR #423: PR #423: chore: bump leanVM to e2592df on devnet5Author: Tomás Grüner | Base: OverviewA mechanical dependency bump: leanVM Code QualityThe rename in FindingsMinor — comment/function name mismatch in The updated doc comment at
but the actual Rust function being called is
Low — debug-build stack overflow undocumented at the test itself The PR description honestly flags that #[test]
#[cfg_attr(debug_assertions, ignore = "needs >2 MiB stack; run with --release")]
fn test_setup_is_idempotent() { ... }This is not a blocker since CI passes, but it avoids a confusing DX trap for future contributors. Informational — The Informational — semantic correctness untestable at review time All heavy round-trip tests ( VerdictApprove. The port is correct and complete. The one actionable item (Item 1 — comment mismatch) is minor; Item 2 (debug ignore annotation) is a quality-of-life improvement worth considering before the test grows more users. Automated review by Claude (Anthropic) · sonnet · custom prompt |
🤖 Codex Code ReviewNo blocking findings in the in-repo changes. The Rust wrapper edits in crates/common/crypto/src/lib.rs are mechanical API renames only; the important consensus-relevant behavior stays intact: Residual risks / testing gaps:
I could not run Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Motivation
Track upstream leanVM at
e2592df(the repo'sdevnet5branch), previously8fcbd779(#408).Description
The aggregation crate renamed its public API since
8fcbd779.ethlambda-cryptoadapts to the new names; shapes, fields, and call signatures are unchanged, so the port is mechanical:8fcbd779)e2592df)TypeOneMultiSignatureSingleMessageAggregateSignatureTypeTwoMultiSignatureMultiMessageAggregateSignatureaggregate_type_1aggregate_single_message_signaturesmerge_many_type_1merge_single_message_aggregatessplit_type_2split_multi_message_aggregateverify_type_1/verify_type_2verify_single_message_aggregate/verify_multi_message_aggregatePlonky3 pin:
p3-*crates are pinned back to3f67d136(the rev devnet5 already used). Newer revs pulled in transitively by leanVM use the unstablemaybe_uninit_slicefeature, which doesn't build on Rust 1.92.0.Validation
cargo build --workspacecargo clippy -p ethlambda-cryptocleancargo fmt --checkcleanNotes
aggregate/verify/merge/split) remain#[ignore](12+ GiB/proof), so semantic correctness here is verified by compile + prover setup, not a live proof.test_setup_is_idempotentstack-overflows in debug builds: the new bytecode compiler needs >2 MiB of stack. Release is unaffected andmake testuses--release, so CI passes; flagging for awareness.