-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add blob signing endpoints #302
Changes from 10 commits
5502da1
e702695
fd02cd2
09ca1dd
709ccd6
a213e30
cec2c91
af17213
bb8b8ae
b14c00c
066ed57
0efc637
9d08f11
a630ac8
eb5d7d1
1a9034c
2627727
1b08ee4
605dd84
23b236a
32f5c39
f7b11f6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
post: | ||
tags: | ||
- Beacon | ||
- ValidatorRequiredApi | ||
summary: "Publish a signed blob." | ||
operationId: "publishBlob" | ||
description: | | ||
Instructs the beacon node to broadcast a newly signed blob to the beacon network, | ||
to be included in the beacon chain. A success response (20x) indicates that the blob | ||
passed gossip validation and was successfully broadcast onto the network. | ||
The beacon node is also expected to integrate the blob into state once it receives the | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The description here needs to be changed. Blobs are not expected to be integrated into state. |
||
corresponding block and any other corresponding blobs, but may broadcast it | ||
before doing so, so as to aid timely delivery of the block and blobs. Should the blob fail full | ||
validation, a separate success response code (202) is used to indicate that the blob was | ||
successfully broadcast but failed integration. | ||
parameters: | ||
- in: header | ||
schema: | ||
$ref: '../../../beacon-node-oapi.yaml#/components/schemas/ConsensusVersion' | ||
required: false | ||
name: Eth-Consensus-Version | ||
description: "Version of the blob being submitted, if using SSZ encoding." | ||
requestBody: | ||
description: "A variant of `SignedBlobSidecar` object composed of a `BlindedBlobSidecar` object (produced by beacon node) and validator signature." | ||
required: true | ||
content: | ||
application/json: | ||
schema: | ||
oneOf: | ||
- $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Deneb.SignedBlindedBlobSidecar" | ||
application/octet-stream: | ||
schema: | ||
description: "SSZ serialized blob sidecar bytes. Use content type header to indicate that SSZ data is contained in the request body." | ||
responses: | ||
"200": | ||
description: "The blob was validated successfully and has been broadcast. It has also been integrated into the beacon node's database." | ||
"202": | ||
description: "The blob could not be integrated into the beacon node's database as it failed validation, but was successfully broadcast." | ||
"400": | ||
description: "The `SignedBlobSidecar` object is invalid and could not be broadcast" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shouldn't be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i guess description is talking about constructed object |
||
content: | ||
application/json: | ||
schema: | ||
allOf: | ||
- $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage" | ||
- example: | ||
code: 400 | ||
message: "Invalid blob: missing signature" | ||
"415": | ||
$ref: '../../../beacon-node-oapi.yaml#/components/responses/UnsupportedMediaType' | ||
"500": | ||
$ref: '../../../beacon-node-oapi.yaml#/components/responses/InternalError' | ||
"503": | ||
$ref: '../../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing' |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -89,6 +89,8 @@ paths: | |
$ref: "./apis/beacon/blocks/blinded_blocks.yaml" | ||
/eth/v1/beacon/blocks: | ||
$ref: "./apis/beacon/blocks/blocks.yaml" | ||
/eth/v1/beacon/blob_sidecar: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. do you think we should make this |
||
$ref: "./apis/beacon/blobs/post_blobs.yaml" | ||
/eth/v2/beacon/blocks/{block_id}: | ||
$ref: "./apis/beacon/blocks/block.v2.yaml" | ||
/eth/v1/beacon/blocks/{block_id}/root: | ||
|
@@ -319,7 +321,7 @@ components: | |
Bellatrix.SignedBlindedBeaconBlock: | ||
$ref: './types/bellatrix/block.yaml#/Bellatrix/SignedBlindedBeaconBlock' | ||
ConsensusVersion: | ||
enum: [phase0, altair, bellatrix, capella] | ||
enum: [phase0, altair, bellatrix, capella, deneb] | ||
example: "phase0" | ||
SignedValidatorRegistration: | ||
$ref: './types/registration.yaml#/SignedValidatorRegistration' | ||
|
@@ -341,6 +343,24 @@ components: | |
$ref: './types/capella/light_client.yaml#/Capella/LightClientFinalityUpdate' | ||
Capella.LightClientOptimisticUpdate: | ||
$ref: './types/capella/light_client.yaml#/Capella/LightClientOptimisticUpdate' | ||
Deneb.BeaconState: | ||
$ref: './types/deneb/state.yaml#/Deneb/BeaconState' | ||
Deneb.BeaconBlock: | ||
$ref: './types/deneb/block.yaml#/Deneb/BeaconBlock' | ||
Deneb.BlockContents: | ||
$ref: './types/deneb/block_contents.yaml#/Deneb/BlockContents' | ||
Deneb.SignedBeaconBlock: | ||
$ref: './types/deneb/block.yaml#/Deneb/SignedBeaconBlock' | ||
Deneb.BlindedBeaconBlock: | ||
$ref: './types/deneb/block.yaml#/Deneb/BlindedBeaconBlock' | ||
Deneb.BlindedBlockContents: | ||
$ref: './types/deneb/block_contents.yaml#/Deneb/BlindedBlockContents' | ||
Deneb.SignedBlindedBeaconBlock: | ||
$ref: './types/deneb/block.yaml#/Deneb/SignedBlindedBeaconBlock' | ||
Deneb.BlindedBlobSidecar: | ||
$ref: './types/deneb/blob_sidecar.yaml#/Deneb/BlindedBlobSidecar' | ||
Deneb.SignedBlindedBlobSidecar: | ||
$ref: './types/deneb/blob_sidecar.yaml#/Deneb/SignedBlindedBlobSidecar' | ||
Node: | ||
$ref: './types/fork_choice.yaml#/Node' | ||
ExtraData: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
Deneb: | ||
BlindedBlobSidecars: | ||
type: array | ||
items: | ||
$ref: '#/Deneb/BlindedBlobSidecar' | ||
minItems: 0 | ||
maxItems: 4 | ||
|
||
BlindedBlobSidecar: | ||
type: object | ||
description: "A blob sidecar with the SSZ root of the blob rather than the full blob." | ||
properties: | ||
block_root: | ||
$ref: "../primitive.yaml#/Root" | ||
index: | ||
$ref: "../primitive.yaml#/Uint64" | ||
slot: | ||
$ref: "../primitive.yaml#/Uint64" | ||
block_parent_root: | ||
$ref: "../primitive.yaml#/Root" | ||
proposer_index: | ||
$ref: "../primitive.yaml#/Uint64" | ||
blob_root: | ||
$ref: "../primitive.yaml#/Root" | ||
kzg_commitment: | ||
$ref: '../primitive.yaml#/KZGCommitment' | ||
kzg_proof: | ||
$ref: '../primitive.yaml#/KZGProof' | ||
|
||
SignedBlindedBlobSidecar: | ||
type: object | ||
description: "A variant of the `SignedBlobSidecar` object envelope from the CL Deneb spec, which contains a `BlindedBlobSidecar` rather than a `BlobSidecar`." | ||
properties: | ||
message: | ||
$ref: "#/Deneb/BlindedBlobSidecar" | ||
signature: | ||
$ref: "../primitive.yaml#/Signature" | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
Deneb: | ||
BeaconBlockBodyCommon: | ||
# An abstract object to collect the common fields between the BeaconBlockBody and the BlindedBeaconBlockBody objects | ||
type: object | ||
description: "The [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md#beaconblockbody) object from the CL Deneb spec." | ||
properties: | ||
randao_reveal: | ||
allOf: | ||
- $ref: '../primitive.yaml#/Signature' | ||
- description: "The RanDAO reveal value provided by the validator." | ||
eth1_data: | ||
$ref: '../eth1.yaml#/Eth1Data' | ||
graffiti: | ||
$ref: '../primitive.yaml#/Graffiti' | ||
proposer_slashings: | ||
type: array | ||
items: | ||
$ref: '../proposer_slashing.yaml#/ProposerSlashing' | ||
attester_slashings: | ||
type: array | ||
items: | ||
$ref: '../attester_slashing.yaml#/AttesterSlashing' | ||
attestations: | ||
type: array | ||
items: | ||
$ref: '../attestation.yaml#/Attestation' | ||
deposits: | ||
type: array | ||
items: | ||
$ref: '../deposit.yaml#/Deposit' | ||
voluntary_exits: | ||
type: array | ||
items: | ||
$ref: '../voluntary_exit.yaml#/SignedVoluntaryExit' | ||
sync_aggregate: | ||
$ref: '../altair/sync_aggregate.yaml#/Altair/SyncAggregate' | ||
bls_to_execution_changes: | ||
type: array | ||
items: | ||
$ref: '../bls_to_execution_change.yaml#/SignedBLSToExecutionChange' | ||
blob_kzg_commitments: | ||
type: array | ||
items: | ||
$ref: '../primitive.yaml#/KZGCommitment' | ||
|
||
BeaconBlockBody: | ||
allOf: | ||
- $ref: '#/Deneb/BeaconBlockBodyCommon' | ||
- type: object | ||
properties: | ||
execution_payload: | ||
$ref: './execution_payload.yaml#/Deneb/ExecutionPayload' | ||
|
||
BeaconBlock: | ||
description: "The [`BeaconBlock`](https://github.com/ethereum/consensus-specs/blob/master/specs/Deneb/beacon-chain.md#beaconblock) object from the CL Deneb spec." | ||
realbigsean marked this conversation as resolved.
Show resolved
Hide resolved
|
||
allOf: | ||
- $ref: '../altair/block.yaml#/Altair/BeaconBlockCommon' | ||
- type: object | ||
properties: | ||
body: | ||
$ref: '#/Deneb/BeaconBlockBody' | ||
|
||
SignedBeaconBlock: | ||
type: object | ||
description: "The [`SignedBeaconBlock`](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md#signedbeaconblock) object envelope from the CL Deneb spec." | ||
properties: | ||
message: | ||
$ref: "#/Deneb/BeaconBlock" | ||
signature: | ||
$ref: "../primitive.yaml#/Signature" | ||
|
||
BlindedBeaconBlockBody: | ||
description: "A variant of the [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md#beaconblockbody) object from the CL Deneb spec, which contains a transactions root rather than a full transactions list." | ||
allOf: | ||
- $ref: '#/Deneb/BeaconBlockBodyCommon' | ||
- type: object | ||
properties: | ||
execution_payload_header: | ||
$ref: './execution_payload.yaml#/Deneb/ExecutionPayloadHeader' | ||
|
||
BlindedBeaconBlock: | ||
description: "A variant of the the [`BeaconBlock`](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md#beaconblock) object from the CL Deneb spec, which contains a `BlindedBeaconBlockBody` rather than a `BeaconBlockBody`." | ||
allOf: | ||
- $ref: '../altair/block.yaml#/Altair/BeaconBlockCommon' | ||
- type: object | ||
properties: | ||
body: | ||
$ref: '#/Deneb/BlindedBeaconBlockBody' | ||
|
||
SignedBlindedBeaconBlock: | ||
type: object | ||
description: "A variant of the the the [`SignedBeaconBlock`](https://github.com/ethereum/consensus-specs/blob/master/specs/deneb/beacon-chain.md#signedbeaconblock) object envelope from the CL Deneb spec, which contains a `BlindedBeaconBlock` rather than a `BeaconBlock`." | ||
properties: | ||
message: | ||
$ref: "#/Deneb/BlindedBeaconBlock" | ||
signature: | ||
$ref: "../primitive.yaml#/Signature" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
deprecated?