From 3efc0ea2315da9ac7ed0c00eae4de69beb9002dd Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 27 May 2024 14:57:23 +0800 Subject: [PATCH 01/83] builder client --- cl/beacon/builder/client.go | 83 +++++++++++++++++++++++++++++++++++++ cl/beacon/builder/types.go | 13 ++++++ 2 files changed, 96 insertions(+) create mode 100644 cl/beacon/builder/client.go create mode 100644 cl/beacon/builder/types.go diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go new file mode 100644 index 00000000000..c9eac6a9359 --- /dev/null +++ b/cl/beacon/builder/client.go @@ -0,0 +1,83 @@ +package builder + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + + "github.com/cockroachdb/errors" + "github.com/ledgerwatch/erigon-lib/common" +) + +type BuilderClient struct { + // ref: https://ethereum.github.io/builder-specs/#/ + httpClient *http.Client + baseUrl string +} + +func NewBuilderClient(httpClient *http.Client, baseUrl string) *BuilderClient { + return &BuilderClient{ + httpClient: httpClient, + baseUrl: baseUrl, + } +} + +func (b *BuilderClient) RegisterValidator() error { + // https://ethereum.github.io/builder-specs/#/Builder/registerValidator + url := b.baseUrl + "/eth/v1/builder/validators" + return nil +} + +func (b *BuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { + // https://ethereum.github.io/builder-specs/#/Builder/getHeader + url := fmt.Sprintf("%s/eth/v1/builder/header/%d/%s/%s", b.baseUrl, slot, parentHash.Hex(), pubKey.Hex()) + header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) + if err != nil { + return nil, err + } + return header, nil +} + +func (b *BuilderClient) SubmitBlindedBlocks() error { + // https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlocks + return nil +} + +func (b *BuilderClient) GetStatus(ctx context.Context) error { + url := b.baseUrl + "/eth/v1/builder/status" + _, err := httpCall[any](ctx, b.httpClient, http.MethodGet, url, nil, nil) + return err +} + +func httpCall[T any](ctx context.Context, client *http.Client, method, url string, headers map[string]string, payloadReader io.Reader) (*T, error) { + request, err := http.NewRequestWithContext(ctx, method, url, payloadReader) + if err != nil { + return nil, err + } + request.Header.Set("Content-Type", "application/json") + for k, v := range headers { + request.Header.Set(k, v) + } + // send request + response, err := client.Do(request) + if err != nil { + return nil, err + } + defer response.Body.Close() + if response.StatusCode < 200 || response.StatusCode > 299 { + // read response body + var body []byte + if err := json.NewDecoder(response.Body).Decode(&body); err != nil { + return nil, err + } + return nil, errors.Newf("status code: %d. Response content %v", response.StatusCode, string(body)) + } + // read response body + var body T + if err := json.NewDecoder(response.Body).Decode(&body); err != nil { + return nil, err + } + return &body, nil +} diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go new file mode 100644 index 00000000000..6758449030c --- /dev/null +++ b/cl/beacon/builder/types.go @@ -0,0 +1,13 @@ +package builder + +import ( + "github.com/ledgerwatch/erigon/cl/cltypes" +) + +type ExecutionPayloadHeader struct { + Version string `json:"version"` + Data struct { + Message cltypes.Eth1Header `json:"message"` + Signature string `json:"signature"` + } `json:"data"` +} From 6bea85cb80a771986902445d1b3b6169ee6c56a7 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 28 May 2024 02:34:41 +0800 Subject: [PATCH 02/83] update --- cl/beacon/builder/client.go | 27 +++++++++++++++++++++------ cl/beacon/builder/types.go | 15 +++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index c9eac6a9359..f89d59958db 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -1,14 +1,15 @@ package builder import ( + "bytes" "context" "encoding/json" "fmt" "io" "net/http" - "github.com/cockroachdb/errors" "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/cl/cltypes" ) type BuilderClient struct { @@ -24,10 +25,15 @@ func NewBuilderClient(httpClient *http.Client, baseUrl string) *BuilderClient { } } -func (b *BuilderClient) RegisterValidator() error { +func (b *BuilderClient) RegisterValidator(ctx context.Context, registers []*ValidatorRegistration) error { // https://ethereum.github.io/builder-specs/#/Builder/registerValidator url := b.baseUrl + "/eth/v1/builder/validators" - return nil + payload, err := json.Marshal(registers) + if err != nil { + return err + } + _, err = httpCall[any](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) + return err } func (b *BuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { @@ -40,9 +46,18 @@ func (b *BuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int6 return header, nil } -func (b *BuilderClient) SubmitBlindedBlocks() error { +func (b *BuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, error) { // https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlocks - return nil + path := b.baseUrl + "/eth/v1/builder/blinded_blocks" + payload, err := json.Marshal(block) + if err != nil { + return nil, err + } + blockResp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, path, nil, bytes.NewBuffer(payload)) + if err != nil { + return nil, err + } + return &blockResp.Data, nil } func (b *BuilderClient) GetStatus(ctx context.Context) error { @@ -72,7 +87,7 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin if err := json.NewDecoder(response.Body).Decode(&body); err != nil { return nil, err } - return nil, errors.Newf("status code: %d. Response content %v", response.StatusCode, string(body)) + return nil, fmt.Errorf("status code: %d. Response content %v", response.StatusCode, string(body)) } // read response body var body T diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index 6758449030c..c5573e72fe5 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -11,3 +11,18 @@ type ExecutionPayloadHeader struct { Signature string `json:"signature"` } `json:"data"` } + +type ValidatorRegistration struct { + Message struct { + FeeRecipient string `json:"fee_recipient"` + GasLimit string `json:"gas_limit"` + Timestamp string `json:"timestamp"` + PubKey string `json:"pubkey"` + } `json:"message"` + Sginature string `json:"signature"` +} + +type BlindedBlockResponse struct { + Version string `json:"version"` + Data cltypes.Eth1Block `json:"data"` +} From 8eba4f9aa8e6df3bcc0c816bd3bdf8b391993fae Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 28 May 2024 18:16:26 +0800 Subject: [PATCH 03/83] builder option --- cl/beacon/builder/client.go | 17 +++++++++-------- cmd/caplin/caplin1/option.go | 15 +++++++++++++++ cmd/caplin/caplin1/run.go | 7 ++++++- cmd/caplin/caplincli/config.go | 2 ++ cmd/caplin/caplinflags/flags.go | 5 +++++ cmd/caplin/main.go | 14 +++++++++++++- 6 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 cmd/caplin/caplin1/option.go diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index f89d59958db..62bb008dbb1 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -12,20 +12,21 @@ import ( "github.com/ledgerwatch/erigon/cl/cltypes" ) -type BuilderClient struct { +type BlockBuilderClient struct { // ref: https://ethereum.github.io/builder-specs/#/ httpClient *http.Client baseUrl string } -func NewBuilderClient(httpClient *http.Client, baseUrl string) *BuilderClient { - return &BuilderClient{ - httpClient: httpClient, +func NewBlockBuilderClient(baseUrl string) *BlockBuilderClient { + httpC := &http.Client{} + return &BlockBuilderClient{ + httpClient: httpC, baseUrl: baseUrl, } } -func (b *BuilderClient) RegisterValidator(ctx context.Context, registers []*ValidatorRegistration) error { +func (b *BlockBuilderClient) RegisterValidator(ctx context.Context, registers []*ValidatorRegistration) error { // https://ethereum.github.io/builder-specs/#/Builder/registerValidator url := b.baseUrl + "/eth/v1/builder/validators" payload, err := json.Marshal(registers) @@ -36,7 +37,7 @@ func (b *BuilderClient) RegisterValidator(ctx context.Context, registers []*Vali return err } -func (b *BuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { +func (b *BlockBuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { // https://ethereum.github.io/builder-specs/#/Builder/getHeader url := fmt.Sprintf("%s/eth/v1/builder/header/%d/%s/%s", b.baseUrl, slot, parentHash.Hex(), pubKey.Hex()) header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) @@ -46,7 +47,7 @@ func (b *BuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int6 return header, nil } -func (b *BuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, error) { +func (b *BlockBuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, error) { // https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlocks path := b.baseUrl + "/eth/v1/builder/blinded_blocks" payload, err := json.Marshal(block) @@ -60,7 +61,7 @@ func (b *BuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. return &blockResp.Data, nil } -func (b *BuilderClient) GetStatus(ctx context.Context) error { +func (b *BlockBuilderClient) GetStatus(ctx context.Context) error { url := b.baseUrl + "/eth/v1/builder/status" _, err := httpCall[any](ctx, b.httpClient, http.MethodGet, url, nil, nil) return err diff --git a/cmd/caplin/caplin1/option.go b/cmd/caplin/caplin1/option.go new file mode 100644 index 00000000000..c58ef0723a2 --- /dev/null +++ b/cmd/caplin/caplin1/option.go @@ -0,0 +1,15 @@ +package caplin1 + +import "github.com/ledgerwatch/erigon/cl/beacon/builder" + +type option struct { + builderClient *builder.BlockBuilderClient +} + +type CaplinOption func(*option) + +func WithBuilder(mevRelayUrl string) CaplinOption { + return func(o *option) { + o.builderClient = builder.NewBlockBuilderClient(mevRelayUrl) + } +} diff --git a/cmd/caplin/caplin1/run.go b/cmd/caplin/caplin1/run.go index db5b77b5153..57763041441 100644 --- a/cmd/caplin/caplin1/run.go +++ b/cmd/caplin/caplin1/run.go @@ -103,10 +103,15 @@ func OpenCaplinDatabase(ctx context.Context, func RunCaplinPhase1(ctx context.Context, engine execution_client.ExecutionEngine, config *ethconfig.Config, networkConfig *clparams.NetworkConfig, beaconConfig *clparams.BeaconChainConfig, ethClock eth_clock.EthereumClock, state *state.CachingBeaconState, dirs datadir.Dirs, eth1Getter snapshot_format.ExecutionBlockReaderByNumber, - snDownloader proto_downloader.DownloaderClient, backfilling, blobBackfilling bool, states bool, indexDB kv.RwDB, blobStorage blob_storage.BlobStorage, creds credentials.TransportCredentials, snBuildSema *semaphore.Weighted) error { + snDownloader proto_downloader.DownloaderClient, backfilling, blobBackfilling bool, states bool, indexDB kv.RwDB, blobStorage blob_storage.BlobStorage, creds credentials.TransportCredentials, snBuildSema *semaphore.Weighted, caplinOptions ...CaplinOption) error { ctx, cn := context.WithCancel(ctx) defer cn() + option := &option{} + for _, opt := range caplinOptions { + opt(option) + } + logger := log.New("app", "caplin") csn := freezeblocks.NewCaplinSnapshots(ethconfig.BlocksFreezing{}, beaconConfig, dirs, logger) diff --git a/cmd/caplin/caplincli/config.go b/cmd/caplin/caplincli/config.go index 1043e2b1448..145d4fb001e 100644 --- a/cmd/caplin/caplincli/config.go +++ b/cmd/caplin/caplincli/config.go @@ -37,6 +37,7 @@ type CaplinCliCfg struct { RunEngineAPI bool `json:"run_engine_api"` EngineAPIAddr string `json:"engine_api_addr"` EngineAPIPort int `json:"engine_api_port"` + MevRelayUrl string `json:"mev_relay_url"` JwtSecret []byte AllowedMethods []string `json:"allowed_methods"` @@ -107,6 +108,7 @@ func SetupCaplinCli(ctx *cli.Context) (cfg *CaplinCliCfg, err error) { cfg.TransitionChain = ctx.Bool(caplinflags.TransitionChainFlag.Name) cfg.InitialSync = ctx.Bool(caplinflags.InitSyncFlag.Name) + cfg.MevRelayUrl = ctx.String(caplinflags.MevRelayUrl.Name) return cfg, err } diff --git a/cmd/caplin/caplinflags/flags.go b/cmd/caplin/caplinflags/flags.go index fc3418b4ce5..81882fab694 100644 --- a/cmd/caplin/caplinflags/flags.go +++ b/cmd/caplin/caplinflags/flags.go @@ -108,4 +108,9 @@ var ( Usage: "Path to the token that ensures safe connection between CL and EL", Value: "", } + MevRelayUrl = cli.StringFlag{ + Name: "mev-relay-url", + Usage: "Http URL of the MEV relay", + Value: "", + } ) diff --git a/cmd/caplin/main.go b/cmd/caplin/main.go index fb628ff03dc..0ca6ec918be 100644 --- a/cmd/caplin/main.go +++ b/cmd/caplin/main.go @@ -137,10 +137,22 @@ func runCaplinNode(cliCtx *cli.Context) error { } blockSnapBuildSema := semaphore.NewWeighted(int64(dbg.BuildSnapshotAllowance)) + + var options []caplin1.CaplinOption + // builder option + if rcfg.Builder { + if cfg.MevRelayUrl == "" { + log.Warn("builder mode requires mev_relay_url, but it is not set. Skipping builder mode") + } else { + log.Info("Starting with builder mode") + options = append(options, caplin1.WithBuilder(cfg.MevRelayUrl)) + } + } + return caplin1.RunCaplinPhase1(ctx, executionEngine, ðconfig.Config{ CaplinDiscoveryAddr: cfg.Addr, CaplinDiscoveryPort: uint64(cfg.Port), CaplinDiscoveryTCPPort: uint64(cfg.ServerTcpPort), BeaconRouter: rcfg, - }, cfg.NetworkCfg, cfg.BeaconCfg, ethClock, state, cfg.Dirs, nil, nil, false, false, false, indiciesDB, blobStorage, nil, blockSnapBuildSema) + }, cfg.NetworkCfg, cfg.BeaconCfg, ethClock, state, cfg.Dirs, nil, nil, false, false, false, indiciesDB, blobStorage, nil, blockSnapBuildSema, options...) } From eebb8a2d45fa5deb14779ea0f129209c91ba7869 Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 29 May 2024 02:16:54 +0800 Subject: [PATCH 04/83] validator register --- cl/beacon/builder/client.go | 2 +- cl/beacon/builder/types.go | 10 ---------- cl/beacon/handler/builder.go | 19 +++++++++++++++++++ cl/beacon/handler/handler.go | 5 +++++ cl/cltypes/builder.go | 13 +++++++++++++ cmd/caplin/caplin1/run.go | 1 + 6 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 cl/cltypes/builder.go diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 62bb008dbb1..b34fe5d546f 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -26,7 +26,7 @@ func NewBlockBuilderClient(baseUrl string) *BlockBuilderClient { } } -func (b *BlockBuilderClient) RegisterValidator(ctx context.Context, registers []*ValidatorRegistration) error { +func (b *BlockBuilderClient) RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error { // https://ethereum.github.io/builder-specs/#/Builder/registerValidator url := b.baseUrl + "/eth/v1/builder/validators" payload, err := json.Marshal(registers) diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index c5573e72fe5..60917660b85 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -12,16 +12,6 @@ type ExecutionPayloadHeader struct { } `json:"data"` } -type ValidatorRegistration struct { - Message struct { - FeeRecipient string `json:"fee_recipient"` - GasLimit string `json:"gas_limit"` - Timestamp string `json:"timestamp"` - PubKey string `json:"pubkey"` - } `json:"message"` - Sginature string `json:"signature"` -} - type BlindedBlockResponse struct { Version string `json:"version"` Data cltypes.Eth1Block `json:"data"` diff --git a/cl/beacon/handler/builder.go b/cl/beacon/handler/builder.go index 006678528af..a8dcd3223d0 100644 --- a/cl/beacon/handler/builder.go +++ b/cl/beacon/handler/builder.go @@ -1,12 +1,14 @@ package handler import ( + "encoding/json" "fmt" "net/http" libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/beacon/beaconhttp" "github.com/ledgerwatch/erigon/cl/clparams" + "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/persistence/beacon_indicies" "github.com/ledgerwatch/erigon/cl/phase1/core/state" ) @@ -70,3 +72,20 @@ func (a *ApiHandler) GetEth1V1BuilderStatesExpectedWithdrawals(w http.ResponseWr return nil, beaconhttp.NewEndpointError(http.StatusNotFound, fmt.Errorf("state not found")) } + +func (a *ApiHandler) PostEthV1BuilderRegisterValidator(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) { + registerReq := []*cltypes.ValidatorRegistration{} + if err := json.NewDecoder(r.Body).Decode(®isterReq); err != nil { + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) + } + if len(registerReq) == 0 { + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("empty request")) + } + if err := a.builderClient.RegisterValidator(r.Context(), registerReq); err != nil { + return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) + } + for _, v := range registerReq { + a.logger.Debug("[Caplin] Registred new validator", "fee_recipient", v.Message.FeeRecipient) + } + return newBeaconResponse(nil), nil +} diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go index 734288c1ff0..9f038a9dea5 100644 --- a/cl/beacon/handler/handler.go +++ b/cl/beacon/handler/handler.go @@ -14,6 +14,7 @@ import ( "github.com/ledgerwatch/erigon/cl/beacon/beacon_router_configuration" "github.com/ledgerwatch/erigon/cl/beacon/beaconevents" "github.com/ledgerwatch/erigon/cl/beacon/beaconhttp" + "github.com/ledgerwatch/erigon/cl/beacon/builder" "github.com/ledgerwatch/erigon/cl/beacon/synced_data" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" @@ -87,6 +88,7 @@ type ApiHandler struct { voluntaryExitService services.VoluntaryExitService blsToExecutionChangeService services.BLSToExecutionChangeService proposerSlashingService services.ProposerSlashingService + builderClient *builder.BlockBuilderClient } func NewApiHandler( @@ -119,6 +121,7 @@ func NewApiHandler( voluntaryExitService services.VoluntaryExitService, blsToExecutionChangeService services.BLSToExecutionChangeService, proposerSlashingService services.ProposerSlashingService, + builderClient *builder.BlockBuilderClient, ) *ApiHandler { blobBundles, err := lru.New[common.Bytes48, BlobBundle]("blobs", maxBlobBundleCacheSize) if err != nil { @@ -159,6 +162,7 @@ func NewApiHandler( voluntaryExitService: voluntaryExitService, blsToExecutionChangeService: blsToExecutionChangeService, proposerSlashingService: proposerSlashingService, + builderClient: builderClient, } } @@ -183,6 +187,7 @@ func (a *ApiHandler) init() { r.Route("/v1", func(r chi.Router) { if a.routerCfg.Builder { r.Get("/builder/states/{state_id}/expected_withdrawals", beaconhttp.HandleEndpointFunc(a.GetEth1V1BuilderStatesExpectedWithdrawals)) + r.Post("/validator/register_validator", beaconhttp.HandleEndpointFunc(a.PostEthV1BuilderRegisterValidator)) } if a.routerCfg.Events { r.Get("/events", a.EventSourceGetV1Events) diff --git a/cl/cltypes/builder.go b/cl/cltypes/builder.go new file mode 100644 index 00000000000..57ec41840c5 --- /dev/null +++ b/cl/cltypes/builder.go @@ -0,0 +1,13 @@ +package cltypes + +import libcommon "github.com/ledgerwatch/erigon-lib/common" + +type ValidatorRegistration struct { + Message struct { + FeeRecipient libcommon.Address `json:"fee_recipient"` + GasLimit string `json:"gas_limit"` + Timestamp string `json:"timestamp"` + PubKey libcommon.Bytes48 `json:"pubkey"` + } `json:"message"` + Signature libcommon.Bytes96 `json:"signature"` +} diff --git a/cmd/caplin/caplin1/run.go b/cmd/caplin/caplin1/run.go index 57763041441..f5bfa4f9c5d 100644 --- a/cmd/caplin/caplin1/run.go +++ b/cmd/caplin/caplin1/run.go @@ -298,6 +298,7 @@ func RunCaplinPhase1(ctx context.Context, engine execution_client.ExecutionEngin voluntaryExitService, blsToExecutionChangeService, proposerSlashingService, + option.builderClient, ) go beacon.ListenAndServe(&beacon.LayeredBeaconHandler{ ArchiveApi: apiHandler, From fefed02467a7a66c37e8b5d756f1586a77ebbc6d Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 31 May 2024 01:48:28 +0800 Subject: [PATCH 05/83] part of block produce api --- cl/beacon/builder/types.go | 22 ++- cl/beacon/handler/block_production.go | 237 +++++++++++++++++++++----- cl/cltypes/blinded_beacon_block.go | 10 ++ cl/cltypes/block_production.go | 71 ++++++++ cl/cltypes/builder_test.go | 50 ++++++ 5 files changed, 348 insertions(+), 42 deletions(-) create mode 100644 cl/cltypes/block_production.go create mode 100644 cl/cltypes/builder_test.go diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index 60917660b85..62886e7ee64 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -1,17 +1,35 @@ package builder import ( + "encoding/binary" + "math/big" + + "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/cltypes" + "github.com/ledgerwatch/erigon/cl/cltypes/solid" ) type ExecutionPayloadHeader struct { Version string `json:"version"` Data struct { - Message cltypes.Eth1Header `json:"message"` - Signature string `json:"signature"` + Message struct { + Header *cltypes.Eth1Header `json:"header"` + BlobKzgCommitments *solid.ListSSZ[*cltypes.KZGCommitment] `json:"blob_kzg_commitments,omitempty"` + Value []byte `json:"value"` + PubKey common.Bytes48 `json:"pubkey"` + } `json:"message"` + Signature common.Bytes96 `json:"signature"` } `json:"data"` } +func (h ExecutionPayloadHeader) BlockValue() *big.Int { + if h.Data.Message.Value == nil { + return nil + } + blockValue := binary.LittleEndian.Uint64(h.Data.Message.Value) + return new(big.Int).SetUint64(blockValue) +} + type BlindedBlockResponse struct { Version string `json:"version"` Data cltypes.Eth1Block `json:"data"` diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index c9e1f027425..ef4492f288d 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -5,8 +5,10 @@ import ( "context" "encoding/hex" "encoding/json" + "errors" "fmt" "io" + "math/big" "net/http" "sort" "strconv" @@ -25,6 +27,7 @@ import ( "github.com/ledgerwatch/erigon-lib/log/v3" "github.com/ledgerwatch/erigon/cl/abstract" "github.com/ledgerwatch/erigon/cl/beacon/beaconhttp" + "github.com/ledgerwatch/erigon/cl/beacon/builder" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" @@ -124,6 +127,19 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( ) } + // builder boost factor controls block choice between local execution node or builder + var builderBoostFactor int64 + builderBoostFactorStr := r.URL.Query().Get("builder_boost_factor") + if builderBoostFactorStr != "" { + builderBoostFactor, err = strconv.ParseInt(builderBoostFactorStr, 10, 64) + if err != nil { + return nil, beaconhttp.NewEndpointError( + http.StatusBadRequest, + fmt.Errorf("invalid builder_boost_factor: %v", err), + ) + } + } + s := a.syncedData.HeadState() if s == nil { return nil, beaconhttp.NewEndpointError( @@ -163,64 +179,205 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( if err := transition.DefaultMachine.ProcessSlots(baseState, targetSlot); err != nil { return nil, err } + block, err := a.produceBlock(ctx, builderBoostFactor, sourceBlock.Block, baseState, targetSlot, randaoReveal, graffiti) + if err != nil { + return nil, err + } + /* + beaconBody, executionValue, err := a.produceBeaconBody( + ctx, + 3, + sourceBlock.Block, + baseState, + targetSlot, + randaoReveal, + graffiti, + ) + if err != nil { + return nil, err + } + + proposerIndex, err := baseState.GetBeaconProposerIndex() + if err != nil { + return nil, err + } - beaconBody, executionValue, err := a.produceBeaconBody( - ctx, - 3, - sourceBlock.Block, - baseState, - targetSlot, - randaoReveal, - graffiti, + block := &cltypes.BeaconBlock{ + Slot: targetSlot, + ProposerIndex: proposerIndex, + ParentRoot: baseBlockRoot, + Body: beaconBody, + } + + log.Info( + "BlockProduction: Computing HashSSZ block", + "slot", + targetSlot, + "execution_value", + executionValue, + "proposerIndex", + proposerIndex, + ) + */ + if !block.IsBlinded() { + // compute the state root now + signedBeaconBlock := &cltypes.SignedBeaconBlock{ + Block: &cltypes.BeaconBlock{ + Slot: block.Slot, + ProposerIndex: block.ProposerIndex, + ParentRoot: block.ParentRoot, + Body: block.BeaconBody, + }, + } + if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { + return nil, err + } + block.StateRoot, err = baseState.HashSSZ() + if err != nil { + return nil, err + } + } + rewardsCollector := ð2.BlockRewardsCollector{} + consensusValue := rewardsCollector.Attestations + rewardsCollector.ProposerSlashings + rewardsCollector.AttesterSlashings + rewardsCollector.SyncAggregate + a.setupHeaderReponseForBlockProduction( + w, + block.Version(), + block.IsBlinded(), + block.GetExecutionValue().Uint64(), + consensusValue, ) + + return newBeaconResponse(block). + With("execution_payload_blinded", block.IsBlinded()). + With("execution_payload_value", strconv.FormatUint(block.GetExecutionValue().Uint64(), 10)). + With("consensus_block_value", strconv.FormatUint(consensusValue, 10)), nil +} + +func (a *ApiHandler) produceBlock( + ctx context.Context, + boostFactor int64, + baseBlock *cltypes.BeaconBlock, + baseState *state.CachingBeaconState, + targetSlot uint64, + randaoReveal common.Bytes96, + graffiti common.Hash, +) (*cltypes.BlindOrExecutionBeaconBlock, error) { + wg := sync.WaitGroup{} + wg.Add(1) + // produce beacon body + var ( + beaconBody *cltypes.BeaconBody + executionValue uint64 + localErr error + ) + go func() { + defer wg.Done() + beaconBody, executionValue, localErr = a.produceBeaconBody( + ctx, + 3, + baseBlock, + baseState, + targetSlot, + randaoReveal, + graffiti, + ) + }() + + // get the builder payload + var ( + builderHeader *builder.ExecutionPayloadHeader + builderErr error + ) + wg.Add(1) + go func() { + defer wg.Done() + builderHeader, builderErr = a.getBuilderPayload( + ctx, + baseBlock, + baseState, + targetSlot, + randaoReveal, + graffiti, + ) + }() + wg.Wait() + if localErr != nil { + return nil, localErr + } + + // prepare basic block + stateRoot, err := baseState.HashSSZ() if err != nil { return nil, err } - proposerIndex, err := baseState.GetBeaconProposerIndex() if err != nil { return nil, err } - - rewardsCollector := ð2.BlockRewardsCollector{} - block := &cltypes.BeaconBlock{ + block := &cltypes.BlindOrExecutionBeaconBlock{ Slot: targetSlot, ProposerIndex: proposerIndex, - ParentRoot: baseBlockRoot, - Body: beaconBody, + ParentRoot: baseBlock.StateRoot, + StateRoot: stateRoot, + } + if builderErr != nil { + block.BeaconBody = beaconBody + return block, nil + } + // if exec_node_payload_value >= builder_boost_factor * (builder_payload_value // 100), then return a full (unblinded) block containing the execution node payload. + // otherwise, return a blinded block containing the builder payload header. + execValue := new(big.Int).SetUint64(executionValue) + builderValue := builderHeader.BlockValue() + boostFactorBig := new(big.Int).SetInt64(boostFactor) + useLocalExec := new(big.Int).Mul(execValue, big.NewInt(100)).Cmp(new(big.Int).Mul(builderValue, boostFactorBig)) >= 0 + if useLocalExec { + block.BeaconBody = beaconBody + block.ExecutionValue = execValue + } else { + // prepare blinded block + blindedBody, err := beaconBody.Blinded() + if err != nil { + return nil, err + } + block.BlindedBeaconBody = blindedBody. + SetHeader(builderHeader.Data.Message.Header). + SetBlobKzgCommitments(builderHeader.Data.Message.BlobKzgCommitments) + block.ExecutionValue = builderHeader.BlockValue() } - log.Info( - "BlockProduction: Computing HashSSZ block", - "slot", - targetSlot, - "execution_value", - executionValue, - "proposerIndex", - proposerIndex, - ) + return block, nil +} - // compute the state root now - if err := machine.ProcessBlock(transition.DefaultMachine, baseState, &cltypes.SignedBeaconBlock{Block: block}); err != nil { +func (a *ApiHandler) getBuilderPayload( + ctx context.Context, + baseBlock *cltypes.BeaconBlock, + baseState *state.CachingBeaconState, + targetSlot uint64, + randaoReveal common.Bytes96, + graffiti common.Hash, +) (*builder.ExecutionPayloadHeader, error) { + if !(a.routerCfg.Builder && a.builderClient != nil) { + return nil, errors.New("builder is not enabled") + } + + proposerIndex, err := baseState.GetBeaconProposerIndexForSlot(targetSlot) + if err != nil { return nil, err } - block.StateRoot, err = baseState.HashSSZ() + // pub key of the proposer + pubKey, err := baseState.ValidatorPublicKey(int(proposerIndex)) if err != nil { return nil, err } - consensusValue := rewardsCollector.Attestations + rewardsCollector.ProposerSlashings + rewardsCollector.AttesterSlashings + rewardsCollector.SyncAggregate - isSSZBlinded := false - a.setupHeaderReponseForBlockProduction( - w, - block.Version(), - isSSZBlinded, - executionValue, - consensusValue, - ) - - return newBeaconResponse(block). - With("execution_payload_blinded", isSSZBlinded). - With("execution_payload_value", strconv.FormatUint(executionValue, 10)). - With("consensus_block_value", strconv.FormatUint(consensusValue, 10)), nil + // get the parent hash + parentHash, err := baseBlock.HashSSZ() + if err != nil { + return nil, err + } + blindedPayload, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) + if err != nil { + return nil, err + } + return blindedPayload, nil } func (a *ApiHandler) produceBeaconBody( diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index f15a6d83c66..f9bdbd5e03a 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -209,6 +209,16 @@ func (b *BlindedBeaconBody) getSchema(storage bool) []interface{} { return s } +func (b *BlindedBeaconBody) SetHeader(header *Eth1Header) *BlindedBeaconBody { + b.ExecutionPayload = header + return b +} + +func (b *BlindedBeaconBody) SetBlobKzgCommitments(commitments *solid.ListSSZ[*KZGCommitment]) *BlindedBeaconBody { + b.BlobKzgCommitments = commitments + return b +} + func (b *BlindedBeaconBody) Full(txs *solid.TransactionsSSZ, withdrawals *solid.ListSSZ[*Withdrawal]) *BeaconBody { // Recover the execution payload executionPayload := &Eth1Block{ diff --git a/cl/cltypes/block_production.go b/cl/cltypes/block_production.go new file mode 100644 index 00000000000..193d452d6d4 --- /dev/null +++ b/cl/cltypes/block_production.go @@ -0,0 +1,71 @@ +package cltypes + +import ( + "encoding/json" + "math/big" + + libcommon "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/cl/clparams" +) + +type BlindOrExecutionBeaconBlock struct { + Slot uint64 `json:"slot,string"` + ProposerIndex uint64 `json:"proposer_index,string"` + ParentRoot libcommon.Hash `json:"parent_root"` + StateRoot libcommon.Hash `json:"state_root"` + // BeaconBody or BlindedBeaconBody with json tag "body" + BeaconBody *BeaconBody `json:"-"` + BlindedBeaconBody *BlindedBeaconBody `json:"-"` + ExecutionValue *big.Int `json:"-"` +} + +func (b *BlindOrExecutionBeaconBlock) MarshalJSON() ([]byte, error) { + // if b.BeaconBody != nil, then marshal BeaconBody + // if b.BlindedBeaconBody != nil, then marshal BlindedBeaconBody + temp := struct { + Slot uint64 `json:"slot,string"` + ProposerIndex uint64 `json:"proposer_index,string"` + ParentRoot libcommon.Hash `json:"parent_root"` + StateRoot libcommon.Hash `json:"state_root"` + Body any `json:"body"` + }{ + Slot: b.Slot, + ProposerIndex: b.ProposerIndex, + ParentRoot: b.ParentRoot, + StateRoot: b.StateRoot, + } + if b.BeaconBody != nil { + temp.Body = b.BeaconBody + } else if b.BlindedBeaconBody != nil { + temp.Body = b.BlindedBeaconBody + } + return json.Marshal(temp) +} + +func (b *BlindOrExecutionBeaconBlock) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, b); err != nil { + return err + } + return nil +} + +func (b *BlindOrExecutionBeaconBlock) IsBlinded() bool { + return b.BlindedBeaconBody != nil +} + +func (b *BlindOrExecutionBeaconBlock) GetExecutionValue() *big.Int { + if b.ExecutionValue == nil { + return big.NewInt(0) + } + return b.ExecutionValue +} + +func (b *BlindOrExecutionBeaconBlock) Version() clparams.StateVersion { + if b.BeaconBody != nil { + return b.BeaconBody.Version + } + if b.BlindedBeaconBody != nil { + return b.BlindedBeaconBody.Version + } + return clparams.Phase0Version +} diff --git a/cl/cltypes/builder_test.go b/cl/cltypes/builder_test.go new file mode 100644 index 00000000000..1ce57a76c63 --- /dev/null +++ b/cl/cltypes/builder_test.go @@ -0,0 +1,50 @@ +package cltypes + +import ( + "encoding/json" + "testing" + + libcommon "github.com/ledgerwatch/erigon-lib/common" +) + +func TestValidatorRegistration(t *testing.T) { + vr := &ValidatorRegistration{ + Message: struct { + FeeRecipient libcommon.Address `json:"fee_recipient"` + GasLimit string `json:"gas_limit"` + Timestamp string `json:"timestamp"` + PubKey libcommon.Bytes48 `json:"pubkey"` + }{ + FeeRecipient: libcommon.BytesToAddress([]byte("0xAbcF8e0d4e9587369b2301D0790347320302cc09")), + GasLimit: "0", + Timestamp: "0", + PubKey: libcommon.Bytes48([]byte("0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a")), + }, + Signature: libcommon.Bytes96([]byte("0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505")), + } + bytes, err := json.Marshal(vr) + if err != nil { + t.Fatal(err) + } + result := &ValidatorRegistration{} + err = json.Unmarshal(bytes, result) + if err != nil { + t.Fatal(err) + } + // expect result == vr + if result.Message.FeeRecipient != vr.Message.FeeRecipient { + t.Fatalf("expected %v, got %v", vr.Message.FeeRecipient, result.Message.FeeRecipient) + } + if result.Message.GasLimit != vr.Message.GasLimit { + t.Fatalf("expected %v, got %v", vr.Message.GasLimit, result.Message.GasLimit) + } + if result.Message.Timestamp != vr.Message.Timestamp { + t.Fatalf("expected %v, got %v", vr.Message.Timestamp, result.Message.Timestamp) + } + if result.Message.PubKey != vr.Message.PubKey { + t.Fatalf("expected %v, got %v", vr.Message.PubKey, result.Message.PubKey) + } + if result.Signature != vr.Signature { + t.Fatalf("expected %v, got %v", vr.Signature, result.Signature) + } +} From f9ac8646a72b7351d57b2942cc5f71985bb60aee Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 3 Jun 2024 02:35:44 +0800 Subject: [PATCH 06/83] post blinded block --- cl/beacon/builder/client.go | 34 +++++- cl/beacon/builder/types.go | 5 +- cl/beacon/handler/block_production.go | 132 +++++++++++++++++------- cl/beacon/handler/handler.go | 4 +- cl/clparams/version.go | 36 ++++--- cl/cltypes/blinded_beacon_block.go | 15 +++ turbo/engineapi/engine_types/jsonrpc.go | 19 ++++ 7 files changed, 186 insertions(+), 59 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index b34fe5d546f..d679ee77d8e 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -10,6 +10,7 @@ import ( "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/cltypes" + "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" ) type BlockBuilderClient struct { @@ -47,18 +48,41 @@ func (b *BlockBuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot return header, nil } -func (b *BlockBuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, error) { +func (b *BlockBuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) { // https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlocks path := b.baseUrl + "/eth/v1/builder/blinded_blocks" payload, err := json.Marshal(block) if err != nil { - return nil, err + return nil, nil, err + } + headers := map[string]string{ + "Eth-Consensus-Version": block.Version().String(), } - blockResp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, path, nil, bytes.NewBuffer(payload)) + resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, path, headers, bytes.NewBuffer(payload)) if err != nil { - return nil, err + return nil, nil, err + } + + var eth1Block *cltypes.Eth1Block + var blobsBundle *engine_types.BlobsBundleV1 + switch resp.Version { + case "bellatrix", "capella": + eth1Block = &cltypes.Eth1Block{} + if err := json.Unmarshal(resp.Data, block); err != nil { + return nil, nil, err + } + case "deneb": + denebResp := &struct { + ExecutionPayload *cltypes.Eth1Block `json:"execution_payload"` + BlobsBundle *engine_types.BlobsBundleV1 `json:"blobs_bundle"` + }{} + if err := json.Unmarshal(resp.Data, denebResp); err != nil { + return nil, nil, err + } + eth1Block = denebResp.ExecutionPayload + blobsBundle = denebResp.BlobsBundle } - return &blockResp.Data, nil + return eth1Block, blobsBundle, nil } func (b *BlockBuilderClient) GetStatus(ctx context.Context) error { diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index 62886e7ee64..a0fdbdedc29 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -2,6 +2,7 @@ package builder import ( "encoding/binary" + "encoding/json" "math/big" "github.com/ledgerwatch/erigon-lib/common" @@ -31,6 +32,6 @@ func (h ExecutionPayloadHeader) BlockValue() *big.Int { } type BlindedBlockResponse struct { - Version string `json:"version"` - Data cltypes.Eth1Block `json:"data"` + Version string `json:"version"` + Data json.RawMessage `json:"data"` } diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index ef4492f288d..d5546b8aec2 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -183,42 +183,7 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( if err != nil { return nil, err } - /* - beaconBody, executionValue, err := a.produceBeaconBody( - ctx, - 3, - sourceBlock.Block, - baseState, - targetSlot, - randaoReveal, - graffiti, - ) - if err != nil { - return nil, err - } - - proposerIndex, err := baseState.GetBeaconProposerIndex() - if err != nil { - return nil, err - } - - block := &cltypes.BeaconBlock{ - Slot: targetSlot, - ProposerIndex: proposerIndex, - ParentRoot: baseBlockRoot, - Body: beaconBody, - } - log.Info( - "BlockProduction: Computing HashSSZ block", - "slot", - targetSlot, - "execution_value", - executionValue, - "proposerIndex", - proposerIndex, - ) - */ if !block.IsBlinded() { // compute the state root now signedBeaconBlock := &cltypes.SignedBeaconBlock{ @@ -237,6 +202,13 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( return nil, err } } + log.Info("BlockProduction: Block produced", + "proposerIndex", block.ProposerIndex, + "slot", targetSlot, + "state_root", block.StateRoot, + "execution_value", block.GetExecutionValue().Uint64()) + + // todo: consensusValue rewardsCollector := ð2.BlockRewardsCollector{} consensusValue := rewardsCollector.Attestations + rewardsCollector.ProposerSlashings + rewardsCollector.AttesterSlashings + rewardsCollector.SyncAggregate a.setupHeaderReponseForBlockProduction( @@ -727,6 +699,96 @@ func (a *ApiHandler) postBeaconBlocks(w http.ResponseWriter, r *http.Request, ap } +func (a *ApiHandler) PostEthV1BlindedBlocks(w http.ResponseWriter, r *http.Request) { + a.publishBlindedBlocks(w, r, 1) +} + +func (a *ApiHandler) PostEthV2BlindedBlocks(w http.ResponseWriter, r *http.Request) { + a.publishBlindedBlocks(w, r, 2) +} + +func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request, apiVersion int) { + ethVersion := r.Header.Get("Eth-Consensus-Version") + version, err := a.parseEthConsensusVersion(ethVersion, apiVersion) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + // todo: broadcast_validation + + // submit and unblind the signedBlindedBlock + signedBlindedBlock := cltypes.NewSignedBlindedBeaconBlock(a.beaconChainCfg) + signedBlindedBlock.Block.Body.Version = version + b, err := io.ReadAll(r.Body) + defer r.Body.Close() + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if r.Header.Get("Content-Type") == "application/json" { + if err := json.Unmarshal(b, signedBlindedBlock); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + } else { + if err := signedBlindedBlock.DecodeSSZ(b, int(version)); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + } + blockPayload, blobsBundle, err := a.builderClient.SubmitBlindedBlocks(r.Context(), signedBlindedBlock) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + // unblind the block + signedBlock, err := signedBlindedBlock.Unblind(blockPayload) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + // check blobs + if blobsBundle != nil && blockPayload.Version() >= clparams.DenebVersion { + if err := blobsBundle.Check(); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + // check commitments + blockCommitments := signedBlindedBlock.Block.Body.BlobKzgCommitments + if len(blobsBundle.Commitments) != blockCommitments.Len() { + http.Error(w, "commitments length mismatch", http.StatusBadRequest) + return + } + for i, commitment := range blobsBundle.Commitments { + blockCommitment := blockCommitments.Get(i) + blockCommitmentBytes, err := blockCommitment.MarshalJSON() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + if !bytes.Equal(commitment, blockCommitmentBytes) { + http.Error(w, fmt.Sprintf("commitment mismatch: %d", i), http.StatusBadRequest) + return + } + // add the bundle to recently produced blobs + a.blobBundles.Add(libcommon.Bytes48(blobsBundle.Commitments[i]), BlobBundle{ + Blob: (*cltypes.Blob)(blobsBundle.Blobs[i]), + KzgProof: libcommon.Bytes48(blobsBundle.Proofs[i]), + Commitment: libcommon.Bytes48(blobsBundle.Commitments[i]), + }) + } + } + + // broadcast the block + if err := a.broadcastBlock(r.Context(), signedBlock); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.WriteHeader(http.StatusOK) +} + func (a *ApiHandler) parseEthConsensusVersion( str string, apiVersion int, diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go index 9f038a9dea5..3bcae7d02e4 100644 --- a/cl/beacon/handler/handler.go +++ b/cl/beacon/handler/handler.go @@ -216,6 +216,7 @@ func (a *ApiHandler) init() { } if a.routerCfg.Beacon { r.Route("/beacon", func(r chi.Router) { + r.Post("blinded_blocks", a.publishBlindedBlocks) r.Route("/rewards", func(r chi.Router) { r.Post("/sync_committee/{block_id}", beaconhttp.HandleEndpointFunc(a.PostEthV1BeaconRewardsSyncCommittees)) r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconRewardsBlocks)) @@ -275,7 +276,7 @@ func (a *ApiHandler) init() { r.Get("/proposer/{epoch}", beaconhttp.HandleEndpointFunc(a.getDutiesProposer)) r.Post("/sync/{epoch}", beaconhttp.HandleEndpointFunc(a.getSyncDuties)) }) - r.Get("/blinded_blocks/{slot}", http.NotFound) + r.Get("/blinded_blocks/{slot}", http.NotFound) // deprecated r.Get("/attestation_data", beaconhttp.HandleEndpointFunc(a.GetEthV1ValidatorAttestationData)) r.Get("/aggregate_attestation", beaconhttp.HandleEndpointFunc(a.GetEthV1ValidatorAggregateAttestation)) r.Post("/aggregate_and_proofs", a.PostEthV1ValidatorAggregatesAndProof) @@ -302,6 +303,7 @@ func (a *ApiHandler) init() { r.Route("/beacon", func(r chi.Router) { r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconBlock)) r.Post("/blocks", a.PostEthV2BeaconBlocks) + r.Post("blinded_blocks", a.publishBlindedBlocks) }) } if a.routerCfg.Validator { diff --git a/cl/clparams/version.go b/cl/clparams/version.go index 7ba9f962b9a..1b1848453d4 100644 --- a/cl/clparams/version.go +++ b/cl/clparams/version.go @@ -13,6 +13,25 @@ const ( ElectraVersion StateVersion = 5 ) +func (v StateVersion) String() string { + switch v { + case Phase0Version: + return "phase0" + case AltairVersion: + return "altair" + case BellatrixVersion: + return "bellatrix" + case CapellaVersion: + return "capella" + case DenebVersion: + return "deneb" + case ElectraVersion: + return "electra" + default: + panic("unsupported fork version") + } +} + // stringToClVersion converts the string to the current state version. func StringToClVersion(s string) (StateVersion, error) { switch s { @@ -34,20 +53,5 @@ func StringToClVersion(s string) (StateVersion, error) { } func ClVersionToString(s StateVersion) string { - switch s { - case Phase0Version: - return "phase0" - case AltairVersion: - return "altair" - case BellatrixVersion: - return "bellatrix" - case CapellaVersion: - return "capella" - case DenebVersion: - return "deneb" - case ElectraVersion: - return "electra" - default: - panic("unsupported fork version") - } + return s.String() } diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index f9bdbd5e03a..4a911c05821 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -323,6 +323,21 @@ func (b *BlindedBeaconBody) ExecutionPayloadMerkleProof() ([][32]byte, error) { return merkle_tree.MerkleProof(4, 9, b.getSchema(false)...) } +func (b *SignedBlindedBeaconBlock) Unblind(blockPayload *Eth1Block) (*SignedBeaconBlock, error) { + if b == nil { + return nil, fmt.Errorf("nil block") + } + // check root + blindedRoot := b.Block.StateRoot + payloadRoot := blockPayload.StateRoot + if blindedRoot != payloadRoot { + return nil, fmt.Errorf("root mismatch: %s != %s", blindedRoot, payloadRoot) + } + + signedBeaconBlock := b.Full(blockPayload.Transactions, blockPayload.Withdrawals) + return signedBeaconBlock, nil +} + // make sure that the type implements the interface ssz2.ObjectSSZ var _ ssz2.ObjectSSZ = (*BlindedBeaconBody)(nil) var _ ssz2.ObjectSSZ = (*BlindedBeaconBlock)(nil) diff --git a/turbo/engineapi/engine_types/jsonrpc.go b/turbo/engineapi/engine_types/jsonrpc.go index d4369d0f8ca..176586c1685 100644 --- a/turbo/engineapi/engine_types/jsonrpc.go +++ b/turbo/engineapi/engine_types/jsonrpc.go @@ -6,6 +6,7 @@ import ( "errors" "github.com/ledgerwatch/erigon-lib/common/hexutil" + "github.com/ledgerwatch/erigon-lib/common/length" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/common/hexutility" @@ -68,6 +69,24 @@ type BlobsBundleV1 struct { Blobs []hexutility.Bytes `json:"blobs" gencodec:"required"` } +func (b *BlobsBundleV1) Check() error { + if len(b.Commitments) != len(b.Proofs) || len(b.Commitments) != len(b.Blobs) { + return errors.New("commitments, proofs and blobs must have the same length") + } + for i := range b.Commitments { + if len(b.Commitments[i]) != length.Bytes48 { + return errors.New("commitment must be 48 bytes long") + } + if len(b.Proofs[i]) != length.Bytes48 { + return errors.New("proof must be 48 bytes long") + } + if len(b.Blobs[i]) != 4096*32 { + return errors.New("blob must be 4096 * 32 bytes long") + } + } + return nil +} + type ExecutionPayloadBodyV1 struct { Transactions []hexutility.Bytes `json:"transactions" gencodec:"required"` Withdrawals []*types.Withdrawal `json:"withdrawals" gencodec:"required"` From 865f0d8058449851ae53052a62d8d8d889551e75 Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 3 Jun 2024 03:05:24 +0800 Subject: [PATCH 07/83] update --- cl/beacon/handler/block_production.go | 5 ++--- cl/beacon/handler/handler.go | 4 ++-- cl/beacon/handler/utils_test.go | 1 + cl/beacon/handler/validator_test.go | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index d5546b8aec2..b862b5de5e0 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -717,7 +717,6 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request // todo: broadcast_validation - // submit and unblind the signedBlindedBlock signedBlindedBlock := cltypes.NewSignedBlindedBeaconBlock(a.beaconChainCfg) signedBlindedBlock.Block.Body.Version = version b, err := io.ReadAll(r.Body) @@ -737,19 +736,19 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request return } } + // submit and unblind the signedBlindedBlock blockPayload, blobsBundle, err := a.builderClient.SubmitBlindedBlocks(r.Context(), signedBlindedBlock) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - // unblind the block signedBlock, err := signedBlindedBlock.Unblind(blockPayload) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - // check blobs + // check blob bundle if blobsBundle != nil && blockPayload.Version() >= clparams.DenebVersion { if err := blobsBundle.Check(); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go index 3bcae7d02e4..c070ee45574 100644 --- a/cl/beacon/handler/handler.go +++ b/cl/beacon/handler/handler.go @@ -216,7 +216,7 @@ func (a *ApiHandler) init() { } if a.routerCfg.Beacon { r.Route("/beacon", func(r chi.Router) { - r.Post("blinded_blocks", a.publishBlindedBlocks) + r.Post("blinded_blocks", a.PostEthV1BlindedBlocks) r.Route("/rewards", func(r chi.Router) { r.Post("/sync_committee/{block_id}", beaconhttp.HandleEndpointFunc(a.PostEthV1BeaconRewardsSyncCommittees)) r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconRewardsBlocks)) @@ -303,7 +303,7 @@ func (a *ApiHandler) init() { r.Route("/beacon", func(r chi.Router) { r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconBlock)) r.Post("/blocks", a.PostEthV2BeaconBlocks) - r.Post("blinded_blocks", a.publishBlindedBlocks) + r.Post("blinded_blocks", a.PostEthV2BlindedBlocks) }) } if a.routerCfg.Validator { diff --git a/cl/beacon/handler/utils_test.go b/cl/beacon/handler/utils_test.go index d01d416b639..84c1999513b 100644 --- a/cl/beacon/handler/utils_test.go +++ b/cl/beacon/handler/utils_test.go @@ -149,6 +149,7 @@ func setupTestingHandler(t *testing.T, v clparams.StateVersion, logger log.Logge voluntaryExitService, blsToExecutionChangeService, proposerSlashingService, + nil, ) // TODO: add tests h.Init() return diff --git a/cl/beacon/handler/validator_test.go b/cl/beacon/handler/validator_test.go index a314d8ef2dc..972b38d855c 100644 --- a/cl/beacon/handler/validator_test.go +++ b/cl/beacon/handler/validator_test.go @@ -57,6 +57,7 @@ func (t *validatorTestSuite) SetupTest() { nil, nil, nil, + nil, ) t.gomockCtrl = gomockCtrl } From 16942216cd9f8a37d8ef916ebffe6a14b11ab94e Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 3 Jun 2024 14:56:06 +0800 Subject: [PATCH 08/83] refine --- cl/beacon/handler/block_production.go | 37 ++++++++++----------------- cl/beacon/handler/handler.go | 4 +-- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index b862b5de5e0..49287dedba2 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -239,20 +239,12 @@ func (a *ApiHandler) produceBlock( // produce beacon body var ( beaconBody *cltypes.BeaconBody - executionValue uint64 + localExecValue uint64 localErr error ) go func() { defer wg.Done() - beaconBody, executionValue, localErr = a.produceBeaconBody( - ctx, - 3, - baseBlock, - baseState, - targetSlot, - randaoReveal, - graffiti, - ) + beaconBody, localExecValue, localErr = a.produceBeaconBody(ctx, 3, baseBlock, baseState, targetSlot, randaoReveal, graffiti) }() // get the builder payload @@ -263,20 +255,14 @@ func (a *ApiHandler) produceBlock( wg.Add(1) go func() { defer wg.Done() - builderHeader, builderErr = a.getBuilderPayload( - ctx, - baseBlock, - baseState, - targetSlot, - randaoReveal, - graffiti, - ) + builderHeader, builderErr = a.getBuilderPayload(ctx, baseBlock, baseState, targetSlot) }() wg.Wait() + if localErr != nil { + // if we failed to locally produce the beacon body, we should not proceed with the block production return nil, localErr } - // prepare basic block stateRoot, err := baseState.HashSSZ() if err != nil { @@ -292,13 +278,18 @@ func (a *ApiHandler) produceBlock( ParentRoot: baseBlock.StateRoot, StateRoot: stateRoot, } - if builderErr != nil { + if !a.routerCfg.Builder || builderErr != nil { + // directly return the block if: + // 1. builder is not enabled + // 2. failed to get builder payload block.BeaconBody = beaconBody + block.ExecutionValue = new(big.Int).SetUint64(localExecValue) return block, nil } + // determine whether to use local execution node or builder // if exec_node_payload_value >= builder_boost_factor * (builder_payload_value // 100), then return a full (unblinded) block containing the execution node payload. // otherwise, return a blinded block containing the builder payload header. - execValue := new(big.Int).SetUint64(executionValue) + execValue := new(big.Int).SetUint64(localExecValue) builderValue := builderHeader.BlockValue() boostFactorBig := new(big.Int).SetInt64(boostFactor) useLocalExec := new(big.Int).Mul(execValue, big.NewInt(100)).Cmp(new(big.Int).Mul(builderValue, boostFactorBig)) >= 0 @@ -324,10 +315,8 @@ func (a *ApiHandler) getBuilderPayload( baseBlock *cltypes.BeaconBlock, baseState *state.CachingBeaconState, targetSlot uint64, - randaoReveal common.Bytes96, - graffiti common.Hash, ) (*builder.ExecutionPayloadHeader, error) { - if !(a.routerCfg.Builder && a.builderClient != nil) { + if !a.routerCfg.Builder || a.builderClient == nil { return nil, errors.New("builder is not enabled") } diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go index c070ee45574..d7a3fd1f632 100644 --- a/cl/beacon/handler/handler.go +++ b/cl/beacon/handler/handler.go @@ -216,7 +216,7 @@ func (a *ApiHandler) init() { } if a.routerCfg.Beacon { r.Route("/beacon", func(r chi.Router) { - r.Post("blinded_blocks", a.PostEthV1BlindedBlocks) + r.Post("/blinded_blocks", a.PostEthV1BlindedBlocks) r.Route("/rewards", func(r chi.Router) { r.Post("/sync_committee/{block_id}", beaconhttp.HandleEndpointFunc(a.PostEthV1BeaconRewardsSyncCommittees)) r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconRewardsBlocks)) @@ -303,7 +303,7 @@ func (a *ApiHandler) init() { r.Route("/beacon", func(r chi.Router) { r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconBlock)) r.Post("/blocks", a.PostEthV2BeaconBlocks) - r.Post("blinded_blocks", a.PostEthV2BlindedBlocks) + r.Post("/blinded_blocks", a.PostEthV2BlindedBlocks) }) } if a.routerCfg.Validator { From 8501d254875064b683e5a563a2e5dc913432c017 Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 3 Jun 2024 16:04:10 +0800 Subject: [PATCH 09/83] interface builder --- cl/beacon/builder/client.go | 16 +- cl/beacon/builder/interface.go | 17 ++ .../mock_services/builder_client_mock.go | 199 ++++++++++++++++++ cl/beacon/handler/block_production.go | 6 +- cl/beacon/handler/handler.go | 4 +- cmd/caplin/caplin1/option.go | 2 +- 6 files changed, 231 insertions(+), 13 deletions(-) create mode 100644 cl/beacon/builder/interface.go create mode 100644 cl/beacon/builder/mock_services/builder_client_mock.go diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index d679ee77d8e..d1f975ce9da 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -13,21 +13,23 @@ import ( "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" ) -type BlockBuilderClient struct { +var _ BuilderClient = &builderClient{} + +type builderClient struct { // ref: https://ethereum.github.io/builder-specs/#/ httpClient *http.Client baseUrl string } -func NewBlockBuilderClient(baseUrl string) *BlockBuilderClient { +func NewBlockBuilderClient(baseUrl string) *builderClient { httpC := &http.Client{} - return &BlockBuilderClient{ + return &builderClient{ httpClient: httpC, baseUrl: baseUrl, } } -func (b *BlockBuilderClient) RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error { +func (b *builderClient) RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error { // https://ethereum.github.io/builder-specs/#/Builder/registerValidator url := b.baseUrl + "/eth/v1/builder/validators" payload, err := json.Marshal(registers) @@ -38,7 +40,7 @@ func (b *BlockBuilderClient) RegisterValidator(ctx context.Context, registers [] return err } -func (b *BlockBuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { +func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { // https://ethereum.github.io/builder-specs/#/Builder/getHeader url := fmt.Sprintf("%s/eth/v1/builder/header/%d/%s/%s", b.baseUrl, slot, parentHash.Hex(), pubKey.Hex()) header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) @@ -48,7 +50,7 @@ func (b *BlockBuilderClient) GetExecutionPayloadHeader(ctx context.Context, slot return header, nil } -func (b *BlockBuilderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) { +func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) { // https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlocks path := b.baseUrl + "/eth/v1/builder/blinded_blocks" payload, err := json.Marshal(block) @@ -85,7 +87,7 @@ func (b *BlockBuilderClient) SubmitBlindedBlocks(ctx context.Context, block *clt return eth1Block, blobsBundle, nil } -func (b *BlockBuilderClient) GetStatus(ctx context.Context) error { +func (b *builderClient) GetStatus(ctx context.Context) error { url := b.baseUrl + "/eth/v1/builder/status" _, err := httpCall[any](ctx, b.httpClient, http.MethodGet, url, nil, nil) return err diff --git a/cl/beacon/builder/interface.go b/cl/beacon/builder/interface.go new file mode 100644 index 00000000000..acd86666b81 --- /dev/null +++ b/cl/beacon/builder/interface.go @@ -0,0 +1,17 @@ +package builder + +import ( + "context" + + "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/cl/cltypes" + "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" +) + +//go:generate mockgen -typed=true -destination=./mock_services/builder_client_mock.go -package=mock_services . BuilderClient +type BuilderClient interface { + RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error + GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) + SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) + GetStatus(ctx context.Context) error +} diff --git a/cl/beacon/builder/mock_services/builder_client_mock.go b/cl/beacon/builder/mock_services/builder_client_mock.go new file mode 100644 index 00000000000..5b388e839a8 --- /dev/null +++ b/cl/beacon/builder/mock_services/builder_client_mock.go @@ -0,0 +1,199 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/ledgerwatch/erigon/cl/beacon/builder (interfaces: BuilderClient) +// +// Generated by this command: +// +// mockgen -typed=true -destination=./mock_services/builder_client_mock.go -package=mock_services . BuilderClient +// + +// Package mock_services is a generated GoMock package. +package mock_services + +import ( + context "context" + reflect "reflect" + + common "github.com/ledgerwatch/erigon-lib/common" + builder "github.com/ledgerwatch/erigon/cl/beacon/builder" + cltypes "github.com/ledgerwatch/erigon/cl/cltypes" + engine_types "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" + gomock "go.uber.org/mock/gomock" +) + +// MockBuilderClient is a mock of BuilderClient interface. +type MockBuilderClient struct { + ctrl *gomock.Controller + recorder *MockBuilderClientMockRecorder +} + +// MockBuilderClientMockRecorder is the mock recorder for MockBuilderClient. +type MockBuilderClientMockRecorder struct { + mock *MockBuilderClient +} + +// NewMockBuilderClient creates a new mock instance. +func NewMockBuilderClient(ctrl *gomock.Controller) *MockBuilderClient { + mock := &MockBuilderClient{ctrl: ctrl} + mock.recorder = &MockBuilderClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockBuilderClient) EXPECT() *MockBuilderClientMockRecorder { + return m.recorder +} + +// GetExecutionPayloadHeader mocks base method. +func (m *MockBuilderClient) GetExecutionPayloadHeader(arg0 context.Context, arg1 int64, arg2 common.Hash, arg3 common.Bytes48) (*builder.ExecutionPayloadHeader, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetExecutionPayloadHeader", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(*builder.ExecutionPayloadHeader) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetExecutionPayloadHeader indicates an expected call of GetExecutionPayloadHeader. +func (mr *MockBuilderClientMockRecorder) GetExecutionPayloadHeader(arg0, arg1, arg2, arg3 any) *MockBuilderClientGetExecutionPayloadHeaderCall { + mr.mock.ctrl.T.Helper() + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetExecutionPayloadHeader", reflect.TypeOf((*MockBuilderClient)(nil).GetExecutionPayloadHeader), arg0, arg1, arg2, arg3) + return &MockBuilderClientGetExecutionPayloadHeaderCall{Call: call} +} + +// MockBuilderClientGetExecutionPayloadHeaderCall wrap *gomock.Call +type MockBuilderClientGetExecutionPayloadHeaderCall struct { + *gomock.Call +} + +// Return rewrite *gomock.Call.Return +func (c *MockBuilderClientGetExecutionPayloadHeaderCall) Return(arg0 *builder.ExecutionPayloadHeader, arg1 error) *MockBuilderClientGetExecutionPayloadHeaderCall { + c.Call = c.Call.Return(arg0, arg1) + return c +} + +// Do rewrite *gomock.Call.Do +func (c *MockBuilderClientGetExecutionPayloadHeaderCall) Do(f func(context.Context, int64, common.Hash, common.Bytes48) (*builder.ExecutionPayloadHeader, error)) *MockBuilderClientGetExecutionPayloadHeaderCall { + c.Call = c.Call.Do(f) + return c +} + +// DoAndReturn rewrite *gomock.Call.DoAndReturn +func (c *MockBuilderClientGetExecutionPayloadHeaderCall) DoAndReturn(f func(context.Context, int64, common.Hash, common.Bytes48) (*builder.ExecutionPayloadHeader, error)) *MockBuilderClientGetExecutionPayloadHeaderCall { + c.Call = c.Call.DoAndReturn(f) + return c +} + +// GetStatus mocks base method. +func (m *MockBuilderClient) GetStatus(arg0 context.Context) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetStatus", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// GetStatus indicates an expected call of GetStatus. +func (mr *MockBuilderClientMockRecorder) GetStatus(arg0 any) *MockBuilderClientGetStatusCall { + mr.mock.ctrl.T.Helper() + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStatus", reflect.TypeOf((*MockBuilderClient)(nil).GetStatus), arg0) + return &MockBuilderClientGetStatusCall{Call: call} +} + +// MockBuilderClientGetStatusCall wrap *gomock.Call +type MockBuilderClientGetStatusCall struct { + *gomock.Call +} + +// Return rewrite *gomock.Call.Return +func (c *MockBuilderClientGetStatusCall) Return(arg0 error) *MockBuilderClientGetStatusCall { + c.Call = c.Call.Return(arg0) + return c +} + +// Do rewrite *gomock.Call.Do +func (c *MockBuilderClientGetStatusCall) Do(f func(context.Context) error) *MockBuilderClientGetStatusCall { + c.Call = c.Call.Do(f) + return c +} + +// DoAndReturn rewrite *gomock.Call.DoAndReturn +func (c *MockBuilderClientGetStatusCall) DoAndReturn(f func(context.Context) error) *MockBuilderClientGetStatusCall { + c.Call = c.Call.DoAndReturn(f) + return c +} + +// RegisterValidator mocks base method. +func (m *MockBuilderClient) RegisterValidator(arg0 context.Context, arg1 []*cltypes.ValidatorRegistration) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RegisterValidator", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// RegisterValidator indicates an expected call of RegisterValidator. +func (mr *MockBuilderClientMockRecorder) RegisterValidator(arg0, arg1 any) *MockBuilderClientRegisterValidatorCall { + mr.mock.ctrl.T.Helper() + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterValidator", reflect.TypeOf((*MockBuilderClient)(nil).RegisterValidator), arg0, arg1) + return &MockBuilderClientRegisterValidatorCall{Call: call} +} + +// MockBuilderClientRegisterValidatorCall wrap *gomock.Call +type MockBuilderClientRegisterValidatorCall struct { + *gomock.Call +} + +// Return rewrite *gomock.Call.Return +func (c *MockBuilderClientRegisterValidatorCall) Return(arg0 error) *MockBuilderClientRegisterValidatorCall { + c.Call = c.Call.Return(arg0) + return c +} + +// Do rewrite *gomock.Call.Do +func (c *MockBuilderClientRegisterValidatorCall) Do(f func(context.Context, []*cltypes.ValidatorRegistration) error) *MockBuilderClientRegisterValidatorCall { + c.Call = c.Call.Do(f) + return c +} + +// DoAndReturn rewrite *gomock.Call.DoAndReturn +func (c *MockBuilderClientRegisterValidatorCall) DoAndReturn(f func(context.Context, []*cltypes.ValidatorRegistration) error) *MockBuilderClientRegisterValidatorCall { + c.Call = c.Call.DoAndReturn(f) + return c +} + +// SubmitBlindedBlocks mocks base method. +func (m *MockBuilderClient) SubmitBlindedBlocks(arg0 context.Context, arg1 *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SubmitBlindedBlocks", arg0, arg1) + ret0, _ := ret[0].(*cltypes.Eth1Block) + ret1, _ := ret[1].(*engine_types.BlobsBundleV1) + ret2, _ := ret[2].(error) + return ret0, ret1, ret2 +} + +// SubmitBlindedBlocks indicates an expected call of SubmitBlindedBlocks. +func (mr *MockBuilderClientMockRecorder) SubmitBlindedBlocks(arg0, arg1 any) *MockBuilderClientSubmitBlindedBlocksCall { + mr.mock.ctrl.T.Helper() + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitBlindedBlocks", reflect.TypeOf((*MockBuilderClient)(nil).SubmitBlindedBlocks), arg0, arg1) + return &MockBuilderClientSubmitBlindedBlocksCall{Call: call} +} + +// MockBuilderClientSubmitBlindedBlocksCall wrap *gomock.Call +type MockBuilderClientSubmitBlindedBlocksCall struct { + *gomock.Call +} + +// Return rewrite *gomock.Call.Return +func (c *MockBuilderClientSubmitBlindedBlocksCall) Return(arg0 *cltypes.Eth1Block, arg1 *engine_types.BlobsBundleV1, arg2 error) *MockBuilderClientSubmitBlindedBlocksCall { + c.Call = c.Call.Return(arg0, arg1, arg2) + return c +} + +// Do rewrite *gomock.Call.Do +func (c *MockBuilderClientSubmitBlindedBlocksCall) Do(f func(context.Context, *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error)) *MockBuilderClientSubmitBlindedBlocksCall { + c.Call = c.Call.Do(f) + return c +} + +// DoAndReturn rewrite *gomock.Call.DoAndReturn +func (c *MockBuilderClientSubmitBlindedBlocksCall) DoAndReturn(f func(context.Context, *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error)) *MockBuilderClientSubmitBlindedBlocksCall { + c.Call = c.Call.DoAndReturn(f) + return c +} diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 49287dedba2..d094964fed2 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -235,7 +235,7 @@ func (a *ApiHandler) produceBlock( graffiti common.Hash, ) (*cltypes.BlindOrExecutionBeaconBlock, error) { wg := sync.WaitGroup{} - wg.Add(1) + wg.Add(2) // produce beacon body var ( beaconBody *cltypes.BeaconBody @@ -252,7 +252,6 @@ func (a *ApiHandler) produceBlock( builderHeader *builder.ExecutionPayloadHeader builderErr error ) - wg.Add(1) go func() { defer wg.Done() builderHeader, builderErr = a.getBuilderPayload(ctx, baseBlock, baseState, targetSlot) @@ -286,6 +285,7 @@ func (a *ApiHandler) produceBlock( block.ExecutionValue = new(big.Int).SetUint64(localExecValue) return block, nil } + // determine whether to use local execution node or builder // if exec_node_payload_value >= builder_boost_factor * (builder_payload_value // 100), then return a full (unblinded) block containing the execution node payload. // otherwise, return a blinded block containing the builder payload header. @@ -305,7 +305,7 @@ func (a *ApiHandler) produceBlock( block.BlindedBeaconBody = blindedBody. SetHeader(builderHeader.Data.Message.Header). SetBlobKzgCommitments(builderHeader.Data.Message.BlobKzgCommitments) - block.ExecutionValue = builderHeader.BlockValue() + block.ExecutionValue = builderValue } return block, nil } diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go index d7a3fd1f632..73e1867c41b 100644 --- a/cl/beacon/handler/handler.go +++ b/cl/beacon/handler/handler.go @@ -88,7 +88,7 @@ type ApiHandler struct { voluntaryExitService services.VoluntaryExitService blsToExecutionChangeService services.BLSToExecutionChangeService proposerSlashingService services.ProposerSlashingService - builderClient *builder.BlockBuilderClient + builderClient builder.BuilderClient } func NewApiHandler( @@ -121,7 +121,7 @@ func NewApiHandler( voluntaryExitService services.VoluntaryExitService, blsToExecutionChangeService services.BLSToExecutionChangeService, proposerSlashingService services.ProposerSlashingService, - builderClient *builder.BlockBuilderClient, + builderClient builder.BuilderClient, ) *ApiHandler { blobBundles, err := lru.New[common.Bytes48, BlobBundle]("blobs", maxBlobBundleCacheSize) if err != nil { diff --git a/cmd/caplin/caplin1/option.go b/cmd/caplin/caplin1/option.go index c58ef0723a2..2c5c0316dda 100644 --- a/cmd/caplin/caplin1/option.go +++ b/cmd/caplin/caplin1/option.go @@ -3,7 +3,7 @@ package caplin1 import "github.com/ledgerwatch/erigon/cl/beacon/builder" type option struct { - builderClient *builder.BlockBuilderClient + builderClient builder.BuilderClient } type CaplinOption func(*option) From 0bef820f84a4b1f8e58cecf693a12c3e804d8794 Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 3 Jun 2024 16:47:39 +0800 Subject: [PATCH 10/83] tweak api --- cl/beacon/handler/block_production.go | 54 +++++++++++++-------------- cl/beacon/handler/handler.go | 12 ++++-- cmd/caplin/main.go | 1 + 3 files changed, 36 insertions(+), 31 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index d094964fed2..ed86cd2b0fc 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -688,20 +688,27 @@ func (a *ApiHandler) postBeaconBlocks(w http.ResponseWriter, r *http.Request, ap } -func (a *ApiHandler) PostEthV1BlindedBlocks(w http.ResponseWriter, r *http.Request) { - a.publishBlindedBlocks(w, r, 1) +func (a *ApiHandler) PostEthV1BlindedBlocks(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) { + resp, err := a.publishBlindedBlocks(w, r, 1) + if err != nil { + log.Warn("Failed to publish blinded block in v1 path", "err", err) + } + return resp, err } -func (a *ApiHandler) PostEthV2BlindedBlocks(w http.ResponseWriter, r *http.Request) { - a.publishBlindedBlocks(w, r, 2) +func (a *ApiHandler) PostEthV2BlindedBlocks(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) { + resp, err := a.publishBlindedBlocks(w, r, 2) + if err != nil { + log.Warn("Failed to publish blinded block in v2 path", "err", err) + } + return resp, err } -func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request, apiVersion int) { +func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request, apiVersion int) (*beaconhttp.BeaconResponse, error) { ethVersion := r.Header.Get("Eth-Consensus-Version") version, err := a.parseEthConsensusVersion(ethVersion, apiVersion) if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) } // todo: broadcast_validation @@ -711,54 +718,46 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request b, err := io.ReadAll(r.Body) defer r.Body.Close() if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) } if r.Header.Get("Content-Type") == "application/json" { if err := json.Unmarshal(b, signedBlindedBlock); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) } } else { if err := signedBlindedBlock.DecodeSSZ(b, int(version)); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) } } // submit and unblind the signedBlindedBlock blockPayload, blobsBundle, err := a.builderClient.SubmitBlindedBlocks(r.Context(), signedBlindedBlock) if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return + return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) } signedBlock, err := signedBlindedBlock.Unblind(blockPayload) if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return + return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) } // check blob bundle if blobsBundle != nil && blockPayload.Version() >= clparams.DenebVersion { if err := blobsBundle.Check(); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) } // check commitments blockCommitments := signedBlindedBlock.Block.Body.BlobKzgCommitments if len(blobsBundle.Commitments) != blockCommitments.Len() { - http.Error(w, "commitments length mismatch", http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitments length mismatch")) } for i, commitment := range blobsBundle.Commitments { blockCommitment := blockCommitments.Get(i) blockCommitmentBytes, err := blockCommitment.MarshalJSON() if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return + //http.Error(w, err.Error(), http.StatusInternalServerError) + return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) } if !bytes.Equal(commitment, blockCommitmentBytes) { - http.Error(w, fmt.Sprintf("commitment mismatch: %d", i), http.StatusBadRequest) - return + return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitment mismatch: %d", i)) } // add the bundle to recently produced blobs a.blobBundles.Add(libcommon.Bytes48(blobsBundle.Commitments[i]), BlobBundle{ @@ -771,10 +770,9 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request // broadcast the block if err := a.broadcastBlock(r.Context(), signedBlock); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return + return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) } - w.WriteHeader(http.StatusOK) + return newBeaconResponse(nil), nil } func (a *ApiHandler) parseEthConsensusVersion( diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go index 73e1867c41b..641b43accbc 100644 --- a/cl/beacon/handler/handler.go +++ b/cl/beacon/handler/handler.go @@ -187,7 +187,6 @@ func (a *ApiHandler) init() { r.Route("/v1", func(r chi.Router) { if a.routerCfg.Builder { r.Get("/builder/states/{state_id}/expected_withdrawals", beaconhttp.HandleEndpointFunc(a.GetEth1V1BuilderStatesExpectedWithdrawals)) - r.Post("/validator/register_validator", beaconhttp.HandleEndpointFunc(a.PostEthV1BuilderRegisterValidator)) } if a.routerCfg.Events { r.Get("/events", a.EventSourceGetV1Events) @@ -216,7 +215,9 @@ func (a *ApiHandler) init() { } if a.routerCfg.Beacon { r.Route("/beacon", func(r chi.Router) { - r.Post("/blinded_blocks", a.PostEthV1BlindedBlocks) + if a.routerCfg.Builder { + r.Post("/blinded_blocks", beaconhttp.HandleEndpointFunc(a.PostEthV1BlindedBlocks)) + } r.Route("/rewards", func(r chi.Router) { r.Post("/sync_committee/{block_id}", beaconhttp.HandleEndpointFunc(a.PostEthV1BeaconRewardsSyncCommittees)) r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconRewardsBlocks)) @@ -286,6 +287,9 @@ func (a *ApiHandler) init() { r.Post("/contribution_and_proofs", a.PostEthV1ValidatorContributionsAndProofs) r.Post("/prepare_beacon_proposer", a.PostEthV1ValidatorPrepareBeaconProposal) r.Post("/liveness/{epoch}", beaconhttp.HandleEndpointFunc(a.liveness)) + if a.routerCfg.Builder { + r.Post("/register_validator", beaconhttp.HandleEndpointFunc(a.PostEthV1BuilderRegisterValidator)) + } }) } @@ -303,7 +307,9 @@ func (a *ApiHandler) init() { r.Route("/beacon", func(r chi.Router) { r.Get("/blocks/{block_id}", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconBlock)) r.Post("/blocks", a.PostEthV2BeaconBlocks) - r.Post("/blinded_blocks", a.PostEthV2BlindedBlocks) + if a.routerCfg.Builder { + r.Post("/blinded_blocks", beaconhttp.HandleEndpointFunc(a.PostEthV2BlindedBlocks)) + } }) } if a.routerCfg.Validator { diff --git a/cmd/caplin/main.go b/cmd/caplin/main.go index 0ca6ec918be..9ddb03ef829 100644 --- a/cmd/caplin/main.go +++ b/cmd/caplin/main.go @@ -143,6 +143,7 @@ func runCaplinNode(cliCtx *cli.Context) error { if rcfg.Builder { if cfg.MevRelayUrl == "" { log.Warn("builder mode requires mev_relay_url, but it is not set. Skipping builder mode") + rcfg.Builder = false } else { log.Info("Starting with builder mode") options = append(options, caplin1.WithBuilder(cfg.MevRelayUrl)) From d0caed6a112e2d40873d6346cebd6b6e9c0a9a4a Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 4 Jun 2024 16:54:49 +0800 Subject: [PATCH 11/83] update --- cl/beacon/builder/client.go | 38 +++++++++++++++++++++++---------- cmd/caplin/caplinflags/flags.go | 1 + 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index d1f975ce9da..aadecb039b9 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -7,10 +7,12 @@ import ( "fmt" "io" "net/http" + "net/url" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" + "github.com/ledgerwatch/log/v3" ) var _ BuilderClient = &builderClient{} @@ -18,20 +20,29 @@ var _ BuilderClient = &builderClient{} type builderClient struct { // ref: https://ethereum.github.io/builder-specs/#/ httpClient *http.Client - baseUrl string + url *url.URL } func NewBlockBuilderClient(baseUrl string) *builderClient { - httpC := &http.Client{} - return &builderClient{ - httpClient: httpC, - baseUrl: baseUrl, + u, err := url.Parse(baseUrl) + if err != nil { + panic(err) + } + c := &builderClient{ + httpClient: &http.Client{}, + url: u, + } + if err := c.GetStatus(context.Background()); err != nil { + log.Crit("mev relay is not ready", "url", baseUrl, "err", err) } + log.Info("Builder client is ready", "url", baseUrl) + return c } func (b *builderClient) RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error { // https://ethereum.github.io/builder-specs/#/Builder/registerValidator - url := b.baseUrl + "/eth/v1/builder/validators" + path := "/eth/v1/builder/validators" + url := b.url.JoinPath(path).String() payload, err := json.Marshal(registers) if err != nil { return err @@ -42,7 +53,8 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { // https://ethereum.github.io/builder-specs/#/Builder/getHeader - url := fmt.Sprintf("%s/eth/v1/builder/header/%d/%s/%s", b.baseUrl, slot, parentHash.Hex(), pubKey.Hex()) + path := fmt.Sprintf("/eth/v1/builder/header/%d/%s/%s", slot, parentHash.Hex(), pubKey.Hex()) + url := b.url.JoinPath(path).String() header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) if err != nil { return nil, err @@ -52,7 +64,8 @@ func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int6 func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) { // https://ethereum.github.io/builder-specs/#/Builder/submitBlindedBlocks - path := b.baseUrl + "/eth/v1/builder/blinded_blocks" + path := "/eth/v1/builder/blinded_blocks" + url := b.url.JoinPath(path).String() payload, err := json.Marshal(block) if err != nil { return nil, nil, err @@ -60,7 +73,7 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. headers := map[string]string{ "Eth-Consensus-Version": block.Version().String(), } - resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, path, headers, bytes.NewBuffer(payload)) + resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, url, headers, bytes.NewBuffer(payload)) if err != nil { return nil, nil, err } @@ -88,7 +101,8 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. } func (b *builderClient) GetStatus(ctx context.Context) error { - url := b.baseUrl + "/eth/v1/builder/status" + path := "/eth/v1/builder/status" + url := b.url.JoinPath(path).String() _, err := httpCall[any](ctx, b.httpClient, http.MethodGet, url, nil, nil) return err } @@ -118,7 +132,9 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin } // read response body var body T - if err := json.NewDecoder(response.Body).Decode(&body); err != nil { + if err := json.NewDecoder(response.Body).Decode(&body); err == io.EOF { + return nil, nil + } else if err != nil { return nil, err } return &body, nil diff --git a/cmd/caplin/caplinflags/flags.go b/cmd/caplin/caplinflags/flags.go index 81882fab694..e8f8d448c06 100644 --- a/cmd/caplin/caplinflags/flags.go +++ b/cmd/caplin/caplinflags/flags.go @@ -20,6 +20,7 @@ var CliFlags = []cli.Flag{ &RunEngineAPI, &EngineApiHostFlag, &EngineApiPortFlag, + &MevRelayUrl, &JwtSecret, &utils.DataDirFlag, &utils.BeaconApiAllowCredentialsFlag, From 29118d28524ca143795d11ebdbaef584e686ac06 Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 5 Jun 2024 17:09:18 +0800 Subject: [PATCH 12/83] update --- cl/cltypes/blinded_beacon_block.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index 4a911c05821..c9450280992 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -48,7 +48,7 @@ type BlindedBeaconBody struct { // Data related to crosslink records and executing operations on the Ethereum 2.0 chain ExecutionPayload *Eth1Header `json:"execution_payload_header,omitempty"` // Withdrawals Diffs for Execution Layer - ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` + ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes,omitempty"` // The commitments for beacon chain blobs // With a max of 4 per block BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments,omitempty"` From e7c653264b7709a4f36b51091034a39a3eb7e06a Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 6 Jun 2024 13:34:15 +0800 Subject: [PATCH 13/83] update --- cl/cltypes/blinded_beacon_block.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index c9450280992..4a911c05821 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -48,7 +48,7 @@ type BlindedBeaconBody struct { // Data related to crosslink records and executing operations on the Ethereum 2.0 chain ExecutionPayload *Eth1Header `json:"execution_payload_header,omitempty"` // Withdrawals Diffs for Execution Layer - ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes,omitempty"` + ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` // The commitments for beacon chain blobs // With a max of 4 per block BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments,omitempty"` From a077b7df94443a964a36c8819d275c1ce6b8f2ff Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 6 Jun 2024 15:16:21 +0800 Subject: [PATCH 14/83] check builder header --- cl/beacon/handler/block_production.go | 33 +++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index ed86cd2b0fc..31cac04b025 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -12,6 +12,7 @@ import ( "net/http" "sort" "strconv" + "strings" "sync" "time" @@ -255,6 +256,7 @@ func (a *ApiHandler) produceBlock( go func() { defer wg.Done() builderHeader, builderErr = a.getBuilderPayload(ctx, baseBlock, baseState, targetSlot) + }() wg.Wait() @@ -334,11 +336,38 @@ func (a *ApiHandler) getBuilderPayload( if err != nil { return nil, err } - blindedPayload, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) + header, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) + if err != nil { + return nil, err + } + + // check the version + curVersion := baseState.Version().String() + if !strings.EqualFold(header.Version, curVersion) { + return nil, fmt.Errorf("invalid version %s, expected %s", header.Version, curVersion) + } + + // check kzg commitments + version, err := clparams.StringToClVersion(header.Version) if err != nil { return nil, err } - return blindedPayload, nil + if header != nil && version >= clparams.DenebVersion { + if header.Data.Message.BlobKzgCommitments.Len() >= cltypes.MaxBlobsCommittmentsPerBlock { + return nil, fmt.Errorf("too many blob kzg commitments: %d", header.Data.Message.BlobKzgCommitments.Len()) + } + for i := 0; i < header.Data.Message.BlobKzgCommitments.Len(); i++ { + c := header.Data.Message.BlobKzgCommitments.Get(i) + if c == nil { + return nil, fmt.Errorf("nil blob kzg commitment") + } + if len(c) != length.Bytes48 { + return nil, fmt.Errorf("invalid blob kzg commitment length") + } + } + } + + return header, nil } func (a *ApiHandler) produceBeaconBody( From 768c618d5c0a479d87394c06f2e469dfe5c0f613 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 6 Jun 2024 15:21:32 +0800 Subject: [PATCH 15/83] more check --- cl/beacon/handler/block_production.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 31cac04b025..7e9680c39d5 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -5,7 +5,6 @@ import ( "context" "encoding/hex" "encoding/json" - "errors" "fmt" "io" "math/big" @@ -51,6 +50,10 @@ const ( BlockPublishingValidationConsensusAndEquivocation BlockPublishingValidation = "consensus_and_equivocation" ) +var ( + errBuilderNotEnabled = fmt.Errorf("builder is not enabled") +) + var defaultGraffitiString = "Caplin" func (a *ApiHandler) GetEthV1ValidatorAttestationData( @@ -256,7 +259,9 @@ func (a *ApiHandler) produceBlock( go func() { defer wg.Done() builderHeader, builderErr = a.getBuilderPayload(ctx, baseBlock, baseState, targetSlot) - + if builderErr != nil && builderErr != errBuilderNotEnabled { + log.Error("Failed to get builder payload", "err", builderErr) + } }() wg.Wait() @@ -319,7 +324,7 @@ func (a *ApiHandler) getBuilderPayload( targetSlot uint64, ) (*builder.ExecutionPayloadHeader, error) { if !a.routerCfg.Builder || a.builderClient == nil { - return nil, errors.New("builder is not enabled") + return nil, errBuilderNotEnabled } proposerIndex, err := baseState.GetBeaconProposerIndexForSlot(targetSlot) @@ -348,11 +353,7 @@ func (a *ApiHandler) getBuilderPayload( } // check kzg commitments - version, err := clparams.StringToClVersion(header.Version) - if err != nil { - return nil, err - } - if header != nil && version >= clparams.DenebVersion { + if header != nil && baseState.Version() >= clparams.DenebVersion { if header.Data.Message.BlobKzgCommitments.Len() >= cltypes.MaxBlobsCommittmentsPerBlock { return nil, fmt.Errorf("too many blob kzg commitments: %d", header.Data.Message.BlobKzgCommitments.Len()) } From 614967ae42fce8740a3e48de70c71ee074eb49bf Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 02:54:38 +0800 Subject: [PATCH 16/83] add caplin.mev-relay-url flag --- cl/clparams/config.go | 7 +++++++ cmd/utils/flags.go | 6 ++++++ eth/backend.go | 10 +++++++++- turbo/cli/default_flags.go | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/cl/clparams/config.go b/cl/clparams/config.go index eb0c1b2f8ea..c0c0adbbae4 100644 --- a/cl/clparams/config.go +++ b/cl/clparams/config.go @@ -36,6 +36,13 @@ type CaplinConfig struct { BlobBackfilling bool BlobPruningDisabled bool Archive bool + // CaplinMeVRelayUrl is optional and is used to connect to the external builder service. + // If it's set, the node will start in builder mode + MevRelayUrl string +} + +func (c CaplinConfig) BuilderMode() bool { + return c.MevRelayUrl != "" } type NetworkType int diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 4fcf3d54354..5b0e54f12cb 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -847,6 +847,11 @@ var ( Usage: "checkpoint sync endpoint", Value: cli.NewStringSlice(), } + CaplinMevRelayUrl = cli.StringFlag{ + Name: "caplin.mev-relay-url", + Usage: "MEV relay endpoint. Caplin runs in builder mode if this is set", + Value: "", + } SentinelAddrFlag = cli.StringFlag{ Name: "sentinel.addr", @@ -1678,6 +1683,7 @@ func setCaplin(ctx *cli.Context, cfg *ethconfig.Config) { cfg.CaplinConfig.BlobBackfilling = ctx.Bool(CaplinBlobBackfillingFlag.Name) cfg.CaplinConfig.BlobPruningDisabled = ctx.Bool(CaplinDisableBlobPruningFlag.Name) cfg.CaplinConfig.Archive = ctx.Bool(CaplinArchiveFlag.Name) + cfg.CaplinConfig.MevRelayUrl = ctx.String(CaplinMevRelayUrl.Name) if checkpointUrls := ctx.StringSlice(CaplinCheckpointSyncUrlFlag.Name); len(checkpointUrls) > 0 { clparams.ConfigurableCheckpointsURLs = checkpointUrls } diff --git a/eth/backend.go b/eth/backend.go index fb3ac7c4c60..125fc431085 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -964,8 +964,16 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger } go func() { + caplinOpt := []caplin1.CaplinOption{} + if config.CaplinConfig.BuilderMode() { + config.BeaconRouter.Builder = true + caplinOpt = append(caplinOpt, caplin1.WithBuilder(config.CaplinConfig.MevRelayUrl)) + } eth1Getter := getters.NewExecutionSnapshotReader(ctx, beaconCfg, blockReader, backend.chainDB) - if err := caplin1.RunCaplinPhase1(ctx, executionEngine, config, networkCfg, beaconCfg, ethClock, state, dirs, eth1Getter, backend.downloaderClient, config.CaplinConfig.Backfilling, config.CaplinConfig.BlobBackfilling, config.CaplinConfig.Archive, indiciesDB, blobStorage, creds, blockSnapBuildSema); err != nil { + if err := caplin1.RunCaplinPhase1(ctx, executionEngine, config, networkCfg, beaconCfg, ethClock, + state, dirs, eth1Getter, backend.downloaderClient, config.CaplinConfig.Backfilling, + config.CaplinConfig.BlobBackfilling, config.CaplinConfig.Archive, indiciesDB, blobStorage, creds, + blockSnapBuildSema, caplinOpt...); err != nil { logger.Error("could not start caplin", "err", err) } ctxCancel() diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index ea9db4e9548..8fa9ea18b06 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -174,6 +174,7 @@ var DefaultFlags = []cli.Flag{ &utils.CaplinDiscoveryPortFlag, &utils.CaplinDiscoveryTCPPortFlag, &utils.CaplinCheckpointSyncUrlFlag, + &utils.CaplinMevRelayUrl, &utils.SentinelAddrFlag, &utils.SentinelPortFlag, From 6f0598e2017a18b43349edbd88f7874990221dda Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 16:55:08 +0800 Subject: [PATCH 17/83] udpate --- cl/clparams/config.go | 2 +- eth/backend.go | 11 ++++++++--- turbo/cli/default_flags.go | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cl/clparams/config.go b/cl/clparams/config.go index c0c0adbbae4..ca199fce5b0 100644 --- a/cl/clparams/config.go +++ b/cl/clparams/config.go @@ -41,7 +41,7 @@ type CaplinConfig struct { MevRelayUrl string } -func (c CaplinConfig) BuilderMode() bool { +func (c CaplinConfig) RelayUrlExist() bool { return c.MevRelayUrl != "" } diff --git a/eth/backend.go b/eth/backend.go index 125fc431085..8371c779471 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -965,10 +965,15 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger go func() { caplinOpt := []caplin1.CaplinOption{} - if config.CaplinConfig.BuilderMode() { - config.BeaconRouter.Builder = true - caplinOpt = append(caplinOpt, caplin1.WithBuilder(config.CaplinConfig.MevRelayUrl)) + if config.BeaconRouter.Builder { + if config.CaplinConfig.RelayUrlExist() { + caplinOpt = append(caplinOpt, caplin1.WithBuilder(config.CaplinConfig.MevRelayUrl)) + } else { + log.Warn("builder api enable but relay url not set. Skipping builder mode") + config.BeaconRouter.Builder = false + } } + log.Info("Starting caplin") eth1Getter := getters.NewExecutionSnapshotReader(ctx, beaconCfg, blockReader, backend.chainDB) if err := caplin1.RunCaplinPhase1(ctx, executionEngine, config, networkCfg, beaconCfg, ethClock, state, dirs, eth1Getter, backend.downloaderClient, config.CaplinConfig.Backfilling, diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index 8fa9ea18b06..f1a7223a4f0 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -174,7 +174,6 @@ var DefaultFlags = []cli.Flag{ &utils.CaplinDiscoveryPortFlag, &utils.CaplinDiscoveryTCPPortFlag, &utils.CaplinCheckpointSyncUrlFlag, - &utils.CaplinMevRelayUrl, &utils.SentinelAddrFlag, &utils.SentinelPortFlag, @@ -207,6 +206,7 @@ var DefaultFlags = []cli.Flag{ &utils.CaplinBlobBackfillingFlag, &utils.CaplinDisableBlobPruningFlag, &utils.CaplinArchiveFlag, + &utils.CaplinMevRelayUrl, &utils.TrustedSetupFile, &utils.RPCSlowFlag, From 2009fd36f96c9b7abbe101f4560aa90968a8a88d Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 17:17:52 +0800 Subject: [PATCH 18/83] log --- cl/beacon/handler/block_production.go | 6 ++++++ cl/beacon/handler/builder.go | 2 ++ 2 files changed, 8 insertions(+) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 7e9680c39d5..8f699a8649a 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -206,6 +206,10 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( return nil, err } } + if block.IsBlinded() { + log.Info("BlockProduction: produced a blinded block") + } + log.Info("BlockProduction: Block produced", "proposerIndex", block.ProposerIndex, "slot", targetSlot, @@ -802,6 +806,8 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request if err := a.broadcastBlock(r.Context(), signedBlock); err != nil { return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) } + + log.Info("successfully publish blinded block", "block_num", signedBlock.Block.Body.ExecutionPayload.BlockNumber, "api_version", apiVersion) return newBeaconResponse(nil), nil } diff --git a/cl/beacon/handler/builder.go b/cl/beacon/handler/builder.go index a8dcd3223d0..a3bfe0b1443 100644 --- a/cl/beacon/handler/builder.go +++ b/cl/beacon/handler/builder.go @@ -11,6 +11,7 @@ import ( "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/persistence/beacon_indicies" "github.com/ledgerwatch/erigon/cl/phase1/core/state" + "github.com/ledgerwatch/log/v3" ) func (a *ApiHandler) GetEth1V1BuilderStatesExpectedWithdrawals(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) { @@ -87,5 +88,6 @@ func (a *ApiHandler) PostEthV1BuilderRegisterValidator(w http.ResponseWriter, r for _, v := range registerReq { a.logger.Debug("[Caplin] Registred new validator", "fee_recipient", v.Message.FeeRecipient) } + log.Info("Registered new validator", "count", len(registerReq)) return newBeaconResponse(nil), nil } From 4f5e6f7d906c6a8513849882a06cc8a97b1e36f8 Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 17:43:15 +0800 Subject: [PATCH 19/83] fix --- cl/beacon/builder/client.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index aadecb039b9..9416e28c799 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -33,7 +33,8 @@ func NewBlockBuilderClient(baseUrl string) *builderClient { url: u, } if err := c.GetStatus(context.Background()); err != nil { - log.Crit("mev relay is not ready", "url", baseUrl, "err", err) + log.Error("cannot connect to builder client", "url", baseUrl, "error", err) + panic("cannot connect to builder client") } log.Info("Builder client is ready", "url", baseUrl) return c @@ -47,7 +48,7 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty if err != nil { return err } - _, err = httpCall[any](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) + _, err = httpCall[json.RawMessage](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) return err } @@ -131,10 +132,16 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin return nil, fmt.Errorf("status code: %d. Response content %v", response.StatusCode, string(body)) } // read response body + bytes, err := io.ReadAll(response.Body) + if err != nil { + return nil, err + } var body T - if err := json.NewDecoder(response.Body).Decode(&body); err == io.EOF { - return nil, nil - } else if err != nil { + if len(bytes) == 0 { + return &body, nil + } + if err := json.Unmarshal(bytes, &body); err != nil { + log.Warn("json.Unmarshal error", "err", err, "content", string(bytes)) return nil, err } return &body, nil From 591587df7196f0583d74d847234d5d89ade8b4e4 Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 17:59:12 +0800 Subject: [PATCH 20/83] log --- cl/beacon/builder/client.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 9416e28c799..568a363ca1f 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -49,6 +49,9 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty return err } _, err = httpCall[json.RawMessage](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) + if err != nil { + log.Warn("[mev builder] httpCall error", "err", err, "payload", string(payload)) + } return err } @@ -60,6 +63,13 @@ func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int6 if err != nil { return nil, err } + builderHeaderBytes, err := json.Marshal(header) + if err != nil { + log.Warn("[mev builder] json.Marshal error", "err", err) + return nil, err + } else { + log.Info("[mev builder] builderHeaderBytes", "builderHeaderBytes", string(builderHeaderBytes)) + } return header, nil } @@ -76,6 +86,7 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. } resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, url, headers, bytes.NewBuffer(payload)) if err != nil { + log.Warn("[mev builder] httpCall error", "err", err, "payload", string(payload)) return nil, nil, err } @@ -98,13 +109,28 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. eth1Block = denebResp.ExecutionPayload blobsBundle = denebResp.BlobsBundle } + // log + eth1blockBytes, err := json.Marshal(eth1Block) + if err != nil { + log.Warn("[mev builder] json.Marshal error", "err", err) + return nil, nil, err + } else { + log.Info("[mev builder] eth1blockBytes", "eth1blockBytes", string(eth1blockBytes)) + } + blobsBundleBytes, err := json.Marshal(blobsBundle) + if err != nil { + log.Warn("[mev builder] json.Marshal error", "err", err) + return nil, nil, err + } else { + log.Info("[mev builder] blobsBundleBytes", "blobsBundleBytes", string(blobsBundleBytes)) + } return eth1Block, blobsBundle, nil } func (b *builderClient) GetStatus(ctx context.Context) error { path := "/eth/v1/builder/status" url := b.url.JoinPath(path).String() - _, err := httpCall[any](ctx, b.httpClient, http.MethodGet, url, nil, nil) + _, err := httpCall[json.RawMessage](ctx, b.httpClient, http.MethodGet, url, nil, nil) return err } From 77cab7d6508499355c0fa14192e069c47a027afd Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 18:05:17 +0800 Subject: [PATCH 21/83] log --- cl/beacon/builder/client.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 568a363ca1f..5c3f3dd099b 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -162,12 +162,14 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin if err != nil { return nil, err } + log.Info("[mev builder] httpCall", "url", url, "method", method, "response", string(bytes)) + var body T if len(bytes) == 0 { return &body, nil } if err := json.Unmarshal(bytes, &body); err != nil { - log.Warn("json.Unmarshal error", "err", err, "content", string(bytes)) + log.Warn("[mev builder] json.Unmarshal error", "err", err, "content", string(bytes)) return nil, err } return &body, nil From 7773050130e7c8509449cabdb3014752759cbc6c Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 18:16:57 +0800 Subject: [PATCH 22/83] update --- cl/beacon/builder/client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 5c3f3dd099b..dfdba50a827 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -61,6 +61,7 @@ func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int6 url := b.url.JoinPath(path).String() header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) if err != nil { + log.Warn("[mev builder] httpCall error", "err", err, "path", path) return nil, err } builderHeaderBytes, err := json.Marshal(header) From 9f62895ab458b8b06ce928ead88d6c6952be18ea Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 7 Jun 2024 19:03:09 +0800 Subject: [PATCH 23/83] log --- cl/beacon/builder/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index dfdba50a827..9a219b154dd 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -163,7 +163,7 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin if err != nil { return nil, err } - log.Info("[mev builder] httpCall", "url", url, "method", method, "response", string(bytes)) + log.Info("[mev builder] httpCall success", "url", url, "method", method, "response", string(bytes), "statusCode", response.StatusCode) var body T if len(bytes) == 0 { From 0fb7aa0dd47dee579f54b7bd36fa5c7dc62d4f68 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 01:03:33 +0800 Subject: [PATCH 24/83] update --- cl/beacon/handler/block_production.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 8f699a8649a..e1c7692c689 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -195,16 +195,13 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( Slot: block.Slot, ProposerIndex: block.ProposerIndex, ParentRoot: block.ParentRoot, + StateRoot: block.StateRoot, Body: block.BeaconBody, }, } if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { return nil, err } - block.StateRoot, err = baseState.HashSSZ() - if err != nil { - return nil, err - } } if block.IsBlinded() { log.Info("BlockProduction: produced a blinded block") @@ -271,6 +268,7 @@ func (a *ApiHandler) produceBlock( if localErr != nil { // if we failed to locally produce the beacon body, we should not proceed with the block production + log.Error("Failed to produce beacon body", "err", localErr) return nil, localErr } // prepare basic block From 4d9e0149e16b89ccfcce16575aa04a838c4df7ac Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 01:20:32 +0800 Subject: [PATCH 25/83] update --- cl/beacon/handler/block_production.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index e1c7692c689..f1395f7b528 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -280,10 +280,14 @@ func (a *ApiHandler) produceBlock( if err != nil { return nil, err } + baseBlockRoot, err := baseBlock.HashSSZ() + if err != nil { + return nil, err + } block := &cltypes.BlindOrExecutionBeaconBlock{ Slot: targetSlot, ProposerIndex: proposerIndex, - ParentRoot: baseBlock.StateRoot, + ParentRoot: baseBlockRoot, StateRoot: stateRoot, } if !a.routerCfg.Builder || builderErr != nil { From 6608085f74d1f0560d39fa57248b601e17011b09 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 01:39:27 +0800 Subject: [PATCH 26/83] update --- cl/beacon/handler/block_production.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index f1395f7b528..171ea466b30 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -195,13 +195,16 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( Slot: block.Slot, ProposerIndex: block.ProposerIndex, ParentRoot: block.ParentRoot, - StateRoot: block.StateRoot, Body: block.BeaconBody, }, } if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { return nil, err } + block.StateRoot, err = baseState.HashSSZ() + if err != nil { + return nil, err + } } if block.IsBlinded() { log.Info("BlockProduction: produced a blinded block") @@ -272,10 +275,6 @@ func (a *ApiHandler) produceBlock( return nil, localErr } // prepare basic block - stateRoot, err := baseState.HashSSZ() - if err != nil { - return nil, err - } proposerIndex, err := baseState.GetBeaconProposerIndex() if err != nil { return nil, err @@ -288,7 +287,6 @@ func (a *ApiHandler) produceBlock( Slot: targetSlot, ProposerIndex: proposerIndex, ParentRoot: baseBlockRoot, - StateRoot: stateRoot, } if !a.routerCfg.Builder || builderErr != nil { // directly return the block if: From 6226664f0c52ac070ee65116261d50d3509b1679 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 02:04:17 +0800 Subject: [PATCH 27/83] update --- cl/beacon/handler/block_production.go | 9 +++++++-- cl/cltypes/block_production.go | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 171ea466b30..97bac2401a1 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -227,8 +227,13 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( consensusValue, ) - return newBeaconResponse(block). - With("execution_payload_blinded", block.IsBlinded()). + var resp *beaconhttp.BeaconResponse + if block.IsBlinded() { + resp = newBeaconResponse(block.ToBlinded()) + } else { + resp = newBeaconResponse(block.ToExecution()) + } + return resp.With("execution_payload_blinded", block.IsBlinded()). With("execution_payload_value", strconv.FormatUint(block.GetExecutionValue().Uint64(), 10)). With("consensus_block_value", strconv.FormatUint(consensusValue, 10)), nil } diff --git a/cl/cltypes/block_production.go b/cl/cltypes/block_production.go index 193d452d6d4..767d82215cd 100644 --- a/cl/cltypes/block_production.go +++ b/cl/cltypes/block_production.go @@ -19,6 +19,26 @@ type BlindOrExecutionBeaconBlock struct { ExecutionValue *big.Int `json:"-"` } +func (b *BlindOrExecutionBeaconBlock) ToBlinded() *BlindedBeaconBlock { + return &BlindedBeaconBlock{ + Slot: b.Slot, + ProposerIndex: b.ProposerIndex, + ParentRoot: b.ParentRoot, + StateRoot: b.StateRoot, + Body: b.BlindedBeaconBody, + } +} + +func (b *BlindOrExecutionBeaconBlock) ToExecution() *BeaconBlock { + return &BeaconBlock{ + Slot: b.Slot, + ProposerIndex: b.ProposerIndex, + ParentRoot: b.ParentRoot, + StateRoot: b.StateRoot, + Body: b.BeaconBody, + } +} + func (b *BlindOrExecutionBeaconBlock) MarshalJSON() ([]byte, error) { // if b.BeaconBody != nil, then marshal BeaconBody // if b.BlindedBeaconBody != nil, then marshal BlindedBeaconBody From a8f4458771c10836a7f3d1921c3802d03fd630ad Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 02:22:50 +0800 Subject: [PATCH 28/83] update --- cl/beacon/builder/client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 9a219b154dd..3c75a90f4a8 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -52,6 +52,7 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty if err != nil { log.Warn("[mev builder] httpCall error", "err", err, "payload", string(payload)) } + log.Info("[mev builder] RegisterValidator", "url", url, "payload", string(payload)) return err } From 9895ea7206dadaa0983228cb75242b163f6aa3f3 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 02:43:51 +0800 Subject: [PATCH 29/83] update --- cl/beacon/handler/block_production.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 97bac2401a1..1f54c369ee8 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -132,10 +132,10 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( } // builder boost factor controls block choice between local execution node or builder - var builderBoostFactor int64 + var builderBoostFactor uint64 builderBoostFactorStr := r.URL.Query().Get("builder_boost_factor") if builderBoostFactorStr != "" { - builderBoostFactor, err = strconv.ParseInt(builderBoostFactorStr, 10, 64) + builderBoostFactor, err = strconv.ParseUint(builderBoostFactorStr, 10, 64) if err != nil { return nil, beaconhttp.NewEndpointError( http.StatusBadRequest, @@ -240,7 +240,7 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( func (a *ApiHandler) produceBlock( ctx context.Context, - boostFactor int64, + boostFactor uint64, baseBlock *cltypes.BeaconBlock, baseState *state.CachingBeaconState, targetSlot uint64, @@ -307,7 +307,7 @@ func (a *ApiHandler) produceBlock( // otherwise, return a blinded block containing the builder payload header. execValue := new(big.Int).SetUint64(localExecValue) builderValue := builderHeader.BlockValue() - boostFactorBig := new(big.Int).SetInt64(boostFactor) + boostFactorBig := new(big.Int).SetUint64(boostFactor) useLocalExec := new(big.Int).Mul(execValue, big.NewInt(100)).Cmp(new(big.Int).Mul(builderValue, boostFactorBig)) >= 0 if useLocalExec { block.BeaconBody = beaconBody From 5c870634621efade807699b7a13edf32a5f6896a Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 03:08:51 +0800 Subject: [PATCH 30/83] update --- cl/beacon/builder/client.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 3c75a90f4a8..16e8aa2db2f 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -51,8 +51,9 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty _, err = httpCall[json.RawMessage](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) if err != nil { log.Warn("[mev builder] httpCall error", "err", err, "payload", string(payload)) + } else { + log.Trace("[mev builder] RegisterValidator", "url", url, "payload", string(payload)) } - log.Info("[mev builder] RegisterValidator", "url", url, "payload", string(payload)) return err } From 98de3e12ba9fe1219ef386976bb40ce5f4b94c1c Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 03:09:17 +0800 Subject: [PATCH 31/83] update --- cl/beacon/builder/client.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 16e8aa2db2f..8db466320b9 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -50,9 +50,9 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty } _, err = httpCall[json.RawMessage](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) if err != nil { - log.Warn("[mev builder] httpCall error", "err", err, "payload", string(payload)) + log.Warn("[mev builder] httpCall error", "err", err) } else { - log.Trace("[mev builder] RegisterValidator", "url", url, "payload", string(payload)) + log.Trace("[mev builder] RegisterValidator", "payload", string(payload)) } return err } From 30c29899d5787d2cf4783a4d81114da63fccea2b Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 13:11:16 +0800 Subject: [PATCH 32/83] update --- cl/beacon/handler/block_production.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 1f54c369ee8..a9a7843a774 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -345,8 +345,8 @@ func (a *ApiHandler) getBuilderPayload( if err != nil { return nil, err } - // get the parent hash - parentHash, err := baseBlock.HashSSZ() + // get the parent hash of base execution block + parentHash, err := baseBlock.Body.Eth1Data.HashSSZ() if err != nil { return nil, err } From 644fbeaa20a2934ed17688cad25ead7359234cf6 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 13:22:34 +0800 Subject: [PATCH 33/83] update --- cl/beacon/handler/block_production.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index a9a7843a774..44577326102 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -346,10 +346,7 @@ func (a *ApiHandler) getBuilderPayload( return nil, err } // get the parent hash of base execution block - parentHash, err := baseBlock.Body.Eth1Data.HashSSZ() - if err != nil { - return nil, err - } + parentHash := baseBlock.Body.Eth1Data.BlockHash header, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) if err != nil { return nil, err From 6b2ef3fc4ccf889fb646ff3145579957b5957b20 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 13:38:49 +0800 Subject: [PATCH 34/83] update --- cl/beacon/handler/block_production.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 44577326102..e07488ae4f3 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -346,7 +346,10 @@ func (a *ApiHandler) getBuilderPayload( return nil, err } // get the parent hash of base execution block - parentHash := baseBlock.Body.Eth1Data.BlockHash + parentHash := baseBlock.Body.Eth1Data.Root + baseBlockBytes, _ := json.Marshal(baseBlock) + log.Warn("[mev] base block", "baseBlock", string(baseBlockBytes)) + //parentHash := baseBlock.Body.Eth1Data.BlockHash header, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) if err != nil { return nil, err From cc334903966936fa70f98d670b7752ca398ae526 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 13:54:56 +0800 Subject: [PATCH 35/83] update --- cl/beacon/handler/block_production.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index e07488ae4f3..cf97beccae6 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -346,9 +346,9 @@ func (a *ApiHandler) getBuilderPayload( return nil, err } // get the parent hash of base execution block - parentHash := baseBlock.Body.Eth1Data.Root - baseBlockBytes, _ := json.Marshal(baseBlock) - log.Warn("[mev] base block", "baseBlock", string(baseBlockBytes)) + parentHash := baseBlock.Body.ExecutionPayload.BlockHash + //baseBlockBytes, _ := json.Marshal(baseBlock) + //log.Warn("[mev] base block", "baseBlock", string(baseBlockBytes)) //parentHash := baseBlock.Body.Eth1Data.BlockHash header, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) if err != nil { From 9963f4ef1ba2a02e776159aea942e7799adeef71 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 14:23:30 +0800 Subject: [PATCH 36/83] fix header value --- cl/beacon/builder/types.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index a0fdbdedc29..8c6cb88098f 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -1,13 +1,13 @@ package builder import ( - "encoding/binary" "encoding/json" "math/big" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/ledgerwatch/log/v3" ) type ExecutionPayloadHeader struct { @@ -16,7 +16,7 @@ type ExecutionPayloadHeader struct { Message struct { Header *cltypes.Eth1Header `json:"header"` BlobKzgCommitments *solid.ListSSZ[*cltypes.KZGCommitment] `json:"blob_kzg_commitments,omitempty"` - Value []byte `json:"value"` + Value string `json:"value"` PubKey common.Bytes48 `json:"pubkey"` } `json:"message"` Signature common.Bytes96 `json:"signature"` @@ -24,11 +24,15 @@ type ExecutionPayloadHeader struct { } func (h ExecutionPayloadHeader) BlockValue() *big.Int { - if h.Data.Message.Value == nil { + if h.Data.Message.Value == "" { return nil } - blockValue := binary.LittleEndian.Uint64(h.Data.Message.Value) - return new(big.Int).SetUint64(blockValue) + //blockValue := binary.LittleEndian.Uint64([]byte(h.Data.Message.Value)) + blockValue, ok := new(big.Int).SetString(h.Data.Message.Value, 10) + if !ok { + log.Warn("cannot parse block value", "value", h.Data.Message.Value) + } + return blockValue } type BlindedBlockResponse struct { From 744b108e2ea9bec5c0fb97e2d046934c17da19f9 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 14:34:35 +0800 Subject: [PATCH 37/83] update --- cl/beacon/handler/block_production.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index cf97beccae6..987e25b2dbb 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -309,6 +309,7 @@ func (a *ApiHandler) produceBlock( builderValue := builderHeader.BlockValue() boostFactorBig := new(big.Int).SetUint64(boostFactor) useLocalExec := new(big.Int).Mul(execValue, big.NewInt(100)).Cmp(new(big.Int).Mul(builderValue, boostFactorBig)) >= 0 + log.Info("[mev] check bid", "useLocalExec", useLocalExec, "execValue", execValue, "builderValue", builderValue, "boostFactor", boostFactor, "targetSlot", targetSlot) if useLocalExec { block.BeaconBody = beaconBody block.ExecutionValue = execValue From 76e2f66621ce52c23b9968f9898040a40f07597b Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 14:46:58 +0800 Subject: [PATCH 38/83] update --- cl/beacon/handler/block_production.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 987e25b2dbb..64d8b6ac31b 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -201,10 +201,10 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { return nil, err } - block.StateRoot, err = baseState.HashSSZ() - if err != nil { - return nil, err - } + } + block.StateRoot, err = baseState.HashSSZ() + if err != nil { + return nil, err } if block.IsBlinded() { log.Info("BlockProduction: produced a blinded block") From ddc622792b0fce445da5922f6204ddcbca02d91b Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 15:25:00 +0800 Subject: [PATCH 39/83] update --- cl/beacon/handler/block_production.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 64d8b6ac31b..1116e44d703 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -230,6 +230,8 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( var resp *beaconhttp.BeaconResponse if block.IsBlinded() { resp = newBeaconResponse(block.ToBlinded()) + bytes, _ := json.Marshal(block.ToBlinded()) + log.Info("[mev] blinded block", "block", string(bytes)) } else { resp = newBeaconResponse(block.ToExecution()) } From d58e1207bf72c3b515dea44ac6b5c2a5160d3c08 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 15:40:21 +0800 Subject: [PATCH 40/83] update --- cl/beacon/handler/block_production.go | 5 ++++- cl/cltypes/beacon_block.go | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 1116e44d703..cb635f3046c 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -214,7 +214,10 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( "proposerIndex", block.ProposerIndex, "slot", targetSlot, "state_root", block.StateRoot, - "execution_value", block.GetExecutionValue().Uint64()) + "execution_value", block.GetExecutionValue().Uint64(), + "version", block.Version(), + "blinded", block.IsBlinded(), + ) // todo: consensusValue rewardsCollector := ð2.BlockRewardsCollector{} diff --git a/cl/cltypes/beacon_block.go b/cl/cltypes/beacon_block.go index cfaa4ed8f67..3f55ca05aeb 100644 --- a/cl/cltypes/beacon_block.go +++ b/cl/cltypes/beacon_block.go @@ -232,6 +232,7 @@ func (b *BeaconBody) Blinded() (*BlindedBeaconBody, error) { ExecutionChanges: b.ExecutionChanges, BlobKzgCommitments: b.BlobKzgCommitments, Version: b.Version, + beaconCfg: b.beaconCfg, }, nil } From ebdd24c7672a3cd3631134903fb263a0f9a6e535 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:04:09 +0800 Subject: [PATCH 41/83] update --- cl/beacon/handler/block_production.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index cb635f3046c..b877f134e72 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -237,6 +237,8 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( log.Info("[mev] blinded block", "block", string(bytes)) } else { resp = newBeaconResponse(block.ToExecution()) + bytes, _ := json.Marshal(block.ToExecution()) + log.Info("[mev] execution block", "block", string(bytes)) } return resp.With("execution_payload_blinded", block.IsBlinded()). With("execution_payload_value", strconv.FormatUint(block.GetExecutionValue().Uint64(), 10)). From d59fcb12ea2f757d4a202cc625c0aa755c5dd4ae Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:16:13 +0800 Subject: [PATCH 42/83] update --- cl/beacon/handler/block_production.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index b877f134e72..0e5b54c5043 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -240,7 +240,8 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( bytes, _ := json.Marshal(block.ToExecution()) log.Info("[mev] execution block", "block", string(bytes)) } - return resp.With("execution_payload_blinded", block.IsBlinded()). + return resp.With("version", block.Version().String()). + With("execution_payload_blinded", block.IsBlinded()). With("execution_payload_value", strconv.FormatUint(block.GetExecutionValue().Uint64(), 10)). With("consensus_block_value", strconv.FormatUint(consensusValue, 10)), nil } From 2ccf7f9e729ca18614f711d0825caed33c721add Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:20:52 +0800 Subject: [PATCH 43/83] try bls_execution_changes --- cl/cltypes/blinded_beacon_block.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index 4a911c05821..4388c0539a9 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -48,7 +48,8 @@ type BlindedBeaconBody struct { // Data related to crosslink records and executing operations on the Ethereum 2.0 chain ExecutionPayload *Eth1Header `json:"execution_payload_header,omitempty"` // Withdrawals Diffs for Execution Layer - ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` + ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` + BlsExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_execution_changes"` // The commitments for beacon chain blobs // With a max of 4 per block BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments,omitempty"` From fb7897db7564c43c7a0195ec08db5e7362334284 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:31:21 +0800 Subject: [PATCH 44/83] update --- cl/cltypes/blinded_beacon_block.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index 4388c0539a9..d8012519bb1 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -48,8 +48,8 @@ type BlindedBeaconBody struct { // Data related to crosslink records and executing operations on the Ethereum 2.0 chain ExecutionPayload *Eth1Header `json:"execution_payload_header,omitempty"` // Withdrawals Diffs for Execution Layer - ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` - BlsExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_execution_changes"` + ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` + BlsToExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes"` // The commitments for beacon chain blobs // With a max of 4 per block BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments,omitempty"` From 7a2507678cc2c94ed857b72609552164be7c9cef Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:44:01 +0800 Subject: [PATCH 45/83] update --- cl/cltypes/beacon_block.go | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/cl/cltypes/beacon_block.go b/cl/cltypes/beacon_block.go index 3f55ca05aeb..6660ee519a0 100644 --- a/cl/cltypes/beacon_block.go +++ b/cl/cltypes/beacon_block.go @@ -219,20 +219,21 @@ func (b *BeaconBody) Blinded() (*BlindedBeaconBody, error) { return nil, err } return &BlindedBeaconBody{ - RandaoReveal: b.RandaoReveal, - Eth1Data: b.Eth1Data, - Graffiti: b.Graffiti, - ProposerSlashings: b.ProposerSlashings, - AttesterSlashings: b.AttesterSlashings, - Attestations: b.Attestations, - Deposits: b.Deposits, - VoluntaryExits: b.VoluntaryExits, - SyncAggregate: b.SyncAggregate, - ExecutionPayload: header, - ExecutionChanges: b.ExecutionChanges, - BlobKzgCommitments: b.BlobKzgCommitments, - Version: b.Version, - beaconCfg: b.beaconCfg, + RandaoReveal: b.RandaoReveal, + Eth1Data: b.Eth1Data, + Graffiti: b.Graffiti, + ProposerSlashings: b.ProposerSlashings, + AttesterSlashings: b.AttesterSlashings, + Attestations: b.Attestations, + Deposits: b.Deposits, + VoluntaryExits: b.VoluntaryExits, + SyncAggregate: b.SyncAggregate, + ExecutionPayload: header, + ExecutionChanges: b.ExecutionChanges, + BlsToExecutionChanges: b.ExecutionChanges, + BlobKzgCommitments: b.BlobKzgCommitments, + Version: b.Version, + beaconCfg: b.beaconCfg, }, nil } From 79459bca298502595359c2c0f2c24efc434ede78 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:48:07 +0800 Subject: [PATCH 46/83] update --- cl/cltypes/beacon_block.go | 29 ++++++++++++++--------------- cl/cltypes/blinded_beacon_block.go | 3 +-- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/cl/cltypes/beacon_block.go b/cl/cltypes/beacon_block.go index 6660ee519a0..3f55ca05aeb 100644 --- a/cl/cltypes/beacon_block.go +++ b/cl/cltypes/beacon_block.go @@ -219,21 +219,20 @@ func (b *BeaconBody) Blinded() (*BlindedBeaconBody, error) { return nil, err } return &BlindedBeaconBody{ - RandaoReveal: b.RandaoReveal, - Eth1Data: b.Eth1Data, - Graffiti: b.Graffiti, - ProposerSlashings: b.ProposerSlashings, - AttesterSlashings: b.AttesterSlashings, - Attestations: b.Attestations, - Deposits: b.Deposits, - VoluntaryExits: b.VoluntaryExits, - SyncAggregate: b.SyncAggregate, - ExecutionPayload: header, - ExecutionChanges: b.ExecutionChanges, - BlsToExecutionChanges: b.ExecutionChanges, - BlobKzgCommitments: b.BlobKzgCommitments, - Version: b.Version, - beaconCfg: b.beaconCfg, + RandaoReveal: b.RandaoReveal, + Eth1Data: b.Eth1Data, + Graffiti: b.Graffiti, + ProposerSlashings: b.ProposerSlashings, + AttesterSlashings: b.AttesterSlashings, + Attestations: b.Attestations, + Deposits: b.Deposits, + VoluntaryExits: b.VoluntaryExits, + SyncAggregate: b.SyncAggregate, + ExecutionPayload: header, + ExecutionChanges: b.ExecutionChanges, + BlobKzgCommitments: b.BlobKzgCommitments, + Version: b.Version, + beaconCfg: b.beaconCfg, }, nil } diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index d8012519bb1..c9450280992 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -48,8 +48,7 @@ type BlindedBeaconBody struct { // Data related to crosslink records and executing operations on the Ethereum 2.0 chain ExecutionPayload *Eth1Header `json:"execution_payload_header,omitempty"` // Withdrawals Diffs for Execution Layer - ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"execution_changes,omitempty"` - BlsToExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes"` + ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes,omitempty"` // The commitments for beacon chain blobs // With a max of 4 per block BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments,omitempty"` From d1dbdb0e30f2b795d3d370216102ec156afddd07 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 16:59:03 +0800 Subject: [PATCH 47/83] remove omitempty --- cl/cltypes/eth1_header.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index c49ee4d1608..78ed636e07d 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -31,9 +31,9 @@ type Eth1Header struct { // Extra fields BlockHash libcommon.Hash `json:"block_hash"` TransactionsRoot libcommon.Hash `json:"transactions_root"` - WithdrawalsRoot libcommon.Hash `json:"withdrawals_root,omitempty"` - BlobGasUsed uint64 `json:"blob_gas_used,omitempty,string"` - ExcessBlobGas uint64 `json:"excess_blob_gas,omitempty,string"` + WithdrawalsRoot libcommon.Hash `json:"withdrawals_root"` + BlobGasUsed uint64 `json:"blob_gas_used,string"` + ExcessBlobGas uint64 `json:"excess_blob_gas,string"` // internals version clparams.StateVersion } From 4668158b550b16f17057379b66d3757fc5455a17 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 17:36:10 +0800 Subject: [PATCH 48/83] more logs --- cl/beacon/builder/client.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 8db466320b9..1f5346b181a 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -140,6 +140,7 @@ func (b *builderClient) GetStatus(ctx context.Context) error { func httpCall[T any](ctx context.Context, client *http.Client, method, url string, headers map[string]string, payloadReader io.Reader) (*T, error) { request, err := http.NewRequestWithContext(ctx, method, url, payloadReader) if err != nil { + log.Warn("[mev builder] http.NewRequest failed", "err", err, "url", url, "method", method) return nil, err } request.Header.Set("Content-Type", "application/json") @@ -149,6 +150,7 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin // send request response, err := client.Do(request) if err != nil { + log.Warn("[mev builder] client.Do failed", "err", err, "url", url, "method", method) return nil, err } defer response.Body.Close() @@ -163,6 +165,7 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin // read response body bytes, err := io.ReadAll(response.Body) if err != nil { + log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) return nil, err } log.Info("[mev builder] httpCall success", "url", url, "method", method, "response", string(bytes), "statusCode", response.StatusCode) From 99d02bb175cf045c93f0cf7e31c0f3cb5ac401d8 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 17:53:36 +0800 Subject: [PATCH 49/83] more logs --- cl/beacon/builder/client.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 1f5346b181a..6766810e618 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -156,11 +156,11 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin defer response.Body.Close() if response.StatusCode < 200 || response.StatusCode > 299 { // read response body - var body []byte - if err := json.NewDecoder(response.Body).Decode(&body); err != nil { - return nil, err + bytes, err := io.ReadAll(response.Body) + if err != nil { + log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) } - return nil, fmt.Errorf("status code: %d. Response content %v", response.StatusCode, string(body)) + return nil, fmt.Errorf("status code: %d. Response content %v", response.StatusCode, string(bytes)) } // read response body bytes, err := io.ReadAll(response.Body) From ffdea5db21696e0a74bee1e56de3179216d922ae Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 18:30:17 +0800 Subject: [PATCH 50/83] try --- cl/beacon/handler/block_production.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 0e5b54c5043..86fb3a34691 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -188,20 +188,20 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( return nil, err } - if !block.IsBlinded() { - // compute the state root now - signedBeaconBlock := &cltypes.SignedBeaconBlock{ - Block: &cltypes.BeaconBlock{ - Slot: block.Slot, - ProposerIndex: block.ProposerIndex, - ParentRoot: block.ParentRoot, - Body: block.BeaconBody, - }, - } - if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { - return nil, err - } + //if !block.IsBlinded() { + // compute the state root now + signedBeaconBlock := &cltypes.SignedBeaconBlock{ + Block: &cltypes.BeaconBlock{ + Slot: block.Slot, + ProposerIndex: block.ProposerIndex, + ParentRoot: block.ParentRoot, + Body: block.BeaconBody, + }, + } + if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { + return nil, err } + //} block.StateRoot, err = baseState.HashSSZ() if err != nil { return nil, err From 61cd8bd1e477a93aadcb56e7cd39d95b7693963e Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 11 Jun 2024 19:02:49 +0800 Subject: [PATCH 51/83] logs --- cl/beacon/builder/client.go | 2 +- cl/beacon/handler/block_production.go | 25 ++++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 6766810e618..226f9b4de60 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -89,7 +89,7 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. } resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, url, headers, bytes.NewBuffer(payload)) if err != nil { - log.Warn("[mev builder] httpCall error", "err", err, "payload", string(payload)) + log.Warn("[mev builder] httpCall error", "headers", headers, "err", err, "payload", string(payload)) return nil, nil, err } diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 86fb3a34691..ee14f144055 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -188,20 +188,19 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( return nil, err } - //if !block.IsBlinded() { - // compute the state root now - signedBeaconBlock := &cltypes.SignedBeaconBlock{ - Block: &cltypes.BeaconBlock{ - Slot: block.Slot, - ProposerIndex: block.ProposerIndex, - ParentRoot: block.ParentRoot, - Body: block.BeaconBody, - }, - } - if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { - return nil, err + if !block.IsBlinded() { + signedBeaconBlock := &cltypes.SignedBeaconBlock{ + Block: &cltypes.BeaconBlock{ + Slot: block.Slot, + ProposerIndex: block.ProposerIndex, + ParentRoot: block.ParentRoot, + Body: block.BeaconBody, + }, + } + if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { + return nil, err + } } - //} block.StateRoot, err = baseState.HashSSZ() if err != nil { return nil, err From 1dfc97f2f19e97c9811233f6ba2d39387c13a893 Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 12 Jun 2024 12:08:27 +0800 Subject: [PATCH 52/83] process blinded block --- cl/beacon/handler/block_production.go | 14 +++++- cl/transition/impl/eth2/operations.go | 32 ++++++------- cl/transition/impl/funcmap/impl.go | 7 +-- cl/transition/machine/block.go | 65 ++++++++++++++++++++++++++- cl/transition/machine/helpers.go | 5 +-- cl/transition/machine/machine.go | 3 +- 6 files changed, 98 insertions(+), 28 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index ee14f144055..5e921e3c2cb 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -188,7 +188,19 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( return nil, err } - if !block.IsBlinded() { + if block.IsBlinded() { + signedBlock := &cltypes.SignedBlindedBeaconBlock{ + Block: &cltypes.BlindedBeaconBlock{ + Slot: block.Slot, + ProposerIndex: block.ProposerIndex, + ParentRoot: block.ParentRoot, + Body: block.BlindedBeaconBody, + }, + } + if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, signedBlock); err != nil { + return nil, err + } + } else { signedBeaconBlock := &cltypes.SignedBeaconBlock{ Block: &cltypes.BeaconBlock{ Slot: block.Slot, diff --git a/cl/transition/impl/eth2/operations.go b/cl/transition/impl/eth2/operations.go index 34bdcc2ca3f..f9e083668cf 100644 --- a/cl/transition/impl/eth2/operations.go +++ b/cl/transition/impl/eth2/operations.go @@ -849,14 +849,14 @@ func batchVerifyAttestations( return true, nil } -func (I *impl) ProcessBlockHeader(s abstract.BeaconState, block *cltypes.BeaconBlock) error { - if block.Slot != s.Slot() { - return fmt.Errorf("state slot: %d, not equal to block slot: %d", s.Slot(), block.Slot) +func (I *impl) ProcessBlockHeader(s abstract.BeaconState, slot, proposerIndex uint64, parentRoot common.Hash, bodyRoot [32]byte) error { + if slot != s.Slot() { + return fmt.Errorf("state slot: %d, not equal to block slot: %d", s.Slot(), slot) } - if block.Slot <= s.LatestBlockHeader().Slot { + if slot <= s.LatestBlockHeader().Slot { return fmt.Errorf( "slock slot: %d, not greater than latest block slot: %d", - block.Slot, + slot, s.LatestBlockHeader().Slot, ) } @@ -864,10 +864,10 @@ func (I *impl) ProcessBlockHeader(s abstract.BeaconState, block *cltypes.BeaconB if err != nil { return fmt.Errorf("error in GetBeaconProposerIndex: %v", err) } - if block.ProposerIndex != propInd { + if proposerIndex != propInd { return fmt.Errorf( "block proposer index: %d, does not match beacon proposer index: %d", - block.ProposerIndex, + proposerIndex, propInd, ) } @@ -876,31 +876,27 @@ func (I *impl) ProcessBlockHeader(s abstract.BeaconState, block *cltypes.BeaconB if err != nil { return fmt.Errorf("unable to hash tree root of latest block header: %v", err) } - if block.ParentRoot != latestRoot { + if parentRoot != latestRoot { return fmt.Errorf( "block parent root: %x, does not match latest block root: %x", - block.ParentRoot, + parentRoot, latestRoot, ) } - bodyRoot, err := block.Body.HashSSZ() - if err != nil { - return fmt.Errorf("unable to hash tree root of block body: %v", err) - } s.SetLatestBlockHeader(&cltypes.BeaconBlockHeader{ - Slot: block.Slot, - ProposerIndex: block.ProposerIndex, - ParentRoot: block.ParentRoot, + Slot: slot, + ProposerIndex: proposerIndex, + ParentRoot: parentRoot, BodyRoot: bodyRoot, }) - proposer, err := s.ValidatorForValidatorIndex(int(block.ProposerIndex)) + proposer, err := s.ValidatorForValidatorIndex(int(proposerIndex)) if err != nil { return err } if proposer.Slashed() { - return fmt.Errorf("proposer: %d is slashed", block.ProposerIndex) + return fmt.Errorf("proposer: %d is slashed", proposerIndex) } return nil } diff --git a/cl/transition/impl/funcmap/impl.go b/cl/transition/impl/funcmap/impl.go index 9dfad4b82af..acd14eebc19 100644 --- a/cl/transition/impl/funcmap/impl.go +++ b/cl/transition/impl/funcmap/impl.go @@ -1,6 +1,7 @@ package funcmap import ( + "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/abstract" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" @@ -13,7 +14,7 @@ type Impl struct { FnVerifyBlockSignature func(s abstract.BeaconState, block *cltypes.SignedBeaconBlock) error FnVerifyTransition func(s abstract.BeaconState, block *cltypes.BeaconBlock) error FnProcessSlots func(s abstract.BeaconState, slot uint64) error - FnProcessBlockHeader func(s abstract.BeaconState, block *cltypes.BeaconBlock) error + FnProcessBlockHeader func(s abstract.BeaconState, slot, proposerIndex uint64, parentRoot common.Hash, bodyRoot [32]byte) error FnProcessWithdrawals func(s abstract.BeaconState, withdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error FnProcessExecutionPayload func(s abstract.BeaconState, payload *cltypes.Eth1Block) error FnProcessRandao func(s abstract.BeaconState, randao [96]byte, proposerIndex uint64) error @@ -35,8 +36,8 @@ func (i Impl) VerifyTransition(s abstract.BeaconState, block *cltypes.BeaconBloc return i.FnVerifyTransition(s, block) } -func (i Impl) ProcessBlockHeader(s abstract.BeaconState, block *cltypes.BeaconBlock) error { - return i.FnProcessBlockHeader(s, block) +func (i Impl) ProcessBlockHeader(s abstract.BeaconState, slot, proposerIndex uint64, parentRoot common.Hash, bodyRoot [32]byte) error { + return i.FnProcessBlockHeader(s, slot, proposerIndex, parentRoot, bodyRoot) } func (i Impl) ProcessWithdrawals(s abstract.BeaconState, withdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error { diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 89593f6e614..b20ba33448e 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -22,11 +22,15 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty } h := metrics.NewHistTimer("beacon_process_block") // Process the block header. - if err := impl.ProcessBlockHeader(s, block); err != nil { + bodyRoot, err := block.Body.HashSSZ() + if err != nil { + return fmt.Errorf("processBlock: failed to hash block body: %v", err) + } + if err := impl.ProcessBlockHeader(s, block.Slot, block.ProposerIndex, block.ParentRoot, bodyRoot); err != nil { return fmt.Errorf("processBlock: failed to process block header: %v", err) } // Process execution payload if enabled. - if version >= clparams.BellatrixVersion && executionEnabled(s, block.Body.ExecutionPayload) { + if version >= clparams.BellatrixVersion && executionEnabled(s, block.Body.ExecutionPayload.BlockHash) { if s.Version() >= clparams.CapellaVersion { // Process withdrawals in the execution payload. if err := impl.ProcessWithdrawals(s, block.Body.ExecutionPayload.Withdrawals); err != nil { @@ -61,6 +65,63 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty return nil } +func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock) error { + var ( + block = signedBlock.Block + version = s.Version() + // Process the execution payload. Note that the execution payload does not contain txs and withdrawals. + partialExecutionBody = block.Body.Full(nil, nil) + partialExecutionPayload = partialExecutionBody.ExecutionPayload + ) + + // Check the state version is correct. + if signedBlock.Version() != version { + return fmt.Errorf("processBlindedBlock: wrong state version for block at slot %d", block.Slot) + } + h := metrics.NewHistTimer("beacon_process_blinded_block") + bodyRoot, err := block.Body.HashSSZ() + if err != nil { + return fmt.Errorf("processBlindedBlock: failed to hash block body: %v", err) + } + if err := impl.ProcessBlockHeader(s, block.Slot, block.ProposerIndex, block.ParentRoot, bodyRoot); err != nil { + return fmt.Errorf("processBlindedBlock: failed to process block header: %v", err) + } + // Process execution payload if enabled. + if version >= clparams.BellatrixVersion && executionEnabled(s, block.Body.ExecutionPayload.BlockHash) { + /*if s.Version() >= clparams.CapellaVersion { + // Process withdrawals in the execution payload. + if err := impl.ProcessWithdrawals(s, block.Body.ExecutionPayload.Withdrawals); err != nil { + return fmt.Errorf("processBlock: failed to process withdrawals: %v", err) + } + }*/ + if err := impl.ProcessExecutionPayload(s, partialExecutionPayload); err != nil { + return fmt.Errorf("processBlock: failed to process execution payload: %v", err) + } + } + + // Process RANDAO reveal. + if err := impl.ProcessRandao(s, block.Body.RandaoReveal, block.ProposerIndex); err != nil { + return fmt.Errorf("processBlock: failed to process RANDAO reveal: %v", err) + } + // Process Eth1 data. + if err := impl.ProcessEth1Data(s, block.Body.Eth1Data); err != nil { + return fmt.Errorf("processBlock: failed to process Eth1 data: %v", err) + } + // Process block body operations. + if err := ProcessOperations(impl, s, partialExecutionBody); err != nil { + return fmt.Errorf("processBlock: failed to process block body operations: %v", err) + } + // Process sync aggregate in case of Altair version. + if version >= clparams.AltairVersion { + if err := impl.ProcessSyncAggregate(s, block.Body.SyncAggregate); err != nil { + return fmt.Errorf("processBlock: failed to process sync aggregate: %v", err) + } + } + + h.PutSince() + return nil +} + // ProcessOperations is called by ProcessBlock and prcesses the block body operations func ProcessOperations(impl BlockOperationProcessor, s abstract.BeaconState, blockBody *cltypes.BeaconBody) error { if blockBody.Deposits.Len() != int(maximumDeposits(s)) { diff --git a/cl/transition/machine/helpers.go b/cl/transition/machine/helpers.go index b3a45c36c2b..a90fd69d220 100644 --- a/cl/transition/machine/helpers.go +++ b/cl/transition/machine/helpers.go @@ -3,10 +3,9 @@ package machine import ( "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/abstract" - "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/phase1/core/state" ) -func executionEnabled(s abstract.BeaconState, payload *cltypes.Eth1Block) bool { - return (!state.IsMergeTransitionComplete(s) && payload.BlockHash != common.Hash{}) || state.IsMergeTransitionComplete(s) +func executionEnabled(s abstract.BeaconState, blockHash common.Hash) bool { + return (!state.IsMergeTransitionComplete(s) && blockHash != common.Hash{}) || state.IsMergeTransitionComplete(s) } diff --git a/cl/transition/machine/machine.go b/cl/transition/machine/machine.go index 509235212a4..3b2db07efee 100644 --- a/cl/transition/machine/machine.go +++ b/cl/transition/machine/machine.go @@ -2,6 +2,7 @@ package machine import ( + "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/abstract" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" @@ -28,7 +29,7 @@ type SlotProcessor interface { } type BlockHeaderProcessor interface { - ProcessBlockHeader(s abstract.BeaconState, block *cltypes.BeaconBlock) error + ProcessBlockHeader(s abstract.BeaconState, slot, proposerIndex uint64, parentRoot common.Hash, bodyRoot [32]byte) error ProcessWithdrawals(s abstract.BeaconState, withdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error ProcessExecutionPayload(s abstract.BeaconState, payload *cltypes.Eth1Block) error ProcessRandao(s abstract.BeaconState, randao [96]byte, proposerIndex uint64) error From 423a264f7cdbf0c462b9676eb053eb53efa240df Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 12 Jun 2024 13:08:49 +0800 Subject: [PATCH 53/83] remove version --- cl/beacon/handler/block_production.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 5e921e3c2cb..8734a8d647b 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -251,8 +251,7 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( bytes, _ := json.Marshal(block.ToExecution()) log.Info("[mev] execution block", "block", string(bytes)) } - return resp.With("version", block.Version().String()). - With("execution_payload_blinded", block.IsBlinded()). + return resp.With("execution_payload_blinded", block.IsBlinded()). With("execution_payload_value", strconv.FormatUint(block.GetExecutionValue().Uint64(), 10)). With("consensus_block_value", strconv.FormatUint(consensusValue, 10)), nil } From dc6b7ea2cca54f823fccf0330318330aa9dd7750 Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 12 Jun 2024 13:48:24 +0800 Subject: [PATCH 54/83] fix --- cl/transition/impl/eth2/operations.go | 14 +++++--------- cl/transition/impl/funcmap/impl.go | 6 +++--- cl/transition/machine/block.go | 17 +++++++++++++---- cl/transition/machine/machine.go | 2 +- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/cl/transition/impl/eth2/operations.go b/cl/transition/impl/eth2/operations.go index f9e083668cf..5bf71f9c8d0 100644 --- a/cl/transition/impl/eth2/operations.go +++ b/cl/transition/impl/eth2/operations.go @@ -341,26 +341,22 @@ func (I *impl) ProcessWithdrawals( } // ProcessExecutionPayload sets the latest payload header accordinly. -func (I *impl) ProcessExecutionPayload(s abstract.BeaconState, payload *cltypes.Eth1Block) error { +func (I *impl) ProcessExecutionPayload(s abstract.BeaconState, parentHash, prevRandao common.Hash, time uint64, payloadHeader *cltypes.Eth1Header) error { if state.IsMergeTransitionComplete(s) { - if payload.ParentHash != s.LatestExecutionPayloadHeader().BlockHash { + if parentHash != s.LatestExecutionPayloadHeader().BlockHash { return fmt.Errorf("ProcessExecutionPayload: invalid eth1 chain. mismatching parent") } } - if payload.PrevRandao != s.GetRandaoMixes(state.Epoch(s)) { + if prevRandao != s.GetRandaoMixes(state.Epoch(s)) { return fmt.Errorf( "ProcessExecutionPayload: randao mix mismatches with mix digest, expected %x, got %x", s.GetRandaoMixes(state.Epoch(s)), - payload.PrevRandao, + prevRandao, ) } - if payload.Time != state.ComputeTimestampAtSlot(s, s.Slot()) { + if time != state.ComputeTimestampAtSlot(s, s.Slot()) { return fmt.Errorf("ProcessExecutionPayload: invalid Eth1 timestamp") } - payloadHeader, err := payload.PayloadHeader() - if err != nil { - return err - } s.SetLatestExecutionPayloadHeader(payloadHeader) return nil } diff --git a/cl/transition/impl/funcmap/impl.go b/cl/transition/impl/funcmap/impl.go index acd14eebc19..0ef44875cf9 100644 --- a/cl/transition/impl/funcmap/impl.go +++ b/cl/transition/impl/funcmap/impl.go @@ -16,7 +16,7 @@ type Impl struct { FnProcessSlots func(s abstract.BeaconState, slot uint64) error FnProcessBlockHeader func(s abstract.BeaconState, slot, proposerIndex uint64, parentRoot common.Hash, bodyRoot [32]byte) error FnProcessWithdrawals func(s abstract.BeaconState, withdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error - FnProcessExecutionPayload func(s abstract.BeaconState, payload *cltypes.Eth1Block) error + FnProcessExecutionPayload func(s abstract.BeaconState, parentHash, prevRandao common.Hash, time uint64, payloadHeader *cltypes.Eth1Header) error FnProcessRandao func(s abstract.BeaconState, randao [96]byte, proposerIndex uint64) error FnProcessEth1Data func(state abstract.BeaconState, eth1Data *cltypes.Eth1Data) error FnProcessSyncAggregate func(s abstract.BeaconState, sync *cltypes.SyncAggregate) error @@ -44,8 +44,8 @@ func (i Impl) ProcessWithdrawals(s abstract.BeaconState, withdrawals *solid.List return i.FnProcessWithdrawals(s, withdrawals) } -func (i Impl) ProcessExecutionPayload(s abstract.BeaconState, payload *cltypes.Eth1Block) error { - return i.FnProcessExecutionPayload(s, payload) +func (i Impl) ProcessExecutionPayload(s abstract.BeaconState, parentHash, prevRandao common.Hash, time uint64, payloadHeader *cltypes.Eth1Header) error { + return i.FnProcessExecutionPayload(s, parentHash, prevRandao, time, payloadHeader) } func (i Impl) ProcessRandao(s abstract.BeaconState, randao [96]byte, proposerIndex uint64) error { diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index b20ba33448e..4434885f056 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -38,7 +38,13 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty } } // Process the execution payload. - if err := impl.ProcessExecutionPayload(s, block.Body.ExecutionPayload); err != nil { + header, err := block.Body.ExecutionPayload.PayloadHeader() + if err != nil { + return fmt.Errorf("processBlock: failed to extract execution payload header: %v", err) + } + if err := impl.ProcessExecutionPayload(s, block.Body.ExecutionPayload.ParentHash, + block.Body.ExecutionPayload.PrevRandao, + block.Body.ExecutionPayload.Time, header); err != nil { return fmt.Errorf("processBlock: failed to process execution payload: %v", err) } } @@ -70,8 +76,7 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc block = signedBlock.Block version = s.Version() // Process the execution payload. Note that the execution payload does not contain txs and withdrawals. - partialExecutionBody = block.Body.Full(nil, nil) - partialExecutionPayload = partialExecutionBody.ExecutionPayload + partialExecutionBody = block.Body.Full(nil, nil) ) // Check the state version is correct. @@ -94,7 +99,11 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc return fmt.Errorf("processBlock: failed to process withdrawals: %v", err) } }*/ - if err := impl.ProcessExecutionPayload(s, partialExecutionPayload); err != nil { + parentHash := block.Body.ExecutionPayload.ParentHash + prevRandao := block.Body.ExecutionPayload.PrevRandao + time := block.Body.ExecutionPayload.Time + header := block.Body.ExecutionPayload + if err := impl.ProcessExecutionPayload(s, parentHash, prevRandao, time, header); err != nil { return fmt.Errorf("processBlock: failed to process execution payload: %v", err) } } diff --git a/cl/transition/machine/machine.go b/cl/transition/machine/machine.go index 3b2db07efee..18d1ed72b76 100644 --- a/cl/transition/machine/machine.go +++ b/cl/transition/machine/machine.go @@ -31,7 +31,7 @@ type SlotProcessor interface { type BlockHeaderProcessor interface { ProcessBlockHeader(s abstract.BeaconState, slot, proposerIndex uint64, parentRoot common.Hash, bodyRoot [32]byte) error ProcessWithdrawals(s abstract.BeaconState, withdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error - ProcessExecutionPayload(s abstract.BeaconState, payload *cltypes.Eth1Block) error + ProcessExecutionPayload(s abstract.BeaconState, parentHash, prevRandao common.Hash, time uint64, payloadHeader *cltypes.Eth1Header) error ProcessRandao(s abstract.BeaconState, randao [96]byte, proposerIndex uint64) error ProcessEth1Data(state abstract.BeaconState, eth1Data *cltypes.Eth1Data) error ProcessSyncAggregate(s abstract.BeaconState, sync *cltypes.SyncAggregate) error From 77ba5a7d410a1f01ab0204d1310eb7909e9ad09a Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 12 Jun 2024 16:24:04 +0800 Subject: [PATCH 55/83] expected withdrawals --- cl/beacon/handler/block_production.go | 3 ++- cl/cltypes/block_production.go | 3 +++ cl/transition/machine/block.go | 8 ++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 8734a8d647b..532892850d4 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -197,7 +197,7 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( Body: block.BlindedBeaconBody, }, } - if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, signedBlock); err != nil { + if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, signedBlock, block.ExpectedWithdrawals); err != nil { return nil, err } } else { @@ -341,6 +341,7 @@ func (a *ApiHandler) produceBlock( SetHeader(builderHeader.Data.Message.Header). SetBlobKzgCommitments(builderHeader.Data.Message.BlobKzgCommitments) block.ExecutionValue = builderValue + block.ExpectedWithdrawals = beaconBody.ExecutionPayload.Withdrawals } return block, nil } diff --git a/cl/cltypes/block_production.go b/cl/cltypes/block_production.go index 767d82215cd..f3531f5b738 100644 --- a/cl/cltypes/block_production.go +++ b/cl/cltypes/block_production.go @@ -6,6 +6,7 @@ import ( libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/clparams" + "github.com/ledgerwatch/erigon/cl/cltypes/solid" ) type BlindOrExecutionBeaconBlock struct { @@ -17,6 +18,8 @@ type BlindOrExecutionBeaconBlock struct { BeaconBody *BeaconBody `json:"-"` BlindedBeaconBody *BlindedBeaconBody `json:"-"` ExecutionValue *big.Int `json:"-"` + // ExpectedWithdrawals is only used as this block is representing a blinded block + ExpectedWithdrawals *solid.ListSSZ[*Withdrawal] `json:"-"` } func (b *BlindOrExecutionBeaconBlock) ToBlinded() *BlindedBeaconBlock { diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 4434885f056..e84ad2def8d 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -71,7 +71,7 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty return nil } -func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock) error { +func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock, expectWithdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error { var ( block = signedBlock.Block version = s.Version() @@ -93,12 +93,12 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc } // Process execution payload if enabled. if version >= clparams.BellatrixVersion && executionEnabled(s, block.Body.ExecutionPayload.BlockHash) { - /*if s.Version() >= clparams.CapellaVersion { + if s.Version() >= clparams.CapellaVersion { // Process withdrawals in the execution payload. - if err := impl.ProcessWithdrawals(s, block.Body.ExecutionPayload.Withdrawals); err != nil { + if err := impl.ProcessWithdrawals(s, expectWithdrawals); err != nil { return fmt.Errorf("processBlock: failed to process withdrawals: %v", err) } - }*/ + } parentHash := block.Body.ExecutionPayload.ParentHash prevRandao := block.Body.ExecutionPayload.PrevRandao time := block.Body.ExecutionPayload.Time From c11502c10b31b3f6e2164bff74c2be01669b0d11 Mon Sep 17 00:00:00 2001 From: kewei Date: Wed, 12 Jun 2024 22:50:41 +0800 Subject: [PATCH 56/83] update --- cl/transition/machine/block.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index e84ad2def8d..7be5fee3366 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -6,6 +6,7 @@ import ( "github.com/ledgerwatch/erigon-lib/metrics" "github.com/ledgerwatch/erigon/cl/abstract" + "github.com/ledgerwatch/erigon/cl/phase1/core/state" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" @@ -71,7 +72,7 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty return nil } -func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock, expectWithdrawals *solid.ListSSZ[*cltypes.Withdrawal]) error { +func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock, _ *solid.ListSSZ[*cltypes.Withdrawal]) error { var ( block = signedBlock.Block version = s.Version() @@ -95,6 +96,11 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc if version >= clparams.BellatrixVersion && executionEnabled(s, block.Body.ExecutionPayload.BlockHash) { if s.Version() >= clparams.CapellaVersion { // Process withdrawals in the execution payload. + expect := state.ExpectedWithdrawals(s, state.Epoch(s)) + expectWithdrawals := &solid.ListSSZ[*cltypes.Withdrawal]{} + for _, w := range expect { + expectWithdrawals.Append(w) + } if err := impl.ProcessWithdrawals(s, expectWithdrawals); err != nil { return fmt.Errorf("processBlock: failed to process withdrawals: %v", err) } From 9cf6ea55d5661767b6663407543810fbd5b80ca6 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 12:19:37 +0800 Subject: [PATCH 57/83] update --- cl/beacon/handler/block_production.go | 3 +-- cl/cltypes/block_production.go | 3 --- cl/transition/machine/block.go | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 532892850d4..8734a8d647b 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -197,7 +197,7 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( Body: block.BlindedBeaconBody, }, } - if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, signedBlock, block.ExpectedWithdrawals); err != nil { + if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, signedBlock); err != nil { return nil, err } } else { @@ -341,7 +341,6 @@ func (a *ApiHandler) produceBlock( SetHeader(builderHeader.Data.Message.Header). SetBlobKzgCommitments(builderHeader.Data.Message.BlobKzgCommitments) block.ExecutionValue = builderValue - block.ExpectedWithdrawals = beaconBody.ExecutionPayload.Withdrawals } return block, nil } diff --git a/cl/cltypes/block_production.go b/cl/cltypes/block_production.go index f3531f5b738..767d82215cd 100644 --- a/cl/cltypes/block_production.go +++ b/cl/cltypes/block_production.go @@ -6,7 +6,6 @@ import ( libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes/solid" ) type BlindOrExecutionBeaconBlock struct { @@ -18,8 +17,6 @@ type BlindOrExecutionBeaconBlock struct { BeaconBody *BeaconBody `json:"-"` BlindedBeaconBody *BlindedBeaconBody `json:"-"` ExecutionValue *big.Int `json:"-"` - // ExpectedWithdrawals is only used as this block is representing a blinded block - ExpectedWithdrawals *solid.ListSSZ[*Withdrawal] `json:"-"` } func (b *BlindOrExecutionBeaconBlock) ToBlinded() *BlindedBeaconBlock { diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 7be5fee3366..34af6ece90c 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -72,7 +72,7 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty return nil } -func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock, _ *solid.ListSSZ[*cltypes.Withdrawal]) error { +func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock) error { var ( block = signedBlock.Block version = s.Version() From 3672e963adb49a62c764ab466904ee3b35074ca2 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 17:38:15 +0800 Subject: [PATCH 58/83] update --- cl/beacon/handler/block_production.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 8734a8d647b..ec0ad918342 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -243,13 +243,11 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( var resp *beaconhttp.BeaconResponse if block.IsBlinded() { - resp = newBeaconResponse(block.ToBlinded()) + resp = newBeaconResponse(block.ToBlinded()).With("version", block.Version().String()) bytes, _ := json.Marshal(block.ToBlinded()) log.Info("[mev] blinded block", "block", string(bytes)) } else { resp = newBeaconResponse(block.ToExecution()) - bytes, _ := json.Marshal(block.ToExecution()) - log.Info("[mev] execution block", "block", string(bytes)) } return resp.With("execution_payload_blinded", block.IsBlinded()). With("execution_payload_value", strconv.FormatUint(block.GetExecutionValue().Uint64(), 10)). From 6769c79a3889446fb459149ddd2a951e8ddea95a Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 17:52:03 +0800 Subject: [PATCH 59/83] update --- cl/cltypes/eth1_header.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 78ed636e07d..0a86c35309d 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -148,9 +148,9 @@ func (h *Eth1Header) MarshalJSON() ([]byte, error) { BaseFeePerGas string `json:"base_fee_per_gas"` BlockHash libcommon.Hash `json:"block_hash"` TransactionsRoot libcommon.Hash `json:"transactions_root"` - WithdrawalsRoot libcommon.Hash `json:"withdrawals_root,omitempty"` - BlobGasUsed uint64 `json:"blob_gas_used,omitempty,string"` - ExcessBlobGas uint64 `json:"excess_blob_gas,omitempty,string"` + WithdrawalsRoot libcommon.Hash `json:"withdrawals_root"` + BlobGasUsed uint64 `json:"blob_gas_used,string"` + ExcessBlobGas uint64 `json:"excess_blob_gas,string"` }{ ParentHash: h.ParentHash, FeeRecipient: h.FeeRecipient, @@ -188,9 +188,9 @@ func (h *Eth1Header) UnmarshalJSON(data []byte) error { BaseFeePerGas string `json:"base_fee_per_gas"` BlockHash libcommon.Hash `json:"block_hash"` TransactionsRoot libcommon.Hash `json:"transactions_root"` - WithdrawalsRoot libcommon.Hash `json:"withdrawals_root,omitempty"` - BlobGasUsed uint64 `json:"blob_gas_used,omitempty,string"` - ExcessBlobGas uint64 `json:"excess_blob_gas,omitempty,string"` + WithdrawalsRoot libcommon.Hash `json:"withdrawals_root"` + BlobGasUsed uint64 `json:"blob_gas_used,string"` + ExcessBlobGas uint64 `json:"excess_blob_gas,string"` } if err := json.Unmarshal(data, &aux); err != nil { return err From 0d898a8fb047a2b19c6663865fb32d69e3a221d9 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 17:53:05 +0800 Subject: [PATCH 60/83] update --- cl/cltypes/blinded_beacon_block.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index c9450280992..d145e6b19d1 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -48,10 +48,10 @@ type BlindedBeaconBody struct { // Data related to crosslink records and executing operations on the Ethereum 2.0 chain ExecutionPayload *Eth1Header `json:"execution_payload_header,omitempty"` // Withdrawals Diffs for Execution Layer - ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes,omitempty"` + ExecutionChanges *solid.ListSSZ[*SignedBLSToExecutionChange] `json:"bls_to_execution_changes"` // The commitments for beacon chain blobs // With a max of 4 per block - BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments,omitempty"` + BlobKzgCommitments *solid.ListSSZ[*KZGCommitment] `json:"blob_kzg_commitments"` // The version of the beacon chain Version clparams.StateVersion `json:"-"` beaconCfg *clparams.BeaconChainConfig From 4ca1f5ace2e3f8a8cf94585fc5ad398097d6646e Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 19:01:48 +0800 Subject: [PATCH 61/83] header version --- cl/beacon/builder/types.go | 2 +- cl/beacon/handler/block_production.go | 10 ++++++---- cl/cltypes/eth1_header.go | 6 ++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index 8c6cb88098f..1a369526be3 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -15,7 +15,7 @@ type ExecutionPayloadHeader struct { Data struct { Message struct { Header *cltypes.Eth1Header `json:"header"` - BlobKzgCommitments *solid.ListSSZ[*cltypes.KZGCommitment] `json:"blob_kzg_commitments,omitempty"` + BlobKzgCommitments *solid.ListSSZ[*cltypes.KZGCommitment] `json:"blob_kzg_commitments"` Value string `json:"value"` PubKey common.Bytes48 `json:"pubkey"` } `json:"message"` diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index ec0ad918342..0422ac829de 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -364,12 +364,11 @@ func (a *ApiHandler) getBuilderPayload( } // get the parent hash of base execution block parentHash := baseBlock.Body.ExecutionPayload.BlockHash - //baseBlockBytes, _ := json.Marshal(baseBlock) - //log.Warn("[mev] base block", "baseBlock", string(baseBlockBytes)) - //parentHash := baseBlock.Body.Eth1Data.BlockHash header, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) if err != nil { return nil, err + } else if header == nil { + return nil, fmt.Errorf("nil header") } // check the version @@ -377,7 +376,10 @@ func (a *ApiHandler) getBuilderPayload( if !strings.EqualFold(header.Version, curVersion) { return nil, fmt.Errorf("invalid version %s, expected %s", header.Version, curVersion) } - + if header.Data.Message.Header == nil { + return nil, fmt.Errorf("nil header") + } + header.Data.Message.Header.SetVersion(baseState.Version()) // check kzg commitments if header != nil && baseState.Version() >= clparams.DenebVersion { if header.Data.Message.BlobKzgCommitments.Len() >= cltypes.MaxBlobsCommittmentsPerBlock { diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 0a86c35309d..7f09529312f 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -46,6 +46,12 @@ func NewEth1Header(version clparams.StateVersion) *Eth1Header { } } +func (e *Eth1Header) SetVersion(v clparams.StateVersion) { + if e != nil { + e.version = v + } +} + func (e *Eth1Header) Copy() *Eth1Header { copied := *e copied.Extra = solid.NewExtraData() From 50a9ee8a96ed204c14b080b2caae84b07d207ed9 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 21:45:28 +0800 Subject: [PATCH 62/83] update --- cl/transition/machine/block.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 34af6ece90c..4d0fbd3a81a 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -7,6 +7,7 @@ import ( "github.com/ledgerwatch/erigon-lib/metrics" "github.com/ledgerwatch/erigon/cl/abstract" "github.com/ledgerwatch/erigon/cl/phase1/core/state" + "github.com/ledgerwatch/log/v3" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" @@ -79,6 +80,7 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc // Process the execution payload. Note that the execution payload does not contain txs and withdrawals. partialExecutionBody = block.Body.Full(nil, nil) ) + log.Info("processBlindedBlock", "header", block.Body.ExecutionPayload) // Check the state version is correct. if signedBlock.Version() != version { From 44683321552fd934f48c5892178e7e413b26fce7 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 13 Jun 2024 21:47:38 +0800 Subject: [PATCH 63/83] update --- cl/beacon/handler/block_production.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 0422ac829de..da2573921e0 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -376,10 +376,9 @@ func (a *ApiHandler) getBuilderPayload( if !strings.EqualFold(header.Version, curVersion) { return nil, fmt.Errorf("invalid version %s, expected %s", header.Version, curVersion) } - if header.Data.Message.Header == nil { - return nil, fmt.Errorf("nil header") + if ethHeader := header.Data.Message.Header; ethHeader != nil { + ethHeader.SetVersion(baseState.Version()) } - header.Data.Message.Header.SetVersion(baseState.Version()) // check kzg commitments if header != nil && baseState.Version() >= clparams.DenebVersion { if header.Data.Message.BlobKzgCommitments.Len() >= cltypes.MaxBlobsCommittmentsPerBlock { From 05825a00e1e05e51c61bacf2df751366373d369b Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 14 Jun 2024 00:43:07 +0800 Subject: [PATCH 64/83] test --- cl/cltypes/eth1_header.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 7f09529312f..60985bc8126 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -12,6 +12,7 @@ import ( "github.com/ledgerwatch/erigon/cl/merkle_tree" ssz2 "github.com/ledgerwatch/erigon/cl/ssz" "github.com/ledgerwatch/erigon/core/types" + "github.com/ledgerwatch/log/v3" ) // ETH1Header represents the ethereum 1 header structure CL-side. @@ -121,6 +122,7 @@ func (h *Eth1Header) HashSSZ() ([32]byte, error) { } func (h *Eth1Header) getSchema() []interface{} { + log.Info("[Eth1Header] getSchema", "version", h.version) s := []interface{}{ h.ParentHash[:], h.FeeRecipient[:], h.StateRoot[:], h.ReceiptsRoot[:], h.LogsBloom[:], h.PrevRandao[:], &h.BlockNumber, &h.GasLimit, &h.GasUsed, &h.Time, h.Extra, h.BaseFeePerGas[:], h.BlockHash[:], h.TransactionsRoot[:], From 3522ce13238560aecaa9dd825352a1ee0bbf9d72 Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 14 Jun 2024 00:53:00 +0800 Subject: [PATCH 65/83] remove logs --- cl/cltypes/eth1_header.go | 2 -- cl/transition/machine/block.go | 2 -- 2 files changed, 4 deletions(-) diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 60985bc8126..7f09529312f 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -12,7 +12,6 @@ import ( "github.com/ledgerwatch/erigon/cl/merkle_tree" ssz2 "github.com/ledgerwatch/erigon/cl/ssz" "github.com/ledgerwatch/erigon/core/types" - "github.com/ledgerwatch/log/v3" ) // ETH1Header represents the ethereum 1 header structure CL-side. @@ -122,7 +121,6 @@ func (h *Eth1Header) HashSSZ() ([32]byte, error) { } func (h *Eth1Header) getSchema() []interface{} { - log.Info("[Eth1Header] getSchema", "version", h.version) s := []interface{}{ h.ParentHash[:], h.FeeRecipient[:], h.StateRoot[:], h.ReceiptsRoot[:], h.LogsBloom[:], h.PrevRandao[:], &h.BlockNumber, &h.GasLimit, &h.GasUsed, &h.Time, h.Extra, h.BaseFeePerGas[:], h.BlockHash[:], h.TransactionsRoot[:], diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 4d0fbd3a81a..34af6ece90c 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -7,7 +7,6 @@ import ( "github.com/ledgerwatch/erigon-lib/metrics" "github.com/ledgerwatch/erigon/cl/abstract" "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/log/v3" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" @@ -80,7 +79,6 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc // Process the execution payload. Note that the execution payload does not contain txs and withdrawals. partialExecutionBody = block.Body.Full(nil, nil) ) - log.Info("processBlindedBlock", "header", block.Body.ExecutionPayload) // Check the state version is correct. if signedBlock.Version() != version { From e38c36c71938d628d1159f85430f6d1e96ae3925 Mon Sep 17 00:00:00 2001 From: kewei Date: Fri, 14 Jun 2024 14:43:33 +0800 Subject: [PATCH 66/83] update --- cl/cltypes/blinded_beacon_block.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index d145e6b19d1..c7a0b7a9687 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -328,7 +328,7 @@ func (b *SignedBlindedBeaconBlock) Unblind(blockPayload *Eth1Block) (*SignedBeac return nil, fmt.Errorf("nil block") } // check root - blindedRoot := b.Block.StateRoot + blindedRoot := b.Block.Body.ExecutionPayload.StateRoot payloadRoot := blockPayload.StateRoot if blindedRoot != payloadRoot { return nil, fmt.Errorf("root mismatch: %s != %s", blindedRoot, payloadRoot) From d7b9d07898f124bbbd5506594e48f6465d28553a Mon Sep 17 00:00:00 2001 From: kewei Date: Sat, 15 Jun 2024 18:58:34 +0800 Subject: [PATCH 67/83] experiemnt --- cl/cltypes/solid/list_ssz.go | 8 +++++++- cl/transition/machine/block.go | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cl/cltypes/solid/list_ssz.go b/cl/cltypes/solid/list_ssz.go index 30af90a16a3..38c3cebd1f5 100644 --- a/cl/cltypes/solid/list_ssz.go +++ b/cl/cltypes/solid/list_ssz.go @@ -50,7 +50,12 @@ func (l ListSSZ[T]) MarshalJSON() ([]byte, error) { } func (l *ListSSZ[T]) UnmarshalJSON(data []byte) error { - return json.Unmarshal(data, &l.list) + if err := json.Unmarshal(data, &l.list); err != nil { + return err + } + l.root = libcommon.Hash{} + l.limit = len(l.list) + return nil } func NewDynamicListSSZFromList[T encodableHashableSSZ](list []T, limit int) *ListSSZ[T] { @@ -152,6 +157,7 @@ func (l *ListSSZ[T]) Len() int { func (l *ListSSZ[T]) Append(obj T) { l.list = append(l.list, obj) + l.limit++ l.root = libcommon.Hash{} } diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 34af6ece90c..a65cd97425a 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -97,7 +97,7 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc if s.Version() >= clparams.CapellaVersion { // Process withdrawals in the execution payload. expect := state.ExpectedWithdrawals(s, state.Epoch(s)) - expectWithdrawals := &solid.ListSSZ[*cltypes.Withdrawal]{} + expectWithdrawals := solid.NewDynamicListSSZ[*cltypes.Withdrawal](int(s.BeaconConfig().MaxWithdrawalsPerPayload)) for _, w := range expect { expectWithdrawals.Append(w) } From 9e9872b3d2768949c8e3cb0f726dab35d45ec0ce Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 02:16:24 +0800 Subject: [PATCH 68/83] update --- cl/cltypes/eth1_header.go | 6 ++++-- cl/cltypes/solid/list_ssz.go | 8 +------- cl/transition/machine/block.go | 6 +++--- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 7f09529312f..1f86ded46da 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -11,6 +11,7 @@ import ( "github.com/ledgerwatch/erigon/cl/cltypes/solid" "github.com/ledgerwatch/erigon/cl/merkle_tree" ssz2 "github.com/ledgerwatch/erigon/cl/ssz" + "github.com/ledgerwatch/erigon/cl/utils" "github.com/ledgerwatch/erigon/core/types" ) @@ -169,7 +170,7 @@ func (h *Eth1Header) MarshalJSON() ([]byte, error) { GasUsed: h.GasUsed, Time: h.Time, Extra: h.Extra, - BaseFeePerGas: uint256.NewInt(0).SetBytes32(h.BaseFeePerGas[:]).Dec(), + BaseFeePerGas: uint256.NewInt(0).SetBytes32(utils.ReverseOfByteSlice(h.BaseFeePerGas[:])).Dec(), BlockHash: h.BlockHash, TransactionsRoot: h.TransactionsRoot, WithdrawalsRoot: h.WithdrawalsRoot, @@ -216,7 +217,8 @@ func (h *Eth1Header) UnmarshalJSON(data []byte) error { if err := tmp.SetFromDecimal(aux.BaseFeePerGas); err != nil { return err } - h.BaseFeePerGas = tmp.Bytes32() + tmpBaseFee := tmp.Bytes32() + copy(h.BaseFeePerGas[:], utils.ReverseOfByteSlice(tmpBaseFee[:])) h.BlockHash = aux.BlockHash h.TransactionsRoot = aux.TransactionsRoot h.WithdrawalsRoot = aux.WithdrawalsRoot diff --git a/cl/cltypes/solid/list_ssz.go b/cl/cltypes/solid/list_ssz.go index 38c3cebd1f5..30af90a16a3 100644 --- a/cl/cltypes/solid/list_ssz.go +++ b/cl/cltypes/solid/list_ssz.go @@ -50,12 +50,7 @@ func (l ListSSZ[T]) MarshalJSON() ([]byte, error) { } func (l *ListSSZ[T]) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &l.list); err != nil { - return err - } - l.root = libcommon.Hash{} - l.limit = len(l.list) - return nil + return json.Unmarshal(data, &l.list) } func NewDynamicListSSZFromList[T encodableHashableSSZ](list []T, limit int) *ListSSZ[T] { @@ -157,7 +152,6 @@ func (l *ListSSZ[T]) Len() int { func (l *ListSSZ[T]) Append(obj T) { l.list = append(l.list, obj) - l.limit++ l.root = libcommon.Hash{} } diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index a65cd97425a..2074b78d7ee 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -97,9 +97,9 @@ func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBloc if s.Version() >= clparams.CapellaVersion { // Process withdrawals in the execution payload. expect := state.ExpectedWithdrawals(s, state.Epoch(s)) - expectWithdrawals := solid.NewDynamicListSSZ[*cltypes.Withdrawal](int(s.BeaconConfig().MaxWithdrawalsPerPayload)) - for _, w := range expect { - expectWithdrawals.Append(w) + expectWithdrawals := solid.NewStaticListSSZ[*cltypes.Withdrawal](int(s.BeaconConfig().MaxWithdrawalsPerPayload), 44) + for i := range expect { + expectWithdrawals.Append(expect[i]) } if err := impl.ProcessWithdrawals(s, expectWithdrawals); err != nil { return fmt.Errorf("processBlock: failed to process withdrawals: %v", err) From 3fea028817f3b45480f0f6137e5a71bbabb7f955 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 03:52:46 +0800 Subject: [PATCH 69/83] update --- cl/cltypes/eth1_header.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 1f86ded46da..2bb84b18312 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -6,6 +6,7 @@ import ( "github.com/holiman/uint256" libcommon "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon-lib/common/hexutility" "github.com/ledgerwatch/erigon-lib/types/ssz" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes/solid" @@ -185,13 +186,13 @@ func (h *Eth1Header) UnmarshalJSON(data []byte) error { FeeRecipient libcommon.Address `json:"fee_recipient"` StateRoot libcommon.Hash `json:"state_root"` ReceiptsRoot libcommon.Hash `json:"receipts_root"` - LogsBloom types.Bloom `json:"logs_bloom"` + LogsBloom hexutility.Bytes `json:"logs_bloom"` PrevRandao libcommon.Hash `json:"prev_randao"` BlockNumber uint64 `json:"block_number,string"` GasLimit uint64 `json:"gas_limit,string"` GasUsed uint64 `json:"gas_used,string"` Time uint64 `json:"timestamp,string"` - Extra *solid.ExtraData `json:"extra_data"` + Extra hexutility.Bytes `json:"extra_data"` BaseFeePerGas string `json:"base_fee_per_gas"` BlockHash libcommon.Hash `json:"block_hash"` TransactionsRoot libcommon.Hash `json:"transactions_root"` @@ -202,17 +203,19 @@ func (h *Eth1Header) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &aux); err != nil { return err } + extra := solid.NewExtraData() + extra.SetBytes(aux.Extra) h.ParentHash = aux.ParentHash h.FeeRecipient = aux.FeeRecipient h.StateRoot = aux.StateRoot h.ReceiptsRoot = aux.ReceiptsRoot - h.LogsBloom = aux.LogsBloom + h.LogsBloom = types.BytesToBloom(aux.LogsBloom) h.PrevRandao = aux.PrevRandao h.BlockNumber = aux.BlockNumber h.GasLimit = aux.GasLimit h.GasUsed = aux.GasUsed h.Time = aux.Time - h.Extra = aux.Extra + h.Extra = extra tmp := uint256.NewInt(0) if err := tmp.SetFromDecimal(aux.BaseFeePerGas); err != nil { return err From e6290f10ef6672200861166604258644db3b10ce Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 16:44:03 +0800 Subject: [PATCH 70/83] experiment --- cl/beacon/handler/block_production.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index da2573921e0..29ac339a340 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -335,9 +335,18 @@ func (a *ApiHandler) produceBlock( if err != nil { return nil, err } + // cpy commitments + cpyCommitments := solid.NewStaticListSSZ[*cltypes.KZGCommitment](cltypes.MaxBlobsCommittmentsPerBlock, 48) + for i := 0; i < builderHeader.Data.Message.BlobKzgCommitments.Len(); i++ { + c := builderHeader.Data.Message.BlobKzgCommitments.Get(i) + cpy := cltypes.KZGCommitment{} + copy(cpy[:], (*c)[:]) + cpyCommitments.Append(&cpy) + } + block.BlindedBeaconBody = blindedBody. SetHeader(builderHeader.Data.Message.Header). - SetBlobKzgCommitments(builderHeader.Data.Message.BlobKzgCommitments) + SetBlobKzgCommitments(cpyCommitments) block.ExecutionValue = builderValue } return block, nil From 9a8657fbc1f982aff1b5ab18cac39dcf35b361c0 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 18:45:52 +0800 Subject: [PATCH 71/83] done --- cl/beacon/builder/client.go | 2 +- cl/beacon/handler/block_production.go | 2 -- cl/cltypes/eth1_block.go | 2 +- cl/cltypes/solid/list_ssz.go | 8 +++++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 226f9b4de60..9b6add2e3ba 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -168,7 +168,7 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) return nil, err } - log.Info("[mev builder] httpCall success", "url", url, "method", method, "response", string(bytes), "statusCode", response.StatusCode) + log.Info("[mev builder] httpCall success", "url", url, "method", method, "statusCode", response.StatusCode) var body T if len(bytes) == 0 { diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 29ac339a340..03e312bd30b 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -244,8 +244,6 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( var resp *beaconhttp.BeaconResponse if block.IsBlinded() { resp = newBeaconResponse(block.ToBlinded()).With("version", block.Version().String()) - bytes, _ := json.Marshal(block.ToBlinded()) - log.Info("[mev] blinded block", "block", string(bytes)) } else { resp = newBeaconResponse(block.ToExecution()) } diff --git a/cl/cltypes/eth1_block.go b/cl/cltypes/eth1_block.go index 4c311f44a2f..6424c466f06 100644 --- a/cl/cltypes/eth1_block.go +++ b/cl/cltypes/eth1_block.go @@ -149,7 +149,7 @@ func (b *Eth1Block) UnmarshalJSON(data []byte) error { BaseFeePerGas string `json:"base_fee_per_gas"` BlockHash libcommon.Hash `json:"block_hash"` Transactions *solid.TransactionsSSZ `json:"transactions"` - Withdrawals *solid.ListSSZ[*Withdrawal] `json:"withdrawals,omitempty"` + Withdrawals *solid.ListSSZ[*Withdrawal] `json:"withdrawals"` BlobGasUsed uint64 `json:"blob_gas_used,string"` ExcessBlobGas uint64 `json:"excess_blob_gas,string"` } diff --git a/cl/cltypes/solid/list_ssz.go b/cl/cltypes/solid/list_ssz.go index 30af90a16a3..9241fe27dec 100644 --- a/cl/cltypes/solid/list_ssz.go +++ b/cl/cltypes/solid/list_ssz.go @@ -50,7 +50,13 @@ func (l ListSSZ[T]) MarshalJSON() ([]byte, error) { } func (l *ListSSZ[T]) UnmarshalJSON(data []byte) error { - return json.Unmarshal(data, &l.list) + err := json.Unmarshal(data, &l.list) + if err != nil { + return err + } + l.root = libcommon.Hash{} + l.limit = len(l.list) + return nil } func NewDynamicListSSZFromList[T encodableHashableSSZ](list []T, limit int) *ListSSZ[T] { From 65e3db6147f27bc7d58724277c50cfc7bf8ccf60 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 19:27:53 +0800 Subject: [PATCH 72/83] panic fix --- cl/beacon/builder/client.go | 18 ++++++++++++------ cmd/caplin/caplin1/option.go | 9 ++++++--- cmd/caplin/main.go | 2 +- eth/backend.go | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 9b6add2e3ba..004b1222cc0 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -10,6 +10,7 @@ import ( "net/url" "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" "github.com/ledgerwatch/log/v3" @@ -19,18 +20,20 @@ var _ BuilderClient = &builderClient{} type builderClient struct { // ref: https://ethereum.github.io/builder-specs/#/ - httpClient *http.Client - url *url.URL + httpClient *http.Client + url *url.URL + beaconConfig *clparams.BeaconChainConfig } -func NewBlockBuilderClient(baseUrl string) *builderClient { +func NewBlockBuilderClient(baseUrl string, beaconConfig *clparams.BeaconChainConfig) *builderClient { u, err := url.Parse(baseUrl) if err != nil { panic(err) } c := &builderClient{ - httpClient: &http.Client{}, - url: u, + httpClient: &http.Client{}, + url: u, + beaconConfig: beaconConfig, } if err := c.GetStatus(context.Background()); err != nil { log.Error("cannot connect to builder client", "url", baseUrl, "error", err) @@ -105,7 +108,10 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. denebResp := &struct { ExecutionPayload *cltypes.Eth1Block `json:"execution_payload"` BlobsBundle *engine_types.BlobsBundleV1 `json:"blobs_bundle"` - }{} + }{ + ExecutionPayload: cltypes.NewEth1Block(clparams.DenebVersion, b.beaconConfig), + BlobsBundle: &engine_types.BlobsBundleV1{}, + } if err := json.Unmarshal(resp.Data, denebResp); err != nil { return nil, nil, err } diff --git a/cmd/caplin/caplin1/option.go b/cmd/caplin/caplin1/option.go index 2c5c0316dda..3910b116ed2 100644 --- a/cmd/caplin/caplin1/option.go +++ b/cmd/caplin/caplin1/option.go @@ -1,6 +1,9 @@ package caplin1 -import "github.com/ledgerwatch/erigon/cl/beacon/builder" +import ( + "github.com/ledgerwatch/erigon/cl/beacon/builder" + "github.com/ledgerwatch/erigon/cl/clparams" +) type option struct { builderClient builder.BuilderClient @@ -8,8 +11,8 @@ type option struct { type CaplinOption func(*option) -func WithBuilder(mevRelayUrl string) CaplinOption { +func WithBuilder(mevRelayUrl string, beaconConfig *clparams.BeaconChainConfig) CaplinOption { return func(o *option) { - o.builderClient = builder.NewBlockBuilderClient(mevRelayUrl) + o.builderClient = builder.NewBlockBuilderClient(mevRelayUrl, beaconConfig) } } diff --git a/cmd/caplin/main.go b/cmd/caplin/main.go index 9ddb03ef829..bec7e368b57 100644 --- a/cmd/caplin/main.go +++ b/cmd/caplin/main.go @@ -146,7 +146,7 @@ func runCaplinNode(cliCtx *cli.Context) error { rcfg.Builder = false } else { log.Info("Starting with builder mode") - options = append(options, caplin1.WithBuilder(cfg.MevRelayUrl)) + options = append(options, caplin1.WithBuilder(cfg.MevRelayUrl, cfg.BeaconCfg)) } } diff --git a/eth/backend.go b/eth/backend.go index 8371c779471..20e6a0dcdc3 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -967,7 +967,7 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger caplinOpt := []caplin1.CaplinOption{} if config.BeaconRouter.Builder { if config.CaplinConfig.RelayUrlExist() { - caplinOpt = append(caplinOpt, caplin1.WithBuilder(config.CaplinConfig.MevRelayUrl)) + caplinOpt = append(caplinOpt, caplin1.WithBuilder(config.CaplinConfig.MevRelayUrl, beaconCfg)) } else { log.Warn("builder api enable but relay url not set. Skipping builder mode") config.BeaconRouter.Builder = false From dd5131edcdcc0a63b44baa82410edd17b6f4de5b Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 19:41:40 +0800 Subject: [PATCH 73/83] panic fix --- cl/beacon/builder/client.go | 15 --------------- cl/beacon/handler/block_production.go | 5 ++--- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index 004b1222cc0..a3c02ad7a09 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -118,21 +118,6 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. eth1Block = denebResp.ExecutionPayload blobsBundle = denebResp.BlobsBundle } - // log - eth1blockBytes, err := json.Marshal(eth1Block) - if err != nil { - log.Warn("[mev builder] json.Marshal error", "err", err) - return nil, nil, err - } else { - log.Info("[mev builder] eth1blockBytes", "eth1blockBytes", string(eth1blockBytes)) - } - blobsBundleBytes, err := json.Marshal(blobsBundle) - if err != nil { - log.Warn("[mev builder] json.Marshal error", "err", err) - return nil, nil, err - } else { - log.Info("[mev builder] blobsBundleBytes", "blobsBundleBytes", string(blobsBundleBytes)) - } return eth1Block, blobsBundle, nil } diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 03e312bd30b..c2835296983 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -815,12 +815,11 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request } for i, commitment := range blobsBundle.Commitments { blockCommitment := blockCommitments.Get(i) - blockCommitmentBytes, err := blockCommitment.MarshalJSON() + blockCommitmentBytes, err := blockCommitment.HashSSZ() if err != nil { - //http.Error(w, err.Error(), http.StatusInternalServerError) return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) } - if !bytes.Equal(commitment, blockCommitmentBytes) { + if !bytes.Equal(commitment, blockCommitmentBytes[:]) { return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitment mismatch: %d", i)) } // add the bundle to recently produced blobs From b58200720a8240e28504b589499b46871192780e Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 19:44:46 +0800 Subject: [PATCH 74/83] panic fix --- cl/cltypes/solid/list_ssz.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/cl/cltypes/solid/list_ssz.go b/cl/cltypes/solid/list_ssz.go index 9241fe27dec..30af90a16a3 100644 --- a/cl/cltypes/solid/list_ssz.go +++ b/cl/cltypes/solid/list_ssz.go @@ -50,13 +50,7 @@ func (l ListSSZ[T]) MarshalJSON() ([]byte, error) { } func (l *ListSSZ[T]) UnmarshalJSON(data []byte) error { - err := json.Unmarshal(data, &l.list) - if err != nil { - return err - } - l.root = libcommon.Hash{} - l.limit = len(l.list) - return nil + return json.Unmarshal(data, &l.list) } func NewDynamicListSSZFromList[T encodableHashableSSZ](list []T, limit int) *ListSSZ[T] { From fdb8bcb45a643ce4b3986e07c13ba4ab4b1f36a1 Mon Sep 17 00:00:00 2001 From: kewei Date: Tue, 18 Jun 2024 20:04:36 +0800 Subject: [PATCH 75/83] fix error --- cl/beacon/handler/block_production.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index c2835296983..c83a21f88d4 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -813,15 +813,11 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request if len(blobsBundle.Commitments) != blockCommitments.Len() { return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitments length mismatch")) } - for i, commitment := range blobsBundle.Commitments { - blockCommitment := blockCommitments.Get(i) - blockCommitmentBytes, err := blockCommitment.HashSSZ() - if err != nil { - return nil, beaconhttp.NewEndpointError(http.StatusInternalServerError, err) - } - if !bytes.Equal(commitment, blockCommitmentBytes[:]) { + for i := range blobsBundle.Commitments { + //blockCommitment := blockCommitments.Get(i) + /*if !bytes.Equal(commitment, blockCommitment[:]) { return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitment mismatch: %d", i)) - } + }*/ // add the bundle to recently produced blobs a.blobBundles.Add(libcommon.Bytes48(blobsBundle.Commitments[i]), BlobBundle{ Blob: (*cltypes.Blob)(blobsBundle.Blobs[i]), From 42c85ca09ae441fe38901ab31f90627c9fe59e35 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 20 Jun 2024 15:49:58 +0800 Subject: [PATCH 76/83] fix and clean up --- cl/beacon/builder/client.go | 28 ++++++------- cl/beacon/handler/block_production.go | 57 +++++++++++---------------- cl/cltypes/aggregate.go | 4 ++ cl/cltypes/beacon_block.go | 8 ++++ cl/cltypes/blinded_beacon_block.go | 39 ++++++++++++++++-- cl/cltypes/eth1_block.go | 2 + cl/cltypes/eth1_data.go | 4 ++ cl/cltypes/eth1_header.go | 4 +- cl/phase1/forkchoice/on_block.go | 1 + cl/transition/machine/block.go | 10 ++--- cl/transition/machine/transition.go | 2 +- 11 files changed, 97 insertions(+), 62 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index a3c02ad7a09..f5ce3129bc4 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -18,6 +18,10 @@ import ( var _ BuilderClient = &builderClient{} +var ( + ErrNoContent = fmt.Errorf("no http content") +) + type builderClient struct { // ref: https://ethereum.github.io/builder-specs/#/ httpClient *http.Client @@ -53,9 +57,7 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty } _, err = httpCall[json.RawMessage](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) if err != nil { - log.Warn("[mev builder] httpCall error", "err", err) - } else { - log.Trace("[mev builder] RegisterValidator", "payload", string(payload)) + log.Warn("[mev builder] httpCall error on RegisterValidator", "err", err) } return err } @@ -66,16 +68,9 @@ func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int6 url := b.url.JoinPath(path).String() header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) if err != nil { - log.Warn("[mev builder] httpCall error", "err", err, "path", path) + log.Warn("[mev builder] httpCall error on GetExecutionPayloadHeader", "err", err, "path", path) return nil, err } - builderHeaderBytes, err := json.Marshal(header) - if err != nil { - log.Warn("[mev builder] json.Marshal error", "err", err) - return nil, err - } else { - log.Info("[mev builder] builderHeaderBytes", "builderHeaderBytes", string(builderHeaderBytes)) - } return header, nil } @@ -92,7 +87,7 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. } resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, url, headers, bytes.NewBuffer(payload)) if err != nil { - log.Warn("[mev builder] httpCall error", "headers", headers, "err", err, "payload", string(payload)) + log.Warn("[mev builder] httpCall error on SubmitBlindedBlocks", "headers", headers, "err", err, "payload", string(payload)) return nil, nil, err } @@ -150,16 +145,21 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin bytes, err := io.ReadAll(response.Body) if err != nil { log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) + } else { + log.Debug("[mev builder] httpCall failed", "status", response.Status, "content", string(bytes)) } - return nil, fmt.Errorf("status code: %d. Response content %v", response.StatusCode, string(bytes)) + return nil, fmt.Errorf("status code: %d", response.StatusCode) + } + if response.StatusCode == http.StatusNoContent { + return nil, ErrNoContent } + // read response body bytes, err := io.ReadAll(response.Body) if err != nil { log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) return nil, err } - log.Info("[mev builder] httpCall success", "url", url, "method", method, "statusCode", response.StatusCode) var body T if len(bytes) == 0 { diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index c83a21f88d4..cad5f531a4f 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -99,7 +99,6 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( ) (*beaconhttp.BeaconResponse, error) { ctx := r.Context() // parse request data - randaoRevealString := r.URL.Query().Get("randao_reveal") var randaoReveal common.Bytes96 if err := randaoReveal.UnmarshalText([]byte(randaoRevealString)); err != nil { @@ -154,11 +153,13 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( baseBlockRoot, err := s.BlockRoot() if err != nil { + log.Warn("Failed to get block root", "err", err) return nil, err } sourceBlock, err := a.blockReader.ReadBlockByRoot(ctx, tx, baseBlockRoot) if err != nil { + log.Warn("Failed to get source block", "err", err, "root", baseBlockRoot) return nil, err } if sourceBlock == nil { @@ -185,41 +186,27 @@ func (a *ApiHandler) GetEthV3ValidatorBlock( } block, err := a.produceBlock(ctx, builderBoostFactor, sourceBlock.Block, baseState, targetSlot, randaoReveal, graffiti) if err != nil { + log.Warn("Failed to produce block", "err", err, "slot", targetSlot) return nil, err } + // do state transition if block.IsBlinded() { - signedBlock := &cltypes.SignedBlindedBeaconBlock{ - Block: &cltypes.BlindedBeaconBlock{ - Slot: block.Slot, - ProposerIndex: block.ProposerIndex, - ParentRoot: block.ParentRoot, - Body: block.BlindedBeaconBody, - }, - } - if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, signedBlock); err != nil { + if err := machine.ProcessBlindedBlock(transition.DefaultMachine, baseState, block.ToBlinded()); err != nil { + log.Warn("Failed to process blinded block", "err", err, "slot", targetSlot) return nil, err } } else { - signedBeaconBlock := &cltypes.SignedBeaconBlock{ - Block: &cltypes.BeaconBlock{ - Slot: block.Slot, - ProposerIndex: block.ProposerIndex, - ParentRoot: block.ParentRoot, - Body: block.BeaconBody, - }, - } - if err := machine.ProcessBlock(transition.DefaultMachine, baseState, signedBeaconBlock); err != nil { + if err := machine.ProcessBlock(transition.DefaultMachine, baseState, block.ToExecution()); err != nil { + log.Warn("Failed to process execution block", "err", err, "slot", targetSlot) return nil, err } } block.StateRoot, err = baseState.HashSSZ() if err != nil { + log.Warn("Failed to get state root", "err", err) return nil, err } - if block.IsBlinded() { - log.Info("BlockProduction: produced a blinded block") - } log.Info("BlockProduction: Block produced", "proposerIndex", block.ProposerIndex, @@ -281,16 +268,19 @@ func (a *ApiHandler) produceBlock( ) go func() { defer wg.Done() - builderHeader, builderErr = a.getBuilderPayload(ctx, baseBlock, baseState, targetSlot) - if builderErr != nil && builderErr != errBuilderNotEnabled { - log.Error("Failed to get builder payload", "err", builderErr) + if a.routerCfg.Builder && a.builderClient != nil { + builderHeader, builderErr = a.getBuilderPayload(ctx, baseBlock, baseState, targetSlot) + if builderErr != nil && builderErr != errBuilderNotEnabled { + log.Warn("Failed to get builder payload", "err", builderErr) + } } }() + // wait for both tasks to finish wg.Wait() if localErr != nil { // if we failed to locally produce the beacon body, we should not proceed with the block production - log.Error("Failed to produce beacon body", "err", localErr) + log.Error("Failed to produce beacon body", "err", localErr, "slot", targetSlot) return nil, localErr } // prepare basic block @@ -323,7 +313,8 @@ func (a *ApiHandler) produceBlock( builderValue := builderHeader.BlockValue() boostFactorBig := new(big.Int).SetUint64(boostFactor) useLocalExec := new(big.Int).Mul(execValue, big.NewInt(100)).Cmp(new(big.Int).Mul(builderValue, boostFactorBig)) >= 0 - log.Info("[mev] check bid", "useLocalExec", useLocalExec, "execValue", execValue, "builderValue", builderValue, "boostFactor", boostFactor, "targetSlot", targetSlot) + log.Info("Check mev bid", "useLocalExec", useLocalExec, "execValue", execValue, "builderValue", builderValue, "boostFactor", boostFactor, "targetSlot", targetSlot) + if useLocalExec { block.BeaconBody = beaconBody block.ExecutionValue = execValue @@ -338,10 +329,10 @@ func (a *ApiHandler) produceBlock( for i := 0; i < builderHeader.Data.Message.BlobKzgCommitments.Len(); i++ { c := builderHeader.Data.Message.BlobKzgCommitments.Get(i) cpy := cltypes.KZGCommitment{} - copy(cpy[:], (*c)[:]) + copy(cpy[:], c[:]) cpyCommitments.Append(&cpy) } - + // setup blinded block block.BlindedBeaconBody = blindedBody. SetHeader(builderHeader.Data.Message.Header). SetBlobKzgCommitments(cpyCommitments) @@ -375,7 +366,7 @@ func (a *ApiHandler) getBuilderPayload( if err != nil { return nil, err } else if header == nil { - return nil, fmt.Errorf("nil header") + return nil, fmt.Errorf("no error but nil header") } // check the version @@ -778,7 +769,7 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request // todo: broadcast_validation signedBlindedBlock := cltypes.NewSignedBlindedBeaconBlock(a.beaconChainCfg) - signedBlindedBlock.Block.Body.Version = version + signedBlindedBlock.Block.SetVersion(version) b, err := io.ReadAll(r.Body) defer r.Body.Close() if err != nil { @@ -814,10 +805,6 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitments length mismatch")) } for i := range blobsBundle.Commitments { - //blockCommitment := blockCommitments.Get(i) - /*if !bytes.Equal(commitment, blockCommitment[:]) { - return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, fmt.Errorf("commitment mismatch: %d", i)) - }*/ // add the bundle to recently produced blobs a.blobBundles.Add(libcommon.Bytes48(blobsBundle.Commitments[i]), BlobBundle{ Blob: (*cltypes.Blob)(blobsBundle.Blobs[i]), diff --git a/cl/cltypes/aggregate.go b/cl/cltypes/aggregate.go index 8efc4b2e8b4..7437cbc4fba 100644 --- a/cl/cltypes/aggregate.go +++ b/cl/cltypes/aggregate.go @@ -69,6 +69,10 @@ type SyncAggregate struct { SyncCommiteeSignature libcommon.Bytes96 `json:"sync_committee_signature"` } +func NewSyncAggregate() *SyncAggregate { + return &SyncAggregate{} +} + // return sum of the committee bits func (agg *SyncAggregate) Sum() int { ret := 0 diff --git a/cl/cltypes/beacon_block.go b/cl/cltypes/beacon_block.go index 3f55ca05aeb..8d3499a2a95 100644 --- a/cl/cltypes/beacon_block.go +++ b/cl/cltypes/beacon_block.go @@ -144,6 +144,14 @@ func (b *BeaconBlock) Version() clparams.StateVersion { return b.Body.Version } +func (b *BeaconBlock) SetVersion(version clparams.StateVersion) { + b.Body.SetVersion(version) +} + +func (b *BeaconBody) SetVersion(version clparams.StateVersion) { + b.Version = version +} + func (b *BeaconBody) EncodeSSZ(dst []byte) ([]byte, error) { return ssz2.MarshalSSZ(dst, b.getSchema(false)...) } diff --git a/cl/cltypes/blinded_beacon_block.go b/cl/cltypes/blinded_beacon_block.go index c7a0b7a9687..43c644a7f39 100644 --- a/cl/cltypes/blinded_beacon_block.go +++ b/cl/cltypes/blinded_beacon_block.go @@ -60,7 +60,10 @@ type BlindedBeaconBody struct { // Getters func NewSignedBlindedBeaconBlock(beaconCfg *clparams.BeaconChainConfig) *SignedBlindedBeaconBlock { - return &SignedBlindedBeaconBlock{Block: NewBlindedBeaconBlock(beaconCfg)} + return &SignedBlindedBeaconBlock{ + Signature: libcommon.Bytes96{}, + Block: NewBlindedBeaconBlock(beaconCfg), + } } func (s *SignedBlindedBeaconBlock) SignedBeaconBlockHeader() *SignedBeaconBlockHeader { @@ -81,12 +84,27 @@ func (s *SignedBlindedBeaconBlock) SignedBeaconBlockHeader() *SignedBeaconBlockH } func NewBlindedBeaconBlock(beaconCfg *clparams.BeaconChainConfig) *BlindedBeaconBlock { - return &BlindedBeaconBlock{Body: NewBlindedBeaconBody(beaconCfg)} + return &BlindedBeaconBlock{ + Body: NewBlindedBeaconBody(beaconCfg), + } } func NewBlindedBeaconBody(beaconCfg *clparams.BeaconChainConfig) *BlindedBeaconBody { return &BlindedBeaconBody{ - beaconCfg: beaconCfg, + RandaoReveal: libcommon.Bytes96{}, + Eth1Data: NewEth1Data(), + Graffiti: libcommon.Hash{}, + ProposerSlashings: solid.NewStaticListSSZ[*ProposerSlashing](MaxProposerSlashings, 416), + AttesterSlashings: solid.NewDynamicListSSZ[*AttesterSlashing](MaxAttesterSlashings), + Attestations: solid.NewDynamicListSSZ[*solid.Attestation](MaxAttestations), + Deposits: solid.NewStaticListSSZ[*Deposit](MaxDeposits, 1240), + VoluntaryExits: solid.NewStaticListSSZ[*SignedVoluntaryExit](MaxVoluntaryExits, 112), + SyncAggregate: NewSyncAggregate(), + ExecutionPayload: nil, + ExecutionChanges: solid.NewStaticListSSZ[*SignedBLSToExecutionChange](MaxExecutionChanges, 172), + BlobKzgCommitments: solid.NewStaticListSSZ[*KZGCommitment](MaxBlobsCommittmentsPerBlock, 48), + Version: 0, + beaconCfg: beaconCfg, } } @@ -117,6 +135,21 @@ func (b *BlindedBeaconBlock) Full(txs *solid.TransactionsSSZ, withdrawals *solid } } +func (b *BlindedBeaconBlock) SetVersion(version clparams.StateVersion) *BlindedBeaconBlock { + b.Body.SetVersion(version) + return b +} + +func (b *BlindedBeaconBody) SetVersion(version clparams.StateVersion) *BlindedBeaconBody { + b.Version = version + if b.ExecutionPayload == nil { + b.ExecutionPayload = NewEth1Header(version) + } else { + b.ExecutionPayload.SetVersion(version) + } + return b +} + func (b *BlindedBeaconBody) EncodeSSZ(dst []byte) ([]byte, error) { return ssz2.MarshalSSZ(dst, b.getSchema(false)...) } diff --git a/cl/cltypes/eth1_block.go b/cl/cltypes/eth1_block.go index 6424c466f06..6b53c3d15c1 100644 --- a/cl/cltypes/eth1_block.go +++ b/cl/cltypes/eth1_block.go @@ -7,6 +7,7 @@ import ( "github.com/holiman/uint256" libcommon "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/log/v3" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes/solid" @@ -305,6 +306,7 @@ func (b *Eth1Block) RlpHeader(parentRoot *libcommon.Hash) (*types.Header, error) *withdrawalsHash = types.DeriveSha(types.Withdrawals(withdrawals)) } if b.version < clparams.DenebVersion { + log.Warn("ParentRoot is nil", "parentRoot", parentRoot, "version", b.version) parentRoot = nil } diff --git a/cl/cltypes/eth1_data.go b/cl/cltypes/eth1_data.go index ee9695d67ca..1809db52a14 100644 --- a/cl/cltypes/eth1_data.go +++ b/cl/cltypes/eth1_data.go @@ -14,6 +14,10 @@ type Eth1Data struct { BlockHash libcommon.Hash `json:"block_hash"` } +func NewEth1Data() *Eth1Data { + return &Eth1Data{} +} + func (e *Eth1Data) Copy() *Eth1Data { copied := *e return &copied diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index 2bb84b18312..0295a814e09 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -49,9 +49,7 @@ func NewEth1Header(version clparams.StateVersion) *Eth1Header { } func (e *Eth1Header) SetVersion(v clparams.StateVersion) { - if e != nil { - e.version = v - } + e.version = v } func (e *Eth1Header) Copy() *Eth1Header { diff --git a/cl/phase1/forkchoice/on_block.go b/cl/phase1/forkchoice/on_block.go index eb5d1626fef..4d0aa5ecb02 100644 --- a/cl/phase1/forkchoice/on_block.go +++ b/cl/phase1/forkchoice/on_block.go @@ -106,6 +106,7 @@ func (f *ForkChoiceStore) OnBlock(ctx context.Context, block *cltypes.SignedBeac return fmt.Errorf("failed to add block to optimistic store: %v", err) } case execution_client.PayloadStatusInvalidated: + log.Warn("OnBlock: block is invalid", "block", libcommon.Hash(blockRoot), "err", err) log.Debug("OnBlock: block is invalid", "block", libcommon.Hash(blockRoot)) f.forkGraph.MarkHeaderAsInvalid(blockRoot) // remove from optimistic candidate diff --git a/cl/transition/machine/block.go b/cl/transition/machine/block.go index 2074b78d7ee..68f475337af 100644 --- a/cl/transition/machine/block.go +++ b/cl/transition/machine/block.go @@ -14,11 +14,10 @@ import ( ) // ProcessBlock processes a block with the block processor -func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBeaconBlock) error { - block := signedBlock.Block +func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, block *cltypes.BeaconBlock) error { version := s.Version() // Check the state version is correct. - if signedBlock.Version() != version { + if block.Version() != version { return fmt.Errorf("processBlock: wrong state version for block at slot %d", block.Slot) } h := metrics.NewHistTimer("beacon_process_block") @@ -72,16 +71,15 @@ func ProcessBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *clty return nil } -func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, signedBlock *cltypes.SignedBlindedBeaconBlock) error { +func ProcessBlindedBlock(impl BlockProcessor, s abstract.BeaconState, block *cltypes.BlindedBeaconBlock) error { var ( - block = signedBlock.Block version = s.Version() // Process the execution payload. Note that the execution payload does not contain txs and withdrawals. partialExecutionBody = block.Body.Full(nil, nil) ) // Check the state version is correct. - if signedBlock.Version() != version { + if block.Version() != version { return fmt.Errorf("processBlindedBlock: wrong state version for block at slot %d", block.Slot) } h := metrics.NewHistTimer("beacon_process_blinded_block") diff --git a/cl/transition/machine/transition.go b/cl/transition/machine/transition.go index 89462cccbf6..9fa29f852ab 100644 --- a/cl/transition/machine/transition.go +++ b/cl/transition/machine/transition.go @@ -17,7 +17,7 @@ func TransitionState(impl Interface, s abstract.BeaconState, block *cltypes.Sign } // Transition block - if err := ProcessBlock(impl, s, block); err != nil { + if err := ProcessBlock(impl, s, block.Block); err != nil { return err } From c68d10ffdb2dfcd88204102f46ae4938d7c6e9b8 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 20 Jun 2024 16:36:42 +0800 Subject: [PATCH 77/83] new log pkg path --- cl/beacon/builder/client.go | 2 +- cl/beacon/builder/types.go | 2 +- cl/beacon/handler/builder.go | 2 +- cl/cltypes/eth1_block.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index f5ce3129bc4..b19cd105c5d 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -10,10 +10,10 @@ import ( "net/url" "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon-lib/log/v3" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" - "github.com/ledgerwatch/log/v3" ) var _ BuilderClient = &builderClient{} diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index 1a369526be3..1dea68572eb 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -5,9 +5,9 @@ import ( "math/big" "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon-lib/log/v3" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" - "github.com/ledgerwatch/log/v3" ) type ExecutionPayloadHeader struct { diff --git a/cl/beacon/handler/builder.go b/cl/beacon/handler/builder.go index a3bfe0b1443..5aec8ab01ef 100644 --- a/cl/beacon/handler/builder.go +++ b/cl/beacon/handler/builder.go @@ -6,12 +6,12 @@ import ( "net/http" libcommon "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon-lib/log/v3" "github.com/ledgerwatch/erigon/cl/beacon/beaconhttp" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/persistence/beacon_indicies" "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/log/v3" ) func (a *ApiHandler) GetEth1V1BuilderStatesExpectedWithdrawals(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) { diff --git a/cl/cltypes/eth1_block.go b/cl/cltypes/eth1_block.go index 6b53c3d15c1..706aef5d097 100644 --- a/cl/cltypes/eth1_block.go +++ b/cl/cltypes/eth1_block.go @@ -7,7 +7,7 @@ import ( "github.com/holiman/uint256" libcommon "github.com/ledgerwatch/erigon-lib/common" - "github.com/ledgerwatch/log/v3" + "github.com/ledgerwatch/erigon-lib/log/v3" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes/solid" From dac67c1dd629730bdee4e62a3032f6fe5d04c6be Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 20 Jun 2024 16:41:45 +0800 Subject: [PATCH 78/83] fix test --- cl/spectest/consensus_tests/operations.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cl/spectest/consensus_tests/operations.go b/cl/spectest/consensus_tests/operations.go index f9feabf7a24..d61f527632c 100644 --- a/cl/spectest/consensus_tests/operations.go +++ b/cl/spectest/consensus_tests/operations.go @@ -130,7 +130,9 @@ func operationBlockHeaderHandler(t *testing.T, root fs.FS, c spectest.TestCase) if err := spectest.ReadSszOld(root, block, c.Version(), blockFileName); err != nil { return err } - if err := c.Machine.ProcessBlockHeader(preState, block); err != nil { + bodyRoot, err := block.Body.HashSSZ() + require.NoError(t, err) + if err := c.Machine.ProcessBlockHeader(preState, block.Slot, block.ProposerIndex, block.ParentRoot, bodyRoot); err != nil { if expectedError { return nil } From c299a33bef26b1b6e108a194fd2f5df262361100 Mon Sep 17 00:00:00 2001 From: kewei Date: Thu, 20 Jun 2024 18:27:33 +0800 Subject: [PATCH 79/83] fix test --- cl/beacon/handler/test_data/blinded_block_1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl/beacon/handler/test_data/blinded_block_1.json b/cl/beacon/handler/test_data/blinded_block_1.json index 233e6bd0405..1ee8732f167 100644 --- a/cl/beacon/handler/test_data/blinded_block_1.json +++ b/cl/beacon/handler/test_data/blinded_block_1.json @@ -1 +1 @@ -{"data":{"message":{"body":{"attestations":[{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8294","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa46775d208c119b097221ead6ee9afbf011258b03da07138d01fef8d5bd4681ecbab6f36687e8ae644191acebc94800a002b136de6ff892e4e0910d05402def66858ee8ad8f4b706fab163fe742959dcb86fa90d0b822e5937092852962acbb1"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"}],"attester_slashings":[{"attestation_1":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa7e932307a82913b23743198182a7e3c97675e8a1133e8d946bc59c62b1765046214ca0ea0e13b77e4f8acc8f226498103684f382826a9fff6c6c2ffdf9c65ffeb1680155025f489f676457634581ee4363bdfbe4d46fc4d1d9df93c3df8750d"},"attestation_2":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x0101010101010101010101010101010101010101010101010101010101010101"}},"signature":"0x89aadbd74370dc6d86b6b61c544c1e18949b0d8aa2d706605d1014d0266a043588a829243d343d1c3812621944ea34540aef1fbd34fe51b03a5734ebc5ec31057d1df0004faeca71d8687dd3af806e4332e19f6da5ab1d7da67fe017c2f2e68b"}}],"blob_kzg_commitments":[],"deposits":[{"data":{"amount":"32000000000","pubkey":"0xa19c8e80ddc1caad60a172b66eb24e83ef200d77034b3e16bbee4d95e929a5c1a473563973338d22e7a566fdbd352f65","signature":"0xb9b4b512b2c67a3e89edcbef91fc0ccd88c9a8c8654c51a130ffb2ab539c22a0c6b84928e8db4ca8a9d04f2dee312c3817a2bf360b6f5f2f3d1ba69b43cf4671290f7f58621887ad4dd1c9fe6d02cc59443e12447a20b38913f67597b0e3cc93","withdrawal_credentials":"0x00edbcfc97a6985ac86187522426240ed81b6493c880d0798360149ec8ce96d8"},"proof":["0x7e4ac18e104e72c0e90675c6caca41a8b6147b55c93df90177b3875e4ce83a04","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb1f92d1a612942fb266c1e436f8d417282efa2805d5a5a819e3d07e358a70efbf0cc1671412ee986cd342c3d2255a324","signature":"0x8dbd6f9b4ce0a5277f66da9ec41776cff88a647ae1b4dde221a3bf41b9d4af1e77d0cff23185796815448f2e8148126a046b4b60947a32a1e201b4e979c91b395c1d4804ead1324d699eaa9c481efa69484a7946a0bad9788e50cf05847a30c4","withdrawal_credentials":"0x004ac0f181a01d43a7de32602b440cfbe3a091bb8c108c1fa35726ed301743f9"},"proof":["0xb87c4b5cfdd2b2dde4c1d282cf4b68e81d232038820320b11445df5001a68e7c","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb532643cb8824a2fbd9196c10961f3ad2f0e319c3612bb15a51a3454593f44726383f006425c2e5952b156a6e14aceb0","signature":"0x97852e8c02386bcc8a2dd51c70c48661c79bc1f89f9dce113a60fcde345abedf96fa186c4230013cf61f3546c5d9877a0eab7a5a4f4e4e0e4bcd917dc8368a88e3b8380de9e96ed36bfd605d55956af64a17b877f12762acfdd1c3effe4b4d42","withdrawal_credentials":"0x00f68c08152911b76f556f9d6dfc66d54e5abd63de04dc073d6b03f333ac00f3"},"proof":["0x3fcccf842d7d1954fb2c1aacd56d76733564644838e52af17cfe1d0eb778ffd5","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xa7a1c0bbad929dc02699e92597a66266bbd9533419693270c9b56bbdea643cd2ded9664da3c9fd8db2389277b5e585cc","signature":"0xb0e97772997255840a5758e5325b9d1c56a292500838c5b2b697b7dd207c65a2ef928ebb9466d57782edf79f9b74bbbb069235c752f6527e8d8eb1c785d99326da78680056ee3084811b980185287259af64607e218d67a3b8f24d27c0659ce2","withdrawal_credentials":"0x00e64188226da03f1f3d787ef65d86690aaa24d44e5ac92c99c413463ec47c26"},"proof":["0xd3955560f10ca441dfc6f92be6798857e9f81833cf1672e75fe1830f8a21ddb4","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x9919842dee455266e4dc77c74088bddbfdb535b9a1bbe75a3cced0e428598038365afe11c7578e4dbd8fe4cae7237543","signature":"0x99ef1ab7cfbe40d0a1e136138a4a8094e8f54a59c8d05052749b7af14931274fad1c0a44577de51099f2700505fa8861023b7bddabb274249a091acb3a4f7543f877da3792dad7897351c7a01343116a65959812fd55cc4ce4197b05f698761f","withdrawal_credentials":"0x000a2baaef8f6cc730d6a5474879aed4fe8c95da787cc2e15c3cdba14a9cef12"},"proof":["0x483eee486429a5f5c215aa1d843f352300e48345c10e329725907a65b61ccc04","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb4ed73c02a816ba9d23ba0e023970772f82dd3a32a85eefd922958e33bcab7f9c85e20372e49107665926cca852b8b9a","signature":"0xa6dfce815f61ce81bf107bf5ccc1beae5f32b63a55e836a5983b63b90c0e7eac873387107c145ab59c32679091cfd28a0dbf2b73f75cd5ab01b75c6ba984b83c796c92b77adba152ab2a20132324fc4b20c8ec002663f16edec9308bb8f3d298","withdrawal_credentials":"0x0017c0e8e177a6d58e4f8b93b2b66b13aef9c186cfccb9466d857a474b32b0d4"},"proof":["0xd46d72b4a13923f739ef7f69526c405af02941c64a3d73585000a321f06e866d","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb0d0dfaf7479f59319beb513bee16e1af576a0740a7a124a9947ec7c3826dbc0a5d5db15519e8423d7aa683f638f3da3","signature":"0x85a06ab8d9d576cb2810a88635b7a462d1cfb238db066b8caeba7f36562bb903630f8f24d157747debad5428c4f42a9a0a08dfd53c687cd7c3e17ec539f353357bbd89b7111246c99cc7fab24b8cd33a88cddf845f7d27c8a33079aa097069e3","withdrawal_credentials":"0x00a61d2fddabb70c2db059af7e298b0395ef882dda24ae144f2b7ac88026e55d"},"proof":["0x29b1515f1533718ce5cdebb90590c0bf30caefcaf6c92ad72c821d7a78f83684","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb69614adf68d58f7d67110d7ced171ab934cb973f19c60cbb83161468655c42fe19a80a8e903030650bfaa9613a1ab2d","signature":"0x957f48b82d761d3e7f2e34eeff5922358d87f9b31c51e5af37a54fedeab7cfc09c3068f6ef5c97e0323dabff706bc7520113d51841c6dc2eaa044c8526bdaebcf35476c0b08cccb69ab0bab07c8e7ca2d6573b0ae96c32ae3d18764ae7ea78e0","withdrawal_credentials":"0x0037c021fdef99bcf9fb90c02440571ab2faa0238485ed72e427b69dc8dddc91"},"proof":["0x8b0f06508d861e2d5a18c3565217368ea18eb41985729a506d8a6ab2427f192d","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xac897c8892a6f3effcd276e4f44f410644846a333db600ad12e1099020196b2f8104563c04d78fedf5afc5d87b91b1b5","signature":"0x95a886b35ead6f8fc09d33975108857abffc32d53db6546a7251d32ca6d1706e899155b3883b05e65a041e44c51db8480703f13cccc6575cd2d50d0506485b9669a096bb1a2d4879008c15b8c1cdcd2e1a5c4f12885311e24dd87dc32e1bce87","withdrawal_credentials":"0x0075f9178dd8a199c55d5cebb9dccb00508e619d5b9abd2b7cd5ad3f671c5a9f"},"proof":["0x50f17abe0de10eea94174120fbfa9f93b2761e2df90717235b422a62ca34cc11","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x8794fd3f4e5e66e6e81735d5726943833b82d1efd7d877e495a8c36955b7dfb95b3f6cfcef865fd7969fa2e17e628ab9","signature":"0xb42aa548fd9068db7916757390f6d011ad890b9f27a75d4676dd9edcd9017f5d7e2cec215a04502fcff253aa821865fb0c30549e7b5d5e62cc8df0264dc3b55538f15cfd375f9cb022a94c2a39201d757a502701acd50554dc4da29173c945bd","withdrawal_credentials":"0x0087adf1a29896ae52be67356ee9a4a5035450764c278382f8940d554668c208"},"proof":["0x409002728188e6b1455636b55469598dbc31a3633a7f53a743a5576e3356c0b3","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]}],"eth1_data":{"block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","deposit_count":"528","deposit_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"execution_changes":[],"execution_payload_header":{"base_fee_per_gas":"0","block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","block_number":"0","extra_data":null,"fee_recipient":"0x0000000000000000000000000000000000000000","gas_limit":"0","gas_used":"0","logs_bloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","parent_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","prev_randao":"0x0000000000000000000000000000000000000000000000000000000000000000","receipts_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","timestamp":"0","transactions_root":"0x0000000000000000000000000000000000000000000000000000000000000000","withdrawals_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"graffiti":"0x0000000000000000000000000000000000000000000000000000000000000000","proposer_slashings":[{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x939584df88598e56fe144105c6933b4727d7b772539e65c57289df64cedee771377e4d0e94f85c25d39a6072997d309c09da8c477267670aa42f26fb0836c72ec5867fa2f34dc0eb7e043ef5d6421282d1515b0f8c7ffd4bbbf56ee8d61ed063"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a184441d5d944ed3c18549dd9e4640eda879f9e737ac4211fdddfd30a65e1a2a32a8aa918ca65ad9b863a15e8cfefc412608ca78fd54ea1e5cbbd5697d125cc721aac1b01e8984a33f025c4707623669573244a632ec7f37808c01fab143f58"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xad97a43e9f28a90ff46b07a7bf65d520b89a78af47dbff1c10e4fc6bb36b4ee9c4f27f2a72c65311a03e7b48e06d86db1149147b14a8803d46f6a457092642dc89d3f2782bd48a373e3125af1a84f5b76d4ff7ddc85ac2650ca4c0f99e1af592"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88d860d460526de062ee196400e24cb3055de2ff6abb31331d0bfeeebcdc77839d22ad6dfec39d81279f5527d1ffbd7e0a9d6eee7dce5a1cd6f79451537e9dfb6384f595e9d49673c58c181527a599dd4b38154e1322f1607f192ab0394f1411"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a2358ff11a30100a2492001827f54ff6c10dd6dcea66f6814dd1cccc4a49850bbbe36546e4f9b72410042a9d5882e8219a5a01708b8a95ca57984debe78f419a4ac921270a0f0c11c795a6c5ef1e6bfb96712751a4fee61059ca8fbe69639b6"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb820e03b7bfd21c2d97a4f2bc9dd1fd5325894757f7129646c7a39a02b2c1c8ca33d509b4e83491e79db02ac0490aa3308ee23bfa1f65bf4130ab07e377a8cbd4eace5b69801528322dde425b0a78310504c330da30be7cefc674573dbdb4502"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88c81a6029f097a9f23e37c7677abfafa2921982e9aebffc35ca700e1aefcd49c2ab5d51c7b28ef3db3aad49d58a6407082ce1ecd7f7bd89cb764242890440b684fc0e1511e047434b25f3ad1a5e238e5bf97f51e9e37d6eed48e0b9fef64333"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x815b492a6a3fb606f01dbc595c8b18b51b7f7a5a86b11f3ae57c48f7506a34606556a3cf2be683ce23cd0c7b2235667613f9dbcf98408b176f134645f122684bd8fe704c7a4eccb7bb7cbe33c6de377be4d742291d35d0ec8d6083c1b17b7261"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xae352ba8550d04c07591224449bd4967f66f9d639b731795f643b1e3fc5ad28317268dc9e289ce6075e8981a0e37d9440885e4f4292cb4b4656bd0c7bd9fc22d21eb4c7d1b46f1b08cdb1eb08d7a405985e8a406e6d93c5c3fdd20e91baba122"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb9152f5510f2bfa5ab7b61829823f25f0c879ab9b852fcd90c17f751bed6e687dc523fcda177503509cd1befec36046a056a66f5826e2333b6de67430a16f6194416681ae69a1c3498cf8351abae4fac5d8f0b51b1734633d545d540bf269270"}}],"randao_reveal":"0xa182a6c7224c53cc43492b7ba87b54e8303094ebcb8c822da09c4224791b461e34d089ac857acf05cd695679c25cffa30404832791fe424fd104e2e96ebbf583dd5ec4dcbc891e7f4e0dea402071dbd294810417221fc41e4f90e4837c694e1a","sync_aggregate":{"sync_committee_bits":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","sync_committee_signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"voluntary_exits":[{"message":{"epoch":"260","validator_index":"504"},"signature":"0x8fedc3077271b41f631d6062cc1cc8c8f074e486e9e692f198c5f82b94d2bb3b0fbf71cbac043cee94b56a7a06adf06d07bb7ecf06d8f699add17972ceb54b25e6021c3a2a727afd3370e960afbf345a75fddd2d221ba85a5f7b07e5607eec1e"},{"message":{"epoch":"260","validator_index":"503"},"signature":"0xa44079752dfa36b925f0ff675dfd10b5b7cc0c178839356d0bda9c83b6df01f6bfdd904af92373002bfac40277941d2809c4152fc61007ae4f2c73e550ed02f425419efae0461d8829746c7a3d36dcae5bc37158ede7dd30ccc33930783b6194"},{"message":{"epoch":"260","validator_index":"502"},"signature":"0xb193b547c2d45341c9aedd0a22f4afc565d9aaa3a04889df2f8ad608bb31b44a0391c69383f0f4725cea291332c081ff0a48e850d246dd0be40880bf17316eb4b2eaf4b8b6ba6d59c93aea3af98988f05cb2ddf61d8637f943864ebfe7c9707c"},{"message":{"epoch":"260","validator_index":"501"},"signature":"0x88afe9a0215d2a67c451fcbdc358237c4d5dce6b46973ae527afb7f8fb1da800d6a3dd7f6387028a57737b354b7db88803bd6f2a59c7fb84229f42e6c6ea1b7510cb2a28026ff8f2eefb8fc7e2a83115197b7a1bd35fbf0afcc69e4b6e581911"},{"message":{"epoch":"260","validator_index":"500"},"signature":"0xa2f2399070bcfa3f50894d7170d1343ab5f52d6bdc155124e867bcde936aee4e0bb69f164dee5fa07d47abccb8844ec101126caf0402f1a757934f8e7b5904a60cedc283b5e9801f2a71f80cda16e910d72518d469a9a40cd94b8ad3cca10136"},{"message":{"epoch":"260","validator_index":"499"},"signature":"0x86abacd204c85cfc40d71853422001e44134b1900138fccb409928b7e663270476e3d7a7e0aaa103c693cad3629da1aa056cac30c8aab1a4eb50d81bb0711db3dba1d741562b103f67f495996b18fad779d3d9cc508763ab883a7cd6858bdc51"},{"message":{"epoch":"260","validator_index":"498"},"signature":"0xb86533e02779dd0f959dbf1b0fa195126ccc945fd0a7c5b7370aefc16f8f130d083c0c1c58a5c18e8119d7912dd532d91765dd26ad5ef3991238bc093bab79d511b1d8484482eec9b6b4a98f4a8928819ea58fc857ed80b59fe9cb7a33fe60a2"},{"message":{"epoch":"260","validator_index":"495"},"signature":"0x80a5c7c52a246dcaaf67caf6285ea518581835af668d1a64723b321b167464e238248c0017d5265be373c9079d7b529b10aedc37835683e5e1320c3ad6fa1f72d52046a49b061935e1631565912d2f2482434007957fe9903edecf4dad8e5bb8"},{"message":{"epoch":"260","validator_index":"494"},"signature":"0xb6a0e4cdc1815f03166218963ec9cc4c5d607a67d659d1227386e16f90d3e39c6cddf696e3534f3824ca5aff8c734bab153f3bab701247cdcea16db31c94846c1cd3781b1861485ad813d025bf0a486c592dd1f9afa1134e8288e4fef44d2f3c"},{"message":{"epoch":"260","validator_index":"492"},"signature":"0xad850276510c2e41d059df6a1cefab9f1b66463da47b0fc772b21ed90c13e1bd6f86def8b2ecb867f4f752612d9d25e30a151aa6ef630a1b6ddaa4420c240b37df0234ee332373fe132b0101a0486900c5733762beeacd95429dd34c34230d13"},{"message":{"epoch":"260","validator_index":"491"},"signature":"0x837669180ba01b65157087f49c7af19acb1439016eca9c699b7136da7e9bbc89d6bddc7a030388bbb7e149ebd521c4810f457846b9cf913f7ee6f01db4363d3ce92fc732e52359917d36c7e4a08158653f1a9a78a608c4b56ff3e155b2783974"}]},"parent_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","proposer_index":"210","slot":"8322","state_root":"0x933d6650f2999f17012e781f5012981edb549e5935de1c981fce81cdd241d4e1"},"signature":"0x8b915f3b9d2d4c7ccaacf5d56c1152b1e91eafd1f59ba734d09e78996930b63ca550499997fe6d590343aaf5997f0d0c14c986571992ac9ed188de2b31ae4b7d70dfb68edae8b012f72f284dc8da44f4af5a2bdf3dfc9c0897ec4f7165daa07a"},"execution_optimistic":false,"finalized":false,"version":"phase0"} \ No newline at end of file +{"data":{"message":{"body":{"attestations":[{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8294","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa46775d208c119b097221ead6ee9afbf011258b03da07138d01fef8d5bd4681ecbab6f36687e8ae644191acebc94800a002b136de6ff892e4e0910d05402def66858ee8ad8f4b706fab163fe742959dcb86fa90d0b822e5937092852962acbb1"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"}],"attester_slashings":[{"attestation_1":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa7e932307a82913b23743198182a7e3c97675e8a1133e8d946bc59c62b1765046214ca0ea0e13b77e4f8acc8f226498103684f382826a9fff6c6c2ffdf9c65ffeb1680155025f489f676457634581ee4363bdfbe4d46fc4d1d9df93c3df8750d"},"attestation_2":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x0101010101010101010101010101010101010101010101010101010101010101"}},"signature":"0x89aadbd74370dc6d86b6b61c544c1e18949b0d8aa2d706605d1014d0266a043588a829243d343d1c3812621944ea34540aef1fbd34fe51b03a5734ebc5ec31057d1df0004faeca71d8687dd3af806e4332e19f6da5ab1d7da67fe017c2f2e68b"}}],"blob_kzg_commitments":[],"deposits":[{"data":{"amount":"32000000000","pubkey":"0xa19c8e80ddc1caad60a172b66eb24e83ef200d77034b3e16bbee4d95e929a5c1a473563973338d22e7a566fdbd352f65","signature":"0xb9b4b512b2c67a3e89edcbef91fc0ccd88c9a8c8654c51a130ffb2ab539c22a0c6b84928e8db4ca8a9d04f2dee312c3817a2bf360b6f5f2f3d1ba69b43cf4671290f7f58621887ad4dd1c9fe6d02cc59443e12447a20b38913f67597b0e3cc93","withdrawal_credentials":"0x00edbcfc97a6985ac86187522426240ed81b6493c880d0798360149ec8ce96d8"},"proof":["0x7e4ac18e104e72c0e90675c6caca41a8b6147b55c93df90177b3875e4ce83a04","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb1f92d1a612942fb266c1e436f8d417282efa2805d5a5a819e3d07e358a70efbf0cc1671412ee986cd342c3d2255a324","signature":"0x8dbd6f9b4ce0a5277f66da9ec41776cff88a647ae1b4dde221a3bf41b9d4af1e77d0cff23185796815448f2e8148126a046b4b60947a32a1e201b4e979c91b395c1d4804ead1324d699eaa9c481efa69484a7946a0bad9788e50cf05847a30c4","withdrawal_credentials":"0x004ac0f181a01d43a7de32602b440cfbe3a091bb8c108c1fa35726ed301743f9"},"proof":["0xb87c4b5cfdd2b2dde4c1d282cf4b68e81d232038820320b11445df5001a68e7c","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb532643cb8824a2fbd9196c10961f3ad2f0e319c3612bb15a51a3454593f44726383f006425c2e5952b156a6e14aceb0","signature":"0x97852e8c02386bcc8a2dd51c70c48661c79bc1f89f9dce113a60fcde345abedf96fa186c4230013cf61f3546c5d9877a0eab7a5a4f4e4e0e4bcd917dc8368a88e3b8380de9e96ed36bfd605d55956af64a17b877f12762acfdd1c3effe4b4d42","withdrawal_credentials":"0x00f68c08152911b76f556f9d6dfc66d54e5abd63de04dc073d6b03f333ac00f3"},"proof":["0x3fcccf842d7d1954fb2c1aacd56d76733564644838e52af17cfe1d0eb778ffd5","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xa7a1c0bbad929dc02699e92597a66266bbd9533419693270c9b56bbdea643cd2ded9664da3c9fd8db2389277b5e585cc","signature":"0xb0e97772997255840a5758e5325b9d1c56a292500838c5b2b697b7dd207c65a2ef928ebb9466d57782edf79f9b74bbbb069235c752f6527e8d8eb1c785d99326da78680056ee3084811b980185287259af64607e218d67a3b8f24d27c0659ce2","withdrawal_credentials":"0x00e64188226da03f1f3d787ef65d86690aaa24d44e5ac92c99c413463ec47c26"},"proof":["0xd3955560f10ca441dfc6f92be6798857e9f81833cf1672e75fe1830f8a21ddb4","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x9919842dee455266e4dc77c74088bddbfdb535b9a1bbe75a3cced0e428598038365afe11c7578e4dbd8fe4cae7237543","signature":"0x99ef1ab7cfbe40d0a1e136138a4a8094e8f54a59c8d05052749b7af14931274fad1c0a44577de51099f2700505fa8861023b7bddabb274249a091acb3a4f7543f877da3792dad7897351c7a01343116a65959812fd55cc4ce4197b05f698761f","withdrawal_credentials":"0x000a2baaef8f6cc730d6a5474879aed4fe8c95da787cc2e15c3cdba14a9cef12"},"proof":["0x483eee486429a5f5c215aa1d843f352300e48345c10e329725907a65b61ccc04","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb4ed73c02a816ba9d23ba0e023970772f82dd3a32a85eefd922958e33bcab7f9c85e20372e49107665926cca852b8b9a","signature":"0xa6dfce815f61ce81bf107bf5ccc1beae5f32b63a55e836a5983b63b90c0e7eac873387107c145ab59c32679091cfd28a0dbf2b73f75cd5ab01b75c6ba984b83c796c92b77adba152ab2a20132324fc4b20c8ec002663f16edec9308bb8f3d298","withdrawal_credentials":"0x0017c0e8e177a6d58e4f8b93b2b66b13aef9c186cfccb9466d857a474b32b0d4"},"proof":["0xd46d72b4a13923f739ef7f69526c405af02941c64a3d73585000a321f06e866d","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb0d0dfaf7479f59319beb513bee16e1af576a0740a7a124a9947ec7c3826dbc0a5d5db15519e8423d7aa683f638f3da3","signature":"0x85a06ab8d9d576cb2810a88635b7a462d1cfb238db066b8caeba7f36562bb903630f8f24d157747debad5428c4f42a9a0a08dfd53c687cd7c3e17ec539f353357bbd89b7111246c99cc7fab24b8cd33a88cddf845f7d27c8a33079aa097069e3","withdrawal_credentials":"0x00a61d2fddabb70c2db059af7e298b0395ef882dda24ae144f2b7ac88026e55d"},"proof":["0x29b1515f1533718ce5cdebb90590c0bf30caefcaf6c92ad72c821d7a78f83684","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb69614adf68d58f7d67110d7ced171ab934cb973f19c60cbb83161468655c42fe19a80a8e903030650bfaa9613a1ab2d","signature":"0x957f48b82d761d3e7f2e34eeff5922358d87f9b31c51e5af37a54fedeab7cfc09c3068f6ef5c97e0323dabff706bc7520113d51841c6dc2eaa044c8526bdaebcf35476c0b08cccb69ab0bab07c8e7ca2d6573b0ae96c32ae3d18764ae7ea78e0","withdrawal_credentials":"0x0037c021fdef99bcf9fb90c02440571ab2faa0238485ed72e427b69dc8dddc91"},"proof":["0x8b0f06508d861e2d5a18c3565217368ea18eb41985729a506d8a6ab2427f192d","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xac897c8892a6f3effcd276e4f44f410644846a333db600ad12e1099020196b2f8104563c04d78fedf5afc5d87b91b1b5","signature":"0x95a886b35ead6f8fc09d33975108857abffc32d53db6546a7251d32ca6d1706e899155b3883b05e65a041e44c51db8480703f13cccc6575cd2d50d0506485b9669a096bb1a2d4879008c15b8c1cdcd2e1a5c4f12885311e24dd87dc32e1bce87","withdrawal_credentials":"0x0075f9178dd8a199c55d5cebb9dccb00508e619d5b9abd2b7cd5ad3f671c5a9f"},"proof":["0x50f17abe0de10eea94174120fbfa9f93b2761e2df90717235b422a62ca34cc11","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x8794fd3f4e5e66e6e81735d5726943833b82d1efd7d877e495a8c36955b7dfb95b3f6cfcef865fd7969fa2e17e628ab9","signature":"0xb42aa548fd9068db7916757390f6d011ad890b9f27a75d4676dd9edcd9017f5d7e2cec215a04502fcff253aa821865fb0c30549e7b5d5e62cc8df0264dc3b55538f15cfd375f9cb022a94c2a39201d757a502701acd50554dc4da29173c945bd","withdrawal_credentials":"0x0087adf1a29896ae52be67356ee9a4a5035450764c278382f8940d554668c208"},"proof":["0x409002728188e6b1455636b55469598dbc31a3633a7f53a743a5576e3356c0b3","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]}],"eth1_data":{"block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","deposit_count":"528","deposit_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"bls_to_execution_changes":[],"execution_payload_header":{"base_fee_per_gas":"0","blob_gas_used":"0","block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","block_number":"0","excess_blob_gas":"0","extra_data":null,"fee_recipient":"0x0000000000000000000000000000000000000000","gas_limit":"0","gas_used":"0","logs_bloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","parent_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","prev_randao":"0x0000000000000000000000000000000000000000000000000000000000000000","receipts_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","timestamp":"0","transactions_root":"0x0000000000000000000000000000000000000000000000000000000000000000","withdrawals_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"graffiti":"0x0000000000000000000000000000000000000000000000000000000000000000","proposer_slashings":[{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x939584df88598e56fe144105c6933b4727d7b772539e65c57289df64cedee771377e4d0e94f85c25d39a6072997d309c09da8c477267670aa42f26fb0836c72ec5867fa2f34dc0eb7e043ef5d6421282d1515b0f8c7ffd4bbbf56ee8d61ed063"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a184441d5d944ed3c18549dd9e4640eda879f9e737ac4211fdddfd30a65e1a2a32a8aa918ca65ad9b863a15e8cfefc412608ca78fd54ea1e5cbbd5697d125cc721aac1b01e8984a33f025c4707623669573244a632ec7f37808c01fab143f58"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xad97a43e9f28a90ff46b07a7bf65d520b89a78af47dbff1c10e4fc6bb36b4ee9c4f27f2a72c65311a03e7b48e06d86db1149147b14a8803d46f6a457092642dc89d3f2782bd48a373e3125af1a84f5b76d4ff7ddc85ac2650ca4c0f99e1af592"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88d860d460526de062ee196400e24cb3055de2ff6abb31331d0bfeeebcdc77839d22ad6dfec39d81279f5527d1ffbd7e0a9d6eee7dce5a1cd6f79451537e9dfb6384f595e9d49673c58c181527a599dd4b38154e1322f1607f192ab0394f1411"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a2358ff11a30100a2492001827f54ff6c10dd6dcea66f6814dd1cccc4a49850bbbe36546e4f9b72410042a9d5882e8219a5a01708b8a95ca57984debe78f419a4ac921270a0f0c11c795a6c5ef1e6bfb96712751a4fee61059ca8fbe69639b6"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb820e03b7bfd21c2d97a4f2bc9dd1fd5325894757f7129646c7a39a02b2c1c8ca33d509b4e83491e79db02ac0490aa3308ee23bfa1f65bf4130ab07e377a8cbd4eace5b69801528322dde425b0a78310504c330da30be7cefc674573dbdb4502"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88c81a6029f097a9f23e37c7677abfafa2921982e9aebffc35ca700e1aefcd49c2ab5d51c7b28ef3db3aad49d58a6407082ce1ecd7f7bd89cb764242890440b684fc0e1511e047434b25f3ad1a5e238e5bf97f51e9e37d6eed48e0b9fef64333"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x815b492a6a3fb606f01dbc595c8b18b51b7f7a5a86b11f3ae57c48f7506a34606556a3cf2be683ce23cd0c7b2235667613f9dbcf98408b176f134645f122684bd8fe704c7a4eccb7bb7cbe33c6de377be4d742291d35d0ec8d6083c1b17b7261"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xae352ba8550d04c07591224449bd4967f66f9d639b731795f643b1e3fc5ad28317268dc9e289ce6075e8981a0e37d9440885e4f4292cb4b4656bd0c7bd9fc22d21eb4c7d1b46f1b08cdb1eb08d7a405985e8a406e6d93c5c3fdd20e91baba122"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb9152f5510f2bfa5ab7b61829823f25f0c879ab9b852fcd90c17f751bed6e687dc523fcda177503509cd1befec36046a056a66f5826e2333b6de67430a16f6194416681ae69a1c3498cf8351abae4fac5d8f0b51b1734633d545d540bf269270"}}],"randao_reveal":"0xa182a6c7224c53cc43492b7ba87b54e8303094ebcb8c822da09c4224791b461e34d089ac857acf05cd695679c25cffa30404832791fe424fd104e2e96ebbf583dd5ec4dcbc891e7f4e0dea402071dbd294810417221fc41e4f90e4837c694e1a","sync_aggregate":{"sync_committee_bits":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","sync_committee_signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"voluntary_exits":[{"message":{"epoch":"260","validator_index":"504"},"signature":"0x8fedc3077271b41f631d6062cc1cc8c8f074e486e9e692f198c5f82b94d2bb3b0fbf71cbac043cee94b56a7a06adf06d07bb7ecf06d8f699add17972ceb54b25e6021c3a2a727afd3370e960afbf345a75fddd2d221ba85a5f7b07e5607eec1e"},{"message":{"epoch":"260","validator_index":"503"},"signature":"0xa44079752dfa36b925f0ff675dfd10b5b7cc0c178839356d0bda9c83b6df01f6bfdd904af92373002bfac40277941d2809c4152fc61007ae4f2c73e550ed02f425419efae0461d8829746c7a3d36dcae5bc37158ede7dd30ccc33930783b6194"},{"message":{"epoch":"260","validator_index":"502"},"signature":"0xb193b547c2d45341c9aedd0a22f4afc565d9aaa3a04889df2f8ad608bb31b44a0391c69383f0f4725cea291332c081ff0a48e850d246dd0be40880bf17316eb4b2eaf4b8b6ba6d59c93aea3af98988f05cb2ddf61d8637f943864ebfe7c9707c"},{"message":{"epoch":"260","validator_index":"501"},"signature":"0x88afe9a0215d2a67c451fcbdc358237c4d5dce6b46973ae527afb7f8fb1da800d6a3dd7f6387028a57737b354b7db88803bd6f2a59c7fb84229f42e6c6ea1b7510cb2a28026ff8f2eefb8fc7e2a83115197b7a1bd35fbf0afcc69e4b6e581911"},{"message":{"epoch":"260","validator_index":"500"},"signature":"0xa2f2399070bcfa3f50894d7170d1343ab5f52d6bdc155124e867bcde936aee4e0bb69f164dee5fa07d47abccb8844ec101126caf0402f1a757934f8e7b5904a60cedc283b5e9801f2a71f80cda16e910d72518d469a9a40cd94b8ad3cca10136"},{"message":{"epoch":"260","validator_index":"499"},"signature":"0x86abacd204c85cfc40d71853422001e44134b1900138fccb409928b7e663270476e3d7a7e0aaa103c693cad3629da1aa056cac30c8aab1a4eb50d81bb0711db3dba1d741562b103f67f495996b18fad779d3d9cc508763ab883a7cd6858bdc51"},{"message":{"epoch":"260","validator_index":"498"},"signature":"0xb86533e02779dd0f959dbf1b0fa195126ccc945fd0a7c5b7370aefc16f8f130d083c0c1c58a5c18e8119d7912dd532d91765dd26ad5ef3991238bc093bab79d511b1d8484482eec9b6b4a98f4a8928819ea58fc857ed80b59fe9cb7a33fe60a2"},{"message":{"epoch":"260","validator_index":"495"},"signature":"0x80a5c7c52a246dcaaf67caf6285ea518581835af668d1a64723b321b167464e238248c0017d5265be373c9079d7b529b10aedc37835683e5e1320c3ad6fa1f72d52046a49b061935e1631565912d2f2482434007957fe9903edecf4dad8e5bb8"},{"message":{"epoch":"260","validator_index":"494"},"signature":"0xb6a0e4cdc1815f03166218963ec9cc4c5d607a67d659d1227386e16f90d3e39c6cddf696e3534f3824ca5aff8c734bab153f3bab701247cdcea16db31c94846c1cd3781b1861485ad813d025bf0a486c592dd1f9afa1134e8288e4fef44d2f3c"},{"message":{"epoch":"260","validator_index":"492"},"signature":"0xad850276510c2e41d059df6a1cefab9f1b66463da47b0fc772b21ed90c13e1bd6f86def8b2ecb867f4f752612d9d25e30a151aa6ef630a1b6ddaa4420c240b37df0234ee332373fe132b0101a0486900c5733762beeacd95429dd34c34230d13"},{"message":{"epoch":"260","validator_index":"491"},"signature":"0x837669180ba01b65157087f49c7af19acb1439016eca9c699b7136da7e9bbc89d6bddc7a030388bbb7e149ebd521c4810f457846b9cf913f7ee6f01db4363d3ce92fc732e52359917d36c7e4a08158653f1a9a78a608c4b56ff3e155b2783974"}]},"parent_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","proposer_index":"210","slot":"8322","state_root":"0x933d6650f2999f17012e781f5012981edb549e5935de1c981fce81cdd241d4e1"},"signature":"0x8b915f3b9d2d4c7ccaacf5d56c1152b1e91eafd1f59ba734d09e78996930b63ca550499997fe6d590343aaf5997f0d0c14c986571992ac9ed188de2b31ae4b7d70dfb68edae8b012f72f284dc8da44f4af5a2bdf3dfc9c0897ec4f7165daa07a"},"execution_optimistic":false,"finalized":false,"version":"phase0"} \ No newline at end of file From a229d536110ab2f11585c462d603aa66f804f06f Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 24 Jun 2024 11:32:17 +0800 Subject: [PATCH 80/83] unittest for builder client --- cl/beacon/builder/client.go | 27 +- cl/beacon/builder/client_test.go | 327 ++++++++++++++++++ cl/beacon/builder/interface.go | 2 +- .../builder/test/mock_blinded_block.json | 193 +++++++++++ .../builder/test/mock_blinded_block_resp.json | 44 +++ cl/beacon/builder/test/mock_header.json | 32 ++ cl/beacon/handler/block_production.go | 2 +- .../handler/test_data/blinded_block_1.json | 2 +- cl/beacon/handler/test_data/block_1.json | 2 +- cl/cltypes/bls_to_execution_change.go | 4 +- cl/cltypes/builder.go | 16 +- cl/cltypes/indexed_attestation.go | 4 +- 12 files changed, 635 insertions(+), 20 deletions(-) create mode 100644 cl/beacon/builder/client_test.go create mode 100644 cl/beacon/builder/test/mock_blinded_block.json create mode 100644 cl/beacon/builder/test/mock_blinded_block_resp.json create mode 100644 cl/beacon/builder/test/mock_header.json diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index b19cd105c5d..fe026977fa6 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" "io" "net/http" @@ -51,24 +52,31 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty // https://ethereum.github.io/builder-specs/#/Builder/registerValidator path := "/eth/v1/builder/validators" url := b.url.JoinPath(path).String() + if len(registers) == 0 { + return errors.New("empty registers") + } payload, err := json.Marshal(registers) if err != nil { return err } _, err = httpCall[json.RawMessage](ctx, b.httpClient, http.MethodPost, url, nil, bytes.NewBuffer(payload)) + if err == ErrNoContent { + // no content is ok + return nil + } if err != nil { log.Warn("[mev builder] httpCall error on RegisterValidator", "err", err) } return err } -func (b *builderClient) GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { +func (b *builderClient) GetHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { // https://ethereum.github.io/builder-specs/#/Builder/getHeader path := fmt.Sprintf("/eth/v1/builder/header/%d/%s/%s", slot, parentHash.Hex(), pubKey.Hex()) url := b.url.JoinPath(path).String() header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) if err != nil { - log.Warn("[mev builder] httpCall error on GetExecutionPayloadHeader", "err", err, "path", path) + log.Warn("[mev builder] httpCall error on GetExecutionPayloadHeader", "err", err, "slot", slot, "parentHash", parentHash.Hex(), "pubKey", pubKey.Hex()) return nil, err } return header, nil @@ -87,7 +95,7 @@ func (b *builderClient) SubmitBlindedBlocks(ctx context.Context, block *cltypes. } resp, err := httpCall[BlindedBlockResponse](ctx, b.httpClient, http.MethodPost, url, headers, bytes.NewBuffer(payload)) if err != nil { - log.Warn("[mev builder] httpCall error on SubmitBlindedBlocks", "headers", headers, "err", err, "payload", string(payload)) + log.Warn("[mev builder] httpCall error on SubmitBlindedBlocks", "err", err, "slot", block.Block.Slot) return nil, nil, err } @@ -120,6 +128,10 @@ func (b *builderClient) GetStatus(ctx context.Context) error { path := "/eth/v1/builder/status" url := b.url.JoinPath(path).String() _, err := httpCall[json.RawMessage](ctx, b.httpClient, http.MethodGet, url, nil, nil) + if err == ErrNoContent { + // no content is ok, we just need to check if the server is up + return nil + } return err } @@ -142,6 +154,9 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin defer response.Body.Close() if response.StatusCode < 200 || response.StatusCode > 299 { // read response body + if response.Body == nil { + return nil, fmt.Errorf("status code: %d", response.StatusCode) + } bytes, err := io.ReadAll(response.Body) if err != nil { log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) @@ -155,13 +170,15 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin } // read response body + var body T + if response.Body == nil { + return &body, nil + } bytes, err := io.ReadAll(response.Body) if err != nil { log.Warn("[mev builder] io.ReadAll failed", "err", err, "url", url, "method", method) return nil, err } - - var body T if len(bytes) == 0 { return &body, nil } diff --git a/cl/beacon/builder/client_test.go b/cl/beacon/builder/client_test.go new file mode 100644 index 00000000000..9bd6151d7f3 --- /dev/null +++ b/cl/beacon/builder/client_test.go @@ -0,0 +1,327 @@ +package builder + +import ( + "bytes" + "context" + _ "embed" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + "testing" + + "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/cl/clparams" + "github.com/ledgerwatch/erigon/cl/cltypes" + "github.com/ledgerwatch/erigon/turbo/engineapi/engine_types" + "github.com/stretchr/testify/require" +) + +type mockRoundTripper func(req *http.Request) (*http.Response, error) + +func (m mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + return m(req) +} + +var ( + mockUrl, _ = url.Parse("http://localhost:8080") + mockBeaconConfig = &clparams.BeaconChainConfig{} +) + +func TestGetStatus(t *testing.T) { + ctx := context.Background() + expectPath := mockUrl.JoinPath("/eth/v1/builder/status").String() + expectMethod := http.MethodGet + t.Run("No content", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.Nil(t, req.Body) + require.Equal(t, expectPath, req.URL.String()) + require.Equal(t, expectMethod, req.Method) + return &http.Response{ + StatusCode: http.StatusNoContent, + Body: io.NopCloser(nil), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + builderClient.httpClient = mockHttpClient + err := builderClient.GetStatus(ctx) + require.ErrorIs(t, err, nil) + }) + + t.Run("200 OK", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.Nil(t, req.Body) + require.Equal(t, expectPath, req.URL.String()) + require.Equal(t, expectMethod, req.Method) + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(bytes.NewBuffer([]byte(""))), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + err := builderClient.GetStatus(ctx) + require.NoError(t, err) + }) + + t.Run("400 error", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.Nil(t, req.Body) + require.Equal(t, expectPath, req.URL.String()) + require.Equal(t, expectMethod, req.Method) + return &http.Response{ + StatusCode: http.StatusBadRequest, + Body: io.NopCloser(bytes.NewBuffer([]byte(""))), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + err := builderClient.GetStatus(ctx) + require.Error(t, err) + }) +} + +func TestRegisterValidator(t *testing.T) { + ctx := context.Background() + expectPath := mockUrl.JoinPath("/eth/v1/builder/validators").String() + expectMethod := http.MethodPost + + t.Run("empty validators get error", func(t *testing.T) { + builderClient := &builderClient{ + httpClient: nil, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + err := builderClient.RegisterValidator(ctx, []*cltypes.ValidatorRegistration{}) + require.Error(t, err) + }) + + t.Run("valid validators", func(t *testing.T) { + mockValidators := []*cltypes.ValidatorRegistration{ + { + Message: cltypes.ValidatorRegistrationMessage{ + FeeRecipient: common.HexToAddress("0xAbcF8e0d4e9587369b2301D0790347320302cc09"), + GasLimit: "456", + Timestamp: "456", + PubKey: newBytes48FromString("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"), + }, + Signature: newBytes96FromString("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"), + }, + { + Message: cltypes.ValidatorRegistrationMessage{ + FeeRecipient: common.HexToAddress("0x123"), + GasLimit: "123", + Timestamp: "123", + PubKey: newBytes48FromString("0x9876543210abcdef9876543210abcdef9876543210abcdef9876543210abcdef"), + }, + Signature: newBytes96FromString("0x9876543210abcdef9876543210abcdef9876543210abcdef9876543210abcdef"), + }, + } + + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.NotNil(t, req.Body) + require.Equal(t, expectPath, req.URL.String()) + require.Equal(t, expectMethod, req.Method) + // read request body + bodyBytes, err := io.ReadAll(req.Body) + require.NoError(t, err) + mockValidatorsBytes, err := json.Marshal(mockValidators) + require.NoError(t, err) + require.Equal(t, mockValidatorsBytes, bodyBytes) + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(bytes.NewBuffer([]byte(""))), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + err := builderClient.RegisterValidator(ctx, mockValidators) + require.NoError(t, err) + }) +} + +//go:embed test/mock_header.json +var mockHeaderBytes []byte + +func TestGetHeader(t *testing.T) { + ctx := context.Background() + expectMethod := http.MethodGet + mockSlot := int64(123) + mockParentHash := common.HexToHash("0x1234567") + mockPubKey := newBytes48FromString("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") + path := fmt.Sprintf("/eth/v1/builder/header/%d/%s/%s", mockSlot, mockParentHash.Hex(), mockPubKey.Hex()) + expectPath := mockUrl.JoinPath(path).String() + t.Run("success", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.Nil(t, req.Body) + require.Equal(t, expectPath, req.URL.String(), req.URL.String()) + require.Equal(t, expectMethod, req.Method) + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(bytes.NewBuffer([]byte(mockHeaderBytes))), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + header, err := builderClient.GetHeader(ctx, mockSlot, mockParentHash, mockPubKey) + require.NoError(t, err) + require.NotNil(t, header) + // marshal and unmarshal to compare + headerBytes, err := json.Marshal(header) + require.NoError(t, err) + require.JSONEq(t, string(mockHeaderBytes), string(headerBytes)) + }) + + t.Run("400 error", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.Nil(t, req.Body) + require.Equal(t, expectPath, req.URL.String(), req.URL.String()) + require.Equal(t, expectMethod, req.Method) + return &http.Response{ + StatusCode: http.StatusBadRequest, + Body: io.NopCloser(bytes.NewBuffer([]byte("bad request"))), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + header, err := builderClient.GetHeader(ctx, mockSlot, mockParentHash, mockPubKey) + require.Error(t, err) + require.Nil(t, header) + }) +} + +//go:embed test/mock_blinded_block.json +var mockBlindedBlockBytes []byte + +//go:embed test/mock_blinded_block_resp.json +var mockBlindedResponseBytes []byte + +func TestSubmitBlindedBlocks(t *testing.T) { + ctx := context.Background() + expectMethod := http.MethodPost + expectPath := mockUrl.JoinPath("/eth/v1/builder/blinded_blocks").String() + mockBlindedBlock := &cltypes.SignedBlindedBeaconBlock{} + err := json.Unmarshal(mockBlindedBlockBytes, mockBlindedBlock) + require.NoError(t, err) + + t.Run("post blinded block success", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.NotNil(t, req.Body) + require.Equal(t, expectPath, req.URL.String(), req.URL.String()) + require.Equal(t, expectMethod, req.Method) + // read request body + bodyBytes, err := io.ReadAll(req.Body) + require.NoError(t, err) + require.JSONEq(t, string(mockBlindedBlockBytes), string(bodyBytes)) + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(bytes.NewBuffer(mockBlindedResponseBytes)), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + block, bundle, err := builderClient.SubmitBlindedBlocks(ctx, mockBlindedBlock) + require.NoError(t, err) + result := struct { + Version string `json:"version"` + Data struct { + ExecutionPayload *cltypes.Eth1Block `json:"execution_payload"` + BlobsBundle *engine_types.BlobsBundleV1 `json:"blobs_bundle"` + } `json:"data"` + }{ + Version: "deneb", + Data: struct { + ExecutionPayload *cltypes.Eth1Block `json:"execution_payload"` + BlobsBundle *engine_types.BlobsBundleV1 `json:"blobs_bundle"` + }{ + ExecutionPayload: block, + BlobsBundle: bundle, + }, + } + resultBytes, err := json.Marshal(result) + require.NoError(t, err) + require.JSONEq(t, string(mockBlindedResponseBytes), string(resultBytes)) + }) + + t.Run("400 error", func(t *testing.T) { + mockHttpClient := &http.Client{ + Transport: mockRoundTripper(func(req *http.Request) (*http.Response, error) { + require.NotNil(t, req.Body) + require.Equal(t, expectPath, req.URL.String(), req.URL.String()) + require.Equal(t, expectMethod, req.Method) + return &http.Response{ + StatusCode: http.StatusBadRequest, + Body: io.NopCloser(bytes.NewBuffer([]byte("bad request"))), + Request: req.Clone(context.Background()), + }, nil + }), + } + builderClient := &builderClient{ + httpClient: mockHttpClient, + url: mockUrl, + beaconConfig: mockBeaconConfig, + } + block, bundle, err := builderClient.SubmitBlindedBlocks(ctx, mockBlindedBlock) + require.Error(t, err) + require.Nil(t, block) + require.Nil(t, bundle) + }) +} + +func newBytes48FromString(s string) common.Bytes48 { + bytes := common.Hex2Bytes(s) + var b common.Bytes48 + copy(b[:], bytes) + return b +} + +func newBytes96FromString(s string) common.Bytes96 { + bytes := common.Hex2Bytes(s) + var b common.Bytes96 + copy(b[:], bytes) + return b +} diff --git a/cl/beacon/builder/interface.go b/cl/beacon/builder/interface.go index acd86666b81..d1a0c08393f 100644 --- a/cl/beacon/builder/interface.go +++ b/cl/beacon/builder/interface.go @@ -11,7 +11,7 @@ import ( //go:generate mockgen -typed=true -destination=./mock_services/builder_client_mock.go -package=mock_services . BuilderClient type BuilderClient interface { RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error - GetExecutionPayloadHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) + GetHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) GetStatus(ctx context.Context) error } diff --git a/cl/beacon/builder/test/mock_blinded_block.json b/cl/beacon/builder/test/mock_blinded_block.json new file mode 100644 index 00000000000..d8427026b21 --- /dev/null +++ b/cl/beacon/builder/test/mock_blinded_block.json @@ -0,0 +1,193 @@ + { + "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": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", + "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", + "blob_gas_used": "1", + "excess_blob_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" + } \ No newline at end of file diff --git a/cl/beacon/builder/test/mock_blinded_block_resp.json b/cl/beacon/builder/test/mock_blinded_block_resp.json new file mode 100644 index 00000000000..1fde364c9c9 --- /dev/null +++ b/cl/beacon/builder/test/mock_blinded_block_resp.json @@ -0,0 +1,44 @@ +{ + "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", + "blob_gas_used": "1", + "excess_blob_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/cl/beacon/builder/test/mock_header.json b/cl/beacon/builder/test/mock_header.json new file mode 100644 index 00000000000..9de9c5bab69 --- /dev/null +++ b/cl/beacon/builder/test/mock_header.json @@ -0,0 +1,32 @@ +{ + "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", + "blob_gas_used": "1", + "excess_blob_gas": "1", + "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "transactions_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", + "withdrawals_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" + }, + "blob_kzg_commitments": [ + "0xa94170080872584e54a1cf092d845703b13907f2e6b3b1c0ad573b910530499e3bcd48c6378846b80d2bfa58c81cf3d5" + ], + "value": "1", + "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a" + }, + "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505" + } + } \ No newline at end of file diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index cad5f531a4f..8cbf69645e1 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -362,7 +362,7 @@ func (a *ApiHandler) getBuilderPayload( } // get the parent hash of base execution block parentHash := baseBlock.Body.ExecutionPayload.BlockHash - header, err := a.builderClient.GetExecutionPayloadHeader(ctx, int64(targetSlot), parentHash, pubKey) + header, err := a.builderClient.GetHeader(ctx, int64(targetSlot), parentHash, pubKey) if err != nil { return nil, err } else if header == nil { diff --git a/cl/beacon/handler/test_data/blinded_block_1.json b/cl/beacon/handler/test_data/blinded_block_1.json index 1ee8732f167..79f1c40ef11 100644 --- a/cl/beacon/handler/test_data/blinded_block_1.json +++ b/cl/beacon/handler/test_data/blinded_block_1.json @@ -1 +1 @@ -{"data":{"message":{"body":{"attestations":[{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8294","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa46775d208c119b097221ead6ee9afbf011258b03da07138d01fef8d5bd4681ecbab6f36687e8ae644191acebc94800a002b136de6ff892e4e0910d05402def66858ee8ad8f4b706fab163fe742959dcb86fa90d0b822e5937092852962acbb1"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"}],"attester_slashings":[{"attestation_1":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa7e932307a82913b23743198182a7e3c97675e8a1133e8d946bc59c62b1765046214ca0ea0e13b77e4f8acc8f226498103684f382826a9fff6c6c2ffdf9c65ffeb1680155025f489f676457634581ee4363bdfbe4d46fc4d1d9df93c3df8750d"},"attestation_2":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x0101010101010101010101010101010101010101010101010101010101010101"}},"signature":"0x89aadbd74370dc6d86b6b61c544c1e18949b0d8aa2d706605d1014d0266a043588a829243d343d1c3812621944ea34540aef1fbd34fe51b03a5734ebc5ec31057d1df0004faeca71d8687dd3af806e4332e19f6da5ab1d7da67fe017c2f2e68b"}}],"blob_kzg_commitments":[],"deposits":[{"data":{"amount":"32000000000","pubkey":"0xa19c8e80ddc1caad60a172b66eb24e83ef200d77034b3e16bbee4d95e929a5c1a473563973338d22e7a566fdbd352f65","signature":"0xb9b4b512b2c67a3e89edcbef91fc0ccd88c9a8c8654c51a130ffb2ab539c22a0c6b84928e8db4ca8a9d04f2dee312c3817a2bf360b6f5f2f3d1ba69b43cf4671290f7f58621887ad4dd1c9fe6d02cc59443e12447a20b38913f67597b0e3cc93","withdrawal_credentials":"0x00edbcfc97a6985ac86187522426240ed81b6493c880d0798360149ec8ce96d8"},"proof":["0x7e4ac18e104e72c0e90675c6caca41a8b6147b55c93df90177b3875e4ce83a04","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb1f92d1a612942fb266c1e436f8d417282efa2805d5a5a819e3d07e358a70efbf0cc1671412ee986cd342c3d2255a324","signature":"0x8dbd6f9b4ce0a5277f66da9ec41776cff88a647ae1b4dde221a3bf41b9d4af1e77d0cff23185796815448f2e8148126a046b4b60947a32a1e201b4e979c91b395c1d4804ead1324d699eaa9c481efa69484a7946a0bad9788e50cf05847a30c4","withdrawal_credentials":"0x004ac0f181a01d43a7de32602b440cfbe3a091bb8c108c1fa35726ed301743f9"},"proof":["0xb87c4b5cfdd2b2dde4c1d282cf4b68e81d232038820320b11445df5001a68e7c","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb532643cb8824a2fbd9196c10961f3ad2f0e319c3612bb15a51a3454593f44726383f006425c2e5952b156a6e14aceb0","signature":"0x97852e8c02386bcc8a2dd51c70c48661c79bc1f89f9dce113a60fcde345abedf96fa186c4230013cf61f3546c5d9877a0eab7a5a4f4e4e0e4bcd917dc8368a88e3b8380de9e96ed36bfd605d55956af64a17b877f12762acfdd1c3effe4b4d42","withdrawal_credentials":"0x00f68c08152911b76f556f9d6dfc66d54e5abd63de04dc073d6b03f333ac00f3"},"proof":["0x3fcccf842d7d1954fb2c1aacd56d76733564644838e52af17cfe1d0eb778ffd5","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xa7a1c0bbad929dc02699e92597a66266bbd9533419693270c9b56bbdea643cd2ded9664da3c9fd8db2389277b5e585cc","signature":"0xb0e97772997255840a5758e5325b9d1c56a292500838c5b2b697b7dd207c65a2ef928ebb9466d57782edf79f9b74bbbb069235c752f6527e8d8eb1c785d99326da78680056ee3084811b980185287259af64607e218d67a3b8f24d27c0659ce2","withdrawal_credentials":"0x00e64188226da03f1f3d787ef65d86690aaa24d44e5ac92c99c413463ec47c26"},"proof":["0xd3955560f10ca441dfc6f92be6798857e9f81833cf1672e75fe1830f8a21ddb4","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x9919842dee455266e4dc77c74088bddbfdb535b9a1bbe75a3cced0e428598038365afe11c7578e4dbd8fe4cae7237543","signature":"0x99ef1ab7cfbe40d0a1e136138a4a8094e8f54a59c8d05052749b7af14931274fad1c0a44577de51099f2700505fa8861023b7bddabb274249a091acb3a4f7543f877da3792dad7897351c7a01343116a65959812fd55cc4ce4197b05f698761f","withdrawal_credentials":"0x000a2baaef8f6cc730d6a5474879aed4fe8c95da787cc2e15c3cdba14a9cef12"},"proof":["0x483eee486429a5f5c215aa1d843f352300e48345c10e329725907a65b61ccc04","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb4ed73c02a816ba9d23ba0e023970772f82dd3a32a85eefd922958e33bcab7f9c85e20372e49107665926cca852b8b9a","signature":"0xa6dfce815f61ce81bf107bf5ccc1beae5f32b63a55e836a5983b63b90c0e7eac873387107c145ab59c32679091cfd28a0dbf2b73f75cd5ab01b75c6ba984b83c796c92b77adba152ab2a20132324fc4b20c8ec002663f16edec9308bb8f3d298","withdrawal_credentials":"0x0017c0e8e177a6d58e4f8b93b2b66b13aef9c186cfccb9466d857a474b32b0d4"},"proof":["0xd46d72b4a13923f739ef7f69526c405af02941c64a3d73585000a321f06e866d","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb0d0dfaf7479f59319beb513bee16e1af576a0740a7a124a9947ec7c3826dbc0a5d5db15519e8423d7aa683f638f3da3","signature":"0x85a06ab8d9d576cb2810a88635b7a462d1cfb238db066b8caeba7f36562bb903630f8f24d157747debad5428c4f42a9a0a08dfd53c687cd7c3e17ec539f353357bbd89b7111246c99cc7fab24b8cd33a88cddf845f7d27c8a33079aa097069e3","withdrawal_credentials":"0x00a61d2fddabb70c2db059af7e298b0395ef882dda24ae144f2b7ac88026e55d"},"proof":["0x29b1515f1533718ce5cdebb90590c0bf30caefcaf6c92ad72c821d7a78f83684","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb69614adf68d58f7d67110d7ced171ab934cb973f19c60cbb83161468655c42fe19a80a8e903030650bfaa9613a1ab2d","signature":"0x957f48b82d761d3e7f2e34eeff5922358d87f9b31c51e5af37a54fedeab7cfc09c3068f6ef5c97e0323dabff706bc7520113d51841c6dc2eaa044c8526bdaebcf35476c0b08cccb69ab0bab07c8e7ca2d6573b0ae96c32ae3d18764ae7ea78e0","withdrawal_credentials":"0x0037c021fdef99bcf9fb90c02440571ab2faa0238485ed72e427b69dc8dddc91"},"proof":["0x8b0f06508d861e2d5a18c3565217368ea18eb41985729a506d8a6ab2427f192d","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xac897c8892a6f3effcd276e4f44f410644846a333db600ad12e1099020196b2f8104563c04d78fedf5afc5d87b91b1b5","signature":"0x95a886b35ead6f8fc09d33975108857abffc32d53db6546a7251d32ca6d1706e899155b3883b05e65a041e44c51db8480703f13cccc6575cd2d50d0506485b9669a096bb1a2d4879008c15b8c1cdcd2e1a5c4f12885311e24dd87dc32e1bce87","withdrawal_credentials":"0x0075f9178dd8a199c55d5cebb9dccb00508e619d5b9abd2b7cd5ad3f671c5a9f"},"proof":["0x50f17abe0de10eea94174120fbfa9f93b2761e2df90717235b422a62ca34cc11","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x8794fd3f4e5e66e6e81735d5726943833b82d1efd7d877e495a8c36955b7dfb95b3f6cfcef865fd7969fa2e17e628ab9","signature":"0xb42aa548fd9068db7916757390f6d011ad890b9f27a75d4676dd9edcd9017f5d7e2cec215a04502fcff253aa821865fb0c30549e7b5d5e62cc8df0264dc3b55538f15cfd375f9cb022a94c2a39201d757a502701acd50554dc4da29173c945bd","withdrawal_credentials":"0x0087adf1a29896ae52be67356ee9a4a5035450764c278382f8940d554668c208"},"proof":["0x409002728188e6b1455636b55469598dbc31a3633a7f53a743a5576e3356c0b3","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]}],"eth1_data":{"block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","deposit_count":"528","deposit_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"bls_to_execution_changes":[],"execution_payload_header":{"base_fee_per_gas":"0","blob_gas_used":"0","block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","block_number":"0","excess_blob_gas":"0","extra_data":null,"fee_recipient":"0x0000000000000000000000000000000000000000","gas_limit":"0","gas_used":"0","logs_bloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","parent_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","prev_randao":"0x0000000000000000000000000000000000000000000000000000000000000000","receipts_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","timestamp":"0","transactions_root":"0x0000000000000000000000000000000000000000000000000000000000000000","withdrawals_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"graffiti":"0x0000000000000000000000000000000000000000000000000000000000000000","proposer_slashings":[{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x939584df88598e56fe144105c6933b4727d7b772539e65c57289df64cedee771377e4d0e94f85c25d39a6072997d309c09da8c477267670aa42f26fb0836c72ec5867fa2f34dc0eb7e043ef5d6421282d1515b0f8c7ffd4bbbf56ee8d61ed063"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a184441d5d944ed3c18549dd9e4640eda879f9e737ac4211fdddfd30a65e1a2a32a8aa918ca65ad9b863a15e8cfefc412608ca78fd54ea1e5cbbd5697d125cc721aac1b01e8984a33f025c4707623669573244a632ec7f37808c01fab143f58"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xad97a43e9f28a90ff46b07a7bf65d520b89a78af47dbff1c10e4fc6bb36b4ee9c4f27f2a72c65311a03e7b48e06d86db1149147b14a8803d46f6a457092642dc89d3f2782bd48a373e3125af1a84f5b76d4ff7ddc85ac2650ca4c0f99e1af592"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88d860d460526de062ee196400e24cb3055de2ff6abb31331d0bfeeebcdc77839d22ad6dfec39d81279f5527d1ffbd7e0a9d6eee7dce5a1cd6f79451537e9dfb6384f595e9d49673c58c181527a599dd4b38154e1322f1607f192ab0394f1411"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a2358ff11a30100a2492001827f54ff6c10dd6dcea66f6814dd1cccc4a49850bbbe36546e4f9b72410042a9d5882e8219a5a01708b8a95ca57984debe78f419a4ac921270a0f0c11c795a6c5ef1e6bfb96712751a4fee61059ca8fbe69639b6"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb820e03b7bfd21c2d97a4f2bc9dd1fd5325894757f7129646c7a39a02b2c1c8ca33d509b4e83491e79db02ac0490aa3308ee23bfa1f65bf4130ab07e377a8cbd4eace5b69801528322dde425b0a78310504c330da30be7cefc674573dbdb4502"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88c81a6029f097a9f23e37c7677abfafa2921982e9aebffc35ca700e1aefcd49c2ab5d51c7b28ef3db3aad49d58a6407082ce1ecd7f7bd89cb764242890440b684fc0e1511e047434b25f3ad1a5e238e5bf97f51e9e37d6eed48e0b9fef64333"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x815b492a6a3fb606f01dbc595c8b18b51b7f7a5a86b11f3ae57c48f7506a34606556a3cf2be683ce23cd0c7b2235667613f9dbcf98408b176f134645f122684bd8fe704c7a4eccb7bb7cbe33c6de377be4d742291d35d0ec8d6083c1b17b7261"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xae352ba8550d04c07591224449bd4967f66f9d639b731795f643b1e3fc5ad28317268dc9e289ce6075e8981a0e37d9440885e4f4292cb4b4656bd0c7bd9fc22d21eb4c7d1b46f1b08cdb1eb08d7a405985e8a406e6d93c5c3fdd20e91baba122"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb9152f5510f2bfa5ab7b61829823f25f0c879ab9b852fcd90c17f751bed6e687dc523fcda177503509cd1befec36046a056a66f5826e2333b6de67430a16f6194416681ae69a1c3498cf8351abae4fac5d8f0b51b1734633d545d540bf269270"}}],"randao_reveal":"0xa182a6c7224c53cc43492b7ba87b54e8303094ebcb8c822da09c4224791b461e34d089ac857acf05cd695679c25cffa30404832791fe424fd104e2e96ebbf583dd5ec4dcbc891e7f4e0dea402071dbd294810417221fc41e4f90e4837c694e1a","sync_aggregate":{"sync_committee_bits":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","sync_committee_signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"voluntary_exits":[{"message":{"epoch":"260","validator_index":"504"},"signature":"0x8fedc3077271b41f631d6062cc1cc8c8f074e486e9e692f198c5f82b94d2bb3b0fbf71cbac043cee94b56a7a06adf06d07bb7ecf06d8f699add17972ceb54b25e6021c3a2a727afd3370e960afbf345a75fddd2d221ba85a5f7b07e5607eec1e"},{"message":{"epoch":"260","validator_index":"503"},"signature":"0xa44079752dfa36b925f0ff675dfd10b5b7cc0c178839356d0bda9c83b6df01f6bfdd904af92373002bfac40277941d2809c4152fc61007ae4f2c73e550ed02f425419efae0461d8829746c7a3d36dcae5bc37158ede7dd30ccc33930783b6194"},{"message":{"epoch":"260","validator_index":"502"},"signature":"0xb193b547c2d45341c9aedd0a22f4afc565d9aaa3a04889df2f8ad608bb31b44a0391c69383f0f4725cea291332c081ff0a48e850d246dd0be40880bf17316eb4b2eaf4b8b6ba6d59c93aea3af98988f05cb2ddf61d8637f943864ebfe7c9707c"},{"message":{"epoch":"260","validator_index":"501"},"signature":"0x88afe9a0215d2a67c451fcbdc358237c4d5dce6b46973ae527afb7f8fb1da800d6a3dd7f6387028a57737b354b7db88803bd6f2a59c7fb84229f42e6c6ea1b7510cb2a28026ff8f2eefb8fc7e2a83115197b7a1bd35fbf0afcc69e4b6e581911"},{"message":{"epoch":"260","validator_index":"500"},"signature":"0xa2f2399070bcfa3f50894d7170d1343ab5f52d6bdc155124e867bcde936aee4e0bb69f164dee5fa07d47abccb8844ec101126caf0402f1a757934f8e7b5904a60cedc283b5e9801f2a71f80cda16e910d72518d469a9a40cd94b8ad3cca10136"},{"message":{"epoch":"260","validator_index":"499"},"signature":"0x86abacd204c85cfc40d71853422001e44134b1900138fccb409928b7e663270476e3d7a7e0aaa103c693cad3629da1aa056cac30c8aab1a4eb50d81bb0711db3dba1d741562b103f67f495996b18fad779d3d9cc508763ab883a7cd6858bdc51"},{"message":{"epoch":"260","validator_index":"498"},"signature":"0xb86533e02779dd0f959dbf1b0fa195126ccc945fd0a7c5b7370aefc16f8f130d083c0c1c58a5c18e8119d7912dd532d91765dd26ad5ef3991238bc093bab79d511b1d8484482eec9b6b4a98f4a8928819ea58fc857ed80b59fe9cb7a33fe60a2"},{"message":{"epoch":"260","validator_index":"495"},"signature":"0x80a5c7c52a246dcaaf67caf6285ea518581835af668d1a64723b321b167464e238248c0017d5265be373c9079d7b529b10aedc37835683e5e1320c3ad6fa1f72d52046a49b061935e1631565912d2f2482434007957fe9903edecf4dad8e5bb8"},{"message":{"epoch":"260","validator_index":"494"},"signature":"0xb6a0e4cdc1815f03166218963ec9cc4c5d607a67d659d1227386e16f90d3e39c6cddf696e3534f3824ca5aff8c734bab153f3bab701247cdcea16db31c94846c1cd3781b1861485ad813d025bf0a486c592dd1f9afa1134e8288e4fef44d2f3c"},{"message":{"epoch":"260","validator_index":"492"},"signature":"0xad850276510c2e41d059df6a1cefab9f1b66463da47b0fc772b21ed90c13e1bd6f86def8b2ecb867f4f752612d9d25e30a151aa6ef630a1b6ddaa4420c240b37df0234ee332373fe132b0101a0486900c5733762beeacd95429dd34c34230d13"},{"message":{"epoch":"260","validator_index":"491"},"signature":"0x837669180ba01b65157087f49c7af19acb1439016eca9c699b7136da7e9bbc89d6bddc7a030388bbb7e149ebd521c4810f457846b9cf913f7ee6f01db4363d3ce92fc732e52359917d36c7e4a08158653f1a9a78a608c4b56ff3e155b2783974"}]},"parent_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","proposer_index":"210","slot":"8322","state_root":"0x933d6650f2999f17012e781f5012981edb549e5935de1c981fce81cdd241d4e1"},"signature":"0x8b915f3b9d2d4c7ccaacf5d56c1152b1e91eafd1f59ba734d09e78996930b63ca550499997fe6d590343aaf5997f0d0c14c986571992ac9ed188de2b31ae4b7d70dfb68edae8b012f72f284dc8da44f4af5a2bdf3dfc9c0897ec4f7165daa07a"},"execution_optimistic":false,"finalized":false,"version":"phase0"} \ No newline at end of file +{"data":{"message":{"body":{"attestations":[{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8294","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa46775d208c119b097221ead6ee9afbf011258b03da07138d01fef8d5bd4681ecbab6f36687e8ae644191acebc94800a002b136de6ff892e4e0910d05402def66858ee8ad8f4b706fab163fe742959dcb86fa90d0b822e5937092852962acbb1"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"}],"attester_slashings":[{"attestation_1":{"attesting_indices":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa7e932307a82913b23743198182a7e3c97675e8a1133e8d946bc59c62b1765046214ca0ea0e13b77e4f8acc8f226498103684f382826a9fff6c6c2ffdf9c65ffeb1680155025f489f676457634581ee4363bdfbe4d46fc4d1d9df93c3df8750d"},"attestation_2":{"attesting_indices":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x0101010101010101010101010101010101010101010101010101010101010101"}},"signature":"0x89aadbd74370dc6d86b6b61c544c1e18949b0d8aa2d706605d1014d0266a043588a829243d343d1c3812621944ea34540aef1fbd34fe51b03a5734ebc5ec31057d1df0004faeca71d8687dd3af806e4332e19f6da5ab1d7da67fe017c2f2e68b"}}],"blob_kzg_commitments":[],"deposits":[{"data":{"amount":"32000000000","pubkey":"0xa19c8e80ddc1caad60a172b66eb24e83ef200d77034b3e16bbee4d95e929a5c1a473563973338d22e7a566fdbd352f65","signature":"0xb9b4b512b2c67a3e89edcbef91fc0ccd88c9a8c8654c51a130ffb2ab539c22a0c6b84928e8db4ca8a9d04f2dee312c3817a2bf360b6f5f2f3d1ba69b43cf4671290f7f58621887ad4dd1c9fe6d02cc59443e12447a20b38913f67597b0e3cc93","withdrawal_credentials":"0x00edbcfc97a6985ac86187522426240ed81b6493c880d0798360149ec8ce96d8"},"proof":["0x7e4ac18e104e72c0e90675c6caca41a8b6147b55c93df90177b3875e4ce83a04","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb1f92d1a612942fb266c1e436f8d417282efa2805d5a5a819e3d07e358a70efbf0cc1671412ee986cd342c3d2255a324","signature":"0x8dbd6f9b4ce0a5277f66da9ec41776cff88a647ae1b4dde221a3bf41b9d4af1e77d0cff23185796815448f2e8148126a046b4b60947a32a1e201b4e979c91b395c1d4804ead1324d699eaa9c481efa69484a7946a0bad9788e50cf05847a30c4","withdrawal_credentials":"0x004ac0f181a01d43a7de32602b440cfbe3a091bb8c108c1fa35726ed301743f9"},"proof":["0xb87c4b5cfdd2b2dde4c1d282cf4b68e81d232038820320b11445df5001a68e7c","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb532643cb8824a2fbd9196c10961f3ad2f0e319c3612bb15a51a3454593f44726383f006425c2e5952b156a6e14aceb0","signature":"0x97852e8c02386bcc8a2dd51c70c48661c79bc1f89f9dce113a60fcde345abedf96fa186c4230013cf61f3546c5d9877a0eab7a5a4f4e4e0e4bcd917dc8368a88e3b8380de9e96ed36bfd605d55956af64a17b877f12762acfdd1c3effe4b4d42","withdrawal_credentials":"0x00f68c08152911b76f556f9d6dfc66d54e5abd63de04dc073d6b03f333ac00f3"},"proof":["0x3fcccf842d7d1954fb2c1aacd56d76733564644838e52af17cfe1d0eb778ffd5","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xa7a1c0bbad929dc02699e92597a66266bbd9533419693270c9b56bbdea643cd2ded9664da3c9fd8db2389277b5e585cc","signature":"0xb0e97772997255840a5758e5325b9d1c56a292500838c5b2b697b7dd207c65a2ef928ebb9466d57782edf79f9b74bbbb069235c752f6527e8d8eb1c785d99326da78680056ee3084811b980185287259af64607e218d67a3b8f24d27c0659ce2","withdrawal_credentials":"0x00e64188226da03f1f3d787ef65d86690aaa24d44e5ac92c99c413463ec47c26"},"proof":["0xd3955560f10ca441dfc6f92be6798857e9f81833cf1672e75fe1830f8a21ddb4","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x9919842dee455266e4dc77c74088bddbfdb535b9a1bbe75a3cced0e428598038365afe11c7578e4dbd8fe4cae7237543","signature":"0x99ef1ab7cfbe40d0a1e136138a4a8094e8f54a59c8d05052749b7af14931274fad1c0a44577de51099f2700505fa8861023b7bddabb274249a091acb3a4f7543f877da3792dad7897351c7a01343116a65959812fd55cc4ce4197b05f698761f","withdrawal_credentials":"0x000a2baaef8f6cc730d6a5474879aed4fe8c95da787cc2e15c3cdba14a9cef12"},"proof":["0x483eee486429a5f5c215aa1d843f352300e48345c10e329725907a65b61ccc04","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb4ed73c02a816ba9d23ba0e023970772f82dd3a32a85eefd922958e33bcab7f9c85e20372e49107665926cca852b8b9a","signature":"0xa6dfce815f61ce81bf107bf5ccc1beae5f32b63a55e836a5983b63b90c0e7eac873387107c145ab59c32679091cfd28a0dbf2b73f75cd5ab01b75c6ba984b83c796c92b77adba152ab2a20132324fc4b20c8ec002663f16edec9308bb8f3d298","withdrawal_credentials":"0x0017c0e8e177a6d58e4f8b93b2b66b13aef9c186cfccb9466d857a474b32b0d4"},"proof":["0xd46d72b4a13923f739ef7f69526c405af02941c64a3d73585000a321f06e866d","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb0d0dfaf7479f59319beb513bee16e1af576a0740a7a124a9947ec7c3826dbc0a5d5db15519e8423d7aa683f638f3da3","signature":"0x85a06ab8d9d576cb2810a88635b7a462d1cfb238db066b8caeba7f36562bb903630f8f24d157747debad5428c4f42a9a0a08dfd53c687cd7c3e17ec539f353357bbd89b7111246c99cc7fab24b8cd33a88cddf845f7d27c8a33079aa097069e3","withdrawal_credentials":"0x00a61d2fddabb70c2db059af7e298b0395ef882dda24ae144f2b7ac88026e55d"},"proof":["0x29b1515f1533718ce5cdebb90590c0bf30caefcaf6c92ad72c821d7a78f83684","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb69614adf68d58f7d67110d7ced171ab934cb973f19c60cbb83161468655c42fe19a80a8e903030650bfaa9613a1ab2d","signature":"0x957f48b82d761d3e7f2e34eeff5922358d87f9b31c51e5af37a54fedeab7cfc09c3068f6ef5c97e0323dabff706bc7520113d51841c6dc2eaa044c8526bdaebcf35476c0b08cccb69ab0bab07c8e7ca2d6573b0ae96c32ae3d18764ae7ea78e0","withdrawal_credentials":"0x0037c021fdef99bcf9fb90c02440571ab2faa0238485ed72e427b69dc8dddc91"},"proof":["0x8b0f06508d861e2d5a18c3565217368ea18eb41985729a506d8a6ab2427f192d","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xac897c8892a6f3effcd276e4f44f410644846a333db600ad12e1099020196b2f8104563c04d78fedf5afc5d87b91b1b5","signature":"0x95a886b35ead6f8fc09d33975108857abffc32d53db6546a7251d32ca6d1706e899155b3883b05e65a041e44c51db8480703f13cccc6575cd2d50d0506485b9669a096bb1a2d4879008c15b8c1cdcd2e1a5c4f12885311e24dd87dc32e1bce87","withdrawal_credentials":"0x0075f9178dd8a199c55d5cebb9dccb00508e619d5b9abd2b7cd5ad3f671c5a9f"},"proof":["0x50f17abe0de10eea94174120fbfa9f93b2761e2df90717235b422a62ca34cc11","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x8794fd3f4e5e66e6e81735d5726943833b82d1efd7d877e495a8c36955b7dfb95b3f6cfcef865fd7969fa2e17e628ab9","signature":"0xb42aa548fd9068db7916757390f6d011ad890b9f27a75d4676dd9edcd9017f5d7e2cec215a04502fcff253aa821865fb0c30549e7b5d5e62cc8df0264dc3b55538f15cfd375f9cb022a94c2a39201d757a502701acd50554dc4da29173c945bd","withdrawal_credentials":"0x0087adf1a29896ae52be67356ee9a4a5035450764c278382f8940d554668c208"},"proof":["0x409002728188e6b1455636b55469598dbc31a3633a7f53a743a5576e3356c0b3","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]}],"eth1_data":{"block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","deposit_count":"528","deposit_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"bls_to_execution_changes":[],"execution_payload_header":{"base_fee_per_gas":"0","blob_gas_used":"0","block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","block_number":"0","excess_blob_gas":"0","extra_data":null,"fee_recipient":"0x0000000000000000000000000000000000000000","gas_limit":"0","gas_used":"0","logs_bloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","parent_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","prev_randao":"0x0000000000000000000000000000000000000000000000000000000000000000","receipts_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","timestamp":"0","transactions_root":"0x0000000000000000000000000000000000000000000000000000000000000000","withdrawals_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"graffiti":"0x0000000000000000000000000000000000000000000000000000000000000000","proposer_slashings":[{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x939584df88598e56fe144105c6933b4727d7b772539e65c57289df64cedee771377e4d0e94f85c25d39a6072997d309c09da8c477267670aa42f26fb0836c72ec5867fa2f34dc0eb7e043ef5d6421282d1515b0f8c7ffd4bbbf56ee8d61ed063"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a184441d5d944ed3c18549dd9e4640eda879f9e737ac4211fdddfd30a65e1a2a32a8aa918ca65ad9b863a15e8cfefc412608ca78fd54ea1e5cbbd5697d125cc721aac1b01e8984a33f025c4707623669573244a632ec7f37808c01fab143f58"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xad97a43e9f28a90ff46b07a7bf65d520b89a78af47dbff1c10e4fc6bb36b4ee9c4f27f2a72c65311a03e7b48e06d86db1149147b14a8803d46f6a457092642dc89d3f2782bd48a373e3125af1a84f5b76d4ff7ddc85ac2650ca4c0f99e1af592"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88d860d460526de062ee196400e24cb3055de2ff6abb31331d0bfeeebcdc77839d22ad6dfec39d81279f5527d1ffbd7e0a9d6eee7dce5a1cd6f79451537e9dfb6384f595e9d49673c58c181527a599dd4b38154e1322f1607f192ab0394f1411"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a2358ff11a30100a2492001827f54ff6c10dd6dcea66f6814dd1cccc4a49850bbbe36546e4f9b72410042a9d5882e8219a5a01708b8a95ca57984debe78f419a4ac921270a0f0c11c795a6c5ef1e6bfb96712751a4fee61059ca8fbe69639b6"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb820e03b7bfd21c2d97a4f2bc9dd1fd5325894757f7129646c7a39a02b2c1c8ca33d509b4e83491e79db02ac0490aa3308ee23bfa1f65bf4130ab07e377a8cbd4eace5b69801528322dde425b0a78310504c330da30be7cefc674573dbdb4502"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88c81a6029f097a9f23e37c7677abfafa2921982e9aebffc35ca700e1aefcd49c2ab5d51c7b28ef3db3aad49d58a6407082ce1ecd7f7bd89cb764242890440b684fc0e1511e047434b25f3ad1a5e238e5bf97f51e9e37d6eed48e0b9fef64333"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x815b492a6a3fb606f01dbc595c8b18b51b7f7a5a86b11f3ae57c48f7506a34606556a3cf2be683ce23cd0c7b2235667613f9dbcf98408b176f134645f122684bd8fe704c7a4eccb7bb7cbe33c6de377be4d742291d35d0ec8d6083c1b17b7261"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xae352ba8550d04c07591224449bd4967f66f9d639b731795f643b1e3fc5ad28317268dc9e289ce6075e8981a0e37d9440885e4f4292cb4b4656bd0c7bd9fc22d21eb4c7d1b46f1b08cdb1eb08d7a405985e8a406e6d93c5c3fdd20e91baba122"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb9152f5510f2bfa5ab7b61829823f25f0c879ab9b852fcd90c17f751bed6e687dc523fcda177503509cd1befec36046a056a66f5826e2333b6de67430a16f6194416681ae69a1c3498cf8351abae4fac5d8f0b51b1734633d545d540bf269270"}}],"randao_reveal":"0xa182a6c7224c53cc43492b7ba87b54e8303094ebcb8c822da09c4224791b461e34d089ac857acf05cd695679c25cffa30404832791fe424fd104e2e96ebbf583dd5ec4dcbc891e7f4e0dea402071dbd294810417221fc41e4f90e4837c694e1a","sync_aggregate":{"sync_committee_bits":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","sync_committee_signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"voluntary_exits":[{"message":{"epoch":"260","validator_index":"504"},"signature":"0x8fedc3077271b41f631d6062cc1cc8c8f074e486e9e692f198c5f82b94d2bb3b0fbf71cbac043cee94b56a7a06adf06d07bb7ecf06d8f699add17972ceb54b25e6021c3a2a727afd3370e960afbf345a75fddd2d221ba85a5f7b07e5607eec1e"},{"message":{"epoch":"260","validator_index":"503"},"signature":"0xa44079752dfa36b925f0ff675dfd10b5b7cc0c178839356d0bda9c83b6df01f6bfdd904af92373002bfac40277941d2809c4152fc61007ae4f2c73e550ed02f425419efae0461d8829746c7a3d36dcae5bc37158ede7dd30ccc33930783b6194"},{"message":{"epoch":"260","validator_index":"502"},"signature":"0xb193b547c2d45341c9aedd0a22f4afc565d9aaa3a04889df2f8ad608bb31b44a0391c69383f0f4725cea291332c081ff0a48e850d246dd0be40880bf17316eb4b2eaf4b8b6ba6d59c93aea3af98988f05cb2ddf61d8637f943864ebfe7c9707c"},{"message":{"epoch":"260","validator_index":"501"},"signature":"0x88afe9a0215d2a67c451fcbdc358237c4d5dce6b46973ae527afb7f8fb1da800d6a3dd7f6387028a57737b354b7db88803bd6f2a59c7fb84229f42e6c6ea1b7510cb2a28026ff8f2eefb8fc7e2a83115197b7a1bd35fbf0afcc69e4b6e581911"},{"message":{"epoch":"260","validator_index":"500"},"signature":"0xa2f2399070bcfa3f50894d7170d1343ab5f52d6bdc155124e867bcde936aee4e0bb69f164dee5fa07d47abccb8844ec101126caf0402f1a757934f8e7b5904a60cedc283b5e9801f2a71f80cda16e910d72518d469a9a40cd94b8ad3cca10136"},{"message":{"epoch":"260","validator_index":"499"},"signature":"0x86abacd204c85cfc40d71853422001e44134b1900138fccb409928b7e663270476e3d7a7e0aaa103c693cad3629da1aa056cac30c8aab1a4eb50d81bb0711db3dba1d741562b103f67f495996b18fad779d3d9cc508763ab883a7cd6858bdc51"},{"message":{"epoch":"260","validator_index":"498"},"signature":"0xb86533e02779dd0f959dbf1b0fa195126ccc945fd0a7c5b7370aefc16f8f130d083c0c1c58a5c18e8119d7912dd532d91765dd26ad5ef3991238bc093bab79d511b1d8484482eec9b6b4a98f4a8928819ea58fc857ed80b59fe9cb7a33fe60a2"},{"message":{"epoch":"260","validator_index":"495"},"signature":"0x80a5c7c52a246dcaaf67caf6285ea518581835af668d1a64723b321b167464e238248c0017d5265be373c9079d7b529b10aedc37835683e5e1320c3ad6fa1f72d52046a49b061935e1631565912d2f2482434007957fe9903edecf4dad8e5bb8"},{"message":{"epoch":"260","validator_index":"494"},"signature":"0xb6a0e4cdc1815f03166218963ec9cc4c5d607a67d659d1227386e16f90d3e39c6cddf696e3534f3824ca5aff8c734bab153f3bab701247cdcea16db31c94846c1cd3781b1861485ad813d025bf0a486c592dd1f9afa1134e8288e4fef44d2f3c"},{"message":{"epoch":"260","validator_index":"492"},"signature":"0xad850276510c2e41d059df6a1cefab9f1b66463da47b0fc772b21ed90c13e1bd6f86def8b2ecb867f4f752612d9d25e30a151aa6ef630a1b6ddaa4420c240b37df0234ee332373fe132b0101a0486900c5733762beeacd95429dd34c34230d13"},{"message":{"epoch":"260","validator_index":"491"},"signature":"0x837669180ba01b65157087f49c7af19acb1439016eca9c699b7136da7e9bbc89d6bddc7a030388bbb7e149ebd521c4810f457846b9cf913f7ee6f01db4363d3ce92fc732e52359917d36c7e4a08158653f1a9a78a608c4b56ff3e155b2783974"}]},"parent_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","proposer_index":"210","slot":"8322","state_root":"0x933d6650f2999f17012e781f5012981edb549e5935de1c981fce81cdd241d4e1"},"signature":"0x8b915f3b9d2d4c7ccaacf5d56c1152b1e91eafd1f59ba734d09e78996930b63ca550499997fe6d590343aaf5997f0d0c14c986571992ac9ed188de2b31ae4b7d70dfb68edae8b012f72f284dc8da44f4af5a2bdf3dfc9c0897ec4f7165daa07a"},"execution_optimistic":false,"finalized":false,"version":"phase0"} \ No newline at end of file diff --git a/cl/beacon/handler/test_data/block_1.json b/cl/beacon/handler/test_data/block_1.json index 72b906b853e..e0bab7166b5 100644 --- a/cl/beacon/handler/test_data/block_1.json +++ b/cl/beacon/handler/test_data/block_1.json @@ -1 +1 @@ -{"data":{"message":{"body":{"attestations":[{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8294","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa46775d208c119b097221ead6ee9afbf011258b03da07138d01fef8d5bd4681ecbab6f36687e8ae644191acebc94800a002b136de6ff892e4e0910d05402def66858ee8ad8f4b706fab163fe742959dcb86fa90d0b822e5937092852962acbb1"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"}],"attester_slashings":[{"attestation_1":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa7e932307a82913b23743198182a7e3c97675e8a1133e8d946bc59c62b1765046214ca0ea0e13b77e4f8acc8f226498103684f382826a9fff6c6c2ffdf9c65ffeb1680155025f489f676457634581ee4363bdfbe4d46fc4d1d9df93c3df8750d"},"attestation_2":{"attesting_indicies":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x0101010101010101010101010101010101010101010101010101010101010101"}},"signature":"0x89aadbd74370dc6d86b6b61c544c1e18949b0d8aa2d706605d1014d0266a043588a829243d343d1c3812621944ea34540aef1fbd34fe51b03a5734ebc5ec31057d1df0004faeca71d8687dd3af806e4332e19f6da5ab1d7da67fe017c2f2e68b"}}],"blob_kzg_commitments":[],"bls_to_execution_changes":[],"deposits":[{"data":{"amount":"32000000000","pubkey":"0xa19c8e80ddc1caad60a172b66eb24e83ef200d77034b3e16bbee4d95e929a5c1a473563973338d22e7a566fdbd352f65","signature":"0xb9b4b512b2c67a3e89edcbef91fc0ccd88c9a8c8654c51a130ffb2ab539c22a0c6b84928e8db4ca8a9d04f2dee312c3817a2bf360b6f5f2f3d1ba69b43cf4671290f7f58621887ad4dd1c9fe6d02cc59443e12447a20b38913f67597b0e3cc93","withdrawal_credentials":"0x00edbcfc97a6985ac86187522426240ed81b6493c880d0798360149ec8ce96d8"},"proof":["0x7e4ac18e104e72c0e90675c6caca41a8b6147b55c93df90177b3875e4ce83a04","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb1f92d1a612942fb266c1e436f8d417282efa2805d5a5a819e3d07e358a70efbf0cc1671412ee986cd342c3d2255a324","signature":"0x8dbd6f9b4ce0a5277f66da9ec41776cff88a647ae1b4dde221a3bf41b9d4af1e77d0cff23185796815448f2e8148126a046b4b60947a32a1e201b4e979c91b395c1d4804ead1324d699eaa9c481efa69484a7946a0bad9788e50cf05847a30c4","withdrawal_credentials":"0x004ac0f181a01d43a7de32602b440cfbe3a091bb8c108c1fa35726ed301743f9"},"proof":["0xb87c4b5cfdd2b2dde4c1d282cf4b68e81d232038820320b11445df5001a68e7c","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb532643cb8824a2fbd9196c10961f3ad2f0e319c3612bb15a51a3454593f44726383f006425c2e5952b156a6e14aceb0","signature":"0x97852e8c02386bcc8a2dd51c70c48661c79bc1f89f9dce113a60fcde345abedf96fa186c4230013cf61f3546c5d9877a0eab7a5a4f4e4e0e4bcd917dc8368a88e3b8380de9e96ed36bfd605d55956af64a17b877f12762acfdd1c3effe4b4d42","withdrawal_credentials":"0x00f68c08152911b76f556f9d6dfc66d54e5abd63de04dc073d6b03f333ac00f3"},"proof":["0x3fcccf842d7d1954fb2c1aacd56d76733564644838e52af17cfe1d0eb778ffd5","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xa7a1c0bbad929dc02699e92597a66266bbd9533419693270c9b56bbdea643cd2ded9664da3c9fd8db2389277b5e585cc","signature":"0xb0e97772997255840a5758e5325b9d1c56a292500838c5b2b697b7dd207c65a2ef928ebb9466d57782edf79f9b74bbbb069235c752f6527e8d8eb1c785d99326da78680056ee3084811b980185287259af64607e218d67a3b8f24d27c0659ce2","withdrawal_credentials":"0x00e64188226da03f1f3d787ef65d86690aaa24d44e5ac92c99c413463ec47c26"},"proof":["0xd3955560f10ca441dfc6f92be6798857e9f81833cf1672e75fe1830f8a21ddb4","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x9919842dee455266e4dc77c74088bddbfdb535b9a1bbe75a3cced0e428598038365afe11c7578e4dbd8fe4cae7237543","signature":"0x99ef1ab7cfbe40d0a1e136138a4a8094e8f54a59c8d05052749b7af14931274fad1c0a44577de51099f2700505fa8861023b7bddabb274249a091acb3a4f7543f877da3792dad7897351c7a01343116a65959812fd55cc4ce4197b05f698761f","withdrawal_credentials":"0x000a2baaef8f6cc730d6a5474879aed4fe8c95da787cc2e15c3cdba14a9cef12"},"proof":["0x483eee486429a5f5c215aa1d843f352300e48345c10e329725907a65b61ccc04","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb4ed73c02a816ba9d23ba0e023970772f82dd3a32a85eefd922958e33bcab7f9c85e20372e49107665926cca852b8b9a","signature":"0xa6dfce815f61ce81bf107bf5ccc1beae5f32b63a55e836a5983b63b90c0e7eac873387107c145ab59c32679091cfd28a0dbf2b73f75cd5ab01b75c6ba984b83c796c92b77adba152ab2a20132324fc4b20c8ec002663f16edec9308bb8f3d298","withdrawal_credentials":"0x0017c0e8e177a6d58e4f8b93b2b66b13aef9c186cfccb9466d857a474b32b0d4"},"proof":["0xd46d72b4a13923f739ef7f69526c405af02941c64a3d73585000a321f06e866d","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb0d0dfaf7479f59319beb513bee16e1af576a0740a7a124a9947ec7c3826dbc0a5d5db15519e8423d7aa683f638f3da3","signature":"0x85a06ab8d9d576cb2810a88635b7a462d1cfb238db066b8caeba7f36562bb903630f8f24d157747debad5428c4f42a9a0a08dfd53c687cd7c3e17ec539f353357bbd89b7111246c99cc7fab24b8cd33a88cddf845f7d27c8a33079aa097069e3","withdrawal_credentials":"0x00a61d2fddabb70c2db059af7e298b0395ef882dda24ae144f2b7ac88026e55d"},"proof":["0x29b1515f1533718ce5cdebb90590c0bf30caefcaf6c92ad72c821d7a78f83684","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb69614adf68d58f7d67110d7ced171ab934cb973f19c60cbb83161468655c42fe19a80a8e903030650bfaa9613a1ab2d","signature":"0x957f48b82d761d3e7f2e34eeff5922358d87f9b31c51e5af37a54fedeab7cfc09c3068f6ef5c97e0323dabff706bc7520113d51841c6dc2eaa044c8526bdaebcf35476c0b08cccb69ab0bab07c8e7ca2d6573b0ae96c32ae3d18764ae7ea78e0","withdrawal_credentials":"0x0037c021fdef99bcf9fb90c02440571ab2faa0238485ed72e427b69dc8dddc91"},"proof":["0x8b0f06508d861e2d5a18c3565217368ea18eb41985729a506d8a6ab2427f192d","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xac897c8892a6f3effcd276e4f44f410644846a333db600ad12e1099020196b2f8104563c04d78fedf5afc5d87b91b1b5","signature":"0x95a886b35ead6f8fc09d33975108857abffc32d53db6546a7251d32ca6d1706e899155b3883b05e65a041e44c51db8480703f13cccc6575cd2d50d0506485b9669a096bb1a2d4879008c15b8c1cdcd2e1a5c4f12885311e24dd87dc32e1bce87","withdrawal_credentials":"0x0075f9178dd8a199c55d5cebb9dccb00508e619d5b9abd2b7cd5ad3f671c5a9f"},"proof":["0x50f17abe0de10eea94174120fbfa9f93b2761e2df90717235b422a62ca34cc11","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x8794fd3f4e5e66e6e81735d5726943833b82d1efd7d877e495a8c36955b7dfb95b3f6cfcef865fd7969fa2e17e628ab9","signature":"0xb42aa548fd9068db7916757390f6d011ad890b9f27a75d4676dd9edcd9017f5d7e2cec215a04502fcff253aa821865fb0c30549e7b5d5e62cc8df0264dc3b55538f15cfd375f9cb022a94c2a39201d757a502701acd50554dc4da29173c945bd","withdrawal_credentials":"0x0087adf1a29896ae52be67356ee9a4a5035450764c278382f8940d554668c208"},"proof":["0x409002728188e6b1455636b55469598dbc31a3633a7f53a743a5576e3356c0b3","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]}],"eth1_data":{"block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","deposit_count":"528","deposit_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"execution_payload":{"base_fee_per_gas":"0","blob_gas_used":"0","block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","block_number":"0","excess_blob_gas":"0","extra_data":null,"fee_recipient":"0x0000000000000000000000000000000000000000","gas_limit":"0","gas_used":"0","logs_bloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","parent_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","prev_randao":"0x0000000000000000000000000000000000000000000000000000000000000000","receipts_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","timestamp":"0","transactions":null},"graffiti":"0x0000000000000000000000000000000000000000000000000000000000000000","proposer_slashings":[{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x939584df88598e56fe144105c6933b4727d7b772539e65c57289df64cedee771377e4d0e94f85c25d39a6072997d309c09da8c477267670aa42f26fb0836c72ec5867fa2f34dc0eb7e043ef5d6421282d1515b0f8c7ffd4bbbf56ee8d61ed063"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a184441d5d944ed3c18549dd9e4640eda879f9e737ac4211fdddfd30a65e1a2a32a8aa918ca65ad9b863a15e8cfefc412608ca78fd54ea1e5cbbd5697d125cc721aac1b01e8984a33f025c4707623669573244a632ec7f37808c01fab143f58"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xad97a43e9f28a90ff46b07a7bf65d520b89a78af47dbff1c10e4fc6bb36b4ee9c4f27f2a72c65311a03e7b48e06d86db1149147b14a8803d46f6a457092642dc89d3f2782bd48a373e3125af1a84f5b76d4ff7ddc85ac2650ca4c0f99e1af592"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88d860d460526de062ee196400e24cb3055de2ff6abb31331d0bfeeebcdc77839d22ad6dfec39d81279f5527d1ffbd7e0a9d6eee7dce5a1cd6f79451537e9dfb6384f595e9d49673c58c181527a599dd4b38154e1322f1607f192ab0394f1411"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a2358ff11a30100a2492001827f54ff6c10dd6dcea66f6814dd1cccc4a49850bbbe36546e4f9b72410042a9d5882e8219a5a01708b8a95ca57984debe78f419a4ac921270a0f0c11c795a6c5ef1e6bfb96712751a4fee61059ca8fbe69639b6"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb820e03b7bfd21c2d97a4f2bc9dd1fd5325894757f7129646c7a39a02b2c1c8ca33d509b4e83491e79db02ac0490aa3308ee23bfa1f65bf4130ab07e377a8cbd4eace5b69801528322dde425b0a78310504c330da30be7cefc674573dbdb4502"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88c81a6029f097a9f23e37c7677abfafa2921982e9aebffc35ca700e1aefcd49c2ab5d51c7b28ef3db3aad49d58a6407082ce1ecd7f7bd89cb764242890440b684fc0e1511e047434b25f3ad1a5e238e5bf97f51e9e37d6eed48e0b9fef64333"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x815b492a6a3fb606f01dbc595c8b18b51b7f7a5a86b11f3ae57c48f7506a34606556a3cf2be683ce23cd0c7b2235667613f9dbcf98408b176f134645f122684bd8fe704c7a4eccb7bb7cbe33c6de377be4d742291d35d0ec8d6083c1b17b7261"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xae352ba8550d04c07591224449bd4967f66f9d639b731795f643b1e3fc5ad28317268dc9e289ce6075e8981a0e37d9440885e4f4292cb4b4656bd0c7bd9fc22d21eb4c7d1b46f1b08cdb1eb08d7a405985e8a406e6d93c5c3fdd20e91baba122"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb9152f5510f2bfa5ab7b61829823f25f0c879ab9b852fcd90c17f751bed6e687dc523fcda177503509cd1befec36046a056a66f5826e2333b6de67430a16f6194416681ae69a1c3498cf8351abae4fac5d8f0b51b1734633d545d540bf269270"}}],"randao_reveal":"0xa182a6c7224c53cc43492b7ba87b54e8303094ebcb8c822da09c4224791b461e34d089ac857acf05cd695679c25cffa30404832791fe424fd104e2e96ebbf583dd5ec4dcbc891e7f4e0dea402071dbd294810417221fc41e4f90e4837c694e1a","sync_aggregate":{"sync_committee_bits":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","sync_committee_signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"voluntary_exits":[{"message":{"epoch":"260","validator_index":"504"},"signature":"0x8fedc3077271b41f631d6062cc1cc8c8f074e486e9e692f198c5f82b94d2bb3b0fbf71cbac043cee94b56a7a06adf06d07bb7ecf06d8f699add17972ceb54b25e6021c3a2a727afd3370e960afbf345a75fddd2d221ba85a5f7b07e5607eec1e"},{"message":{"epoch":"260","validator_index":"503"},"signature":"0xa44079752dfa36b925f0ff675dfd10b5b7cc0c178839356d0bda9c83b6df01f6bfdd904af92373002bfac40277941d2809c4152fc61007ae4f2c73e550ed02f425419efae0461d8829746c7a3d36dcae5bc37158ede7dd30ccc33930783b6194"},{"message":{"epoch":"260","validator_index":"502"},"signature":"0xb193b547c2d45341c9aedd0a22f4afc565d9aaa3a04889df2f8ad608bb31b44a0391c69383f0f4725cea291332c081ff0a48e850d246dd0be40880bf17316eb4b2eaf4b8b6ba6d59c93aea3af98988f05cb2ddf61d8637f943864ebfe7c9707c"},{"message":{"epoch":"260","validator_index":"501"},"signature":"0x88afe9a0215d2a67c451fcbdc358237c4d5dce6b46973ae527afb7f8fb1da800d6a3dd7f6387028a57737b354b7db88803bd6f2a59c7fb84229f42e6c6ea1b7510cb2a28026ff8f2eefb8fc7e2a83115197b7a1bd35fbf0afcc69e4b6e581911"},{"message":{"epoch":"260","validator_index":"500"},"signature":"0xa2f2399070bcfa3f50894d7170d1343ab5f52d6bdc155124e867bcde936aee4e0bb69f164dee5fa07d47abccb8844ec101126caf0402f1a757934f8e7b5904a60cedc283b5e9801f2a71f80cda16e910d72518d469a9a40cd94b8ad3cca10136"},{"message":{"epoch":"260","validator_index":"499"},"signature":"0x86abacd204c85cfc40d71853422001e44134b1900138fccb409928b7e663270476e3d7a7e0aaa103c693cad3629da1aa056cac30c8aab1a4eb50d81bb0711db3dba1d741562b103f67f495996b18fad779d3d9cc508763ab883a7cd6858bdc51"},{"message":{"epoch":"260","validator_index":"498"},"signature":"0xb86533e02779dd0f959dbf1b0fa195126ccc945fd0a7c5b7370aefc16f8f130d083c0c1c58a5c18e8119d7912dd532d91765dd26ad5ef3991238bc093bab79d511b1d8484482eec9b6b4a98f4a8928819ea58fc857ed80b59fe9cb7a33fe60a2"},{"message":{"epoch":"260","validator_index":"495"},"signature":"0x80a5c7c52a246dcaaf67caf6285ea518581835af668d1a64723b321b167464e238248c0017d5265be373c9079d7b529b10aedc37835683e5e1320c3ad6fa1f72d52046a49b061935e1631565912d2f2482434007957fe9903edecf4dad8e5bb8"},{"message":{"epoch":"260","validator_index":"494"},"signature":"0xb6a0e4cdc1815f03166218963ec9cc4c5d607a67d659d1227386e16f90d3e39c6cddf696e3534f3824ca5aff8c734bab153f3bab701247cdcea16db31c94846c1cd3781b1861485ad813d025bf0a486c592dd1f9afa1134e8288e4fef44d2f3c"},{"message":{"epoch":"260","validator_index":"492"},"signature":"0xad850276510c2e41d059df6a1cefab9f1b66463da47b0fc772b21ed90c13e1bd6f86def8b2ecb867f4f752612d9d25e30a151aa6ef630a1b6ddaa4420c240b37df0234ee332373fe132b0101a0486900c5733762beeacd95429dd34c34230d13"},{"message":{"epoch":"260","validator_index":"491"},"signature":"0x837669180ba01b65157087f49c7af19acb1439016eca9c699b7136da7e9bbc89d6bddc7a030388bbb7e149ebd521c4810f457846b9cf913f7ee6f01db4363d3ce92fc732e52359917d36c7e4a08158653f1a9a78a608c4b56ff3e155b2783974"}]},"parent_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","proposer_index":"210","slot":"8322","state_root":"0x933d6650f2999f17012e781f5012981edb549e5935de1c981fce81cdd241d4e1"},"signature":"0x8b915f3b9d2d4c7ccaacf5d56c1152b1e91eafd1f59ba734d09e78996930b63ca550499997fe6d590343aaf5997f0d0c14c986571992ac9ed188de2b31ae4b7d70dfb68edae8b012f72f284dc8da44f4af5a2bdf3dfc9c0897ec4f7165daa07a"},"execution_optimistic":false,"finalized":false,"version":"phase0"} \ No newline at end of file +{"data":{"message":{"body":{"attestations":[{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8296","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x94fab4732e767881653a5923ca4a93fc2778d349cef972b077aa0fd2553946f578be6571d7a02fe14aa98b11a77475e115bc8062308b23a23c6ce71cd07c528a6e37d30324d57dcc36fa336575210bce5d71ccabf74f0dd96f839eefc1a49343"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8297","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x894270af1854ce4e65c6e09bc83c15171d564a2af871d0b442cacea78536e5cd34cf4a906025a6d87e12a172ceeb79990b86a1de7ed4ef40cffeca6b93402c3542682bb2914c34430e23038a57e8490abe809dc9f96f3b2caebed380113280b3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8290","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98aade2cf9dad0e1528edec0e76be15577601b6cbef68353e51748b6286bf08812e42fe8791147a54eeed34782249e3f0cc463e22d6cb1c6050636ca8d070531fe40e16913f2e5560f6e683a6781268ff08d32bc5899b00306a87eecc5603928"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8318","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb60160a4024734b6c22e6083d755d97b22d107001965d35cd1aa5fc3c1059b4cb482c36c78609c0fa131631eb847d165177c877949e5baebb96a48f6e471c1d1d700619b4adeafa728b4d69de8d03d02854e4240d8e16d790168619cc2027247"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8292","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xb731b2df4dcaf841d50747f85b332170471895508c3af7e8bada14e58a816fed435460e1694e87e2887f19a0de201c3d0bc1ece52c26c519fd9131b25fa8a69b229c14ffd1c935d9e853aca8ab07eaae98a65daec09b2640b91961685e96d58c"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8314","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b63c286bff1c5dc6fb2e4878e73631e16db1cd3b07e9d0150b3ede4175635fe8db571cb486398e35923640606643d630bacc148d84e9c1060c32b55fe644e5c2573326b041767c5d45d45509a5403a7f2f1b2dd60e54bed26f407bb367a8642"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8300","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x9494651d4491cfc326f3439cebc3304aaf50a8e5598217da6df2a13b5cb9f9731cc8934f406c0243786b17f936d5892801fc34fc74fb4f52fec147536375dabd9f892940aacdea196e28cb21320bce9ede79b0a11333569d90e6deeb59869217"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8317","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x98416260b644654a4a90bda6032053f1eb3a12c59a3c7534f1ef348f2108c2837245bce74b3fd9f61ebae24860cc698100f864c4f26966c36431acbf0beea679807ba4eba9adfd1a267ef8d990290a2548af6456b1d0def6639ac47fd30c5542"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8308","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x980e36beab885b1f2d8460e7ece21054e9d235fea5429836bc6df687e0c2f41b7556d9c86cd9c1ca7a69e5a51991b8d617eea619ba8e312d568e38f8de8adb8b4a9ec3e9dab2d47df45b35d9f2488236c042d66cd0916fee70e8a3295353b0ed"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8305","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x906fd8d1a45b719a36eb5e09b5e13f9d0fb7faaa194d84b90e0b2b811ce299f385bf18bb07844620ec032b6f267d04781480dc303081be7c5d8ba735bccd682dd3ddb6345bae13bd96068eb86b148e73b8931b642705b1696d9ada4159b1dd65"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8320","source":{"epoch":"258","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"260","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8bfaed4667e28ed9e39464c7c57027ae345f22847b6ac1aa7e5f342fdb6cdca9d78a962da68f9e34e0453f68fa363fcd196881e2dd76abcab6814439d73448f404124ad2e2f57b59b0df57699d913e24f79c53f129a09c05f2659e4444f4bb53"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8313","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x90428ae131501833950bbeccfa738a2af4cbb5c6a04ae8f5e21d7fdd00dda2452d32e0630cd989a4863e8cb81303e1ca04b8f3abcf0b4c456fd7856c0af8585d206f109972b635bcefd72a537a67839b033a6c61f00af536a5e7107fdb9bf527"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8311","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8d852ffa1c5960ba3a5d09837fbdb859bbf9045001b3d1dc1c4d22c6b4bc5b6d506f6ef667b5c7c9fbfb1dd0cfe3617405f56750f8b5eb25b3539d0a4c94822b198c524de92a6c68982ce17f985ff5283cea6ac8dabe41828ce38edb7e9fe223"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8306","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa44792a6341475c3eff0c11ad62bc19154d5ed48a4b81869ed49885499d5f768c81f357dd6a3ea60aa2f15a184b098f40a1382cfaea0a8438d62d9cca27c85023245b1838e2e4f1d4e65926f8c6a3032740b36c0a3c8aa69850648ac6c12b3ce"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8310","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x912fe61ef99df1c96d7e5e6bd01ee5a6be73389978c7f4670c4e978beb6b8e4d640f238c6ba3426e935ac8f8527d118c06f464b08f6527ebebac793728ccc1190ee6701838c6f2b3b06391dc2d69232e63af11023ffe8e1c66eb3bd1075085a6"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8298","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xabdb4b0a06e2d036021b0cd847fb6e8f4d2deca86e60788a6ae2bb9bd55b62ebf35716290f958e075812e8dfcba2beef00b002459e5932d7e7478cf00e91300f9f53a84f593ce40afb1f3c07b1db789ba5da757d313a9ee4cac6b2e28ed2f929"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8291","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xab42974cba2e3fa75faa4c1f717caf7c2a953f4964063462ed32629764336124fd2f2f430ddf0291325722206250452c109b14cded0e51171b89b106b6b2044291128c3d6966c804490033b9e5fd06450ea50d22b5ab761892c6c3f4de79e098"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8293","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x876c656d7889c15cd355d6652b347a25dc8fd7ffc383f0d14ad436b5f1af9ac09e06168ad71be76b85c3dd44ae79cc0f04f250a0bcc529d06a1032283e2b8b384d582c0ace50bf747264a199647697f159d06be75ecfb24da2a8b625a3087804"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8309","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x805e92ba1e4c88489f178202ca5d7ce96e7b874fe98bdee80ab6423441bd37ff3f0fe724bc088f58050ac2a8f81ec5e80401d76caeb65795b5794e7a20d0384f3bfd162b281a17e96cc98087c651d893b05154203af7a7591afe1056db934ec4"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8312","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x95bbaf8dcff64306f01e0b09b27ebe3c761def7edd75542e213586ee0c6d3fc313ae102760abd1262b4f8c00e57603fa01627390011e3a5dea555c74798d7a3e1da68e00e3cdb9d8e4af112b6ff83951bd926288d24eb82e3f203a3160a4d7a9"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8299","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x815ca84fb30789d731ebf977b6ecdd60c30818202d464acdc2947143f62342c4a5d01c6cdb32b1e223d032c746fa98d30899164e6ab37828e6d049f32e46a5c59d742d82005f9a629938761e3abce454cec104352665cd81bbcffa2fce22a935"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8304","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x87c3f6fac9ea937a8e8bd4f6dccb7893cb8ea39c65e0313a30e903c220dba2c8597df1d75ee21fd905eab1ebf2261ebf085b13115363d72adc9ccd9527293b7218c39e94c257c94a8c95c32cf909cf58e8b7ece89a9bd21107a413b3fe3172e0"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8307","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x8b1fbaba2982cd546a7d19d4af3755163112349a0e6d13f05c69807c709f363359c2cfff8a4afa66bd24445eb12b923615c33892a82d8081575207e4165a1d0c944fd3871ff885662c3921b152e674130879d67a0692b4867ad9fc2d20e24fa3"},{"aggregation_bits":"0xff7f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8294","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa46775d208c119b097221ead6ee9afbf011258b03da07138d01fef8d5bd4681ecbab6f36687e8ae644191acebc94800a002b136de6ff892e4e0910d05402def66858ee8ad8f4b706fab163fe742959dcb86fa90d0b822e5937092852962acbb1"},{"aggregation_bits":"0xff3f","data":{"beacon_block_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","index":"0","slot":"8302","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"259","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0x97426dbbe61af8a68ac683ba95ad871baade096e9287e2d533c1efba04430b7083283485db5b1624fb03639065e8c754155cfe68986d526c1a771b67e45c0e8c97428dee8c6d80cc68892b961e8352d50f34e2623dc3b7ba2cb5dba28a854079"}],"attester_slashings":[{"attestation_1":{"attesting_indices":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed"}},"signature":"0xa7e932307a82913b23743198182a7e3c97675e8a1133e8d946bc59c62b1765046214ca0ea0e13b77e4f8acc8f226498103684f382826a9fff6c6c2ffdf9c65ffeb1680155025f489f676457634581ee4363bdfbe4d46fc4d1d9df93c3df8750d"},"attestation_2":{"attesting_indices":["96","353","445"],"data":{"beacon_block_root":"0x0000000000000000000000000000000000000000000000000000000000000000","index":"0","slot":"555","source":{"epoch":"257","root":"0x31885d5a2405876b7203f9cc1a7e115b9977412107c51c81ab4fd49bde93905e"},"target":{"epoch":"17","root":"0x0101010101010101010101010101010101010101010101010101010101010101"}},"signature":"0x89aadbd74370dc6d86b6b61c544c1e18949b0d8aa2d706605d1014d0266a043588a829243d343d1c3812621944ea34540aef1fbd34fe51b03a5734ebc5ec31057d1df0004faeca71d8687dd3af806e4332e19f6da5ab1d7da67fe017c2f2e68b"}}],"blob_kzg_commitments":[],"bls_to_execution_changes":[],"deposits":[{"data":{"amount":"32000000000","pubkey":"0xa19c8e80ddc1caad60a172b66eb24e83ef200d77034b3e16bbee4d95e929a5c1a473563973338d22e7a566fdbd352f65","signature":"0xb9b4b512b2c67a3e89edcbef91fc0ccd88c9a8c8654c51a130ffb2ab539c22a0c6b84928e8db4ca8a9d04f2dee312c3817a2bf360b6f5f2f3d1ba69b43cf4671290f7f58621887ad4dd1c9fe6d02cc59443e12447a20b38913f67597b0e3cc93","withdrawal_credentials":"0x00edbcfc97a6985ac86187522426240ed81b6493c880d0798360149ec8ce96d8"},"proof":["0x7e4ac18e104e72c0e90675c6caca41a8b6147b55c93df90177b3875e4ce83a04","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb1f92d1a612942fb266c1e436f8d417282efa2805d5a5a819e3d07e358a70efbf0cc1671412ee986cd342c3d2255a324","signature":"0x8dbd6f9b4ce0a5277f66da9ec41776cff88a647ae1b4dde221a3bf41b9d4af1e77d0cff23185796815448f2e8148126a046b4b60947a32a1e201b4e979c91b395c1d4804ead1324d699eaa9c481efa69484a7946a0bad9788e50cf05847a30c4","withdrawal_credentials":"0x004ac0f181a01d43a7de32602b440cfbe3a091bb8c108c1fa35726ed301743f9"},"proof":["0xb87c4b5cfdd2b2dde4c1d282cf4b68e81d232038820320b11445df5001a68e7c","0x458368e9794627a362da6580eabde010c6147a98132bab1fc5201a3890333a4b","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb532643cb8824a2fbd9196c10961f3ad2f0e319c3612bb15a51a3454593f44726383f006425c2e5952b156a6e14aceb0","signature":"0x97852e8c02386bcc8a2dd51c70c48661c79bc1f89f9dce113a60fcde345abedf96fa186c4230013cf61f3546c5d9877a0eab7a5a4f4e4e0e4bcd917dc8368a88e3b8380de9e96ed36bfd605d55956af64a17b877f12762acfdd1c3effe4b4d42","withdrawal_credentials":"0x00f68c08152911b76f556f9d6dfc66d54e5abd63de04dc073d6b03f333ac00f3"},"proof":["0x3fcccf842d7d1954fb2c1aacd56d76733564644838e52af17cfe1d0eb778ffd5","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xa7a1c0bbad929dc02699e92597a66266bbd9533419693270c9b56bbdea643cd2ded9664da3c9fd8db2389277b5e585cc","signature":"0xb0e97772997255840a5758e5325b9d1c56a292500838c5b2b697b7dd207c65a2ef928ebb9466d57782edf79f9b74bbbb069235c752f6527e8d8eb1c785d99326da78680056ee3084811b980185287259af64607e218d67a3b8f24d27c0659ce2","withdrawal_credentials":"0x00e64188226da03f1f3d787ef65d86690aaa24d44e5ac92c99c413463ec47c26"},"proof":["0xd3955560f10ca441dfc6f92be6798857e9f81833cf1672e75fe1830f8a21ddb4","0x120dce76ce67112e449d83e5d0b488fd11fd1c41c352a6e88f1911a29a7827eb","0x492fcfbd51e4c43551b6a683cd1d103994c5f96d3a9671e1fb228e3a8d0ccbdd","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x9919842dee455266e4dc77c74088bddbfdb535b9a1bbe75a3cced0e428598038365afe11c7578e4dbd8fe4cae7237543","signature":"0x99ef1ab7cfbe40d0a1e136138a4a8094e8f54a59c8d05052749b7af14931274fad1c0a44577de51099f2700505fa8861023b7bddabb274249a091acb3a4f7543f877da3792dad7897351c7a01343116a65959812fd55cc4ce4197b05f698761f","withdrawal_credentials":"0x000a2baaef8f6cc730d6a5474879aed4fe8c95da787cc2e15c3cdba14a9cef12"},"proof":["0x483eee486429a5f5c215aa1d843f352300e48345c10e329725907a65b61ccc04","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb4ed73c02a816ba9d23ba0e023970772f82dd3a32a85eefd922958e33bcab7f9c85e20372e49107665926cca852b8b9a","signature":"0xa6dfce815f61ce81bf107bf5ccc1beae5f32b63a55e836a5983b63b90c0e7eac873387107c145ab59c32679091cfd28a0dbf2b73f75cd5ab01b75c6ba984b83c796c92b77adba152ab2a20132324fc4b20c8ec002663f16edec9308bb8f3d298","withdrawal_credentials":"0x0017c0e8e177a6d58e4f8b93b2b66b13aef9c186cfccb9466d857a474b32b0d4"},"proof":["0xd46d72b4a13923f739ef7f69526c405af02941c64a3d73585000a321f06e866d","0x02ef49759b3e3b3d4eca789a7ea68e687d4cf0d09f5891e7a47e96c2e13f626a","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb0d0dfaf7479f59319beb513bee16e1af576a0740a7a124a9947ec7c3826dbc0a5d5db15519e8423d7aa683f638f3da3","signature":"0x85a06ab8d9d576cb2810a88635b7a462d1cfb238db066b8caeba7f36562bb903630f8f24d157747debad5428c4f42a9a0a08dfd53c687cd7c3e17ec539f353357bbd89b7111246c99cc7fab24b8cd33a88cddf845f7d27c8a33079aa097069e3","withdrawal_credentials":"0x00a61d2fddabb70c2db059af7e298b0395ef882dda24ae144f2b7ac88026e55d"},"proof":["0x29b1515f1533718ce5cdebb90590c0bf30caefcaf6c92ad72c821d7a78f83684","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xb69614adf68d58f7d67110d7ced171ab934cb973f19c60cbb83161468655c42fe19a80a8e903030650bfaa9613a1ab2d","signature":"0x957f48b82d761d3e7f2e34eeff5922358d87f9b31c51e5af37a54fedeab7cfc09c3068f6ef5c97e0323dabff706bc7520113d51841c6dc2eaa044c8526bdaebcf35476c0b08cccb69ab0bab07c8e7ca2d6573b0ae96c32ae3d18764ae7ea78e0","withdrawal_credentials":"0x0037c021fdef99bcf9fb90c02440571ab2faa0238485ed72e427b69dc8dddc91"},"proof":["0x8b0f06508d861e2d5a18c3565217368ea18eb41985729a506d8a6ab2427f192d","0x50e358c6d946202b00d58595e2cdc1ded7d8dd8b1f1df149632c4a508ee7067c","0x5c6eb7a447d36de81aeb12e0e4ee44c0e27f1f808dc38e9bd00ef7e8fa3c6725","0xe0a4bdf253ab854666078b97d3c04e6944dbbf2d52f4147fbc6a2074dd5d95a2","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0xac897c8892a6f3effcd276e4f44f410644846a333db600ad12e1099020196b2f8104563c04d78fedf5afc5d87b91b1b5","signature":"0x95a886b35ead6f8fc09d33975108857abffc32d53db6546a7251d32ca6d1706e899155b3883b05e65a041e44c51db8480703f13cccc6575cd2d50d0506485b9669a096bb1a2d4879008c15b8c1cdcd2e1a5c4f12885311e24dd87dc32e1bce87","withdrawal_credentials":"0x0075f9178dd8a199c55d5cebb9dccb00508e619d5b9abd2b7cd5ad3f671c5a9f"},"proof":["0x50f17abe0de10eea94174120fbfa9f93b2761e2df90717235b422a62ca34cc11","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]},{"data":{"amount":"32000000000","pubkey":"0x8794fd3f4e5e66e6e81735d5726943833b82d1efd7d877e495a8c36955b7dfb95b3f6cfcef865fd7969fa2e17e628ab9","signature":"0xb42aa548fd9068db7916757390f6d011ad890b9f27a75d4676dd9edcd9017f5d7e2cec215a04502fcff253aa821865fb0c30549e7b5d5e62cc8df0264dc3b55538f15cfd375f9cb022a94c2a39201d757a502701acd50554dc4da29173c945bd","withdrawal_credentials":"0x0087adf1a29896ae52be67356ee9a4a5035450764c278382f8940d554668c208"},"proof":["0x409002728188e6b1455636b55469598dbc31a3633a7f53a743a5576e3356c0b3","0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b","0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71","0xd30099c5c4129378264a4c45ed088fb4552ed73f04cdcd0c4f11acae180e7f9a","0x94d56d67b7c2e9cb1eb1b7945f84677037bdd87d2850bbb12fa6819b7c137fba","0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30","0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1","0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c","0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193","0x1d3126aa021ce6d47e1599e94501454852eb785433220b897fe82837ca550f1e","0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b","0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220","0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f","0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e","0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784","0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb","0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb","0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab","0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4","0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f","0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa","0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c","0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167","0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7","0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0","0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544","0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765","0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4","0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1","0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636","0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c","0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7","0x1a02000000000000000000000000000000000000000000000000000000000000"]}],"eth1_data":{"block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","deposit_count":"528","deposit_root":"0x0000000000000000000000000000000000000000000000000000000000000000"},"execution_payload":{"base_fee_per_gas":"0","blob_gas_used":"0","block_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","block_number":"0","excess_blob_gas":"0","extra_data":null,"fee_recipient":"0x0000000000000000000000000000000000000000","gas_limit":"0","gas_used":"0","logs_bloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","parent_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","prev_randao":"0x0000000000000000000000000000000000000000000000000000000000000000","receipts_root":"0x0000000000000000000000000000000000000000000000000000000000000000","state_root":"0x0000000000000000000000000000000000000000000000000000000000000000","timestamp":"0","transactions":null},"graffiti":"0x0000000000000000000000000000000000000000000000000000000000000000","proposer_slashings":[{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x939584df88598e56fe144105c6933b4727d7b772539e65c57289df64cedee771377e4d0e94f85c25d39a6072997d309c09da8c477267670aa42f26fb0836c72ec5867fa2f34dc0eb7e043ef5d6421282d1515b0f8c7ffd4bbbf56ee8d61ed063"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"476","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a184441d5d944ed3c18549dd9e4640eda879f9e737ac4211fdddfd30a65e1a2a32a8aa918ca65ad9b863a15e8cfefc412608ca78fd54ea1e5cbbd5697d125cc721aac1b01e8984a33f025c4707623669573244a632ec7f37808c01fab143f58"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xad97a43e9f28a90ff46b07a7bf65d520b89a78af47dbff1c10e4fc6bb36b4ee9c4f27f2a72c65311a03e7b48e06d86db1149147b14a8803d46f6a457092642dc89d3f2782bd48a373e3125af1a84f5b76d4ff7ddc85ac2650ca4c0f99e1af592"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"406","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88d860d460526de062ee196400e24cb3055de2ff6abb31331d0bfeeebcdc77839d22ad6dfec39d81279f5527d1ffbd7e0a9d6eee7dce5a1cd6f79451537e9dfb6384f595e9d49673c58c181527a599dd4b38154e1322f1607f192ab0394f1411"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x8a2358ff11a30100a2492001827f54ff6c10dd6dcea66f6814dd1cccc4a49850bbbe36546e4f9b72410042a9d5882e8219a5a01708b8a95ca57984debe78f419a4ac921270a0f0c11c795a6c5ef1e6bfb96712751a4fee61059ca8fbe69639b6"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"281","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb820e03b7bfd21c2d97a4f2bc9dd1fd5325894757f7129646c7a39a02b2c1c8ca33d509b4e83491e79db02ac0490aa3308ee23bfa1f65bf4130ab07e377a8cbd4eace5b69801528322dde425b0a78310504c330da30be7cefc674573dbdb4502"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x88c81a6029f097a9f23e37c7677abfafa2921982e9aebffc35ca700e1aefcd49c2ab5d51c7b28ef3db3aad49d58a6407082ce1ecd7f7bd89cb764242890440b684fc0e1511e047434b25f3ad1a5e238e5bf97f51e9e37d6eed48e0b9fef64333"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"169","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0x815b492a6a3fb606f01dbc595c8b18b51b7f7a5a86b11f3ae57c48f7506a34606556a3cf2be683ce23cd0c7b2235667613f9dbcf98408b176f134645f122684bd8fe704c7a4eccb7bb7cbe33c6de377be4d742291d35d0ec8d6083c1b17b7261"}},{"signed_header_1":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x3333333333333333333333333333333333333333333333333333333333333333","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xae352ba8550d04c07591224449bd4967f66f9d639b731795f643b1e3fc5ad28317268dc9e289ce6075e8981a0e37d9440885e4f4292cb4b4656bd0c7bd9fc22d21eb4c7d1b46f1b08cdb1eb08d7a405985e8a406e6d93c5c3fdd20e91baba122"},"signed_header_2":{"message":{"body_root":"0x5555555555555555555555555555555555555555555555555555555555555555","parent_root":"0x9999999999999999999999999999999999999999999999999999999999999999","proposer_index":"397","slot":"8321","state_root":"0x4444444444444444444444444444444444444444444444444444444444444444"},"signature":"0xb9152f5510f2bfa5ab7b61829823f25f0c879ab9b852fcd90c17f751bed6e687dc523fcda177503509cd1befec36046a056a66f5826e2333b6de67430a16f6194416681ae69a1c3498cf8351abae4fac5d8f0b51b1734633d545d540bf269270"}}],"randao_reveal":"0xa182a6c7224c53cc43492b7ba87b54e8303094ebcb8c822da09c4224791b461e34d089ac857acf05cd695679c25cffa30404832791fe424fd104e2e96ebbf583dd5ec4dcbc891e7f4e0dea402071dbd294810417221fc41e4f90e4837c694e1a","sync_aggregate":{"sync_committee_bits":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","sync_committee_signature":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"voluntary_exits":[{"message":{"epoch":"260","validator_index":"504"},"signature":"0x8fedc3077271b41f631d6062cc1cc8c8f074e486e9e692f198c5f82b94d2bb3b0fbf71cbac043cee94b56a7a06adf06d07bb7ecf06d8f699add17972ceb54b25e6021c3a2a727afd3370e960afbf345a75fddd2d221ba85a5f7b07e5607eec1e"},{"message":{"epoch":"260","validator_index":"503"},"signature":"0xa44079752dfa36b925f0ff675dfd10b5b7cc0c178839356d0bda9c83b6df01f6bfdd904af92373002bfac40277941d2809c4152fc61007ae4f2c73e550ed02f425419efae0461d8829746c7a3d36dcae5bc37158ede7dd30ccc33930783b6194"},{"message":{"epoch":"260","validator_index":"502"},"signature":"0xb193b547c2d45341c9aedd0a22f4afc565d9aaa3a04889df2f8ad608bb31b44a0391c69383f0f4725cea291332c081ff0a48e850d246dd0be40880bf17316eb4b2eaf4b8b6ba6d59c93aea3af98988f05cb2ddf61d8637f943864ebfe7c9707c"},{"message":{"epoch":"260","validator_index":"501"},"signature":"0x88afe9a0215d2a67c451fcbdc358237c4d5dce6b46973ae527afb7f8fb1da800d6a3dd7f6387028a57737b354b7db88803bd6f2a59c7fb84229f42e6c6ea1b7510cb2a28026ff8f2eefb8fc7e2a83115197b7a1bd35fbf0afcc69e4b6e581911"},{"message":{"epoch":"260","validator_index":"500"},"signature":"0xa2f2399070bcfa3f50894d7170d1343ab5f52d6bdc155124e867bcde936aee4e0bb69f164dee5fa07d47abccb8844ec101126caf0402f1a757934f8e7b5904a60cedc283b5e9801f2a71f80cda16e910d72518d469a9a40cd94b8ad3cca10136"},{"message":{"epoch":"260","validator_index":"499"},"signature":"0x86abacd204c85cfc40d71853422001e44134b1900138fccb409928b7e663270476e3d7a7e0aaa103c693cad3629da1aa056cac30c8aab1a4eb50d81bb0711db3dba1d741562b103f67f495996b18fad779d3d9cc508763ab883a7cd6858bdc51"},{"message":{"epoch":"260","validator_index":"498"},"signature":"0xb86533e02779dd0f959dbf1b0fa195126ccc945fd0a7c5b7370aefc16f8f130d083c0c1c58a5c18e8119d7912dd532d91765dd26ad5ef3991238bc093bab79d511b1d8484482eec9b6b4a98f4a8928819ea58fc857ed80b59fe9cb7a33fe60a2"},{"message":{"epoch":"260","validator_index":"495"},"signature":"0x80a5c7c52a246dcaaf67caf6285ea518581835af668d1a64723b321b167464e238248c0017d5265be373c9079d7b529b10aedc37835683e5e1320c3ad6fa1f72d52046a49b061935e1631565912d2f2482434007957fe9903edecf4dad8e5bb8"},{"message":{"epoch":"260","validator_index":"494"},"signature":"0xb6a0e4cdc1815f03166218963ec9cc4c5d607a67d659d1227386e16f90d3e39c6cddf696e3534f3824ca5aff8c734bab153f3bab701247cdcea16db31c94846c1cd3781b1861485ad813d025bf0a486c592dd1f9afa1134e8288e4fef44d2f3c"},{"message":{"epoch":"260","validator_index":"492"},"signature":"0xad850276510c2e41d059df6a1cefab9f1b66463da47b0fc772b21ed90c13e1bd6f86def8b2ecb867f4f752612d9d25e30a151aa6ef630a1b6ddaa4420c240b37df0234ee332373fe132b0101a0486900c5733762beeacd95429dd34c34230d13"},{"message":{"epoch":"260","validator_index":"491"},"signature":"0x837669180ba01b65157087f49c7af19acb1439016eca9c699b7136da7e9bbc89d6bddc7a030388bbb7e149ebd521c4810f457846b9cf913f7ee6f01db4363d3ce92fc732e52359917d36c7e4a08158653f1a9a78a608c4b56ff3e155b2783974"}]},"parent_root":"0x86979f6f6dc7626064ef0d38d4dffb89e91d1d4c18492e3fb7d7ee93cedca3ed","proposer_index":"210","slot":"8322","state_root":"0x933d6650f2999f17012e781f5012981edb549e5935de1c981fce81cdd241d4e1"},"signature":"0x8b915f3b9d2d4c7ccaacf5d56c1152b1e91eafd1f59ba734d09e78996930b63ca550499997fe6d590343aaf5997f0d0c14c986571992ac9ed188de2b31ae4b7d70dfb68edae8b012f72f284dc8da44f4af5a2bdf3dfc9c0897ec4f7165daa07a"},"execution_optimistic":false,"finalized":false,"version":"phase0"} \ No newline at end of file diff --git a/cl/cltypes/bls_to_execution_change.go b/cl/cltypes/bls_to_execution_change.go index 8fa1a9000a9..3365d8138e2 100644 --- a/cl/cltypes/bls_to_execution_change.go +++ b/cl/cltypes/bls_to_execution_change.go @@ -12,8 +12,8 @@ import ( // Change to EL engine type BLSToExecutionChange struct { ValidatorIndex uint64 `json:"validator_index,string"` - From libcommon.Bytes48 `json:"from"` - To libcommon.Address `json:"to"` + From libcommon.Bytes48 `json:"from_bls_pubkey"` + To libcommon.Address `json:"to_execution_address"` } func (b *BLSToExecutionChange) EncodeSSZ(buf []byte) ([]byte, error) { diff --git a/cl/cltypes/builder.go b/cl/cltypes/builder.go index 57ec41840c5..8d3c3d52013 100644 --- a/cl/cltypes/builder.go +++ b/cl/cltypes/builder.go @@ -3,11 +3,13 @@ package cltypes import libcommon "github.com/ledgerwatch/erigon-lib/common" type ValidatorRegistration struct { - Message struct { - FeeRecipient libcommon.Address `json:"fee_recipient"` - GasLimit string `json:"gas_limit"` - Timestamp string `json:"timestamp"` - PubKey libcommon.Bytes48 `json:"pubkey"` - } `json:"message"` - Signature libcommon.Bytes96 `json:"signature"` + Message ValidatorRegistrationMessage `json:"message"` + Signature libcommon.Bytes96 `json:"signature"` +} + +type ValidatorRegistrationMessage struct { + FeeRecipient libcommon.Address `json:"fee_recipient"` + GasLimit string `json:"gas_limit"` + Timestamp string `json:"timestamp"` + PubKey libcommon.Bytes48 `json:"pubkey"` } diff --git a/cl/cltypes/indexed_attestation.go b/cl/cltypes/indexed_attestation.go index ba285ffb0b1..a1283c52a27 100644 --- a/cl/cltypes/indexed_attestation.go +++ b/cl/cltypes/indexed_attestation.go @@ -13,7 +13,7 @@ import ( * IndexedAttestation are attestantions sets to prove that someone misbehaved. */ type IndexedAttestation struct { - AttestingIndices *solid.RawUint64List `json:"attesting_indicies"` + AttestingIndices *solid.RawUint64List `json:"attesting_indices"` Data solid.AttestationData `json:"data"` Signature libcommon.Bytes96 `json:"signature"` } @@ -31,7 +31,7 @@ func (i *IndexedAttestation) Static() bool { func (i *IndexedAttestation) UnmarshalJSON(buf []byte) error { var tmp struct { - AttestingIndices *solid.RawUint64List `json:"attesting_indicies"` + AttestingIndices *solid.RawUint64List `json:"attesting_indices"` Data solid.AttestationData `json:"data"` Signature libcommon.Bytes96 `json:"signature"` } From d0027ec2c8ea78349952f706fe51a2edfb1fee10 Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 24 Jun 2024 11:48:57 +0800 Subject: [PATCH 81/83] tweak --- cl/beacon/builder/client.go | 4 +- cl/beacon/builder/client_test.go | 8 +-- cl/beacon/builder/interface.go | 2 +- .../mock_services/builder_client_mock.go | 26 +++++----- .../mock_blinded_block.json | 0 .../mock_blinded_block_resp.json | 0 .../{test => test_data}/mock_header.json | 0 cl/beacon/builder/types.go | 28 ++++++----- cl/beacon/handler/block_production.go | 26 ++++++++-- cl/cltypes/builder.go | 1 + cl/cltypes/builder_test.go | 50 ------------------- turbo/engineapi/engine_types/jsonrpc.go | 19 ------- 12 files changed, 60 insertions(+), 104 deletions(-) rename cl/beacon/builder/{test => test_data}/mock_blinded_block.json (100%) rename cl/beacon/builder/{test => test_data}/mock_blinded_block_resp.json (100%) rename cl/beacon/builder/{test => test_data}/mock_header.json (100%) delete mode 100644 cl/cltypes/builder_test.go diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index fe026977fa6..b9fd7822623 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -70,11 +70,11 @@ func (b *builderClient) RegisterValidator(ctx context.Context, registers []*clty return err } -func (b *builderClient) GetHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) { +func (b *builderClient) GetHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionHeader, error) { // https://ethereum.github.io/builder-specs/#/Builder/getHeader path := fmt.Sprintf("/eth/v1/builder/header/%d/%s/%s", slot, parentHash.Hex(), pubKey.Hex()) url := b.url.JoinPath(path).String() - header, err := httpCall[ExecutionPayloadHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) + header, err := httpCall[ExecutionHeader](ctx, b.httpClient, http.MethodGet, url, nil, nil) if err != nil { log.Warn("[mev builder] httpCall error on GetExecutionPayloadHeader", "err", err, "slot", slot, "parentHash", parentHash.Hex(), "pubKey", pubKey.Hex()) return nil, err diff --git a/cl/beacon/builder/client_test.go b/cl/beacon/builder/client_test.go index 9bd6151d7f3..5446e9323a0 100644 --- a/cl/beacon/builder/client_test.go +++ b/cl/beacon/builder/client_test.go @@ -25,7 +25,7 @@ func (m mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { } var ( - mockUrl, _ = url.Parse("http://localhost:8080") + mockUrl, _ = url.Parse("https://anywhere.io") mockBeaconConfig = &clparams.BeaconChainConfig{} ) @@ -166,7 +166,7 @@ func TestRegisterValidator(t *testing.T) { }) } -//go:embed test/mock_header.json +//go:embed test_data/mock_header.json var mockHeaderBytes []byte func TestGetHeader(t *testing.T) { @@ -228,10 +228,10 @@ func TestGetHeader(t *testing.T) { }) } -//go:embed test/mock_blinded_block.json +//go:embed test_data/mock_blinded_block.json var mockBlindedBlockBytes []byte -//go:embed test/mock_blinded_block_resp.json +//go:embed test_data/mock_blinded_block_resp.json var mockBlindedResponseBytes []byte func TestSubmitBlindedBlocks(t *testing.T) { diff --git a/cl/beacon/builder/interface.go b/cl/beacon/builder/interface.go index d1a0c08393f..83a2d354e41 100644 --- a/cl/beacon/builder/interface.go +++ b/cl/beacon/builder/interface.go @@ -11,7 +11,7 @@ import ( //go:generate mockgen -typed=true -destination=./mock_services/builder_client_mock.go -package=mock_services . BuilderClient type BuilderClient interface { RegisterValidator(ctx context.Context, registers []*cltypes.ValidatorRegistration) error - GetHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionPayloadHeader, error) + GetHeader(ctx context.Context, slot int64, parentHash common.Hash, pubKey common.Bytes48) (*ExecutionHeader, error) SubmitBlindedBlocks(ctx context.Context, block *cltypes.SignedBlindedBeaconBlock) (*cltypes.Eth1Block, *engine_types.BlobsBundleV1, error) GetStatus(ctx context.Context) error } diff --git a/cl/beacon/builder/mock_services/builder_client_mock.go b/cl/beacon/builder/mock_services/builder_client_mock.go index 5b388e839a8..f388af423d5 100644 --- a/cl/beacon/builder/mock_services/builder_client_mock.go +++ b/cl/beacon/builder/mock_services/builder_client_mock.go @@ -43,41 +43,41 @@ func (m *MockBuilderClient) EXPECT() *MockBuilderClientMockRecorder { return m.recorder } -// GetExecutionPayloadHeader mocks base method. -func (m *MockBuilderClient) GetExecutionPayloadHeader(arg0 context.Context, arg1 int64, arg2 common.Hash, arg3 common.Bytes48) (*builder.ExecutionPayloadHeader, error) { +// GetHeader mocks base method. +func (m *MockBuilderClient) GetHeader(arg0 context.Context, arg1 int64, arg2 common.Hash, arg3 common.Bytes48) (*builder.ExecutionHeader, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetExecutionPayloadHeader", arg0, arg1, arg2, arg3) - ret0, _ := ret[0].(*builder.ExecutionPayloadHeader) + ret := m.ctrl.Call(m, "GetHeader", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(*builder.ExecutionHeader) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetExecutionPayloadHeader indicates an expected call of GetExecutionPayloadHeader. -func (mr *MockBuilderClientMockRecorder) GetExecutionPayloadHeader(arg0, arg1, arg2, arg3 any) *MockBuilderClientGetExecutionPayloadHeaderCall { +// GetHeader indicates an expected call of GetHeader. +func (mr *MockBuilderClientMockRecorder) GetHeader(arg0, arg1, arg2, arg3 any) *MockBuilderClientGetHeaderCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetExecutionPayloadHeader", reflect.TypeOf((*MockBuilderClient)(nil).GetExecutionPayloadHeader), arg0, arg1, arg2, arg3) - return &MockBuilderClientGetExecutionPayloadHeaderCall{Call: call} + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHeader", reflect.TypeOf((*MockBuilderClient)(nil).GetHeader), arg0, arg1, arg2, arg3) + return &MockBuilderClientGetHeaderCall{Call: call} } -// MockBuilderClientGetExecutionPayloadHeaderCall wrap *gomock.Call -type MockBuilderClientGetExecutionPayloadHeaderCall struct { +// MockBuilderClientGetHeaderCall wrap *gomock.Call +type MockBuilderClientGetHeaderCall struct { *gomock.Call } // Return rewrite *gomock.Call.Return -func (c *MockBuilderClientGetExecutionPayloadHeaderCall) Return(arg0 *builder.ExecutionPayloadHeader, arg1 error) *MockBuilderClientGetExecutionPayloadHeaderCall { +func (c *MockBuilderClientGetHeaderCall) Return(arg0 *builder.ExecutionHeader, arg1 error) *MockBuilderClientGetHeaderCall { c.Call = c.Call.Return(arg0, arg1) return c } // Do rewrite *gomock.Call.Do -func (c *MockBuilderClientGetExecutionPayloadHeaderCall) Do(f func(context.Context, int64, common.Hash, common.Bytes48) (*builder.ExecutionPayloadHeader, error)) *MockBuilderClientGetExecutionPayloadHeaderCall { +func (c *MockBuilderClientGetHeaderCall) Do(f func(context.Context, int64, common.Hash, common.Bytes48) (*builder.ExecutionHeader, error)) *MockBuilderClientGetHeaderCall { c.Call = c.Call.Do(f) return c } // DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockBuilderClientGetExecutionPayloadHeaderCall) DoAndReturn(f func(context.Context, int64, common.Hash, common.Bytes48) (*builder.ExecutionPayloadHeader, error)) *MockBuilderClientGetExecutionPayloadHeaderCall { +func (c *MockBuilderClientGetHeaderCall) DoAndReturn(f func(context.Context, int64, common.Hash, common.Bytes48) (*builder.ExecutionHeader, error)) *MockBuilderClientGetHeaderCall { c.Call = c.Call.DoAndReturn(f) return c } diff --git a/cl/beacon/builder/test/mock_blinded_block.json b/cl/beacon/builder/test_data/mock_blinded_block.json similarity index 100% rename from cl/beacon/builder/test/mock_blinded_block.json rename to cl/beacon/builder/test_data/mock_blinded_block.json diff --git a/cl/beacon/builder/test/mock_blinded_block_resp.json b/cl/beacon/builder/test_data/mock_blinded_block_resp.json similarity index 100% rename from cl/beacon/builder/test/mock_blinded_block_resp.json rename to cl/beacon/builder/test_data/mock_blinded_block_resp.json diff --git a/cl/beacon/builder/test/mock_header.json b/cl/beacon/builder/test_data/mock_header.json similarity index 100% rename from cl/beacon/builder/test/mock_header.json rename to cl/beacon/builder/test_data/mock_header.json diff --git a/cl/beacon/builder/types.go b/cl/beacon/builder/types.go index 1dea68572eb..fc3283e64d8 100644 --- a/cl/beacon/builder/types.go +++ b/cl/beacon/builder/types.go @@ -10,20 +10,24 @@ import ( "github.com/ledgerwatch/erigon/cl/cltypes/solid" ) -type ExecutionPayloadHeader struct { - Version string `json:"version"` - Data struct { - Message struct { - Header *cltypes.Eth1Header `json:"header"` - BlobKzgCommitments *solid.ListSSZ[*cltypes.KZGCommitment] `json:"blob_kzg_commitments"` - Value string `json:"value"` - PubKey common.Bytes48 `json:"pubkey"` - } `json:"message"` - Signature common.Bytes96 `json:"signature"` - } `json:"data"` +type ExecutionHeader struct { + Version string `json:"version"` + Data ExecutionHeaderData `json:"data"` } -func (h ExecutionPayloadHeader) BlockValue() *big.Int { +type ExecutionHeaderData struct { + Message ExecutionHeaderMessage `json:"message"` + Signature common.Bytes96 `json:"signature"` +} + +type ExecutionHeaderMessage struct { + Header *cltypes.Eth1Header `json:"header"` + BlobKzgCommitments *solid.ListSSZ[*cltypes.KZGCommitment] `json:"blob_kzg_commitments"` + Value string `json:"value"` + PubKey common.Bytes48 `json:"pubkey"` +} + +func (h ExecutionHeader) BlockValue() *big.Int { if h.Data.Message.Value == "" { return nil } diff --git a/cl/beacon/handler/block_production.go b/cl/beacon/handler/block_production.go index 8cbf69645e1..7ed90dbd507 100644 --- a/cl/beacon/handler/block_production.go +++ b/cl/beacon/handler/block_production.go @@ -5,6 +5,7 @@ import ( "context" "encoding/hex" "encoding/json" + "errors" "fmt" "io" "math/big" @@ -263,7 +264,7 @@ func (a *ApiHandler) produceBlock( // get the builder payload var ( - builderHeader *builder.ExecutionPayloadHeader + builderHeader *builder.ExecutionHeader builderErr error ) go func() { @@ -346,7 +347,7 @@ func (a *ApiHandler) getBuilderPayload( baseBlock *cltypes.BeaconBlock, baseState *state.CachingBeaconState, targetSlot uint64, -) (*builder.ExecutionPayloadHeader, error) { +) (*builder.ExecutionHeader, error) { if !a.routerCfg.Builder || a.builderClient == nil { return nil, errBuilderNotEnabled } @@ -796,7 +797,26 @@ func (a *ApiHandler) publishBlindedBlocks(w http.ResponseWriter, r *http.Request // check blob bundle if blobsBundle != nil && blockPayload.Version() >= clparams.DenebVersion { - if err := blobsBundle.Check(); err != nil { + err := func(b *engine_types.BlobsBundleV1) error { + // check the length of the blobs bundle + if len(b.Commitments) != len(b.Proofs) || len(b.Commitments) != len(b.Blobs) { + return errors.New("commitments, proofs and blobs must have the same length") + } + for i := range b.Commitments { + // check the length of each blob + if len(b.Commitments[i]) != length.Bytes48 { + return errors.New("commitment must be 48 bytes long") + } + if len(b.Proofs[i]) != length.Bytes48 { + return errors.New("proof must be 48 bytes long") + } + if len(b.Blobs[i]) != 4096*32 { + return errors.New("blob must be 4096 * 32 bytes long") + } + } + return nil + }(blobsBundle) + if err != nil { return nil, beaconhttp.NewEndpointError(http.StatusBadRequest, err) } // check commitments diff --git a/cl/cltypes/builder.go b/cl/cltypes/builder.go index 8d3c3d52013..f6a17154b4c 100644 --- a/cl/cltypes/builder.go +++ b/cl/cltypes/builder.go @@ -2,6 +2,7 @@ package cltypes import libcommon "github.com/ledgerwatch/erigon-lib/common" +// ValidatorRegistration is used as request payload for validator registration in builder client. type ValidatorRegistration struct { Message ValidatorRegistrationMessage `json:"message"` Signature libcommon.Bytes96 `json:"signature"` diff --git a/cl/cltypes/builder_test.go b/cl/cltypes/builder_test.go deleted file mode 100644 index 1ce57a76c63..00000000000 --- a/cl/cltypes/builder_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package cltypes - -import ( - "encoding/json" - "testing" - - libcommon "github.com/ledgerwatch/erigon-lib/common" -) - -func TestValidatorRegistration(t *testing.T) { - vr := &ValidatorRegistration{ - Message: struct { - FeeRecipient libcommon.Address `json:"fee_recipient"` - GasLimit string `json:"gas_limit"` - Timestamp string `json:"timestamp"` - PubKey libcommon.Bytes48 `json:"pubkey"` - }{ - FeeRecipient: libcommon.BytesToAddress([]byte("0xAbcF8e0d4e9587369b2301D0790347320302cc09")), - GasLimit: "0", - Timestamp: "0", - PubKey: libcommon.Bytes48([]byte("0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a")), - }, - Signature: libcommon.Bytes96([]byte("0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505")), - } - bytes, err := json.Marshal(vr) - if err != nil { - t.Fatal(err) - } - result := &ValidatorRegistration{} - err = json.Unmarshal(bytes, result) - if err != nil { - t.Fatal(err) - } - // expect result == vr - if result.Message.FeeRecipient != vr.Message.FeeRecipient { - t.Fatalf("expected %v, got %v", vr.Message.FeeRecipient, result.Message.FeeRecipient) - } - if result.Message.GasLimit != vr.Message.GasLimit { - t.Fatalf("expected %v, got %v", vr.Message.GasLimit, result.Message.GasLimit) - } - if result.Message.Timestamp != vr.Message.Timestamp { - t.Fatalf("expected %v, got %v", vr.Message.Timestamp, result.Message.Timestamp) - } - if result.Message.PubKey != vr.Message.PubKey { - t.Fatalf("expected %v, got %v", vr.Message.PubKey, result.Message.PubKey) - } - if result.Signature != vr.Signature { - t.Fatalf("expected %v, got %v", vr.Signature, result.Signature) - } -} diff --git a/turbo/engineapi/engine_types/jsonrpc.go b/turbo/engineapi/engine_types/jsonrpc.go index 176586c1685..d4369d0f8ca 100644 --- a/turbo/engineapi/engine_types/jsonrpc.go +++ b/turbo/engineapi/engine_types/jsonrpc.go @@ -6,7 +6,6 @@ import ( "errors" "github.com/ledgerwatch/erigon-lib/common/hexutil" - "github.com/ledgerwatch/erigon-lib/common/length" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/common/hexutility" @@ -69,24 +68,6 @@ type BlobsBundleV1 struct { Blobs []hexutility.Bytes `json:"blobs" gencodec:"required"` } -func (b *BlobsBundleV1) Check() error { - if len(b.Commitments) != len(b.Proofs) || len(b.Commitments) != len(b.Blobs) { - return errors.New("commitments, proofs and blobs must have the same length") - } - for i := range b.Commitments { - if len(b.Commitments[i]) != length.Bytes48 { - return errors.New("commitment must be 48 bytes long") - } - if len(b.Proofs[i]) != length.Bytes48 { - return errors.New("proof must be 48 bytes long") - } - if len(b.Blobs[i]) != 4096*32 { - return errors.New("blob must be 4096 * 32 bytes long") - } - } - return nil -} - type ExecutionPayloadBodyV1 struct { Transactions []hexutility.Bytes `json:"transactions" gencodec:"required"` Withdrawals []*types.Withdrawal `json:"withdrawals" gencodec:"required"` From 1179616b4229669c1ddda9c158cd7398b9905c55 Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 24 Jun 2024 12:00:43 +0800 Subject: [PATCH 82/83] fix --- cl/beacon/builder/client_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl/beacon/builder/client_test.go b/cl/beacon/builder/client_test.go index 5446e9323a0..6d446b2ce64 100644 --- a/cl/beacon/builder/client_test.go +++ b/cl/beacon/builder/client_test.go @@ -185,7 +185,7 @@ func TestGetHeader(t *testing.T) { require.Equal(t, expectMethod, req.Method) return &http.Response{ StatusCode: http.StatusOK, - Body: io.NopCloser(bytes.NewBuffer([]byte(mockHeaderBytes))), + Body: io.NopCloser(bytes.NewBuffer(mockHeaderBytes)), Request: req.Clone(context.Background()), }, nil }), From 115c5028995390d68b5acbbc1df8f6044c228e0c Mon Sep 17 00:00:00 2001 From: kewei Date: Mon, 24 Jun 2024 14:37:00 +0800 Subject: [PATCH 83/83] update --- cl/beacon/builder/client.go | 6 +++++- cl/beacon/builder/client_test.go | 16 +++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cl/beacon/builder/client.go b/cl/beacon/builder/client.go index b9fd7822623..75d85964d8f 100644 --- a/cl/beacon/builder/client.go +++ b/cl/beacon/builder/client.go @@ -151,7 +151,11 @@ func httpCall[T any](ctx context.Context, client *http.Client, method, url strin log.Warn("[mev builder] client.Do failed", "err", err, "url", url, "method", method) return nil, err } - defer response.Body.Close() + defer func() { + if response.Body != nil { + response.Body.Close() + } + }() if response.StatusCode < 200 || response.StatusCode > 299 { // read response body if response.Body == nil { diff --git a/cl/beacon/builder/client_test.go b/cl/beacon/builder/client_test.go index 6d446b2ce64..966d9ccd2a3 100644 --- a/cl/beacon/builder/client_test.go +++ b/cl/beacon/builder/client_test.go @@ -27,6 +27,13 @@ func (m mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { var ( mockUrl, _ = url.Parse("https://anywhere.io") mockBeaconConfig = &clparams.BeaconChainConfig{} + + //go:embed test_data/mock_blinded_block.json + mockBlindedBlockBytes []byte + //go:embed test_data/mock_blinded_block_resp.json + mockBlindedResponseBytes []byte + //go:embed test_data/mock_header.json + mockHeaderBytes []byte ) func TestGetStatus(t *testing.T) { @@ -166,9 +173,6 @@ func TestRegisterValidator(t *testing.T) { }) } -//go:embed test_data/mock_header.json -var mockHeaderBytes []byte - func TestGetHeader(t *testing.T) { ctx := context.Background() expectMethod := http.MethodGet @@ -228,12 +232,6 @@ func TestGetHeader(t *testing.T) { }) } -//go:embed test_data/mock_blinded_block.json -var mockBlindedBlockBytes []byte - -//go:embed test_data/mock_blinded_block_resp.json -var mockBlindedResponseBytes []byte - func TestSubmitBlindedBlocks(t *testing.T) { ctx := context.Background() expectMethod := http.MethodPost