Skip to content
Closed
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
8bd1d61
Add initial files for EIP-4844 fork
jimmygchen Nov 24, 2022
104a1f7
Add capella & 4844 fork version support
0xGabi Nov 30, 2022
da1fc21
Update submodule ref
0xGabi Nov 30, 2022
cd21096
Update builder API schema and examples
0xGabi Nov 30, 2022
bc49eb1
chore: generate doctoc
0xGabi Nov 30, 2022
e9ff861
Update submodule ref
0xGabi Dec 1, 2022
5227b6e
Add blob_kzg_commitments to BuilderBid
jimmygchen Dec 1, 2022
2ebb085
Update examples/eip4844/signed_builder_bid.json
jimmygchen Dec 1, 2022
03c57d7
Merge pull request #1 from 0xGabi/eip4844
jimmygchen Dec 1, 2022
dc4cd6e
Add blobs and proof to revealed payload
jimmygchen Dec 1, 2022
250b6f8
Update beacon API remote
jimmygchen Dec 1, 2022
4430897
Fix incorrect ref syntax
jimmygchen Dec 1, 2022
834834c
Add submitBlindedBlockV2 endpoint
jimmygchen Dec 1, 2022
7a9ed25
Add missing field in BuilderBidd schema
jimmygchen Dec 1, 2022
75403ff
Fix typo
jimmygchen Dec 1, 2022
ea928bf
Add TODO to .gitmodules
jimmygchen Dec 2, 2022
113787a
Fix spellcheck
jimmygchen Dec 2, 2022
6728e3b
Fix lint error
jimmygchen Dec 2, 2022
859443c
fix spell check
jimmygchen Dec 12, 2022
8fe8a7c
fix spellcheck
jimmygchen Dec 12, 2022
0f7a4b4
fix spell check
jimmygchen Dec 12, 2022
2f552a8
remove extra whitespace
jimmygchen Dec 12, 2022
4b29292
revert submodule fork
jimmygchen Dec 14, 2022
96a32e6
Remove blinded_blocks_v2 endpoint
jimmygchen Dec 15, 2022
29a560a
Change getHeader response schema to `oneOf`
jimmygchen Dec 15, 2022
9b60d69
Update Beacon API version
jimmygchen Dec 15, 2022
65df997
Update .gitmodules
0xGabi Dec 15, 2022
2072690
Define BuilderBidCommon to reduce repetition
jimmygchen Dec 16, 2022
69af188
add withdrawals to execution payload example
jimmygchen Dec 16, 2022
fcbc901
Fix withdrawals json example format
jimmygchen Jan 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
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
Comment thread
jimmygchen marked this conversation as resolved.
Outdated
14 changes: 13 additions & 1 deletion apis/builder/blinded_blocks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,15 @@ post:
schema:
oneOf:
- $ref: "../../builder-oapi.yaml#/components/schemas/Bellatrix.SignedBlindedBeaconBlock"
- $ref: "../../builder-oapi.yaml#/components/schemas/Capella.SignedBlindedBeaconBlock"
- $ref: "../../builder-oapi.yaml#/components/schemas/Eip4844.SignedBlindedBeaconBlock"
examples:
bellatrix:
$ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.SignedBlindedBeaconBlock"
capella:
$ref: "../../builder-oapi.yaml#/components/examples/Capella.SignedBlindedBeaconBlock"
eip4844:
$ref: "../../builder-oapi.yaml#/components/examples/Eip4844.SignedBlindedBeaconBlock"
Comment thread
jimmygchen marked this conversation as resolved.
Outdated

responses:
"200":
Expand All @@ -34,14 +40,20 @@ post:
properties:
version:
type: string
enum: [ bellatrix ]
enum: [ bellatrix, capella, eip4844 ]
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/Eip4844.ExecutionPayload"
examples:
bellatrix:
$ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.ExecutionPayload"
capella:
$ref: "../../builder-oapi.yaml#/components/examples/Capella.ExecutionPayload"
eip4844:
$ref: "../../builder-oapi.yaml#/components/examples/Eip4844.ExecutionPayload"
"400":
description: Error response.
content:
Expand Down
58 changes: 58 additions & 0 deletions apis/builder/blinded_blocks_v2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
post:

