-
Notifications
You must be signed in to change notification settings - Fork 84
Builder spec changes for Capella & EIP-4844 #58
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
Changes from 15 commits
8bd1d61
104a1f7
da1fc21
cd21096
bc49eb1
e9ff861
5227b6e
2ebb085
03c57d7
dc4cd6e
250b6f8
4430897
834834c
7a9ed25
75403ff
ea928bf
113787a
6728e3b
859443c
8fe8a7c
0f7a4b4
2f552a8
4b29292
96a32e6
29a560a
9b60d69
65df997
2072690
69af188
fcbc901
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 |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| [submodule "beacon-apis"] | ||
| path = beacon-apis | ||
| url = git@github.com:ethereum/beacon-APIs.git | ||
| url = git@github.com:jimmygchen/beacon-APIs.git | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| post: | ||
|
Contributor
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. from the discussions i've had with EF/CL peers, there seems to be a preference for reusing the existing API call, rather than introducing a new V2 one. cc/ @jtraglia @lightclient @ralexstokes
Contributor
Author
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. Hey thanks for the insight @metachris. I've seen some discussion on discord earlier too. My understanding was that the version header is used for determining the payload structure, so clients should be able to parse the same payload type from different forks. It make sense to me to keep the same API if the response type is the same, i.e. if we return However I think we'd also want to include blobs and the kzg proof, so it would be more convenient to change the response type to (cc: @ajsutton)
Member
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.
this should be fine -- we should be able to just add the right type to the v1 endpoint let's drop v2 here and extend v1 to also support a new type that contains the
Contributor
Author
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. Done, thanks! |
||
| operationId: "submitBlindedBlockV2" | ||
| summary: Submit a signed blinded block and get signed beacon block with unblinded execution payload and blobs sidecar. | ||
| description: | | ||
| Submits a `SignedBlindedBeaconBlock` to the builder, binding the proposer | ||
| to the block. The builder is now able to unblind the transactions in | ||
| `ExecutionPayloadHeader` without the possibility of the validator modifying | ||
| them. | ||
|
|
||
| If the builder is not able to unblind the corresponding | ||
| `ExecutionPayloadHeader`, it must error. | ||
|
|
||
| Returns the `SignedBeaconBlockAndBlobsSidecar`. | ||
| tags: | ||
| - Builder | ||
| requestBody: | ||
| description: A `SignedBlindedBeaconBlock`. | ||
| required: true | ||
| content: | ||
| application/json: | ||
| schema: | ||
| oneOf: | ||
| - $ref: "../../builder-oapi.yaml#/components/schemas/Eip4844.SignedBlindedBeaconBlock" | ||
| examples: | ||
| eip4844: | ||
| $ref: "../../builder-oapi.yaml#/components/examples/Eip4844.SignedBlindedBeaconBlock" | ||
|
|
||
| responses: | ||
| "200": | ||
| description: Success response. | ||
| content: | ||
| application/json: | ||
| schema: | ||
| title: SubmitBlindedBlockResponse | ||
| type: object | ||
| properties: | ||
| version: | ||
| type: string | ||
| enum: [ eip4844 ] | ||
| example: "eip4844" | ||
| data: | ||
| oneOf: | ||
| - $ref: "../../builder-oapi.yaml#/components/schemas/Eip4844.SignedBeaconBlockAndBlobsSidecar" | ||
| examples: | ||
| eip4844: | ||
| $ref: "../../builder-oapi.yaml#/components/examples/Eip4844.SignedBeaconBlockAndBlobsSidecar" | ||
| "400": | ||
| description: Error response. | ||
| content: | ||
| application/json: | ||
| schema: | ||
| allOf: | ||
| - $ref: "../../builder-oapi.yaml#/components/schemas/ErrorMessage" | ||
| - example: | ||
| code: 400 | ||
| message: "Invalid block: missing signature" | ||
| "500": | ||
| $ref: "../../builder-oapi.yaml#/components/responses/InternalError" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| { | ||
| "value": { | ||
| "version": "capella", | ||
| "data": { | ||
| "parent_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "fee_recipient": "0xabcf8e0d4e9587369b2301d0790347320302cc09", | ||
| "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "receipts_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", | ||
| "prev_randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "block_number": "1", | ||
| "gas_limit": "1", | ||
| "gas_used": "1", | ||
| "timestamp": "1", | ||
| "extra_data": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "base_fee_per_gas": "1", | ||
| "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "transactions": [ | ||
| "0x02f878831469668303f51d843b9ac9f9843b9aca0082520894c93269b73096998db66be0441e836d873535cb9c8894a19041886f000080c001a031cc29234036afbf9a1fb9476b463367cb1f957ac0b919b69bbc798436e604aaa018c4e9c3914eb27aadd0b91e10b18655739fcf8c1fc398763a9f1beecb8ddc86" | ||
| ], | ||
| "withdrawals": [ | ||
| "0x02f878831469668303f51d843b9ac9f9843b9aca0082520894c93269b73096998db66be0441e836d873535cb9c8894a19041886f000080c001a031cc29234036afbf9a1fb9476b463367cb1f957ac0b919b69bbc798436e604aaa018c4e9c3914eb27aadd0b91e10b18655739fcf8c1fc398763a9f1beecb8ddc86" | ||
| ] | ||
|
Comment on lines
+21
to
+28
Member
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. ideally we have an actual hex-encoded withdrawal here
Contributor
Author
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. ah nice catch, updated now - just realised |
||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,158 @@ | ||
| { | ||
| "value": { | ||
| "message": { | ||
| "slot": "1", | ||
| "proposer_index": "1", | ||
| "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "body": { | ||
| "randao_reveal": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505", | ||
| "eth1_data": { | ||
| "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "deposit_count": "1", | ||
| "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "graffiti": "0xdeadbeefc0ffee", | ||
| "proposer_slashings": [ | ||
| { | ||
| "signed_header_1": { | ||
| "message": { | ||
| "slot": "1", | ||
| "proposer_index": "1", | ||
| "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| }, | ||
| "signed_header_2": { | ||
| "message": { | ||
| "slot": "1", | ||
| "proposer_index": "1", | ||
| "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| } | ||
| } | ||
| ], | ||
| "attester_slashings": [ | ||
| { | ||
| "attestation_1": { | ||
| "attesting_indices": [ | ||
| "1" | ||
| ], | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505", | ||
| "data": { | ||
| "slot": "1", | ||
| "index": "1", | ||
| "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "source": { | ||
| "epoch": "1", | ||
| "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "target": { | ||
| "epoch": "1", | ||
| "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| } | ||
| } | ||
| }, | ||
| "attestation_2": { | ||
| "attesting_indices": [ | ||
| "1" | ||
| ], | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505", | ||
| "data": { | ||
| "slot": "1", | ||
| "index": "1", | ||
| "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "source": { | ||
| "epoch": "1", | ||
| "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "target": { | ||
| "epoch": "1", | ||
| "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| } | ||
| } | ||
| } | ||
| } | ||
| ], | ||
| "attestations": [ | ||
| { | ||
| "aggregation_bits": "0x01", | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505", | ||
| "data": { | ||
| "slot": "1", | ||
| "index": "1", | ||
| "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "source": { | ||
| "epoch": "1", | ||
| "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "target": { | ||
| "epoch": "1", | ||
| "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| } | ||
| } | ||
| } | ||
| ], | ||
| "deposits": [ | ||
| { | ||
| "proof": [ | ||
| "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| ], | ||
| "data": { | ||
| "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a", | ||
| "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "amount": "1", | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| } | ||
| } | ||
| ], | ||
| "voluntary_exits": [ | ||
| { | ||
| "message": { | ||
| "epoch": "1", | ||
| "validator_index": "1" | ||
| }, | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| } | ||
| ], | ||
| "sync_aggregate": { | ||
| "sync_committee_bits": "0x01", | ||
| "sync_committee_signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| }, | ||
| "execution_payload_header": { | ||
| "parent_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "fee_recipient": "0xabcf8e0d4e9587369b2301d0790347320302cc09", | ||
| "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "receipts_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", | ||
| "prev_randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "block_number": "1", | ||
| "gas_limit": "1", | ||
| "gas_used": "1", | ||
| "timestamp": "1", | ||
| "extra_data": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "base_fee_per_gas": "1", | ||
| "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "transactions_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", | ||
| "withdrawals_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" | ||
| }, | ||
| "bls_to_execution_changes": [ | ||
| { | ||
| "message": { | ||
| "validator_index": "1", | ||
| "from_bls_pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a", | ||
| "to_execution_address": "0xabcf8e0d4e9587369b2301d0790347320302cc09" | ||
| }, | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| } | ||
| ] | ||
| } | ||
| }, | ||
| "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" | ||
| } | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.