diff --git a/apis/builder/blinded_blocks.yaml b/apis/builder/blinded_blocks.yaml index affa7ad..c6df3d1 100644 --- a/apis/builder/blinded_blocks.yaml +++ b/apis/builder/blinded_blocks.yaml @@ -11,6 +11,13 @@ post: `ExecutionPayloadHeader`, it must error. tags: - Builder + parameters: + - in: header + schema: + $ref: '../../beacon-apis/beacon-node-oapi.yaml#/components/schemas/ConsensusVersion' + required: false + name: Eth-Consensus-Version + description: "Version of the block being submitted" requestBody: description: A `SignedBlindedBeaconBlock`. required: true @@ -19,9 +26,12 @@ post: schema: oneOf: - $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.SignedBlindedBeaconBlock" + - $ref: "../../builder-oapi.yaml#/components/schemas/Capella.SignedBlindedBeaconBlock" examples: bellatrix: $ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.SignedBlindedBeaconBlock" + capella: + $ref: "../../builder-oapi.yaml#/components/examples/Capella.SignedBlindedBeaconBlock" responses: "200": @@ -34,14 +44,17 @@ post: properties: version: type: string - enum: [ bellatrix ] + enum: [ bellatrix, capella ] example: "bellatrix" data: oneOf: - $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.ExecutionPayload" + - $ref: "../../builder-oapi.yaml#/components/schemas/Capella.ExecutionPayload" examples: bellatrix: $ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.ExecutionPayload" + capella: + $ref: "../../builder-oapi.yaml#/components/examples/Capella.ExecutionPayload" "400": description: Error response. content: diff --git a/apis/builder/header.yaml b/apis/builder/header.yaml index cc07973..16c5efe 100644 --- a/apis/builder/header.yaml +++ b/apis/builder/header.yaml @@ -50,14 +50,17 @@ get: properties: version: type: string - enum: [ bellatrix ] + enum: [ bellatrix, capella ] example: "bellatrix" data: oneOf: - $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.SignedBuilderBid" + - $ref: "../../builder-oapi.yaml#/components/schemas/Capella.SignedBuilderBid" examples: bellatrix: $ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.SignedBuilderBid" + capella: + $ref: "../../builder-oapi.yaml#/components/examples/Capella.SignedBuilderBid" "204": description: No header is available. "400": diff --git a/beacon-apis b/beacon-apis index c39ba03..1741560 160000 --- a/beacon-apis +++ b/beacon-apis @@ -1 +1 @@ -Subproject commit c39ba03485bbe53715b3e8c706a6fbeb6eb61a76 +Subproject commit 1741560a920615480b7a7e1bc04060428abc469c diff --git a/builder-oapi.yaml b/builder-oapi.yaml index e23ee99..c142bb7 100644 --- a/builder-oapi.yaml +++ b/builder-oapi.yaml @@ -61,13 +61,17 @@ components: $ref: "./beacon-apis/types/bellatrix/execution_payload.yaml#/Bellatrix/ExecutionPayload" Bellatrix.SignedBlindedBeaconBlock: $ref: "./beacon-apis/types/bellatrix/block.yaml#/Bellatrix/SignedBlindedBeaconBlock" - Bellatrix.SignedBuilderBid: $ref: "./types/bellatrix/bid.yaml#/Bellatrix/SignedBuilderBid" + Capella.ExecutionPayload: + $ref: "./beacon-apis/types/capella/execution_payload.yaml#/Capella/ExecutionPayload" + Capella.SignedBlindedBeaconBlock: + $ref: "./beacon-apis/types/capella/block.yaml#/Capella/SignedBlindedBeaconBlock" + Capella.SignedBuilderBid: + $ref: "./types/capella/bid.yaml#/Capella/SignedBuilderBid" SignedValidatorRegistration: $ref: "./beacon-apis/types/registration.yaml#/SignedValidatorRegistration" - responses: InternalError: $ref: "./types/http.yaml#/InternalError" @@ -79,3 +83,9 @@ components: $ref: "./examples/bellatrix/execution_payload.json" Bellatrix.SignedBuilderBid: $ref: "./examples/bellatrix/signed_builder_bid.json" + Capella.SignedBlindedBeaconBlock: + $ref: "./examples/capella/signed_blinded_beacon_block.json" + Capella.ExecutionPayload: + $ref: "./examples/capella/execution_payload.json" + Capella.SignedBuilderBid: + $ref: "./examples/capella/signed_builder_bid.json" diff --git a/examples/bellatrix/signed_blinded_beacon_block.json b/examples/bellatrix/signed_blinded_beacon_block.json index 993f49f..f534a59 100644 --- a/examples/bellatrix/signed_blinded_beacon_block.json +++ b/examples/bellatrix/signed_blinded_beacon_block.json @@ -12,7 +12,7 @@ "deposit_count": "1", "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" }, - "graffiti": "0xdeadbeefc0ffee", + "graffiti": "0xdeadbeefc0ffeedeadbeefc0ffeedeadbeefc0ffeedeadbeefc0ffeedeadbeef", "proposer_slashings": [ { "signed_header_1": { @@ -101,7 +101,39 @@ "deposits": [ { "proof": [ - "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" + "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", @@ -144,4 +176,4 @@ }, "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" } -} +} \ No newline at end of file diff --git a/examples/capella/execution_payload.json b/examples/capella/execution_payload.json new file mode 100644 index 0000000..7681160 --- /dev/null +++ b/examples/capella/execution_payload.json @@ -0,0 +1,31 @@ +{ + "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": [ + { + "index": "1", + "validator_index": "1", + "address": "0xabcf8e0d4e9587369b2301d0790347320302cc09", + "amount": "32000000000" + } + ] + } + } +} \ No newline at end of file diff --git a/examples/capella/signed_blinded_beacon_block.json b/examples/capella/signed_blinded_beacon_block.json new file mode 100644 index 0000000..6edaed9 --- /dev/null +++ b/examples/capella/signed_blinded_beacon_block.json @@ -0,0 +1,190 @@ +{ + "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": "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", + "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" + } +} \ No newline at end of file diff --git a/examples/capella/signed_builder_bid.json b/examples/capella/signed_builder_bid.json new file mode 100644 index 0000000..e245392 --- /dev/null +++ b/examples/capella/signed_builder_bid.json @@ -0,0 +1,29 @@ +{ + "value": { + "version": "capella", + "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", + "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "transactions_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "withdrawals_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" + }, + "value": "1", + "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a" + }, + "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" + } + } +} diff --git a/specs/builder.md b/specs/bellatrix/builder.md similarity index 99% rename from specs/builder.md rename to specs/bellatrix/builder.md index 17c3337..602b5b4 100644 --- a/specs/builder.md +++ b/specs/bellatrix/builder.md @@ -1,4 +1,4 @@ -# Builder Specification +# Bellatrix -- Builder Specification ## Table of Contents diff --git a/specs/validator.md b/specs/bellatrix/validator.md similarity index 99% rename from specs/validator.md rename to specs/bellatrix/validator.md index 86e048d..e614f04 100644 --- a/specs/validator.md +++ b/specs/bellatrix/validator.md @@ -1,4 +1,4 @@ -# Builder -- Honest Validator +# Bellatrix -- Honest Validator **Notice**: This document is a work-in-progress for researchers and implementers. diff --git a/specs/capella/builder.md b/specs/capella/builder.md new file mode 100644 index 0000000..f9bc8da --- /dev/null +++ b/specs/capella/builder.md @@ -0,0 +1,47 @@ +# Capella -- Builder Specification + +## Table of Contents + + + + +- [Introduction](#introduction) +- [Containers](#containers) + - [Extended containers](#extended-containers) + - [`ExecutionPayloadHeader`](#executionpayloadheader) + - [`BlindedBeaconBlockBody`](#blindedbeaconblockbody) + + + +## Introduction + +This is the modification of the builder specification accompanying the Capella upgrade. + +## Containers + +### Extended containers + +#### `ExecutionPayloadHeader` + +Note: `BuilderBid` and `SignedBuilderBid` types are updated indirectly. + +See [ExecutionPayloadHeader](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/beacon-chain.md#executionpayloadheader). + +##### `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 Capella] + bls_to_execution_changes: List[SignedBLSToExecutionChange, MAX_BLS_TO_EXECUTION_CHANGES] # [New in Capella] +``` diff --git a/spellcheck.yaml b/spellcheck.yaml index 8a75080..285c1e6 100644 --- a/spellcheck.yaml +++ b/spellcheck.yaml @@ -26,6 +26,7 @@ matrix: aspell: lang: en d: en_US + ignore-case: true run-together: true run-together-min: 2 run-together-limit: 256 diff --git a/types/bellatrix/bid.yaml b/types/bellatrix/bid.yaml index 3e9e7fb..18e13f6 100644 --- a/types/bellatrix/bid.yaml +++ b/types/bellatrix/bid.yaml @@ -1,11 +1,7 @@ Bellatrix: - BuilderBid: + BuilderBidCommon: type: object - description: "The `BuilderBid` object from the Builder API spec." properties: - header: - $ref: "../../beacon-apis/types/bellatrix/execution_payload.yaml#/Bellatrix/ExecutionPayloadHeader" - description: "`ExecutionPayloadHeader` to use in block proposal." value: $ref: "../../beacon-apis/types/primitive.yaml#/Uint256" description: "Payment in wei that will be paid to the `fee_recipient` account." @@ -13,6 +9,16 @@ Bellatrix: $ref: "../../beacon-apis/types/primitive.yaml#/Pubkey" description: "BLS public key of builder." + BuilderBid: + description: "The `BuilderBid` object from the Builder API Bellatrix spec." + allOf: + - type: object + properties: + header: + $ref: "../../beacon-apis/types/bellatrix/execution_payload.yaml#/Bellatrix/ExecutionPayloadHeader" + description: "`ExecutionPayloadHeader` to use in block proposal." + - $ref: '#/Bellatrix/BuilderBidCommon' + SignedBuilderBid: type: object description: "The `SignedBuilderBid` object from the Builder API spec." diff --git a/types/capella/bid.yaml b/types/capella/bid.yaml new file mode 100644 index 0000000..c02e3ef --- /dev/null +++ b/types/capella/bid.yaml @@ -0,0 +1,19 @@ +Capella: + BuilderBid: + description: "The `BuilderBid` object from the Builder API Capella spec." + allOf: + - type: object + properties: + header: + $ref: "../../beacon-apis/types/capella/execution_payload.yaml#/Capella/ExecutionPayloadHeader" + description: "`ExecutionPayloadHeader` 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: "#/Capella/BuilderBid" + signature: + $ref: "../../beacon-apis/types/primitive.yaml#/Signature" diff --git a/wordlist.txt b/wordlist.txt index 3d41c38..3082384 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -2,6 +2,7 @@ apis bellatrix bls bn +capella cli dev eth