Skip to content

feat(das-guardian): surface Gloas proposer preferences in scan modal#712

Open
barnabasbusa wants to merge 8 commits into
masterfrom
bbusa/das-guardian-proposer-preferences
Open

feat(das-guardian): surface Gloas proposer preferences in scan modal#712
barnabasbusa wants to merge 8 commits into
masterfrom
bbusa/das-guardian-proposer-preferences

Conversation

@barnabasbusa
Copy link
Copy Markdown
Collaborator

Summary

  • Bumps github.com/ethpandaops/eth-das-guardian to the pre-release SHA from feat: sniff Gloas SignedProposerPreferences gossip eth-das-guardian#6, which adds a Gloas proposer_preferences gossip sniffer.
  • Extends APIDasGuardianScanResult with proposer_preferences[] (validator_index, proposal_slot, fee_recipient, gas_limit, dependent_root, received_at, from) and maps the observations from the underlying scan result.
  • Adds a new section to the DAS Guardian modal in templates/clients/clients_cl.html that renders a small table when any preferences are observed: validator → /validator/{index}, proposal slot → /slot/{slot}, truncated fee recipient (full value on hover), formatted gas limit, RFC3339 receive timestamp.

Depends on ethpandaops/eth-das-guardian#6 — needs to be re-pinned to a tagged version once that PR lands.

Why this is a section, not a table column

SignedProposerPreferences are per-validator and broadcast a slot or two before each proposal. A single scan window may catch zero, one or several messages, so a fixed column in the mass-scan grid would be empty most of the time. The detail modal already groups status / metadata / DAS check; a fourth grouped table fits the same shape and stays out of the way on pre-Gloas networks (the section is hidden entirely when the array is empty).

Test plan

  • go build ./...
  • go vet ./...
  • Manual: run dora against a Gloas devnet, open the CL clients page, run a DAS Guardian check on a node, confirm the "Proposer Preferences" section renders when messages are observed (and is hidden otherwise)
  • Confirm validator/slot links route correctly

barnabasbusa and others added 8 commits May 22, 2026 09:51
eth-das-guardian now sniffs SignedProposerPreferences off the Gloas
`proposer_preferences` gossip topic and attaches the observations to
each scan result. Pull them through the JSON API and render a small
table in the DAS Guardian modal showing validator, proposal slot,
fee recipient (truncated, full value on hover), gas limit and the
receive timestamp.

Bumps github.com/ethpandaops/eth-das-guardian to a pre-release SHA
from ethpandaops/eth-das-guardian#6.
Pulls in the fix for "incorrect offset: first offset 56 does not match
expected 356" when scanning a Gloas peer — adds the post-EIP-7732
sidecar layout (slot + beacon_block_root, no signed_block_header /
kzg_commitments / kzg_commitments_inclusion_proof) and normalises it
back into the existing scan pipeline.

See ethpandaops/eth-das-guardian#6.
Adds a fourth scan type alongside Random/Specific Slots/Metadata Only:
"Proposer Preferences" — runs a metadata-only DAS Guardian scan and
keeps the Gloas `proposer_preferences` gossip subscription open for a
caller-configurable wait window (default 24s, capped at 60s server
side) so the gossipsub mesh has time to deliver SignedProposerPreferences
messages from the scanned peer.

- API request gains wait_for_proposer_preferences_seconds (int, 0–60).
- services.NewDasGuardian now accepts functional options; the API
  handler enables WithProposerPreferencesWait when the new field is set.
- Scan timeout is extended by the wait window so the HTTP request
  doesn't time out before the gossip listener.
- Modal shows a friendly empty state when the explicit Preferences
  scan returns zero observations (expected pre-Gloas, or when none of
  the peer's validators were about to propose).

Pulls in ethpandaops/eth-das-guardian@67ee99d which exposes the
ProposerPreferencesWaitDuration knob.
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