chore(deps): bump libssz crates to 0.3.0 - #575
Conversation
Tracks consensus-specs v1.7.0-alpha.13. The breaking changes in 0.3.0 are confined to progressive containers/lists (EIP-7916 merkleization roots, the 256-field cap, and unknown ssz attribute keys now being compile errors), none of which this codebase uses, so no source changes are required. The release also elides all-zero subtrees and reuses buffers in merkleize, which is a win on every hash_tree_root we compute. The lockfile edit is deliberately limited to the four libssz entries: a full re-resolve additionally repointed leanVM's mt-field/mt-poly at num-bigint 0.4 and shifted several other duplicate-version picks, which does not belong in a dependency bump.
🤖 Kimi Code ReviewOverall Assessment: This PR bumps critical SSZ dependencies ( Critical Issues1. Missing Code Adaptations for Breaking ChangesFile: SemVer
Action Required: Verify if
2. Consensus Critical Testing GapRisk: SSZ serialization changes can cause state root mismatches, invalid block processing, or fork choice errors. Required verification (not visible in diff):
3. Exact Version PinningFile: # Current (risky for consensus client)
libssz = "0.3.0"
# Recommended (reproducible builds)
libssz = "=0.3.0"Consensus clients should use exact version pinning ( Security Considerations
Recommendations
If this is a routine dependency update with no API changes, acknowledge that the version bump appears to be a compatible maintenance release despite the minor version increment, but still requires full consensus test suite validation before deployment. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Claude Code ReviewThis PR is a minimal, well-scoped dependency bump limited to ReviewOverall: looks good. This is a clean, low-risk dependency bump with an unusually thorough PR description that already does the hard work of scoping the blast radius. Correctness / Verification
Risk assessment of the upstream change
Nothing else to flagNo source files changed, no new API surface, no consensus-logic touched. Given the accurate, self-verifying description and the narrow diff, this is safe to merge as-is. Automated review by Claude (Anthropic) · sonnet · custom prompt |
🤖 Codex Code ReviewNo findings in the checked-in diff. The PR only bumps the Residual risk is upstream-only: this is a consensus-critical serialization/merkleization dependency, so any behavior change in Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Greptile SummaryThe PR upgrades the four workspace libssz crates from 0.2.2 to 0.3.0 without requiring source changes.
Confidence Score: 5/5The PR appears safe to merge because the dependency constraints and lockfile entries are consistent and no reachable compatibility or serialization failure was identified. Existing code avoids the documented progressive-container breaking changes, and the reported locked workspace checks plus SSZ-sensitive fixture suites exercise compilation, serialization, and hash-tree-root behavior.
|
| Filename | Overview |
|---|---|
| Cargo.toml | Updates all four workspace libssz dependency constraints consistently to 0.3.0; no actionable compatibility issue was identified in existing consumers. |
| Cargo.lock | Updates the matching four resolved package versions and checksums without changing unrelated dependency selections. |
Reviews (1): Last reviewed commit: "chore(deps): bump libssz crates to 0.3.0" | Re-trigger Greptile
Bumps
libssz,libssz-derive,libssz-merkleandlibssz-typesfrom 0.2.2 to 0.3.0 (release notes).Why
0.3.0 tracks consensus-specs v1.7.0-alpha.13 and ships a
merkleizerewrite that elides all-zero subtrees and reuses buffers instead of allocating per layer, which touches everyhash_tree_rootwe compute.Impact on this codebase: none
0.3.0 is a breaking release, but every breaking change is confined to progressive containers and lists:
ProgressiveList,ProgressiveBitlist,#[ssz(progressive_container)]#[ssz(...)]keys are now compile errors instead of being silently ignoredNo source changes were needed.
Lockfile scope
The
Cargo.lockdiff is deliberately limited to the fourlibsszentries (version + checksum). A fullcargo update -p libssz ...re-resolve additionally repointed leanVM'smt-field/mt-polyatnum-bigint0.4 and shifted several other duplicate-version picks (itertools,syn,getrandom). That churn is unrelated to this bump, and silently moving a crypto dependency's bignum library does not belong in a dependency bump, so it was left out.cargo check --lockedconfirms the hand-scoped lockfile resolves cleanly.Verification
Run against the minimal lockfile, on the latest
leanSpecproduction fixtures:cargo check --workspace --all-targets --locked— cleancargo clippy --workspace --all-targets --locked -- -D warnings— cleancargo test --workspace --locked— all green, including the SSZ-sensitive suites (stf_spectests,forkchoice_spectests,signature_spectests)The spec-test suites are the meaningful check here: they compare
hash_tree_rootoutput and SSZ encode/decode against the leanSpec fixtures, so they would catch any merkleization or serialization change reaching our types.