@metachris metachris Dec 2, 2022

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The 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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The 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 Eip4844.ExeuctionPayload.

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 SignedBeaconBlockAndBlobsSidecar (with the revealed ExecutionPayload wrapped within the block), and the clients can just broadcast the block after receiving it, rather than having to retrieve the sidecar and construct the beacon block. Does this make sense? I haven't seen an API allowing a completely different response type, so I thought we may want to increment the version, but keen to hear your thoughts!

(cc: @ajsutton)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't seen an API allowing a completely different response type

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 ExecutionPayload and the BlobsSidecar, calling it something like ExecutionPayloadWithBlobsSidecar

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The 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"
8 changes: 7 additions & 1 deletion apis/builder/header.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,20 @@ get:
properties:
version:
type: string
enum: [ bellatrix ]
enum: [ bellatrix, capella, eip4844 ]
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/Eip4844.SignedBuilderBid"
examples:
bellatrix:
$ref: "../../builder-oapi.yaml#/components/examples/Bellatrix.SignedBuilderBid"
capella:
$ref: "../../builder-oapi.yaml#/components/examples/Capella.SignedBuilderBid"
eip4844:
$ref: "../../builder-oapi.yaml#/components/examples/Eip4844.SignedBuilderBid"
Comment thread
jimmygchen marked this conversation as resolved.
Outdated
"204":
description: No header is available.
"400":
Expand Down
2 changes: 1 addition & 1 deletion beacon-apis
Submodule beacon-apis updated 91 files
+2 −3 .github/workflows/main.yml
+8 −0 .redocly.yml
+0 −41 .spectral.yml
+3 −3 README.md
+11 −11 apis/beacon/blocks/attestations.yaml
+65 −0 apis/beacon/blocks/blinded_block.yaml
+8 −5 apis/beacon/blocks/blinded_blocks.yaml
+14 −12 apis/beacon/blocks/block.v2.yaml
+8 −10 apis/beacon/blocks/block.yaml
+15 −10 apis/beacon/blocks/blocks.yaml
+10 −10 apis/beacon/blocks/header.yaml
+7 −6 apis/beacon/blocks/headers.yaml
+10 −10 apis/beacon/blocks/root.yaml
+34 −0 apis/beacon/deposit_snapshot.yaml
+4 −5 apis/beacon/genesis.yaml
+63 −0 apis/beacon/light_client/bootstrap.yaml
+49 −0 apis/beacon/light_client/finality_update.yaml
+49 −0 apis/beacon/light_client/optimistic_update.yaml
+93 −0 apis/beacon/light_client/updates.yaml
+4 −5 apis/beacon/pool/attestations.yaml
+4 −5 apis/beacon/pool/attester_slashings.yaml
+48 −0 apis/beacon/pool/bls_to_execution_changes.yaml
+4 −5 apis/beacon/pool/proposer_slashings.yaml
+4 −5 apis/beacon/pool/voluntary_exists.yaml
+67 −0 apis/beacon/rewards/attestations.yaml
+52 −0 apis/beacon/rewards/blocks.yaml
+62 −0 apis/beacon/rewards/sync_committee.yaml
+8 −9 apis/beacon/states/committee.yaml
+10 −10 apis/beacon/states/finality_checkpoints.yaml
+10 −10 apis/beacon/states/fork.yaml
+69 −0 apis/beacon/states/randao.yaml
+7 −7 apis/beacon/states/root.yaml
+8 −9 apis/beacon/states/sync_committees.yaml
+6 −5 apis/beacon/states/validator.yaml
+6 −5 apis/beacon/states/validator_balances.yaml
+11 −12 apis/beacon/states/validators.yaml
+6 −6 apis/config/spec.yaml
+31 −0 apis/debug/fork_choice.yaml
+13 −11 apis/debug/state.v2.yaml
+0 −51 apis/debug/state.yaml
+22 −5 apis/eventstream/index.yaml
+9 −0 apis/node/health.yaml
+8 −10 apis/node/peer.yaml
+6 −1 apis/validator/aggregate_attestation.yaml
+6 −1 apis/validator/attestation_data.yaml
+15 −1 apis/validator/blinded_block.yaml
+12 −1 apis/validator/block.v2.yaml
+0 −56 apis/validator/block.yaml
+5 −6 apis/validator/duties/attester.yaml
+4 −5 apis/validator/duties/proposer.yaml
+4 −5 apis/validator/duties/sync.yaml
+64 −0 apis/validator/liveness.yaml
+2 −2 apis/validator/prepare_beacon_proposer.yaml
+4 −4 apis/validator/register_validator.yaml
+6 −1 apis/validator/sync_committee_contribution.yaml
+83 −11 beacon-node-oapi.yaml
+2 −91 dist/swagger-ui-bundle.js
+1 −1 dist/swagger-ui-bundle.js.map
+2 −21 dist/swagger-ui-standalone-preset.js
+1 −1 dist/swagger-ui-standalone-preset.js.map
+2 −2 dist/swagger-ui.css
+1 −1 dist/swagger-ui.css.map
+1 −8 dist/swagger-ui.js
+1 −1 dist/swagger-ui.js.map
+2 −0 index.html
+9 −0 params/index.yaml
+1 −2 types/altair/block.yaml
+71 −0 types/altair/light_client.yaml
+18 −35 types/altair/state.yaml
+1 −3 types/altair/sync_aggregate.yaml
+21 −2 types/api.yaml
+2 −5 types/attestation.yaml
+1 −2 types/bellatrix/block.yaml
+19 −36 types/bellatrix/state.yaml
+1 −2 types/block.yaml
+23 −0 types/bls_to_execution_change.yaml
+97 −0 types/capella/block.yaml
+54 −0 types/capella/execution_payload.yaml
+88 −0 types/capella/state.yaml
+6 −0 types/capella/transactions.yaml
+6 −0 types/capella/withdrawals.yaml
+101 −0 types/eip4844/block.yaml
+56 −0 types/eip4844/execution_payload.yaml
+88 −0 types/eip4844/state.yaml
+35 −0 types/fork_choice.yaml
+22 −0 types/http.yaml
+1 −1 types/p2p.yaml
+33 −0 types/primitive.yaml
+124 −0 types/rewards.yaml
+19 −37 types/state.yaml
+15 −0 types/withdrawal.yaml
32 changes: 30 additions & 2 deletions builder-oapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ paths:
$ref: "./apis/builder/header.yaml"
/eth/v1/builder/blinded_blocks:
$ref: "./apis/builder/blinded_blocks.yaml"
/eth/v2/builder/blinded_blocks:
$ref: "./apis/builder/blinded_blocks_v2.yaml"
/eth/v1/builder/status:
$ref: "./apis/builder/status.yaml"

