Repository navigation
feat: receive and decode gossiped attestations - #23
Merged
Merged
Conversation
MegaRedHand
added a commit
that referenced
this pull request
Oct 26, 2026
A local run did not start. The newest reth-rbuilder image parses only enode bootnodes while the package passes ENRs, and Commit-Boost's PBS requires SECONDS_PER_SLOT, which the genesis generator no longer writes. The first is fixed in the fork (PR #23), so the package pin moves to that commit. The second is worked around by giving Commit-Boost an explicit chain through `commit_boost_config`; its `chain_id` must be a hex string. The README lists both workarounds so they can be dropped when upstream is fixed, and explains the harmless "Builder is not answering" logs at startup.
tcoratger
pushed a commit
to tcoratger/ethlambda
that referenced
this pull request
Oct 30, 2026
…lambdaclass#23) * perf(beacon): rank dial candidates by custody redundancy, not presence A mainnet follower fell ~100 slots behind and could not recover. lean_custody_column_peers showed only 5-8 of 129 connected peers custodying each sampled column, and 78% of its by-root column requests went unanswered (81,073 requests against 17,785 response chunks) once gossip could no longer carry it: off the tip, by-root fetch is the only source, and lean_data_column_fetch_failures_total{reason="max_retries"} hit 5,566 in ~50 minutes, spread evenly across peers rather than one bad one, which points at supply rather than a bad peer. covered_custody_columns collected custodians into a HashSet<u64>, so a single custodian marked a column covered, and uncovered_custody_columns only ever surfaced columns with zero custodians. At 5-8 custodians that set is empty, custody stops contributing to rank_candidates entirely, and dialing optimizes purely for attestation-subnet coverage while columns are the actual binding constraint. Replace presence with a per-column custodian count, and compare it against a redundancy target instead of a zero/nonzero check. The target is tied to MAX_FETCH_RETRIES: handle_column_fetch_failure tracks failed_peers so each retry round wants a custodian it has not already asked, and a column with fewer custodians than the ladder has rounds runs out of fresh peers before it runs out of retries. rank_candidates keeps its existing signature; only how the "wanted" columns handed to it are computed changes. * docs(beacon): describe rank_candidates' custody bar as redundancy, not presence rank_candidates' doc comment still described the "wanted" columns as those no connected peer holds at all, which was true before this branch but is stale now: the caller hands it every column below CUSTODY_REDUNDANCY_TARGET custodians, a much wider set than zero. Rewrite the doc to state what the parameter means today and why thin-but-nonzero supply belongs in it, not just the zero case: a by-root lookup's retry ladder wants a custodian it has not already asked each round, so a column with fewer custodians than the ladder has rounds exhausts its retries re-asking peers that already failed it. That is the failure the measured 5-8-custodians / 78%-unanswered mainnet case actually hit, not merely a column with zero custodians. The zero-custodian case and the supernode-sorts-first observation are kept as the extreme case and still-true observation they are. Also rename covered_custody_columns to custodian_counts_by_column: it has returned a HashMap<u64, usize> since the redundancy-count change, and the old name still reads like the HashSet<u64> presence check it used to be. No behavior change: docs and one function rename only.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.