Skip to content

Commit

Permalink
Add getAggregatedAttestationV2 to support EIP-7549 (#447)
Browse files Browse the repository at this point in the history
* getAggregatedAttestationV2

* Address comment

* Add version header to response

* Deprecate v1 api

* Update changelog

* Change ordering of attestation fields

* Update spec reference

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
  • Loading branch information
ensi321 and nflaig authored Jun 27, 2024
1 parent 672e03e commit 4fc68cb
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ There are likely to be descriptions etc outside of the list below, but new query

| Endpoint | [Lighthouse](https://github.com/sigp/lighthouse) | [Lodestar](https://github.com/ChainSafe/lodestar) | [Nimbus](https://github.com/status-im/nimbus-eth2) | [Prysm](https://github.com/prysmaticlabs/prysm) | [Teku](https://github.com/ConsenSys/teku) |
|---------------------------------------------------------------------------------------------------------------------|--------------------------------------------------|---------------------------------------------------|----------------------------------------------------|-------------------------------------------------|-------------------------------------------|
| [#447](https://github.com/ethereum/beacon-APIs/pull/447) `GET /eth/v2/validator/aggregate_attestation` added | | | | | |


The Following are no longer in the Standard API, removed since the latest version.
Expand Down
59 changes: 59 additions & 0 deletions apis/validator/aggregate_attestation.v2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
get:
operationId: "getAggregatedAttestationV2"
summary: "Get aggregated attestation"
description: |
Aggregates all attestations matching given attestation data root, slot and committee index.
A 503 error must be returned if the block identified by the response
`beacon_block_root` is optimistic (i.e. the aggregated attestation attests
to a block that has not been fully verified by an execution engine).
A 404 error must be returned if no attestation is available for the requested
`attestation_data_root`.
tags:
- ValidatorRequiredApi
- Validator
parameters:
- name: attestation_data_root
in: query
required: true
description: "HashTreeRoot of AttestationData that validator wants aggregated"
schema:
$ref: '../../beacon-node-oapi.yaml#/components/schemas/Root'
- name: slot
in: query
required: true
schema:
$ref: '../../beacon-node-oapi.yaml#/components/schemas/Uint64'
- name: committee_index
in: query
required: true
schema:
$ref: '../../beacon-node-oapi.yaml#/components/schemas/Uint64'
responses:
"200":
description: "Returns aggregated `Attestation` object with same `AttestationData` root, slot and committee index."
headers:
Eth-Consensus-Version:
$ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Version'
content:
application/json:
schema:
title: GetAggregatedAttestationV2Response
type: object
required: [version, data]
properties:
version:
type: string
enum: [phase0, altair, bellatrix, capella, deneb, electra]
example: "phase0"
data:
anyOf:
- $ref: '../../beacon-node-oapi.yaml#/components/schemas/Attestation'
- $ref: '../../beacon-node-oapi.yaml#/components/schemas/Electra.Attestation'
"400":
$ref: '../../beacon-node-oapi.yaml#/components/responses/InvalidRequest'
"404":
$ref: '../../beacon-node-oapi.yaml#/components/responses/NotFound'
"500":
$ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError'
1 change: 1 addition & 0 deletions apis/validator/aggregate_attestation.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
get:
operationId: "getAggregatedAttestation"
summary: "Get aggregated attestation"
deprecated: true
description: |
Aggregates all attestations matching given attestation data root and slot.
Expand Down
4 changes: 4 additions & 0 deletions beacon-node-oapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,8 @@ paths:
$ref: "./apis/validator/attestation_data.yaml"
/eth/v1/validator/aggregate_attestation:
$ref: "./apis/validator/aggregate_attestation.yaml"
/eth/v2/validator/aggregate_attestation:
$ref: "./apis/validator/aggregate_attestation.v2.yaml"
/eth/v1/validator/aggregate_and_proofs:
$ref: "./apis/validator/aggregate_and_proofs.yaml"
/eth/v1/validator/beacon_committee_subscriptions:
Expand Down Expand Up @@ -371,6 +373,8 @@ components:
$ref: './types/primitive.yaml#/Blob'
Deneb.BlobSidecars:
$ref: './types/deneb/blob_sidecar.yaml#/Deneb/BlobSidecars'
Electra.Attestation:
$ref: './types/electra/attestation.yaml#/Electra/Attestation'
Node:
$ref: './types/fork_choice.yaml#/Node'
ExtraData:
Expand Down
18 changes: 18 additions & 0 deletions types/electra/attestation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Electra:
Attestation:
type: object
description: "The [`Attestation`](https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/electra/beacon-chain.md#attestation) object from the CL spec."
required: [aggregation_bits, data, signature, committee_bits]
properties:
aggregation_bits:
$ref: "../primitive.yaml#/BitList"
description: "Attester aggregation bits."
data:
$ref: "../attestation.yaml#/AttestationData"
signature:
$ref: "../primitive.yaml#/Signature"
description: "BLS aggregate signature."
committee_bits:
$ref: "../primitive.yaml#/Bitvector"
description: "Committee bits."
example: "0x0000000000000000000000000000000000000000000000000000000000000001"

0 comments on commit 4fc68cb

Please sign in to comment.