Skip to content

Interop issues for new POST /eth/v2/beacon/pool/attestations endpoint #6857

@eth2353

Description

@eth2353

Hey team,

I've been running some interop tests to make our Vero VC ready for the Pectra upgrade.

I ran into 2 issues with Lighthouse as the CL client which are not present with other clients on the POST /eth/v2/beacon/pool/attestations endpoint.

1) The endpoint accepts uints instead of strings for the attester_index and committee_index fields ( also the Lighthouse VC sends uints instead of strings )

See the output below from the Beacon API snooper post-Electra for the difference.

Lightouse CL <> Lighthouse VC:

[snooper-beacon-3-lighthouse-lighthouse] INFO[2025-01-24T10:38:41Z] REQUEST #1238: POST /eth/v2/beacon/pool/attestations  length=1717 type=json
[snooper-beacon-3-lighthouse-lighthouse] [
[snooper-beacon-3-lighthouse-lighthouse]   {
[snooper-beacon-3-lighthouse-lighthouse]     "attester_index": 175,
[snooper-beacon-3-lighthouse-lighthouse]     "committee_index": 0,
[snooper-beacon-3-lighthouse-lighthouse]     "data": {
[snooper-beacon-3-lighthouse-lighthouse]       "beacon_block_root": "0xc764973cf758251fad788a302fea0dfbf706028f5eb8f390a4eb81c2a6466275",
[snooper-beacon-3-lighthouse-lighthouse]       "index": "0",
[snooper-beacon-3-lighthouse-lighthouse]       "slot": "44",
[snooper-beacon-3-lighthouse-lighthouse]       "source": {
[snooper-beacon-3-lighthouse-lighthouse]         "epoch": "0",
[snooper-beacon-3-lighthouse-lighthouse]         "root": "0x0000000000000000000000000000000000000000000000000000000000000000"
[snooper-beacon-3-lighthouse-lighthouse]       },
[snooper-beacon-3-lighthouse-lighthouse]       "target": {
[snooper-beacon-3-lighthouse-lighthouse]         "epoch": "1",
[snooper-beacon-3-lighthouse-lighthouse]         "root": "0xc8cf554c9d833bd456a478fb5635c2d7b8370232424cb283cda65bbbfe84b35c"
[snooper-beacon-3-lighthouse-lighthouse]       }
[snooper-beacon-3-lighthouse-lighthouse]     },
[snooper-beacon-3-lighthouse-lighthouse]     "signature": "0x9162a19d986efbe613dae9a941996cb43944e30b0f83cbfbba47738a68fe56447417d7d0587e0a088888a68300cd5b5213510938e539a7c1c1815e8d150fa3e7fbc94294777bb594d142217259f1b6f1cf13f2d49c7dd0208d00102372075bb1"
[snooper-beacon-3-lighthouse-lighthouse]   },

Lighthouse CL <> Lodestar VC:

[snooper-beacon-1-lighthouse-lodestar] INFO[2025-01-24T10:38:37Z] REQUEST #677: POST /eth/v2/beacon/pool/attestations  length=-1 type=json
[snooper-beacon-1-lighthouse-lodestar] [
[snooper-beacon-1-lighthouse-lodestar]   {
[snooper-beacon-1-lighthouse-lodestar]     "attester_index": "5",
[snooper-beacon-1-lighthouse-lodestar]     "committee_index": "0",
[snooper-beacon-1-lighthouse-lodestar]     "data": {
[snooper-beacon-1-lighthouse-lodestar]       "beacon_block_root": "0xc764973cf758251fad788a302fea0dfbf706028f5eb8f390a4eb81c2a6466275",
[snooper-beacon-1-lighthouse-lodestar]       "index": "0",
[snooper-beacon-1-lighthouse-lodestar]       "slot": "44",
[snooper-beacon-1-lighthouse-lodestar]       "source": {
[snooper-beacon-1-lighthouse-lodestar]         "epoch": "0",
[snooper-beacon-1-lighthouse-lodestar]         "root": "0x0000000000000000000000000000000000000000000000000000000000000000"
[snooper-beacon-1-lighthouse-lodestar]       },
[snooper-beacon-1-lighthouse-lodestar]       "target": {
[snooper-beacon-1-lighthouse-lodestar]         "epoch": "1",
[snooper-beacon-1-lighthouse-lodestar]         "root": "0xc8cf554c9d833bd456a478fb5635c2d7b8370232424cb283cda65bbbfe84b35c"
[snooper-beacon-1-lighthouse-lodestar]       }
[snooper-beacon-1-lighthouse-lodestar]     },
[snooper-beacon-1-lighthouse-lodestar]     "signature": "0xb51fea1a5d1e4789184fbb3b21d2587759939bb9350db091d4f6eae52fd5831f3d5fda50713103071028939fad3f285c0451b6874f09d73edf3763a30df5416248ebbb12aeaef68a5c0a224d7dbfa8de8f840a770c56ce5d53fac6240bba9ba2"
[snooper-beacon-1-lighthouse-lodestar]   }
[snooper-beacon-1-lighthouse-lodestar] ]

2) The endpoint does not support Attestation objects pre-Electra

This is not a huge deal since we can use the v1 endpoint pre-Electra, but all other clients do support this so it would be really nice for Lighthouse to support this too.

Kurtosis config for reproducibility, devnet-5 specs:

participants:
  - el_type: reth
    el_image: ethpandaops/reth:main-11bd9dd
    cl_type: lighthouse
    cl_image: ethpandaops/lighthouse:single_attestation-b6d80eb
    use_separate_vc: true
    vc_type: lodestar
    vc_image: ethpandaops/lodestar:unstable-d584aed
    snooper_enabled: true
  - el_type: reth
    el_image: ethpandaops/reth:main-11bd9dd
    cl_type: lighthouse
    cl_image: ethpandaops/lighthouse:single_attestation-b6d80eb
    use_separate_vc: true
    vc_type: teku
    vc_image: consensys/teku:develop
    snooper_enabled: true
  - el_type: reth
    el_image: ethpandaops/reth:main-11bd9dd
    cl_type: lighthouse
    cl_image: ethpandaops/lighthouse:single_attestation-b6d80eb
    use_separate_vc: true
    vc_type: lighthouse
    vc_image: ethpandaops/lighthouse:single_attestation-b6d80eb
    snooper_enabled: true

network_params:
  electra_fork_epoch: 1

additional_services:
  - tx_spammer
  - blob_spammer
  - dora
  - prometheus_grafana

dora_params:
  image: "ethpandaops/dora:master-latest"

Metadata

Metadata

Assignees

Labels

electraRequired for the Electra/Prague fork

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions