diff --git a/apis/builder/blinded_blocks.yaml b/apis/builder/blinded_blocks.yaml index c6df3d1..b51c577 100644 --- a/apis/builder/blinded_blocks.yaml +++ b/apis/builder/blinded_blocks.yaml @@ -9,6 +9,9 @@ post: If the builder is not able to unblind the corresponding `ExecutionPayloadHeader`, it must error. + + After Deneb, this endpoint will additionally accept `SignedBlindedBlobSidecars`, and return + with additional unblinded blobs in response. tags: - Builder parameters: @@ -19,7 +22,7 @@ post: name: Eth-Consensus-Version description: "Version of the block being submitted" requestBody: - description: A `SignedBlindedBeaconBlock`. + description: A `SignedBlindedBeaconBlock` before Deneb, or `SignedBlindedBlockContents` after Deneb. required: true content: application/json: @@ -27,11 +30,14 @@ post: oneOf: - $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.SignedBlindedBeaconBlock" - $ref: "../../builder-oapi.yaml#/components/schemas/Capella.SignedBlindedBeaconBlock" + - $ref: "../../builder-oapi.yaml#/components/schemas/Deneb.SignedBlindedBlockContents" examples: bellatrix: $ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.SignedBlindedBeaconBlock" capella: $ref: "../../builder-oapi.yaml#/components/examples/Capella.SignedBlindedBeaconBlock" + deneb: + $ref: "../../builder-oapi.yaml#/components/examples/Deneb.SignedBlindedBlockContents" responses: "200": @@ -44,17 +50,20 @@ post: properties: version: type: string - enum: [ bellatrix, capella ] + enum: [ bellatrix, capella, deneb ] example: "bellatrix" data: oneOf: - $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.ExecutionPayload" - $ref: "../../builder-oapi.yaml#/components/schemas/Capella.ExecutionPayload" + - $ref: "../../builder-oapi.yaml#/components/schemas/Deneb.ExecutionPayloadAndBlobsBundle" examples: bellatrix: $ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.ExecutionPayload" capella: $ref: "../../builder-oapi.yaml#/components/examples/Capella.ExecutionPayload" + deneb: + $ref: "../../builder-oapi.yaml#/components/examples/Deneb.ExecutionPayloadAndBlobsBundle" "400": description: Error response. content: diff --git a/apis/builder/header.yaml b/apis/builder/header.yaml index 16c5efe..52448e5 100644 --- a/apis/builder/header.yaml +++ b/apis/builder/header.yaml @@ -50,17 +50,20 @@ get: properties: version: type: string - enum: [ bellatrix, capella ] + enum: [ bellatrix, capella, deneb ] example: "bellatrix" data: oneOf: - $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.SignedBuilderBid" - $ref: "../../builder-oapi.yaml#/components/schemas/Capella.SignedBuilderBid" + - $ref: "../../builder-oapi.yaml#/components/schemas/Deneb.SignedBuilderBid" examples: bellatrix: $ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.SignedBuilderBid" capella: $ref: "../../builder-oapi.yaml#/components/examples/Capella.SignedBuilderBid" + deneb: + $ref: "../../builder-oapi.yaml#/components/examples/Deneb.SignedBuilderBid" "204": description: No header is available. "400": diff --git a/beacon-apis b/beacon-apis index 1741560..68b17cb 160000 --- a/beacon-apis +++ b/beacon-apis @@ -1 +1 @@ -Subproject commit 1741560a920615480b7a7e1bc04060428abc469c +Subproject commit 68b17cb395a19765dcd25b5b68cc13cf1f740a19 diff --git a/builder-oapi.yaml b/builder-oapi.yaml index c142bb7..af72fc3 100644 --- a/builder-oapi.yaml +++ b/builder-oapi.yaml @@ -69,6 +69,12 @@ components: $ref: "./beacon-apis/types/capella/block.yaml#/Capella/SignedBlindedBeaconBlock" Capella.SignedBuilderBid: $ref: "./types/capella/bid.yaml#/Capella/SignedBuilderBid" + Deneb.SignedBlindedBlockContents: + $ref: "./beacon-apis/types/deneb/block_contents.yaml#/Deneb/SignedBlindedBlockContents" + Deneb.SignedBuilderBid: + $ref: "./types/deneb/bid.yaml#/Deneb/SignedBuilderBid" + Deneb.ExecutionPayloadAndBlobsBundle: + $ref: "./types/deneb/execution_payload_and_blobs_bundle.yaml#/Deneb/ExecutionPayloadAndBlobsBundle" SignedValidatorRegistration: $ref: "./beacon-apis/types/registration.yaml#/SignedValidatorRegistration" @@ -89,3 +95,10 @@ components: $ref: "./examples/capella/execution_payload.json" Capella.SignedBuilderBid: $ref: "./examples/capella/signed_builder_bid.json" + Deneb.SignedBlindedBlockContents: + $ref: "./examples/deneb/signed_blinded_block_contents.json" + Deneb.ExecutionPayloadAndBlobsBundle: + $ref: "./examples/deneb/execution_payload_and_blobs_bundle.json" + Deneb.SignedBuilderBid: + $ref: "./examples/deneb/signed_builder_bid.json" + diff --git a/examples/deneb/execution_payload_and_blobs_bundle.json b/examples/deneb/execution_payload_and_blobs_bundle.json new file mode 100644 index 0000000..c5c55da --- /dev/null +++ b/examples/deneb/execution_payload_and_blobs_bundle.json @@ -0,0 +1,39 @@ +{ + "value": { + "version": "deneb", + "data": { + "execution_payload": { + "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", + "excess_data_gas": "1", + "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "transactions": [ + "0x02f878831469668303f51d843b9ac9f9843b9aca0082520894c93269b73096998db66be0441e836d873535cb9c8894a19041886f000080c001a031cc29234036afbf9a1fb9476b463367cb1f957ac0b919b69bbc798436e604aaa018c4e9c3914eb27aadd0b91e10b18655739fcf8c1fc398763a9f1beecb8ddc86" + ], + "withdrawals": [ + { + "index": "1", + "validator_index": "1", + "address": "0xabcf8e0d4e9587369b2301d0790347320302cc09", + "amount": "32000000000" + } + ] + }, + "blobs_bundle": { + "commitments": ["0x8dab030c51e16e84be9caab84ee3d0b8bbec1db4a0e4de76439da8424d9b957370a10a78851f97e4b54d2ce1ab0d686f"], + "proofs": ["0xb4021b0de10f743893d4f71e1bf830c019e832958efd6795baf2f83b8699a9eccc5dc99015d8d4d8ec370d0cc333c06a"], + "blobs": ["0x24564723180fcb3d994104538d351c8dcbde12d541676bb736cf678018ca4739"] + } + } + } +} \ No newline at end of file diff --git a/examples/deneb/signed_blinded_block_contents.json b/examples/deneb/signed_blinded_block_contents.json new file mode 100644 index 0000000..921eac0 --- /dev/null +++ b/examples/deneb/signed_blinded_block_contents.json @@ -0,0 +1,211 @@ +{ + "value": { + "signed_blinded_block": { + "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": "0xdeadbeefc0ffeedeadbeefc0ffeedeadbeefc0ffeedeadbeefc0ffeedeadbeef", + "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": [ + "0xeeffb6c21a01d3abf09cd6c56e5d48f5ea0fc3bb0de906e3beea3e73776329cb", + "0x601c3b24a99d023224d50811bed19449890febb719a31d09ac414c4632f3c0ba", + "0xbb5e485e0a366e16510de33731d71204ad2fe0f7c600861fc2ac4685212c34e3", + "0x0006964745296a3e6ebf3954a1541e73205f1eefaddfc48ca9dc856bf159bca2", + "0x2c6020f1f9712b89f59550aec05b7c23cb1b113762399c0ca5b8fdd2fa85ce57", + "0x1c15634783e1d9d2cb969da66fd72cafca5026191d911b83211318d183c5ea59", + "0xdfbdf99a1fde57899df1545be1f91bc8a8a9f46c4bac619e28e92aff276de41f", + "0xfe9b0f0c05fde6bd26ce63d394058844ad4451f70b6d2547f49c5c2a5c7891a1", + "0x165f84ee467d18dbafdb07275dc42fb988ab696b0a7ad94c52f4d7a27144b994", + "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0xecdbe5e5056b968aa726a08f1aa33f5d41540eed42f59ace020431cf38a5144e", + "0xc4498c5eb1feeb0b225a3f332bdf523dbc013a5b336a851fce1c055b4019a457", + "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0x8a9b66ad79116c9fc6eed14bde76e8f486669e59b0b5bb0c60a6b3caea38b83d", + "0x267c5455e4806b5d0ad5573552d0162e0983595bac25dacd9078174a2766643a", + "0x27e0c6357985de4d6026d6da14f31e8bfe14524056fec69dc06d6f8a239344af", + "0xf8455aebc24849bea870fbcef1235e2d27c8fd27db24e26d30d0173f3b207874", + "0xaba01bf7fe57be4373f47ff8ea6adc4348fab087b69b2518ce630820f95f4150", + "0xd47152335d9460f2b6fb7aba05ced32a52e9f46659ccd3daa2059661d75a6308", + "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0", + "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544", + "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765", + "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4", + "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1", + "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636", + "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c", + "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7", + "0xf7ed070000000000000000000000000000000000000000000000000000000000" + ], + "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", + "excess_data_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" + } + ], + "blob_kzg_commitments": [ + "0xa94170080872584e54a1cf092d845703b13907f2e6b3b1c0ad573b910530499e3bcd48c6378846b80d2bfa58c81cf3d5" + ] + } + }, + "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" + }, + "signed_blinded_blob_sidecars": [ + { + "message": { + "block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "index": "0", + "slot": "1", + "block_parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "proposer_index": "1", + "blob_root": "0x24564723180fcb3d994104538d351c8dcbde12d541676bb736cf678018ca4739", + "kzg_commitment": "0x8dab030c51e16e84be9caab84ee3d0b8bbec1db4a0e4de76439da8424d9b957370a10a78851f97e4b54d2ce1ab0d686f", + "kzg_proof": "0xb4021b0de10f743893d4f71e1bf830c019e832958efd6795baf2f83b8699a9eccc5dc99015d8d4d8ec370d0cc333c06a" + }, + "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" + } + ] + } +} \ No newline at end of file diff --git a/examples/deneb/signed_builder_bid.json b/examples/deneb/signed_builder_bid.json new file mode 100644 index 0000000..941ad7f --- /dev/null +++ b/examples/deneb/signed_builder_bid.json @@ -0,0 +1,35 @@ +{ + "value": { + "version": "deneb", + "data": { + "message": { + "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", + "excess_data_gas": "1", + "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "transactions_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "withdrawals_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" + }, + "blinded_blobs_bundle": { + "blob_roots": ["0x24564723180fcb3d994104538d351c8dcbde12d541676bb736cf678018ca4739"], + "commitments": ["0x8dab030c51e16e84be9caab84ee3d0b8bbec1db4a0e4de76439da8424d9b957370a10a78851f97e4b54d2ce1ab0d686f"], + "proofs": ["0xb4021b0de10f743893d4f71e1bf830c019e832958efd6795baf2f83b8699a9eccc5dc99015d8d4d8ec370d0cc333c06a"] + }, + "value": "1", + "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a" + }, + "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" + } + } +} \ No newline at end of file diff --git a/specs/deneb/builder.md b/specs/deneb/builder.md new file mode 100644 index 0000000..797db63 --- /dev/null +++ b/specs/deneb/builder.md @@ -0,0 +1,119 @@ +# Deneb -- Builder Specification + +## Table of Contents + + + + +- [Introduction](#introduction) +- [Containers](#containers) + - [New containers](#new-containers) + - [`BlindedBlobsBundle`](#blindedblobsbundle) + - [`BlindedBlobSidecar`](#blindedblobsidecar) + - [`SignedBlindedBlobSidecar`](#signedblindedblobsidecar) + - [`SignedBlindedBlockContents`](#signedblindedblockcontents) + - [`BlobsBundle`](#blobsbundle) + - [`ExecutionPayloadAndBlobsBundle`](#executionpayloadandblobsbundle) + - [Extended containers](#extended-containers) + - [`BuilderBid`](#builderbid) + - [`ExecutionPayloadHeader`](#executionpayloadheader) + - [`BlindedBeaconBlockBody`](#blindedbeaconblockbody) + + + +## Introduction + +This is the modification of the builder specification accompanying the Deneb upgrade. + +## Containers + +### New containers + +#### `BlindedBlobsBundle` + +```python +class BlindedBlobsBundle(Container): + commitments: List[KZGCommitment, MAX_BLOBS_PER_BLOCK] + proofs: List[KZGProof, MAX_BLOBS_PER_BLOCK] + blob_roots: List[Root, MAX_BLOBS_PER_BLOCK] +``` + +#### `BlindedBlobSidecar` + +```python +class BlindedBlobSidecar(Container): + block_root: Root + index: uint64 + slot: uint64 + block_parent_root: Root + proposer_index: uint64 + blob_root: Root + kzg_commitment: KZGCommitment + kzg_proof: KZGProof +``` + +#### `SignedBlindedBlobSidecar` + +```python +class SignedBlindedBlobSidecar(Container): + message: BlindedBlobSidecar + signature: BLSSignature +``` + +#### `SignedBlindedBlockContents` + +```python +class SignedBlindedBlockContents(Container): + signed_blinded_block: SignedBlindedBeaconBlock + signed_blinded_blob_sidecars: List[SignedBlindedBlobSidecar, MAX_BLOBS_PER_BLOCK] +``` + +#### `BlobsBundle` + +Same as [`BlobsBundle`](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/validator.md#blobsbundle) in Deneb consensus specs. + +#### `ExecutionPayloadAndBlobsBundle` + +```python +class ExecutionPayloadAndBlobsBundle(Container): + execution_payload: ExecutionPayload + blobs_bundle: BlobsBundle +``` + +### Extended containers + +#### `BuilderBid` + +Note: `SignedBuilderBid` is updated indirectly. + +```python +class BuilderBid(Container): + header: ExecutionPayloadHeader # [Modified in Deneb] + blinded_blobs: BlindedBlobsBundle # [New in Deneb] + value: uint256 + pubkey: BLSPubkey +``` + +#### `ExecutionPayloadHeader` + +See [`ExecutionPayloadHeader`](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/beacon-chain.md#executionpayloadheader) in Deneb consensus specs. + +##### `BlindedBeaconBlockBody` + +Note: `BlindedBeaconBlock` and `SignedBlindedBeaconBlock` types are updated indirectly. + +```python +class BlindedBeaconBlockBody(Container): + randao_reveal: BLSSignature + eth1_data: Eth1Data + graffiti: Bytes32 + proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS] + attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS] + attestations: List[Attestation, MAX_ATTESTATIONS] + deposits: List[Deposit, MAX_DEPOSITS] + voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS] + sync_aggregate: SyncAggregate + execution_payload_header: ExecutionPayloadHeader # [Modified in Deneb] + bls_to_execution_changes: List[SignedBLSToExecutionChange, MAX_BLS_TO_EXECUTION_CHANGES] + blob_kzg_commitments: List[KZGCommitment, MAX_BLOBS_PER_BLOCK] # [New in Deneb] +``` diff --git a/types/deneb/bid.yaml b/types/deneb/bid.yaml new file mode 100644 index 0000000..dbd3f4c --- /dev/null +++ b/types/deneb/bid.yaml @@ -0,0 +1,22 @@ +Deneb: + BuilderBid: + description: "The `BuilderBid` object from the Builder API Deneb spec." + allOf: + - type: object + properties: + header: + $ref: "../../beacon-apis/types/deneb/execution_payload.yaml#/Deneb/ExecutionPayloadHeader" + description: "`ExecutionPayloadHeader` to use in block proposal." + blinded_blobs: + $ref: "./blobs_bundle.yaml#/Deneb/BlindedBlobsBundle" + description: "`BlindedBlobsBundle` to use in block proposal." + - $ref: '../bellatrix/bid.yaml#/Bellatrix/BuilderBidCommon' + + SignedBuilderBid: + type: object + description: "The `SignedBuilderBid` object from the Builder API spec." + properties: + message: + $ref: "#/Deneb/BuilderBid" + signature: + $ref: "../../beacon-apis/types/primitive.yaml#/Signature" diff --git a/types/deneb/blobs_bundle.yaml b/types/deneb/blobs_bundle.yaml new file mode 100644 index 0000000..8437312 --- /dev/null +++ b/types/deneb/blobs_bundle.yaml @@ -0,0 +1,43 @@ +Deneb: + BlobsBundleCommon: + type: object + properties: + commitments: + type: array + items: + $ref: '../../beacon-apis/types/primitive.yaml#/KZGCommitment' + minItems: 0 + maxItems: 4 + proofs: + type: array + items: + $ref: '../../beacon-apis/types/primitive.yaml#/KZGProof' + minItems: 0 + maxItems: 4 + + BlindedBlobsBundle: + allOf: + - $ref: '#/Deneb/BlobsBundleCommon' + type: object + description: "A blobs container with the SSZ root of the blobs rather than the full blobs." + properties: + blob_roots: + type: array + items: + $ref: "../../beacon-apis/types/primitive.yaml#/Root" + minItems: 0 + maxItems: 4 + + + BlobsBundle: + allOf: + - $ref: '#/Deneb/BlobsBundleCommon' + type: object + description: "The `BlobsBundle` object from the CL Deneb spec" + properties: + blobs: + type: array + items: + $ref: "../../beacon-apis/types/primitive.yaml#/Blob" + minItems: 0 + maxItems: 4 diff --git a/types/deneb/execution_payload_and_blobs_bundle.yaml b/types/deneb/execution_payload_and_blobs_bundle.yaml new file mode 100644 index 0000000..60f4801 --- /dev/null +++ b/types/deneb/execution_payload_and_blobs_bundle.yaml @@ -0,0 +1,9 @@ +Deneb: + ExecutionPayloadAndBlobsBundle: + type: object + description: "A wrapper object containing the ExecutionPayload and the BlobsBundle" + properties: + execution_payload: + $ref: '../../beacon-apis/types/deneb/execution_payload.yaml#/Deneb/ExecutionPayload' + blobs_bundle: + $ref: "./blobs_bundle.yaml#/Deneb/BlobsBundle" diff --git a/wordlist.txt b/wordlist.txt index 3082384..3db5003 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -9,6 +9,7 @@ eth http https json +kzg mev nodejs npm