Expand All @@ -61,13 +63,25 @@ 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"
Eip4844.ExecutionPayload:
$ref: "./beacon-apis/types/eip4844/execution_payload.yaml#/Eip4844/ExecutionPayload"
Eip4844.SignedBlindedBeaconBlock:
$ref: "./beacon-apis/types/eip4844/block.yaml#/Eip4844/SignedBlindedBeaconBlock"
Eip4844.SignedBuilderBid:
$ref: "./types/eip4844/bid.yaml#/Eip4844/SignedBuilderBid"
Eip4844.SignedBeaconBlockAndBlobsSidecar:
$ref: "./types/eip4844/block_and_blobs_sidecar.yaml#/Eip4844/SignedBeaconBlockAndBlobsSidecar"
SignedValidatorRegistration:
$ref: "./beacon-apis/types/registration.yaml#/SignedValidatorRegistration"


responses:
InternalError:
$ref: "./types/http.yaml#/InternalError"
Expand All @@ -79,3 +93,17 @@ 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"
Eip4844.SignedBlindedBeaconBlock:
$ref: "./examples/eip4844/signed_blinded_beacon_block.json"
Eip4844.ExecutionPayload:
$ref: "./examples/eip4844/execution_payload.json"
Eip4844.SignedBuilderBid:
$ref: "./examples/eip4844/signed_builder_bid.json"
Eip4844.SignedBeaconBlockAndBlobsSidecar:
$ref: "./examples/eip4844/signed_beacon_block_and_blobs_sidecar.json"
26 changes: 26 additions & 0 deletions examples/capella/execution_payload.json
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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ideally we have an actual hex-encoded withdrawal here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah nice catch, updated now - just realised withdrawals is a list of objects.. wonder why validation didn't pick up 🤔

}
}
}
158 changes: 158 additions & 0 deletions examples/capella/signed_blinded_beacon_block.json
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"
}
}
Loading