Skip to content

fix: update BlockSignatures with changes from spec - #20

Merged
MegaRedHand merged 3 commits into
mainfrom
fix-block-signatures
Jan 13, 2026
Merged

MegaRedHand merged 3 commits into
mainfrom
fix-block-signatures

Conversation

@MegaRedHand

Copy link
Copy Markdown
Collaborator

Some changes were made to the BlockSignatures type recently

@MegaRedHand
MegaRedHand marked this pull request as ready for review January 13, 2026 16:07
@MegaRedHand
MegaRedHand merged commit 2a269cd into main Jan 13, 2026
@MegaRedHand
MegaRedHand deleted the fix-block-signatures branch January 13, 2026 16:07
pablodeymo added a commit that referenced this pull request Jul 24, 2026
PR #20 landed the spec-conformant transport on ethp2p-rs main (squash-merged
as d852f23). Move the pin off the pre-merge branch commit (3d23411) to that
main commit, which additionally brings in the hardening added after the Slice-7
bump: reconstruct-reset, per-peer bounded queues with backpressure, opt-in
peer-id pinning, and — importantly — the fix for a load-dependent livelock
where a backpressured chunk send spun drain_session without yielding.

Pinning to a commit on main (rather than a branch that may be deleted) also
gives the git dependency stable provenance. No adapter changes: the new
transport APIs are additive, so bind/connect/Net::send/events are unchanged.
The in-crate round-trip test and the default feature-off build both pass.
tcoratger pushed a commit to tcoratger/ethlambda that referenced this pull request Oct 30, 2026
…class#20)

A live beacon-follower profile shows one thread pinned at 100% of a
core while the other 15 sit idle, with 12.5% of total cycles spent in
is_valid_indexed_attestation, almost all of it in blst's mulx_mont
routines: the per-key subgroup check inside aggregate_verify and
fast_aggregate_verify. An Electra block can carry thousands of
attesters behind one aggregate, and the state transition only ever
runs on a single actor thread, so that loop was leaving a mostly-idle
host's other cores untouched on every block import.

Each key's validation is independent of every other key's, so nothing
about the result depends on running them in order; rayon's par_iter
spreads the checks across its pool and still collapses to false the
moment any key fails, exactly like the sequential loop's early
return did, without skipping or weakening key_validate for a single
key. with_min_len keeps small inputs (a devnet or a spec fixture) on
one thread instead of paying dispatch overhead for a handful of keys.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant