From 458ae245ca8d78edd7911b392a3e7f557514c308 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 4 Apr 2024 16:08:12 -0500 Subject: [PATCH 01/32] Start to add support for Electra --- Makefile | 9 ++++ go.mod | 16 +++++-- go.sum | 22 ++++----- utils/utils.go | 124 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 153 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 0ad0f56..fd769eb 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,15 @@ lint: staticcheck ./... golangci-lint run +gofumpt: + gofumpt -l -w -extra . + +fmt: + gofmt -s -w . + gofumpt -extra -w . + gci write . + go mod tidy + cover: go test -coverprofile=/tmp/go-sim-lb.cover.tmp ./... go tool cover -func /tmp/go-sim-lb.cover.tmp diff --git a/go.mod b/go.mod index d2d2598..95488f3 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/attestantio/go-builder-client v0.4.2 - github.com/attestantio/go-eth2-client v0.19.8 + github.com/attestantio/go-eth2-client v0.21.1 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.13.14 github.com/stretchr/testify v1.8.4 @@ -29,7 +29,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/ethereum/c-kzg-4844 v0.4.0 // indirect - github.com/fatih/color v1.15.0 // indirect + github.com/fatih/color v1.16.0 // indirect github.com/ferranbt/fastssz v0.1.3 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect @@ -41,7 +41,7 @@ require ( github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/holiman/uint256 v1.2.4 // indirect github.com/klauspost/compress v1.15.15 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -66,10 +66,10 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect - golang.org/x/crypto v0.17.0 // indirect + golang.org/x/crypto v0.21.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.16.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/protobuf v1.30.0 // indirect @@ -77,3 +77,9 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) + +// git clone git@github.com:jtraglia/go-eth2-client.git -b electra +replace github.com/attestantio/go-eth2-client => ../../jtraglia/go-eth2-client + +// git clone git@github.com:jtraglia/go-builder-client.git -b electra +replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-client diff --git a/go.sum b/go.sum index eb361e0..4ab53a9 100644 --- a/go.sum +++ b/go.sum @@ -12,10 +12,6 @@ github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9 github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/attestantio/go-builder-client v0.4.2 h1:EycfAFqQV+ooc2z6hmTsbuH4TCLknr0aO0nHLHLMpJM= -github.com/attestantio/go-builder-client v0.4.2/go.mod h1:e02i/WO4fjs3/u9oIZEjiC8CK1Qyxy4cpiMMGKx4VqQ= -github.com/attestantio/go-eth2-client v0.19.8 h1:7hn5X1MohW+wpfnwOpysPpjSktZwTB0A2ClohOCgZLI= -github.com/attestantio/go-eth2-client v0.19.8/go.mod h1:mZve1kV9Ctj0I1HH9gdg+MnI8lZ+Cb2EktEtOYrBlsM= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -77,8 +73,8 @@ github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1 github.com/ethereum/go-ethereum v1.13.14 h1:EwiY3FZP94derMCIam1iW4HFVrSgIcpsu0HwTQtm6CQ= github.com/ethereum/go-ethereum v1.13.14/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= @@ -182,8 +178,8 @@ github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -339,8 +335,8 @@ golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= @@ -371,7 +367,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -417,8 +413,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= diff --git a/utils/utils.go b/utils/utils.go index 8b88c0a..e73df25 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -12,9 +12,11 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" utilbellatrix "github.com/attestantio/go-eth2-client/util/bellatrix" utilcapella "github.com/attestantio/go-eth2-client/util/capella" + utilelectra "github.com/attestantio/go-eth2-client/util/electra" bls12381 "github.com/consensys/gnark-crypto/ecc/bls12-381" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -139,6 +141,16 @@ func PayloadToPayloadHeader(payload *api.VersionedExecutionPayload) (*api.Versio Version: spec.DataVersionDeneb, Deneb: header, }, nil + case spec.DataVersionElectra: + header, err := electraPayloadToPayloadHeader(payload.Electra) + if err != nil { + return nil, err + } + + return &api.VersionedExecutionPayloadHeader{ + Version: spec.DataVersionElectra, + Electra: header, + }, nil case spec.DataVersionUnknown, spec.DataVersionPhase0, spec.DataVersionAltair: return nil, fmt.Errorf("%w: %d", ErrUnsupportedVersion, payload.Version) default: @@ -244,6 +256,48 @@ func denebPayloadToPayloadHeader(payload *deneb.ExecutionPayload) (*deneb.Execut }, nil } +func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra.ExecutionPayloadHeader, error) { + if payload == nil { + return nil, ErrNilPayload + } + + txRoot, err := deriveTransactionsRoot(payload.Transactions) + if err != nil { + return nil, fmt.Errorf("failed to derive transactions root: %w", err) + } + + wdRoot, err := deriveWithdrawalsRoot(payload.Withdrawals) + if err != nil { + return nil, fmt.Errorf("failed to derive withdrawals root: %w", err) + } + + exitsRoot, err := deriveExitsRoot(payload.Exits) + if err != nil { + return nil, fmt.Errorf("failed to derive withdrawals root: %w", err) + } + + return &electra.ExecutionPayloadHeader{ + ParentHash: payload.ParentHash, + FeeRecipient: payload.FeeRecipient, + StateRoot: payload.StateRoot, + ReceiptsRoot: payload.ReceiptsRoot, + LogsBloom: payload.LogsBloom, + PrevRandao: payload.PrevRandao, + BlockNumber: payload.BlockNumber, + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Timestamp: payload.Timestamp, + ExtraData: payload.ExtraData, + BaseFeePerGas: payload.BaseFeePerGas, + BlockHash: payload.BlockHash, + TransactionsRoot: txRoot, + WithdrawalsRoot: wdRoot, + BlobGasUsed: payload.BlobGasUsed, + ExcessBlobGas: payload.ExcessBlobGas, + ExitsRoot: exitsRoot, + }, nil +} + func deriveTransactionsRoot(transactions []bellatrix.Transaction) (phase0.Root, error) { txs := utilbellatrix.ExecutionPayloadTransactions{Transactions: transactions} txRoot, err := txs.HashTreeRoot() @@ -262,6 +316,15 @@ func deriveWithdrawalsRoot(withdrawals []*capella.Withdrawal) (phase0.Root, erro return wdRoot, nil } +func deriveExitsRoot(exits []*electra.ExecutionLayerExit) (phase0.Root, error) { + exs := utilelectra.ExecutionPayloadExits{Exits: exits} + exitsRoot, err := exs.HashTreeRoot() + if err != nil { + return phase0.Root{}, err + } + return exitsRoot, nil +} + // ComputeBlockHash computes the block hash for a given execution payload. func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot *phase0.Root) (phase0.Hash32, error) { switch payload.Version { @@ -283,6 +346,12 @@ func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot * return phase0.Hash32{}, err } return phase0.Hash32(header.Hash()), nil + case spec.DataVersionElectra: + header, err := electraExecutionPayloadToBlockHeader(payload.Electra, parentBeaconRoot) + if err != nil { + return phase0.Hash32{}, err + } + return phase0.Hash32(header.Hash()), nil case spec.DataVersionPhase0, spec.DataVersionAltair: return phase0.Hash32{}, fmt.Errorf("%w: %d", ErrUnsupportedVersion, payload.Version) case spec.DataVersionUnknown: @@ -379,6 +448,46 @@ func denebExecutionPayloadToBlockHeader(payload *deneb.ExecutionPayload, parentB }, nil } +func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, parentBeaconRoot *phase0.Root) (*types.Header, error) { + transactionHash, err := deriveTransactionsHash(payload.Transactions) + if err != nil { + return nil, err + } + baseFeePerGas := payload.BaseFeePerGas.ToBig() + withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) + // TODO(electra): add new fields. + // exitsHash := deriveExitsHash(payload.Exits) + var beaconRootHash *common.Hash + if parentBeaconRoot != nil { + root := common.Hash(*parentBeaconRoot) + beaconRootHash = &root + } + // TODO(electra): we're stuck until geth updates this. + return &types.Header{ + ParentHash: common.Hash(payload.ParentHash), + UncleHash: types.EmptyUncleHash, + Coinbase: common.Address(payload.FeeRecipient), + Root: common.Hash(payload.StateRoot), + TxHash: transactionHash, + ReceiptHash: common.Hash(payload.ReceiptsRoot), + Bloom: payload.LogsBloom, + Difficulty: common.Big0, + Number: new(big.Int).SetUint64(payload.BlockNumber), + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Time: payload.Timestamp, + Extra: payload.ExtraData, + MixDigest: payload.PrevRandao, + BaseFee: baseFeePerGas, + WithdrawalsHash: &withdrawalsHash, + BlobGasUsed: &payload.BlobGasUsed, + ExcessBlobGas: &payload.ExcessBlobGas, + ParentBeaconRoot: beaconRootHash, + // TODO(electra): add new fields. + // ExitsHash: &exitsHash, + }, nil +} + func deriveTransactionsHash(transactions []bellatrix.Transaction) (common.Hash, error) { transactionData := make([]*types.Transaction, len(transactions)) for i, encTx := range transactions { @@ -405,6 +514,21 @@ func deriveWithdrawalsHash(withdrawals []*capella.Withdrawal) common.Hash { return types.DeriveSha(types.Withdrawals(withdrawalData), trie.NewStackTrie(nil)) } +func deriveExitsHash(exits []*electra.ExecutionLayerExit) common.Hash { + // TODO(electra): we're stuck until geth updates this. + /* + exitData := make([]*types.Exit, len(exits)) + for i, e := range exits { + exitData[i] = &types.Exit{ + SourceAddress: common.Address(e.SourceAddress), + ValidatorPubkey: e.ValidatorPubkey, + } + } + return types.DeriveSha(types.Exits(exitData), trie.NewStackTrie(nil)) + */ + return common.Hash{} +} + func deriveBaseFeePerGas(baseFeePerGas [32]byte) *big.Int { // base fee per gas is stored little-endian but we need it // big-endian for big.Int. From 295bb108d3206f3a41267be81208f96adafa5434 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 5 Apr 2024 10:27:53 -0500 Subject: [PATCH 02/32] Use electra fork of geth --- go.mod | 21 +- go.sum | 296 ++----------------- testdata/executionpayload/electra-case0.json | 241 +++++++++++++++ utils/utils.go | 25 +- utils/utils_test.go | 21 ++ 5 files changed, 316 insertions(+), 288 deletions(-) create mode 100644 testdata/executionpayload/electra-case0.json diff --git a/go.mod b/go.mod index 95488f3..4276f52 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/flashbots/go-boost-utils -go 1.20 +go 1.21 + +toolchain go1.21.5 require ( github.com/attestantio/go-builder-client v0.4.2 @@ -18,17 +20,17 @@ require ( github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cockroachdb/errors v1.9.1 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect - github.com/cockroachdb/redact v1.1.3 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/fatih/color v1.16.0 // indirect github.com/ferranbt/fastssz v0.1.3 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect @@ -37,7 +39,7 @@ require ( github.com/goccy/go-yaml v1.11.2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/holiman/uint256 v1.2.4 // indirect github.com/klauspost/compress v1.15.15 // indirect @@ -72,7 +74,7 @@ require ( golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect @@ -83,3 +85,6 @@ replace github.com/attestantio/go-eth2-client => ../../jtraglia/go-eth2-client // git clone git@github.com:jtraglia/go-builder-client.git -b electra replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-client + +// git clone git@github.com:jtraglia/go-ethereum.git -b electra +replace github.com/ethereum/go-ethereum => ../../jtraglia/go-ethereum diff --git a/go.sum b/go.sum index 4ab53a9..e4072cc 100644 --- a/go.sum +++ b/go.sum @@ -1,18 +1,9 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= +github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= @@ -20,243 +11,146 @@ github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6 github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= -github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.13.14 h1:EwiY3FZP94derMCIam1iW4HFVrSgIcpsu0HwTQtm6CQ= -github.com/ethereum/go-ethereum v1.13.14/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/goccy/go-yaml v1.11.2 h1:joq77SxuyIs9zzxEjgyLBugMQ9NEgTWxXfz2wVqwAaQ= github.com/goccy/go-yaml v1.11.2/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc= +github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= -github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= @@ -267,32 +161,11 @@ github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 h1:0tVE4 github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= @@ -305,108 +178,46 @@ github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+F github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c h1:4WU+p200eLYtBsx3M5CKXvkjVdf5SC3W9nMg37y0TFI= github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c/go.mod h1:f3jBhpWvuZmue0HZK52GzRHJOYHYSILs/c8+K2S/J+o= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10 h1:CQh33pStIp/E30b7TxDlXfM0145bn2e8boI30IxAhTg= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10/go.mod h1:x/Pa0FF5Te9kdrlZKJK82YmAkvL8+f989USgz6Jiw7M= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -415,85 +226,42 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/testdata/executionpayload/electra-case0.json b/testdata/executionpayload/electra-case0.json new file mode 100644 index 0000000..3eb17bc --- /dev/null +++ b/testdata/executionpayload/electra-case0.json @@ -0,0 +1,241 @@ +{ + "parent_hash": "0xc2209759cf577fc467798ba2fc686b2b66570d1fe717ca0e012afb7cb27da452", + "fee_recipient": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "state_root": "0xf70701c309633bb1bd26bad3d39a8114270911adee83f04919aa3bbb4a078cb2", + "receipts_root": "0x592c3cfac2ec01e970de0459f6789d532468a15c7facd880c71af056e59f8490", + "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "prev_randao": "0xac912dabb21238750ff741f21bc2f91e42751e9834fff9c138d6ac6bebb0e637", + "block_number": "297164", + "gas_limit": "30000000", + "gas_used": "2142000", + "timestamp": "1704997008", + "extra_data": "0xd883010d09846765746888676f312e32312e36856c696e7578", + "base_fee_per_gas": "7", + "block_hash": "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", + "transactions": [ + "0xf87283b2ca0f8477359407825208946177843db3138ae69679a54b95cf345ed759450d870e35fa931a000080850343e1feb0a0232f671cda17e58ee3e6a4bcc22e42595bd158e5ee8ebd6ecf19cbc5b6e4002ba063d962968cd08a134d6da2adea6f99502c3ac0779a10b25beae8c46d7fc85d02", + "0xf87283b2ca10847735940782520894687704db07e902e9a8b3754031d168d46e3d586e870e35fa931a000080850343e1feafa0c5e5914d867866d1273d46b579716468e786d4c80aca426faffdc364b413a98ba069c4bf7e84f637f0d0ee1dd2f829b36e88903594d23c94057fe013d1e8b350fd", + "0xf87283b2ca1184773594078252089415e6a5a2e131dd5467fa1ff3acd104f45ee5940b870e35fa931a000080850343e1feafa0c955abbd72f47cc67c217b89272e8d497042afed0d29b005c36774d76ab80dfaa04dd80f4235cd12899d9d5d66d88bd34b707aa3587d7dfde57d975a04ddcf512a", + "0xf87283b2ca1284773594078252089480c4c7125967139acaa931ee984a9db4100e0f3b870e35fa931a000080850343e1feafa0ee0a0d1a7b937dbd624b182697cd4b484127962367be1a4d900e7740ee078015a0534e89aa85da711f9003e7fffd1d2589964c16a74696afe8cb341c501995206c", + "0xf87283b2ca13847735940782520894d08a63244fcd28b0aec5075052cdce31ba04fead870e35fa931a000080850343e1feafa070a70e108545db07da5366e9bce96e9b2b798ae6b61010b317a67b912c33f655a02ce9b1ebda0ecd9a8e783a252f54e3f3de6696fba2e9fc790c9214db7459be8d", + "0xf87283b2ca148477359407825208940b06ef8be65fcda88f2dbae5813480f997ee8e35870e35fa931a000080850343e1feafa09c7c9f770758e04a772b82c6a9c8ed43cffba066327a01d2623d6578efba59caa017961cce26d31441091599d6e473c1813b0b1bf0ca76344cbc32cb1e7ba5ceb0", + "0xf87283b2ca158477359407825208941cb96c5809da5977f99f69c11ee58bae5711c5f1870e35fa931a000080850343e1feafa055cbf0ac7924fb36ddf37b083c0f0e3136fe862e40448f6f012190ace6453594a06b7e68ffc18ebc6cf3c9f22d767295c34ef25895fd3da939cd33908d2a432b4e", + "0xf87283b2ca168477359407825208942aa48ee899410a6d97c01b0bb0eeaf1771cc435b870e35fa931a000080850343e1feb0a002becdde6f3a450322c19de954654f3243943a49ba27255ad78bd46ffdc4f4a7a050a0e0edeaf11a4faed0799bf535d59651fda773d2092b266495fe4a06256c29", + "0xf87283b2ca1784773594078252089407b9d920dd8e8d83dc1125c94fc0b3cdcdf602fb870e35fa931a000080850343e1feb0a0720ff20485bbd392745bcf0a2d03cd0634278976b44a79a4b87d84f582e916cba0797e26992c2c8b0c7c18ba8fa650d1e9191087066b644c0c6d4f413bb9646ed9", + "0xf87283b2ca18847735940782520894fcb6e353ad4f79245c7cb704abcffe2f48684241870e35fa931a000080850343e1feafa0f34fd6a78e783da2ae1b44cd55f139ccb0173ea0e7167abcf6415cd7be6c81baa00598881b2deb805568720cd788f0fb4a5c9af23beccf420a2579f96efc310bd0", + "0xf87283b2ca198477359407825208940d3de4256d6322683fdea9ee23765ccbfcb83da4870e35fa931a000080850343e1feafa0fc096a77fa2fe301f3a14f34138592a2e66cee93087663186eba3781dac38858a0359d767d079cff952fef59fddbea5c67ac5376d5002bdc05b6d055f8eb774ccd", + "0xf87283b2ca1a8477359407825208946021752d8d9b2f221d4fea4349dea34ddbcfce50870e35fa931a000080850343e1feb0a0a3f4d571334ccc23448af71e9c1abb32c3d88cf2e529fc79c1a034d335d82908a007ef42156c784a198f34385e1e0d0756f6cd53fbf27fcb9854855ef4913b60e6", + "0xf87283b2ca1b84773594078252089461e296d527edc89e831cf593ec341f16197eeafb870e35fa931a000080850343e1feafa0520d8cfd1db39a7d3b243ba9d62db793838b168118230c96999b91dfbac6045da0783852f06a27b42fbdb7188813fedfe223774d259c1587c1940137d28d234407", + "0xf87283b2ca1c847735940782520894cf7317ee7a3b497ecf634b94bff60ff91b925747870e35fa931a000080850343e1feb0a019b02287fad94f6aeca7489a8123e4bcf9ab70f5388926e80e98a0216f512f5ca0125160a3fd03d61d93b7db3c773d71f4e1dc00ccc1f1266666beef2cfc01d558", + "0xf87283b2ca1d8477359407825208947e7b519df31f77ced83eea1b16aedb6dcb0f0b24870e35fa931a000080850343e1feb0a0a532259c3e2f94983cef203ebf45ef790d2c534cfe319f9d67efa89d5959ac3aa0410923dface7953f5679eb67f19bff37dbc8357c0887f89051d7be7adfe11812", + "0xf87283b2ca1e84773594078252089488a075e0fb1c9309a200a8bf0a88b214bf7ceb8d870e35fa931a000080850343e1feafa0be569c9e097589df0647ad61d0bc9cb9de1ea358718877e05883a0404fed32b9a02821efb1766a325c08417f5a186797776325a1e666cd3e386b89d284e210a5ac", + "0xf87283b2ca1f847735940782520894c8d7cfb58f3ac02568e6505bf3fb5eb6f0807039870e35fa931a000080850343e1feb0a03f52fd1f9d38d20a618f4d896a9dce54dda51ccce1558df625ac19e9c05a0faba02de2de155588a35a527370c5d9ac33d1195e670bced9133bfc263cce3a3f50e3", + "0xf87283b2ca20847735940782520894e0132e8d7b1b766e0ade5543d6c6c0b2d5a2f01d870e35fa931a000080850343e1feb0a084fb4f3725298a31db9fc4b2dfd953dbda3a97eb3a92365a69ec1230b4a75227a023b6d656447cc12759d47101c9103dd73bfaf65b203724b74345378c258fd221", + "0xf87283b2ca21847735940782520894eb674c0411db79654afdc1e131f3b6e734baee6c870e35fa931a000080850343e1feafa0bf15d38f7e79e0960c36ca74af4e1bbd8772a62255ee19276eb18e41ee70a34ea07c50fbe6802a3d60aa84e89c805ef7816a83cec793fbd9bf7e3ab1ac662ba02f", + "0xf87283b2ca22847735940782520894dc07c60993cf689438b8c85f86b0ed938dca77ea870e35fa931a000080850343e1feb0a01b9c81df7d9134acc80f5cf2e692968567b03e289b1f4df2c624062cfc2df9dca04b9e21222c3d4ed50ab082c0dae22a7cf9efd24543df952616f2cf503d414293", + "0xf87283b2ca23847735940782520894110ddc93db59ed31a03518510221ec2f35d28f2f870e35fa931a000080850343e1feb0a07f8ef8175043b631fedd9d72de45e96a693b778f73573f30b60b03fc6f8cb365a06608f3a89d7baf0e39b8e7813611282c0bd1de80c9fdb7c940b4be15db6b8e99", + "0xf87283b2ca24847735940782520894b599a876aaac824cfce21bdf15627c9fd8634c30870e35fa931a000080850343e1feb0a07edb8421bd20f16e534f6c29b76ba38afe29433f0c70de4ffeeea040009d0b5ca0483a80c5b85b48c721c1bc9662e966408cbc3844bfb40e6d839151c1dea3e54a", + "0xf87283b2ca25847735940782520894d36e5540dd71acbd6416d60252c4d7c34a3c8245870e35fa931a000080850343e1feafa0f78ac8bf770b81b2942ece8bbf94bcfb660c406bcdece24e5e5441bc8e81996aa0383441f7a3f938ebe2757974d594105781e9b3d215da60e4c2b224342840e224", + "0xf87283b2ca268477359407825208943adeca35af56206a74987a8fe13c669365c770cf870e35fa931a000080850343e1feb0a069d54c6d92b31245eeaab0cbdc3c0010dbc5f9ae9b94eee9a929f1ba606d9825a0596a765de29b8423c5b0645942482bf6b140d55ee32b85b1b25d08a665eb9068", + "0xf87183b2ca27847735940782520894d77b95acd12f7b4b5692b55717b7bbca11651954870e35fa931a000080850343e1feaf9fac6d65c95332569e9f9c64eb6b0721d7017d66dbf645227d57db01aba2903aa07ba9d73969e8cbd1bbb4907b0139a7d1967a130aa0b9d755988f7ee395c76f4a", + "0xf87283b2ca28847735940782520894f388bf5766b5ed5d4e1cbf15772e677dbfa80b00870e35fa931a000080850343e1feb0a0f641653544d7ecdef834e47d6b75c2864d1083c7f2410286d02ab50232c79ae9a0304f16db7e99d956da655f615b1b55a16b07b6f4abb49cec967e1f9a31d799a7", + "0xf87283b2ca2984773594078252089435d4996296e58560e6ef47787d51b55f1e2bd92a870e35fa931a000080850343e1feafa0b5501a2f3d9591fdad84883d3f7b1f863765f7c5cd1105812bcd925da581f999a052201608e0e780ef773cdd52722e00abb75bf62ed819dbe467905f1ecc34e69d", + "0xf87283b2ca2a847735940782520894a4c3b77b898e53d6095f11c53a1ce272cff9af31870e35fa931a000080850343e1feafa0c8522a33db78a306e1ba08e3d02d58644de3c057f02d4b09f8d71d5cd30924d3a05d639a640f163b13f5fda66a116ba6653dab2769fea6cf627d4f43506c7d6bdb", + "0xf87283b2ca2b8477359407825208946e84f6113fc1919714f0266705813fb81a17181f870e35fa931a000080850343e1feb0a03d7d83fe6c67520c038b7ab5e54e323b71238ead8d23be5d8ae3d2806176e412a05ab8c4a341fd1ff343b045d491ff58a02ec222866f762e2d753c7142678a345a", + "0xf87183b2ca2c847735940782520894e9ae1a806004e1452baae0493920815aadd84798870e35fa931a000080850343e1feb0a0bae01fbd421b4867be2703267d54589135e2befb91a85f4e60652084137f4e739fb11761069bf01930f2dc102a23f7c767d5cb463283c92c3236662a4be58b47", + "0xf87283b2ca2d847735940782520894fe1905d8ebd20e037274eef441283c811ea82c16870e35fa931a000080850343e1feafa039c42f2963bf66deca076d981a9851fc932d445f0528c70d544a3e5a3077b86ea0326ee1251bb86cc43aabe95653e6d188641e6f229d5e3abff8407dbb579b535a", + "0xf87283b2ca2e8477359407825208946adece88e477f53a143a4c29d97940df2ec768e0870e35fa931a000080850343e1feb0a018ae4840d3c615c217bb83a44cbc508209ea7fbf93f90302d6e5831847423e8da058ba46567d6d2051dbe2f936ad0ce69c682f0f9e3d5bf0d310cb7bf6819a71cf", + "0xf87283b2ca2f8477359407825208940d34d140a7376892c4593fcea3ae26f5d6f202d7870e35fa931a000080850343e1feafa07b923f2c17a76f1d22da7c562edcc008738c45570430e552e9c231572c3abbd2a0582cb8258df9f2688860892339e4bbd9742403853aeec78db0dee5a1d94af8b6", + "0xf87283b2ca30847735940782520894d1c7fa75b9bc55d041fcdf215f3e3a351c9f9edc870e35fa931a000080850343e1feb0a0781db8b5130b5ca1b60a0f4c62a402774d3e108e64e26aab31667537e345684fa046d10c31efaf6e6c4bb87a8a790bb5981760aa6e4da557b65d2c6b7d54a05351", + "0xf87283b2ca31847735940782520894418ebe350a8c6387bf5e42f3502742af8e0781f1870e35fa931a000080850343e1feb0a0d455c6bf7482003643ed2165fafdd3102b9fc95c838646c9ab05e4f997eb7500a05898d44175872173d320e0c1b8cbd79a23b0fbb4c6a6be3ad6f7922842703f10", + "0xf87283b2ca3284773594078252089484914d2770c711d27888c775c547b1d933b48c47870e35fa931a000080850343e1feb0a0bcf8de651d81fbfcd4d368173d74ba18c00ffe736abd9d08227efdb781bd9e79a060619e34c1d4f3451f988ec2b26c73b7998b13c22bb1a44dfcb29ea3e60e415c", + "0xf87283b2ca338477359407825208948f51e560b85edf2e653c689c4e9fac02ce0556b8870e35fa931a000080850343e1feafa0dec3a0ec938c81a3c352bd2f24e4385a5db10294975b00ea5084cfc1227de714a0518d2e5113cdea9cf38ed730995460dd8c27d530e50331579026ad647720704b", + "0xf87283b2ca34847735940782520894ee2503205c24dc66346e356f13f333fb8782d358870e35fa931a000080850343e1feafa01a777ef51abf54680c8e458a85f5272bc56a32049e7fb1b3f8c03d8c24bb8ef6a02607c211e587680030456b34c93a3dc9f337e7d72ba8cc4ef18f9efef823a793", + "0xf87283b2ca35847735940782520894096ba6c59bd667a0fea9a356bcc988e4d9f2d8eb870e35fa931a000080850343e1feafa01128eeb14e0284b587284ef9b6abc408414f271d9104f20b7f06df4e57b869c2a05f713934d3e343f12a345caa3e90f3e5fc66c5914cddabe120cce8a6e93eb4a7", + "0xf87283b2ca36847735940782520894da0adce4f1dc7debe7b2b52e8fe9ace6c7ea9c66870e35fa931a000080850343e1feafa0cd891d5f4085cf36554d2e3da56af2fcc6926af19c1730e5b0afb62369c0a11ea03c9fe6fa610de7047d066bdeb672cbd2914ccf191351af843c9c091e14e9f770", + "0xf87283b2ca37847735940782520894af7d412aeab7525c0541dc3aa6c1085cfb8c9099870e35fa931a000080850343e1feafa0e0ccc70c1ca5e04c94f1234850eddb05b085e1e01c4bd7c97ebb4863bda6b763a029bd2de58dffa4796119e6195ead233f275cc4ca4fc050bd1325900da650933e", + "0xf87283b2ca388477359407825208943cf8c0d567261eaf4ac0872d33a9f48af361769f870e35fa931a000080850343e1feb0a07af283307e8d1bf27baafbacf94196e55e047101052ac573e5fcc87e7eb6e2cea06f2b5b7a0bb6ebc78eadfed2b3c149e482759d7371959b75115f1f4db00e1fb7", + "0xf87283b2ca398477359407825208944779242587ba9e828999249eadd82984430f4843870e35fa931a000080850343e1feafa01214e6f99a7571b3e7ab860f162389fcc42a5cfd7ddfa52a2561339428c98074a03358448c69fbb0aacc21d69ea32c90efd3d23a51037a4268cc015eadf1bde318", + "0xf87283b2ca3a847735940782520894ea531cfe2de357ecff3855b88dbd07f60b03cdca870e35fa931a000080850343e1feb0a054f3fcdc61bcdb829789113e529a1c5d30c92b2316263c563d61c0e441190856a065f1a017a33f86fde74cca0b58c32b5a740cac2db10b1a8a340d24f4a79d8bd8", + "0xf87283b2ca3b847735940782520894d00b5f53ea2a66ad33c3fee304bb22857dfb8a87870e35fa931a000080850343e1feb0a073309bd39bcde633947c863113cd66959d849113c1c40326c4fd779e980ba868a0345025d2863c04212fd6d949e18b2456e2e732c74eb20da251863e241fbff1d7", + "0xf87283b2ca3c8477359407825208947ead29f6616f78f21a951c9686dd257be7b8efe4870e35fa931a000080850343e1feafa08ca2d7c5678210e30a304e650131dd19b2a9bce96979c1a548d78cb5e74dd851a05c3077cba3c44d8cd94c0b45f44eecc9d55ae4ec3d50663fd5623fcf24045bb9", + "0xf87283b2ca3d847735940782520894d503c13ee55c1ea128357d4018ec58d0d5e5c3db870e35fa931a000080850343e1feb0a068bdf5f3c8b9777e84ca44fc1ad973d25c876d43fbd0c49051bedb80372940eea00ed7951529740e7dcd348698c9c7fec08062f72b43f55e5fa46ffda1d4eeb6d1", + "0xf87283b2ca3e8477359407825208944ac670d8760faf780468638ef80034876ed8918d870e35fa931a000080850343e1feb0a043549d94f55bd35e7adf97af4c8f5032c510d9ee23aab159bd5f678627f6e8c7a02759974379335b215c72dcdebb2613d60b9355be0d2878792c3f7f979170963d", + "0xf87283b2ca3f84773594078252089424ffb8c97ce443f8d3265ba3316defcfc07c659c870e35fa931a000080850343e1feafa0f91a15f02f15dabc13f35460cd888caf70b56a373de0e796e00e870a1fe57ab5a024f0e6d0ebe5b0e4f67d65095a263320055ca23e711f6030dc5f47182458b4c6", + "0xf87283b2ca408477359407825208940c5cafc547ab98c9ceaa1c07fdd6bf7820aeb954870e35fa931a000080850343e1feafa0716afd885054db1ea6c6e6defbe66fb62ddc8fe993e8a6014104e252922e77d5a00f4818bab49844de73fe28887ec8881c6dd462924a8cb68ec30f819afdb2b487", + "0xf87283b2ca41847735940782520894db8d964741c53e55df9c2d4e9414c6c96482874e870e35fa931a000080850343e1feafa033b647be0c59bbaed1bb0f995007f86a7b650ad32ff5ae421e78a23624d4548aa044321613820305ab64ecbadaab1562f9dbd78ecfe9f366f3729d1c5b461b8a9f", + "0xf87283b2ca42847735940782520894ba85bb35ae6ff7a34745993fcf92b9afd34124f1870e35fa931a000080850343e1feafa0c3c3271016649caaac7df0e9a2543badc0ff1c5b9d9d8d6dd70faec8b450890ca005960b5204a2329f8d274cf7e457b095bc371d3851809fa651ce9c02063e2100", + "0xf87283b2ca4384773594078252089458871015f5a2d3948264f7c16ad194c80ffd531d870e35fa931a000080850343e1feafa062bc239f09834b88fc6c3ec9568b2a17dbb95f1750ce5da64d6ba2320aae6376a044367552953846b53137586f6183a15e86eebee779237d28e654c35cffbc952e", + "0xf87283b2ca448477359407825208942a90af45df70b0031f218cc122598ddf3e10469f870e35fa931a000080850343e1feafa05a42a11507d7a5562f0f59695da017cb9cc71c57c9c8aa1482189e989f1524a1a02c91dc11d04a6eea954accfdc785633c92ec18a964577f57e03a452c4f0a89db", + "0xf87283b2ca45847735940782520894761bbaaea6ceb265f5262c3b559adc2ad3ed2f09870e35fa931a000080850343e1feafa039d29e4590b51ff8cfec9d0e5f184c756e18d7607377cd117e454e81587ed888a04d5308a90dd4f5725caf97df20f60d6c838d32243e1ecd214ae7dc0b9e508b9c", + "0xf87283b2ca46847735940782520894dfe86f51c5e603f1420d1f0ab366bd3bfe23d2a7870e35fa931a000080850343e1feb0a04392ac4309de3f1de55af346511f8ec72767e0ca42b9a6a2e5e73725a3aa3b0ca0144158ec8215d503eb295a177f28e24586d1b0230330499fda0bf71df7b9c07f", + "0xf87283b2ca47847735940782520894d616547158b05ab5079106dc0336d72763a72871870e35fa931a000080850343e1feb0a0a7d58d7a5562ac985fb9bd3b1345be2cc82f91896ba0f56deb755945127c1093a00c973033cb96bdb63e065151a88f21a9ddb1b5aac28da09f0b6cb40b69b5beb0", + "0xf87283b2ca48847735940782520894dc68cd278cb7f5f666ce7b0a3a214a8540ed4dfa870e35fa931a000080850343e1feafa0ce9d683746ae919212073b51be72b5677274d7a5fffc75bbd38adb2a4bdb3cd8a06d33c96bcda7828f9a6bab6069ebbe9b591717b92eaf9b6d8a532043c78013e6", + "0xf87283b2ca4984773594078252089411f8107da05b6905e8cc0227ca3b0c6eb764fac0870e35fa931a000080850343e1feafa08b342274bbff60e2d3a2f580ac22a6f580a6e46cac0ae193af985c8321d77413a017390dd6aa0c2f3783592bb05f8c0e2d165fdb6e4519cd720e8d408ffdb8213b", + "0xf87283b2ca4a84773594078252089404da906545679850a7ee0ef6836e183031bedc88870e35fa931a000080850343e1feafa013ef4954ad7866e0d34d526acadcd276bc1d99b4a1402bf9d79eb5bc74211336a06d38c764c38e3a4f920a23e92b6b88cec93284788c95ecb4a52cf46d336b3b71", + "0xf87283b2ca4b8477359407825208948bdc25c43c010fd3db6281fcd8f7a0bed18838e3870e35fa931a000080850343e1feafa03947d852b7715cd3439339491143eb3608bcb66f55098dff59412c7dbd338b4ba06cf19ec280ee1bf31544107382afd721bae389dab865c91202e9ebb8130e1b52", + "0xf87183b2ca4c847735940782520894af16f746b8a834a383fd0597d941fee52b7791eb870e35fa931a000080850343e1feb0a0dd4b05f33647254a3fe524bb87b78f5d07f2da07d45c93a516c3596d11996f1b9f13486308ceb7a0a5d0d54d1f75fd673b8755439c9e6987b495081aa2e1a043", + "0xf87283b2ca4d8477359407825208940c5c736600f8ea58ccb89aa72e3f3634651fd551870e35fa931a000080850343e1feafa02bedac70c35bfcd2e311b60730926d942d567eab0d3fce68c60a551d3951f56ea016e3100ee3ebf179ea3253bcb493883a0b124db18df108c3eab6a5fef90abb5b", + "0xf87283b2ca4e8477359407825208946f475e0f0e9eda58556fddc04de9b1a9b6a4cfb4870e35fa931a000080850343e1feafa0eef87d4e6b018e4a38b649b15ecda079cca7957cb4d3863e01ca61ded09a76a2a028f6458e7755aeeba2c21104a0605dfb94cadbd9c8e4f1f9b971201f5fd925f2", + "0xf87283b2ca4f8477359407825208949b2e76498a695c4dc7d0890069cffa84a9581d24870e35fa931a000080850343e1feafa0c3255cc7aef487e5ab9d931a259b831e2fd74f8a23ef523b87b17e20a00a80e6a07ecdf24edf74b2d7bb9ba74c6124320c1c673480dbc3897a1838a7486bfbe624", + "0xf87283b2ca50847735940782520894e2d2b2069f4a54fcc171223ff0c17adbd743c285870e35fa931a000080850343e1feafa0227ed6dfc5bf27ffc152d145c64fa108b964d56e9b3c118d3dc6c2909344e6e4a0633a165999e15ec506cf89063338f9857180bb8c163d252233b4306996240ea7", + "0xf87283b2ca51847735940782520894386bd49f04322544f3c7178fa5ae1a24b947b454870e35fa931a000080850343e1feb0a082d510950cc6246f7fc969e92def81b18d63d6b547a99ebc30e4897ab3342724a01dce6f14dbeb5b3bedc273ab9e244f62fa7df2bcf518a85ec1b6544f18244fcf", + "0xf87183b2ca5284773594078252089400af839c3fc067fafc2e0a205858d6957f0dd18d870e35fa931a000080850343e1feb0a0908e55d774b8264736b283d848bb2f799c71a1cfbb1dddb304dad8eefc4685389f6a1da60e6fc82ae4713c84ba99e8bfbafb35191c4563ba64af5fd0ce002d50", + "0xf87283b2ca53847735940782520894ebb6d32a650afa9221b55a11c6a6de52b6f07cd7870e35fa931a000080850343e1feafa06c35791de05fe59e5a94fb3e981b0c4b095927535fb41b01209b4ed85a611676a050b7eaedd0c887c86f23419e192c9d077e3d97fdf01d3ff8808cd41acd84f41e", + "0xf87283b2ca54847735940782520894011d26a3a9adc9203c8943a6a77aa8657af52420870e35fa931a000080850343e1feb0a0be0a8e72b046c792992f2954e3386b29891f38302d55b0677bc8e953076aaa5ba03a41c430059e43b0db1a4f86e647b100d455b8d2a9691bbf22b609a4caaa2866", + "0xf87283b2ca558477359407825208949c85bc61a89fb5abd957e6c819c653fc1aa0d11b870e35fa931a000080850343e1feb0a0c93b731af016e9f08877512ae4d07ab8befd333c0736373fe68916b3045a3f5ca055caed9ee7e794c05f4d36bc6b75a617120f5de9d16243c6760fc97b7feff1df", + "0xf87283b2ca56847735940782520894bd8e8435b7897d87cf7cedb5cf8c5dd865dbf720870e35fa931a000080850343e1feafa044276922dcd7957054e067ae806a4e7d2b430bb307c7b845a2f5133a5fdb8c7ba00cef595bce18815b382533b9e4c8a3fa1473e5354baad59300e4a9b5f4d41bd1", + "0xf87283b2ca57847735940782520894adebee2e3ff041078b62380d001c6e51b4f15598870e35fa931a000080850343e1feb0a0551e6ca15c83a2680873aeb33fccf1337666d6a420c91a02648c2192cfac5fb0a007c9af16b3893662c63da9569eb79d53d7dd38ea4c316fc413e708cc0aea5adb", + "0xf87283b2ca5884773594078252089471e94c459c9f05085fc0d34b5f21e648e05dc6b3870e35fa931a000080850343e1feafa0fa835fb15e28a55143f8ed2dfb179841126abaff9afcfedfa593b8bd506a6789a03fe24cfd2c20f9dc571ad90950d9af214fc310799503210a141cf48b5859b3ff", + "0xf87283b2ca598477359407825208947c1fe317db82c9298b87c56c3194178271b621e1870e35fa931a000080850343e1feb0a0cf5b615d8d2233efcb152127ca8f940f8724184c5f2326077f297d91efc63fada0053c796c6c330530c0a04afbaab7ac72825ccfa74f74ca5b86d0546d19ee7b0c", + "0xf87283b2ca5a847735940782520894e069d1c9abf5127bdc3a164fb93b96bfa9f74ce0870e35fa931a000080850343e1feafa0ac4eb8d4437ac45d2a2673654b0b9a69c31917d1a09be66dee2010bac2cd128aa019b3dcda289a8d7ab95d573987e4197cb89645bf2f4bbfb95dfffd8890554628", + "0xf87283b2ca5b847735940782520894b9bbddd1eb6ef8fb1bdc6a853d5ad7486a9487dd870e35fa931a000080850343e1feb0a011e089873bcde117d4c4bbfc057f64275e18ab6e75175fc90c20693de7f0549ea03682fbbcb36ef87a033aa4d183c5716f5bdbe74fa04ff73c96817269683a014a", + "0xf87283b2ca5c847735940782520894a804387cdaf986d45831e8074efb2115af053f7a870e35fa931a000080850343e1feb0a044728ef6764e6d1d561979aac58024077406aeefebfc3e4fe103127c3793bfada057fd99cfa269c6ce10f97dffb575f38bd0d1d1970ef19648c5ede04c817a7986", + "0xf87283b2ca5d847735940782520894f23501d784a041fc911b4c86c2bfb1f63ec170ea870e35fa931a000080850343e1feb0a0bf2fd5822fac3c756284e07e487f7aa0e25f2aae051f6966bf1723d9aff4d713a07faac8a1050efbf9c1b7f061ce90abeddedf9d7f59f13f29702861470f6310c4", + "0xf87283b2ca5e8477359407825208943928be2a7058088313c0fb3294014e88a3c5ed4a870e35fa931a000080850343e1feb0a07073b1c53c64d977f43e5045f136aa22766664f5029c51d0f9f6e9562ade0056a017b0fa41efdcf364b40b65f09a00ee97e491a318844c62bc984fb17899f84daa", + "0xf87283b2ca5f847735940782520894196aa07204141478459c14106ef5e5282efe9957870e35fa931a000080850343e1feafa0dc23d116f1dc7833274484bcb750f8fde476d0f65980d2fb65ef422a2db6b342a0022af2882c4da8ea6e7439744c79f560fe47b5dacc6acf0e490859ebd6e7f90a", + "0xf87283b2ca60847735940782520894763cbf89560e2da270000822abda9584db693fa3870e35fa931a000080850343e1feb0a0cbd30950702cdd8fd9a2b6f3032107190402aeacded447d9e4ddca0be8f4a0a2a0327a730029720e5d40d64e59d6583ac054d22c9a54f3efbb8c4ae800c5f65b36", + "0xf87283b2ca618477359407825208947feaea0ff70ffc9eec2104f57f7136aff4dea680870e35fa931a000080850343e1feb0a077c86f7c3d82fe0b45c9468170fc7b9d31b29d6ab5d971be78eb9a58e9b3d14da0782285c77fa8ebc436d8b397a30f1a8a9169c9abf7df6a09d11546a66205ed5d", + "0xf87283b2ca62847735940782520894e5466aacd9dd6d3bb35060a1ccc76a438de88ca1870e35fa931a000080850343e1feb0a0ab09d576a36d217d08cc8eda52b35d510d6b834c32522ef99b55b76d9c8b8981a0758a5f42f92a59fe0fb0307f93418208cfb1267e348985172d62732739f84b2c", + "0xf87283b2ca63847735940782520894f670980415cfe8c4f8d10645ecf974c9a2fea00e870e35fa931a000080850343e1feafa04e6478a23686f9b3de241b2b9f55245db83c250588e26ad58345b29c39bbbd27a07436fe4148f284697f14e7896653f85aa86c4823dae35a09f55d7bbaa9f8d335", + "0xf87283b2ca64847735940782520894a29115bce7829ffdd989b7cf1bdd1eac06a2cb36870e35fa931a000080850343e1feb0a049373772d3078c96956c11a57a64406eaa8db802d9ff43d53ba9245a54729ad8a02f0379117dcf2a472b70aaa032fa6eeceaadee1573bc68bdfdb456238e2b25c4", + "0xf87283b2ca658477359407825208948f528aa67dc1846c893465fa1c8c26556bc5fe19870e35fa931a000080850343e1feb0a04a9206b2c7283b48c9eeac91626b8ecfcdd75954244771029635f4dab641ef83a013bd39a1bee8a2c22d41fd6d6f1d840c32ef000f2dad466014177e5d0263e866", + "0xf87283b2ca668477359407825208944dc4ec6ac43c8c45777292db987203c0248e17b7870e35fa931a000080850343e1feb0a0bdac2f6689e71fd20c81ab3ed3eb589481faded73989c5ee3b301abdf0df4b53a0578183bf6312dfe8b2719108accbb232f8e51483b25dfd7d3ecd1c610439956c", + "0xf87283b2ca678477359407825208940d2f39f251cb547cba567a31e5e9f93c19dffa85870e35fa931a000080850343e1feafa0f30cc48dba1051f2fd9819c4b02eece9570f10d41ae8b452aad94f5c42b82576a06426cf9fbfd3773ef5f393028b15eed015a6706e31f0240ca17c19b2351e7414", + "0xf87283b2ca688477359407825208949eb31fb94ce5111e2a04cb9d156b513887ccbd00870e35fa931a000080850343e1feafa0d9f46a2689133b09f2a2ea0ee95d1ef5aba6b1f5c004d6920e21a3b90341e065a050a5e2b5684ea9970890351a7a15677fc08aa9a5d00003a5c452c6662cd42852", + "0xf87283b2ca6984773594078252089404b88ef83f8c41b1465d360a1e82f07ae190892a870e35fa931a000080850343e1feafa051958bd1fe58327a52aa6a82e58821d55402f482b97328c60c4cfe01b8e36b3fa0539cd419d4cdd5c7c629820dfe8b71eb58ae568524e97b91a24731e521d2111b", + "0xf87283b2ca6a847735940782520894af23e04b04fbe15630eadd32a6f27a5a65ea554a870e35fa931a000080850343e1feafa0381d17559d00a1b6325c610bddfc9bd062f1b12057ded89955ab7ed5cccd4d09a010fd329e705cd269278c9b5cde9b779ecaa8e358a337f8add40ecfbd75dc4499", + "0xf87283b2ca6b847735940782520894746cdff371e3f1e905b3ac52280078bac2dec7dd870e35fa931a000080850343e1feafa0759d0869520d18b5358f314e05b69b1a90a326187da6a8008063d1432f5ffb22a0245f02da5d9697a34e53c312886257805f2b3bdfd840dc96322cb81e35823659", + "0xf87283b2ca6c847735940782520894c33e5155bdbf1a0a7ceb1b80f8586c5cda5c3781870e35fa931a000080850343e1feafa0c252b122d4a06b7aaf7bf78cd11f4e1399f7b250c1d865582e9e08e4bd9105dea015b154437cb829de566ba07b719034333ac218d9854e4389f8ba2046bec844ea", + "0xf87283b2ca6d847735940782520894e7fdef5f5219068f3d0f88a7445005574c662798870e35fa931a000080850343e1feafa0eda15bdec45215a52b664c11159ef2beaa944690a8f79717ac0ed1f0035f829ca07529a85f7eb5bd384bbb3b4d65542c49da763e1f897cab7a45cc6a47645b8673", + "0xf87283b2ca6e847735940782520894f0a81a63c5e09b0bd08e027de48058e377d3732d870e35fa931a000080850343e1feafa00bbf6ac00d963d190c05442699a841f9c80ec9945931e6adbe253354c99a1182a050e0fd4171c350df604d418a7e4837e7b8796ba7429fe32f436a21bccb645187", + "0xf87283b2ca6f8477359407825208949878ab34dc3b4a63c80fdb733491472c11d59a56870e35fa931a000080850343e1feb0a048e27126c94bbbc5405cc8375e1b7ad465c27d6c0bd76cb92d33d4040b22eb70a07f2c95cf62ea907537fda9c7b4f50478b0bd589af000a8040d579a170396915b", + "0xf87283b2ca70847735940782520894912859bebae3086ac7a062dee5d68aa8ed2d71ec870e35fa931a000080850343e1feb0a0295f18dad24c898d1bfb52a5ebc66cf9969f51a93466af8f58f5f40bb39f7e71a00ebec2985dfe0273b9efe27b62a40d1b09c9b34d15d79e57ba410f9465020c1a", + "0xf87283b2ca718477359407825208945a0b737ed85049410e5ea61f444d07d5c8c0359f870e35fa931a000080850343e1feafa04d86fff68888228429ec758044b01c250d411adb6deb1b0037ea8a82a72c2c69a0327aa62e850c6e885d0400921ce640bf774d5dfaec47cb6591c6f052b06ac168", + "0xf87283b2ca72847735940782520894305a5dfd46e6128abce28c03b3ad971f4e4915ff870e35fa931a000080850343e1feb0a02e8f17f15ac2086ab70089d77b903b123b868bac1b3cec813f676f77e31f24aba06cb86cccf93c88eaeb1494896a199741aa20bd479f63e23df92301af6d812996", + "0x03f89a8501a1f0ff4682775084773594008504a817c8008252089445fd980a780887e4fc4ae9f8d042d112d0802ac28080c08504a817c800e1a0015c8bc10440f3b13981c8eca320a2592d8af8fb6aa30a2b48dab94992d3f0eb01a0312cb2215fdc073c3861315c54aa152f685e45df0921003867bad8bee65aa107a05b49e2208d9e902d649c218d388ef46f1deb8dae206c7b6d719bff35dd53c023", + "0x03f89a8501a1f0ff4682765184773594008504a817c80082520894807381ff50bf094ed69ce4e16d393a63af21d8428080c08504a817c800e1a0012084b96d7bdc4d3f8fc1689150593e498063b67fdcc8028bb0191c6d521abb01a0fd9b96ec6f6eb1e24eacaf9e0c69faa87a3c6d72349a7566d226c575b0faf4a4a04b493a211a7b6e46889876ad198212960148dc8e0af2b7a745941d49a60934c0" + ], + "withdrawals": [ + { + "index": "3969157", + "validator_index": "2760", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "2598" + }, + { + "index": "3969158", + "validator_index": "2761", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969159", + "validator_index": "2768", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969160", + "validator_index": "2784", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969161", + "validator_index": "2786", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969162", + "validator_index": "2787", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969163", + "validator_index": "2794", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969164", + "validator_index": "2798", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969165", + "validator_index": "2811", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969166", + "validator_index": "2813", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969167", + "validator_index": "2827", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969168", + "validator_index": "2841", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969169", + "validator_index": "2845", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969170", + "validator_index": "2710", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969171", + "validator_index": "2724", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969172", + "validator_index": "2738", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + } + ], + "blob_gas_used": "262144", + "excess_blob_gas": "46399488", + "exits": [ + { + "source_address": "0x8e609ac80f4324e499a6efd24f221a2caa868224", + "validator_pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c" + }, + { + "source_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f", + "validator_pubkey": "0x93a44c6999cff05bcb6770249ba5a74753dcfecfc6aefae564a0e067a1576ab4b9eff12a3c1623107fb3f3c6dd838859" + }, + { + "source_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f", + "validator_pubkey": "0x870e4932e9e6a4921941286c3f7eb07410ba844f765ba831cf92b6ac0f9a86e080f489205086fd9b64093b0b39abfbac" + }, + { + "source_address": "0x8d0b4dfccc8b2a268486d9754b135d8ad1ee7258", + "validator_pubkey": "0x8a049217690890447ee0a91502f8b40581f5889e023cf6261a336c8f60afd239722d170751f1d7f1a15626e7227e3ffc" + }, + { + "source_address": "0xd4e11c28e04c0c2bf370b7a9989498b7ea02493f", + "validator_pubkey": "0x879bca77468086bd2ca90ba22bce90046738938cebf5d2facea448229088f01771f4a6a2efcfd548473035e0fd43008a" + } + ] +} diff --git a/utils/utils.go b/utils/utils.go index e73df25..7ca36c9 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -455,14 +455,12 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par } baseFeePerGas := payload.BaseFeePerGas.ToBig() withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) - // TODO(electra): add new fields. - // exitsHash := deriveExitsHash(payload.Exits) + exitsHash := deriveExitsHash(payload.Exits) var beaconRootHash *common.Hash if parentBeaconRoot != nil { root := common.Hash(*parentBeaconRoot) beaconRootHash = &root } - // TODO(electra): we're stuck until geth updates this. return &types.Header{ ParentHash: common.Hash(payload.ParentHash), UncleHash: types.EmptyUncleHash, @@ -483,8 +481,7 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par BlobGasUsed: &payload.BlobGasUsed, ExcessBlobGas: &payload.ExcessBlobGas, ParentBeaconRoot: beaconRootHash, - // TODO(electra): add new fields. - // ExitsHash: &exitsHash, + ExitsHash: &exitsHash, }, nil } @@ -515,18 +512,14 @@ func deriveWithdrawalsHash(withdrawals []*capella.Withdrawal) common.Hash { } func deriveExitsHash(exits []*electra.ExecutionLayerExit) common.Hash { - // TODO(electra): we're stuck until geth updates this. - /* - exitData := make([]*types.Exit, len(exits)) - for i, e := range exits { - exitData[i] = &types.Exit{ - SourceAddress: common.Address(e.SourceAddress), - ValidatorPubkey: e.ValidatorPubkey, - } + exitData := make([]*types.Exit, len(exits)) + for i, e := range exits { + exitData[i] = &types.Exit{ + SourceAddress: common.Address(e.SourceAddress), + ValidatorPubkey: e.ValidatorPubkey, } - return types.DeriveSha(types.Exits(exitData), trie.NewStackTrie(nil)) - */ - return common.Hash{} + } + return types.DeriveSha(types.Exits(exitData), trie.NewStackTrie(nil)) } func deriveBaseFeePerGas(baseFeePerGas [32]byte) *big.Int { diff --git a/utils/utils_test.go b/utils/utils_test.go index 43bc52a..917d493 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -1,6 +1,7 @@ package utils import ( + "github.com/attestantio/go-eth2-client/spec/electra" "os" "testing" @@ -174,6 +175,26 @@ func TestComputeHash(t *testing.T) { require.Equal(t, "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", hash.String()) }) + /* TODO(electra): update with real electra execution payload & known hash */ + t.Run("Should compute electra hash", func(t *testing.T) { + jsonFile, err := os.Open("../testdata/executionpayload/electra-case0.json") + require.NoError(t, err) + defer jsonFile.Close() + + payload := new(electra.ExecutionPayload) + require.NoError(t, DecodeJSON(jsonFile, payload)) + versionedPayload := &api.VersionedExecutionPayload{ + Version: spec.DataVersionElectra, + Electra: payload, + } + h, _ := HexToHash("0xa119064ee9c03e2c7ad5821b6077606c64f36542eda12ed61a1edc5f898a17fc") + r := phase0.Root(h) + hash, err := ComputeBlockHash(versionedPayload, &r) + require.NoError(t, err) + /* TODO(electra): not actually sure this is the right hash */ + require.Equal(t, "0xd936ca0c33434bf70ffbb999cc6699ca300c9717b5dc12850658c6c4da2261ee", hash.String()) + }) + t.Run("Should error on unknown version", func(t *testing.T) { payload := new(capella.ExecutionPayload) versionedPayload := &api.VersionedExecutionPayload{ From bd7cefd62a6b9c8d133349970f8fe98e8e0e69fa Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 5 Apr 2024 11:08:14 -0500 Subject: [PATCH 03/32] Run make fmt --- utils/utils_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils_test.go b/utils/utils_test.go index 917d493..64d6bd6 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -1,7 +1,6 @@ package utils import ( - "github.com/attestantio/go-eth2-client/spec/electra" "os" "testing" @@ -10,6 +9,7 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/stretchr/testify/require" ) From 112c61af8aef8d3e0f36b04afd199df986053321 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 8 Apr 2024 10:57:17 -0500 Subject: [PATCH 04/32] Add support for deposit receipts --- testdata/executionpayload/electra-case0.json | 9 ++ utils/utils.go | 109 ++++++++++++------- utils/utils_test.go | 2 +- 3 files changed, 80 insertions(+), 40 deletions(-) diff --git a/testdata/executionpayload/electra-case0.json b/testdata/executionpayload/electra-case0.json index 3eb17bc..a625bc2 100644 --- a/testdata/executionpayload/electra-case0.json +++ b/testdata/executionpayload/electra-case0.json @@ -216,6 +216,15 @@ ], "blob_gas_used": "262144", "excess_blob_gas": "46399488", + "deposit_receipts": [ + { + "pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c", + "withdrawal_credentials": "0x01f24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", + "amount": "1234", + "signature": "0x50c43c26b8ea9b8c00fbbe16d2d61ea91abdeab72e9b3a84495b25c027dd7b93a8964fb5f1821617aed572a964baf470778a662a74a5b06f8f983bc107ed5b387cb324fa08355f30979878c3c7a0b98b0f3a1a2855a11387e98c0d730f88fa0b", + "index": "5678" + } + ], "exits": [ { "source_address": "0x8e609ac80f4324e499a6efd24f221a2caa868224", diff --git a/utils/utils.go b/utils/utils.go index 7ca36c9..6e0437a 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -271,30 +271,36 @@ func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra. return nil, fmt.Errorf("failed to derive withdrawals root: %w", err) } + depositReceiptsRoot, err := deriveDepositReceiptsRoot(payload.DepositReceipts) + if err != nil { + return nil, fmt.Errorf("failed to derive deposit receipts root: %w", err) + } + exitsRoot, err := deriveExitsRoot(payload.Exits) if err != nil { - return nil, fmt.Errorf("failed to derive withdrawals root: %w", err) + return nil, fmt.Errorf("failed to derive exits root: %w", err) } return &electra.ExecutionPayloadHeader{ - ParentHash: payload.ParentHash, - FeeRecipient: payload.FeeRecipient, - StateRoot: payload.StateRoot, - ReceiptsRoot: payload.ReceiptsRoot, - LogsBloom: payload.LogsBloom, - PrevRandao: payload.PrevRandao, - BlockNumber: payload.BlockNumber, - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Timestamp: payload.Timestamp, - ExtraData: payload.ExtraData, - BaseFeePerGas: payload.BaseFeePerGas, - BlockHash: payload.BlockHash, - TransactionsRoot: txRoot, - WithdrawalsRoot: wdRoot, - BlobGasUsed: payload.BlobGasUsed, - ExcessBlobGas: payload.ExcessBlobGas, - ExitsRoot: exitsRoot, + ParentHash: payload.ParentHash, + FeeRecipient: payload.FeeRecipient, + StateRoot: payload.StateRoot, + ReceiptsRoot: payload.ReceiptsRoot, + LogsBloom: payload.LogsBloom, + PrevRandao: payload.PrevRandao, + BlockNumber: payload.BlockNumber, + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Timestamp: payload.Timestamp, + ExtraData: payload.ExtraData, + BaseFeePerGas: payload.BaseFeePerGas, + BlockHash: payload.BlockHash, + TransactionsRoot: txRoot, + WithdrawalsRoot: wdRoot, + BlobGasUsed: payload.BlobGasUsed, + ExcessBlobGas: payload.ExcessBlobGas, + DepositReceiptsRoot: depositReceiptsRoot, + ExitsRoot: exitsRoot, }, nil } @@ -316,6 +322,15 @@ func deriveWithdrawalsRoot(withdrawals []*capella.Withdrawal) (phase0.Root, erro return wdRoot, nil } +func deriveDepositReceiptsRoot(depositReceipts []*electra.DepositReceipt) (phase0.Root, error) { + drs := utilelectra.DepositReceipts{DepositReceipts: depositReceipts} + depositReceiptsRoot, err := drs.HashTreeRoot() + if err != nil { + return phase0.Root{}, err + } + return depositReceiptsRoot, nil +} + func deriveExitsRoot(exits []*electra.ExecutionLayerExit) (phase0.Root, error) { exs := utilelectra.ExecutionPayloadExits{Exits: exits} exitsRoot, err := exs.HashTreeRoot() @@ -455,6 +470,7 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par } baseFeePerGas := payload.BaseFeePerGas.ToBig() withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) + depositReceiptsHash := deriveDepositReceiptsHash(payload.DepositReceipts) exitsHash := deriveExitsHash(payload.Exits) var beaconRootHash *common.Hash if parentBeaconRoot != nil { @@ -462,26 +478,27 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par beaconRootHash = &root } return &types.Header{ - ParentHash: common.Hash(payload.ParentHash), - UncleHash: types.EmptyUncleHash, - Coinbase: common.Address(payload.FeeRecipient), - Root: common.Hash(payload.StateRoot), - TxHash: transactionHash, - ReceiptHash: common.Hash(payload.ReceiptsRoot), - Bloom: payload.LogsBloom, - Difficulty: common.Big0, - Number: new(big.Int).SetUint64(payload.BlockNumber), - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Time: payload.Timestamp, - Extra: payload.ExtraData, - MixDigest: payload.PrevRandao, - BaseFee: baseFeePerGas, - WithdrawalsHash: &withdrawalsHash, - BlobGasUsed: &payload.BlobGasUsed, - ExcessBlobGas: &payload.ExcessBlobGas, - ParentBeaconRoot: beaconRootHash, - ExitsHash: &exitsHash, + ParentHash: common.Hash(payload.ParentHash), + UncleHash: types.EmptyUncleHash, + Coinbase: common.Address(payload.FeeRecipient), + Root: common.Hash(payload.StateRoot), + TxHash: transactionHash, + ReceiptHash: common.Hash(payload.ReceiptsRoot), + Bloom: payload.LogsBloom, + Difficulty: common.Big0, + Number: new(big.Int).SetUint64(payload.BlockNumber), + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Time: payload.Timestamp, + Extra: payload.ExtraData, + MixDigest: payload.PrevRandao, + BaseFee: baseFeePerGas, + WithdrawalsHash: &withdrawalsHash, + BlobGasUsed: &payload.BlobGasUsed, + ExcessBlobGas: &payload.ExcessBlobGas, + ParentBeaconRoot: beaconRootHash, + DepositReceiptsHash: &depositReceiptsHash, + ExitsHash: &exitsHash, }, nil } @@ -511,6 +528,20 @@ func deriveWithdrawalsHash(withdrawals []*capella.Withdrawal) common.Hash { return types.DeriveSha(types.Withdrawals(withdrawalData), trie.NewStackTrie(nil)) } +func deriveDepositReceiptsHash(depositReceipts []*electra.DepositReceipt) common.Hash { + depositReceiptsData := make([]*types.DepositReceipt, len(depositReceipts)) + for i, d := range depositReceipts { + depositReceiptsData[i] = &types.DepositReceipt{ + Pubkey: d.Pubkey, + WithdrawalCredentials: [32]byte(d.WithdrawalCredentials), + Amount: uint64(d.Amount), + Signature: d.Signature, + Index: d.Index, + } + } + return types.DeriveSha(types.DepositReceipts(depositReceiptsData), trie.NewStackTrie(nil)) +} + func deriveExitsHash(exits []*electra.ExecutionLayerExit) common.Hash { exitData := make([]*types.Exit, len(exits)) for i, e := range exits { diff --git a/utils/utils_test.go b/utils/utils_test.go index 64d6bd6..cae31c0 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -192,7 +192,7 @@ func TestComputeHash(t *testing.T) { hash, err := ComputeBlockHash(versionedPayload, &r) require.NoError(t, err) /* TODO(electra): not actually sure this is the right hash */ - require.Equal(t, "0xd936ca0c33434bf70ffbb999cc6699ca300c9717b5dc12850658c6c4da2261ee", hash.String()) + require.Equal(t, "0xe485e2a6cbb8a9f263d150dbee496d899f5d18f2b5a376b8330e2fcf5df9d54f", hash.String()) }) t.Run("Should error on unknown version", func(t *testing.T) { From 50d30d20c4338e7cfb64fd098e4690dbd8cca621 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 10 Apr 2024 09:29:40 -0500 Subject: [PATCH 05/32] Replace Exits with WithdrawRequests --- testdata/executionpayload/electra-case0.json | 17 +-- utils/utils.go | 103 ++++++++++--------- utils/utils_test.go | 2 +- 3 files changed, 64 insertions(+), 58 deletions(-) diff --git a/testdata/executionpayload/electra-case0.json b/testdata/executionpayload/electra-case0.json index a625bc2..209cd5a 100644 --- a/testdata/executionpayload/electra-case0.json +++ b/testdata/executionpayload/electra-case0.json @@ -225,26 +225,31 @@ "index": "5678" } ], - "exits": [ + "withdraw_requests": [ { "source_address": "0x8e609ac80f4324e499a6efd24f221a2caa868224", - "validator_pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c" + "validator_pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c", + "amount": "0" }, { "source_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f", - "validator_pubkey": "0x93a44c6999cff05bcb6770249ba5a74753dcfecfc6aefae564a0e067a1576ab4b9eff12a3c1623107fb3f3c6dd838859" + "validator_pubkey": "0x93a44c6999cff05bcb6770249ba5a74753dcfecfc6aefae564a0e067a1576ab4b9eff12a3c1623107fb3f3c6dd838859", + "amount": "10" }, { "source_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f", - "validator_pubkey": "0x870e4932e9e6a4921941286c3f7eb07410ba844f765ba831cf92b6ac0f9a86e080f489205086fd9b64093b0b39abfbac" + "validator_pubkey": "0x870e4932e9e6a4921941286c3f7eb07410ba844f765ba831cf92b6ac0f9a86e080f489205086fd9b64093b0b39abfbac", + "amount": "100" }, { "source_address": "0x8d0b4dfccc8b2a268486d9754b135d8ad1ee7258", - "validator_pubkey": "0x8a049217690890447ee0a91502f8b40581f5889e023cf6261a336c8f60afd239722d170751f1d7f1a15626e7227e3ffc" + "validator_pubkey": "0x8a049217690890447ee0a91502f8b40581f5889e023cf6261a336c8f60afd239722d170751f1d7f1a15626e7227e3ffc", + "amount": "1000" }, { "source_address": "0xd4e11c28e04c0c2bf370b7a9989498b7ea02493f", - "validator_pubkey": "0x879bca77468086bd2ca90ba22bce90046738938cebf5d2facea448229088f01771f4a6a2efcfd548473035e0fd43008a" + "validator_pubkey": "0x879bca77468086bd2ca90ba22bce90046738938cebf5d2facea448229088f01771f4a6a2efcfd548473035e0fd43008a", + "amount": "10000" } ] } diff --git a/utils/utils.go b/utils/utils.go index 6e0437a..090f459 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -276,31 +276,31 @@ func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra. return nil, fmt.Errorf("failed to derive deposit receipts root: %w", err) } - exitsRoot, err := deriveExitsRoot(payload.Exits) + withdrawRequestsRoot, err := deriveWithdrawRequestsRoot(payload.WithdrawRequests) if err != nil { return nil, fmt.Errorf("failed to derive exits root: %w", err) } return &electra.ExecutionPayloadHeader{ - ParentHash: payload.ParentHash, - FeeRecipient: payload.FeeRecipient, - StateRoot: payload.StateRoot, - ReceiptsRoot: payload.ReceiptsRoot, - LogsBloom: payload.LogsBloom, - PrevRandao: payload.PrevRandao, - BlockNumber: payload.BlockNumber, - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Timestamp: payload.Timestamp, - ExtraData: payload.ExtraData, - BaseFeePerGas: payload.BaseFeePerGas, - BlockHash: payload.BlockHash, - TransactionsRoot: txRoot, - WithdrawalsRoot: wdRoot, - BlobGasUsed: payload.BlobGasUsed, - ExcessBlobGas: payload.ExcessBlobGas, - DepositReceiptsRoot: depositReceiptsRoot, - ExitsRoot: exitsRoot, + ParentHash: payload.ParentHash, + FeeRecipient: payload.FeeRecipient, + StateRoot: payload.StateRoot, + ReceiptsRoot: payload.ReceiptsRoot, + LogsBloom: payload.LogsBloom, + PrevRandao: payload.PrevRandao, + BlockNumber: payload.BlockNumber, + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Timestamp: payload.Timestamp, + ExtraData: payload.ExtraData, + BaseFeePerGas: payload.BaseFeePerGas, + BlockHash: payload.BlockHash, + TransactionsRoot: txRoot, + WithdrawalsRoot: wdRoot, + BlobGasUsed: payload.BlobGasUsed, + ExcessBlobGas: payload.ExcessBlobGas, + DepositReceiptsRoot: depositReceiptsRoot, + WithdrawRequestsRoot: withdrawRequestsRoot, }, nil } @@ -331,13 +331,13 @@ func deriveDepositReceiptsRoot(depositReceipts []*electra.DepositReceipt) (phase return depositReceiptsRoot, nil } -func deriveExitsRoot(exits []*electra.ExecutionLayerExit) (phase0.Root, error) { - exs := utilelectra.ExecutionPayloadExits{Exits: exits} - exitsRoot, err := exs.HashTreeRoot() +func deriveWithdrawRequestsRoot(withdrawRequests []*electra.ExecutionLayerWithdrawRequest) (phase0.Root, error) { + wrs := utilelectra.ExecutionPayloadWithdrawRequests{WithdrawRequests: withdrawRequests} + withdrawRequestsRoot, err := wrs.HashTreeRoot() if err != nil { return phase0.Root{}, err } - return exitsRoot, nil + return withdrawRequestsRoot, nil } // ComputeBlockHash computes the block hash for a given execution payload. @@ -471,34 +471,34 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par baseFeePerGas := payload.BaseFeePerGas.ToBig() withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) depositReceiptsHash := deriveDepositReceiptsHash(payload.DepositReceipts) - exitsHash := deriveExitsHash(payload.Exits) + withdrawRequestsHash := deriveWithdrawRequestsHash(payload.WithdrawRequests) var beaconRootHash *common.Hash if parentBeaconRoot != nil { root := common.Hash(*parentBeaconRoot) beaconRootHash = &root } return &types.Header{ - ParentHash: common.Hash(payload.ParentHash), - UncleHash: types.EmptyUncleHash, - Coinbase: common.Address(payload.FeeRecipient), - Root: common.Hash(payload.StateRoot), - TxHash: transactionHash, - ReceiptHash: common.Hash(payload.ReceiptsRoot), - Bloom: payload.LogsBloom, - Difficulty: common.Big0, - Number: new(big.Int).SetUint64(payload.BlockNumber), - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Time: payload.Timestamp, - Extra: payload.ExtraData, - MixDigest: payload.PrevRandao, - BaseFee: baseFeePerGas, - WithdrawalsHash: &withdrawalsHash, - BlobGasUsed: &payload.BlobGasUsed, - ExcessBlobGas: &payload.ExcessBlobGas, - ParentBeaconRoot: beaconRootHash, - DepositReceiptsHash: &depositReceiptsHash, - ExitsHash: &exitsHash, + ParentHash: common.Hash(payload.ParentHash), + UncleHash: types.EmptyUncleHash, + Coinbase: common.Address(payload.FeeRecipient), + Root: common.Hash(payload.StateRoot), + TxHash: transactionHash, + ReceiptHash: common.Hash(payload.ReceiptsRoot), + Bloom: payload.LogsBloom, + Difficulty: common.Big0, + Number: new(big.Int).SetUint64(payload.BlockNumber), + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Time: payload.Timestamp, + Extra: payload.ExtraData, + MixDigest: payload.PrevRandao, + BaseFee: baseFeePerGas, + WithdrawalsHash: &withdrawalsHash, + BlobGasUsed: &payload.BlobGasUsed, + ExcessBlobGas: &payload.ExcessBlobGas, + ParentBeaconRoot: beaconRootHash, + DepositReceiptsHash: &depositReceiptsHash, + WithdrawRequestsHash: &withdrawRequestsHash, }, nil } @@ -542,15 +542,16 @@ func deriveDepositReceiptsHash(depositReceipts []*electra.DepositReceipt) common return types.DeriveSha(types.DepositReceipts(depositReceiptsData), trie.NewStackTrie(nil)) } -func deriveExitsHash(exits []*electra.ExecutionLayerExit) common.Hash { - exitData := make([]*types.Exit, len(exits)) - for i, e := range exits { - exitData[i] = &types.Exit{ +func deriveWithdrawRequestsHash(withdrawRequests []*electra.ExecutionLayerWithdrawRequest) common.Hash { + withdrawRequestsData := make([]*types.WithdrawRequest, len(withdrawRequests)) + for i, e := range withdrawRequests { + withdrawRequestsData[i] = &types.WithdrawRequest{ SourceAddress: common.Address(e.SourceAddress), ValidatorPubkey: e.ValidatorPubkey, + Amount: uint64(e.Amount), } } - return types.DeriveSha(types.Exits(exitData), trie.NewStackTrie(nil)) + return types.DeriveSha(types.WithdrawRequests(withdrawRequestsData), trie.NewStackTrie(nil)) } func deriveBaseFeePerGas(baseFeePerGas [32]byte) *big.Int { diff --git a/utils/utils_test.go b/utils/utils_test.go index cae31c0..f2f91a2 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -192,7 +192,7 @@ func TestComputeHash(t *testing.T) { hash, err := ComputeBlockHash(versionedPayload, &r) require.NoError(t, err) /* TODO(electra): not actually sure this is the right hash */ - require.Equal(t, "0xe485e2a6cbb8a9f263d150dbee496d899f5d18f2b5a376b8330e2fcf5df9d54f", hash.String()) + require.Equal(t, "0x500991c7bb744af42002f9883f456f0b308abc07f74c18901aaf2dde352f59f2", hash.String()) }) t.Run("Should error on unknown version", func(t *testing.T) { From 688e0913080099a0de23bbbf0e55eb7c90889820 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Sat, 27 Apr 2024 09:00:38 -0500 Subject: [PATCH 06/32] Rename WithdrawRequest to WithdrawalRequest --- testdata/executionpayload/electra-case0.json | 2 +- utils/utils.go | 102 +++++++++---------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/testdata/executionpayload/electra-case0.json b/testdata/executionpayload/electra-case0.json index 209cd5a..9668ede 100644 --- a/testdata/executionpayload/electra-case0.json +++ b/testdata/executionpayload/electra-case0.json @@ -225,7 +225,7 @@ "index": "5678" } ], - "withdraw_requests": [ + "withdrawal_requests": [ { "source_address": "0x8e609ac80f4324e499a6efd24f221a2caa868224", "validator_pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c", diff --git a/utils/utils.go b/utils/utils.go index 090f459..726dd3e 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -276,31 +276,31 @@ func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra. return nil, fmt.Errorf("failed to derive deposit receipts root: %w", err) } - withdrawRequestsRoot, err := deriveWithdrawRequestsRoot(payload.WithdrawRequests) + withdrawalRequestsRoot, err := deriveWithdrawalRequestsRoot(payload.WithdrawalRequests) if err != nil { return nil, fmt.Errorf("failed to derive exits root: %w", err) } return &electra.ExecutionPayloadHeader{ - ParentHash: payload.ParentHash, - FeeRecipient: payload.FeeRecipient, - StateRoot: payload.StateRoot, - ReceiptsRoot: payload.ReceiptsRoot, - LogsBloom: payload.LogsBloom, - PrevRandao: payload.PrevRandao, - BlockNumber: payload.BlockNumber, - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Timestamp: payload.Timestamp, - ExtraData: payload.ExtraData, - BaseFeePerGas: payload.BaseFeePerGas, - BlockHash: payload.BlockHash, - TransactionsRoot: txRoot, - WithdrawalsRoot: wdRoot, - BlobGasUsed: payload.BlobGasUsed, - ExcessBlobGas: payload.ExcessBlobGas, - DepositReceiptsRoot: depositReceiptsRoot, - WithdrawRequestsRoot: withdrawRequestsRoot, + ParentHash: payload.ParentHash, + FeeRecipient: payload.FeeRecipient, + StateRoot: payload.StateRoot, + ReceiptsRoot: payload.ReceiptsRoot, + LogsBloom: payload.LogsBloom, + PrevRandao: payload.PrevRandao, + BlockNumber: payload.BlockNumber, + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Timestamp: payload.Timestamp, + ExtraData: payload.ExtraData, + BaseFeePerGas: payload.BaseFeePerGas, + BlockHash: payload.BlockHash, + TransactionsRoot: txRoot, + WithdrawalsRoot: wdRoot, + BlobGasUsed: payload.BlobGasUsed, + ExcessBlobGas: payload.ExcessBlobGas, + DepositReceiptsRoot: depositReceiptsRoot, + WithdrawalRequestsRoot: withdrawalRequestsRoot, }, nil } @@ -331,13 +331,13 @@ func deriveDepositReceiptsRoot(depositReceipts []*electra.DepositReceipt) (phase return depositReceiptsRoot, nil } -func deriveWithdrawRequestsRoot(withdrawRequests []*electra.ExecutionLayerWithdrawRequest) (phase0.Root, error) { - wrs := utilelectra.ExecutionPayloadWithdrawRequests{WithdrawRequests: withdrawRequests} - withdrawRequestsRoot, err := wrs.HashTreeRoot() +func deriveWithdrawalRequestsRoot(withdrawalRequests []*electra.ExecutionLayerWithdrawalRequest) (phase0.Root, error) { + wrs := utilelectra.ExecutionPayloadWithdrawalRequests{WithdrawalRequests: withdrawalRequests} + withdrawalRequestsRoot, err := wrs.HashTreeRoot() if err != nil { return phase0.Root{}, err } - return withdrawRequestsRoot, nil + return withdrawalRequestsRoot, nil } // ComputeBlockHash computes the block hash for a given execution payload. @@ -471,34 +471,34 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par baseFeePerGas := payload.BaseFeePerGas.ToBig() withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) depositReceiptsHash := deriveDepositReceiptsHash(payload.DepositReceipts) - withdrawRequestsHash := deriveWithdrawRequestsHash(payload.WithdrawRequests) + withdrawalRequestsHash := deriveWithdrawalRequestsHash(payload.WithdrawalRequests) var beaconRootHash *common.Hash if parentBeaconRoot != nil { root := common.Hash(*parentBeaconRoot) beaconRootHash = &root } return &types.Header{ - ParentHash: common.Hash(payload.ParentHash), - UncleHash: types.EmptyUncleHash, - Coinbase: common.Address(payload.FeeRecipient), - Root: common.Hash(payload.StateRoot), - TxHash: transactionHash, - ReceiptHash: common.Hash(payload.ReceiptsRoot), - Bloom: payload.LogsBloom, - Difficulty: common.Big0, - Number: new(big.Int).SetUint64(payload.BlockNumber), - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Time: payload.Timestamp, - Extra: payload.ExtraData, - MixDigest: payload.PrevRandao, - BaseFee: baseFeePerGas, - WithdrawalsHash: &withdrawalsHash, - BlobGasUsed: &payload.BlobGasUsed, - ExcessBlobGas: &payload.ExcessBlobGas, - ParentBeaconRoot: beaconRootHash, - DepositReceiptsHash: &depositReceiptsHash, - WithdrawRequestsHash: &withdrawRequestsHash, + ParentHash: common.Hash(payload.ParentHash), + UncleHash: types.EmptyUncleHash, + Coinbase: common.Address(payload.FeeRecipient), + Root: common.Hash(payload.StateRoot), + TxHash: transactionHash, + ReceiptHash: common.Hash(payload.ReceiptsRoot), + Bloom: payload.LogsBloom, + Difficulty: common.Big0, + Number: new(big.Int).SetUint64(payload.BlockNumber), + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Time: payload.Timestamp, + Extra: payload.ExtraData, + MixDigest: payload.PrevRandao, + BaseFee: baseFeePerGas, + WithdrawalsHash: &withdrawalsHash, + BlobGasUsed: &payload.BlobGasUsed, + ExcessBlobGas: &payload.ExcessBlobGas, + ParentBeaconRoot: beaconRootHash, + DepositReceiptsHash: &depositReceiptsHash, + WithdrawalRequestsHash: &withdrawalRequestsHash, }, nil } @@ -542,16 +542,16 @@ func deriveDepositReceiptsHash(depositReceipts []*electra.DepositReceipt) common return types.DeriveSha(types.DepositReceipts(depositReceiptsData), trie.NewStackTrie(nil)) } -func deriveWithdrawRequestsHash(withdrawRequests []*electra.ExecutionLayerWithdrawRequest) common.Hash { - withdrawRequestsData := make([]*types.WithdrawRequest, len(withdrawRequests)) - for i, e := range withdrawRequests { - withdrawRequestsData[i] = &types.WithdrawRequest{ +func deriveWithdrawalRequestsHash(withdrawalRequests []*electra.ExecutionLayerWithdrawalRequest) common.Hash { + withdrawalRequestsData := make([]*types.WithdrawalRequest, len(withdrawalRequests)) + for i, e := range withdrawalRequests { + withdrawalRequestsData[i] = &types.WithdrawalRequest{ SourceAddress: common.Address(e.SourceAddress), ValidatorPubkey: e.ValidatorPubkey, Amount: uint64(e.Amount), } } - return types.DeriveSha(types.WithdrawRequests(withdrawRequestsData), trie.NewStackTrie(nil)) + return types.DeriveSha(types.WithdrawalRequests(withdrawalRequestsData), trie.NewStackTrie(nil)) } func deriveBaseFeePerGas(baseFeePerGas [32]byte) *big.Int { From 18bbcc17d06682f61eadeaf65b81f341dfe1dc4c Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 29 Apr 2024 15:39:44 -0500 Subject: [PATCH 07/32] Run go mod tidy --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 4276f52..eed7c8a 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/goccy/go-yaml v1.11.2 // indirect + github.com/goccy/go-yaml v1.11.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect @@ -60,7 +60,7 @@ require ( github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.10.1 // indirect - github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 // indirect + github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -68,10 +68,10 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect - golang.org/x/crypto v0.21.0 // indirect + golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.18.0 // indirect + golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/protobuf v1.33.0 // indirect diff --git a/go.sum b/go.sum index e4072cc..c2f2dcf 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/j github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/goccy/go-yaml v1.11.2 h1:joq77SxuyIs9zzxEjgyLBugMQ9NEgTWxXfz2wVqwAaQ= -github.com/goccy/go-yaml v1.11.2/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= +github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I= +github.com/goccy/go-yaml v1.11.3/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -157,8 +157,8 @@ github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= -github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 h1:0tVE4tdWQK9ZpYygoV7+vS6QkDvQVySboMVEIxBJmXw= -github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= +github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e h1:ATgOe+abbzfx9kCPeXIW4fiWyDdxlwHw07j8UGhdTd4= +github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -185,8 +185,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -224,8 +224,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From ab03b64ed99c0fb491be800d45d2644caa299b40 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 29 Apr 2024 15:41:44 -0500 Subject: [PATCH 08/32] Remove toolchain from go.mod --- go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.mod b/go.mod index eed7c8a..7517e9b 100644 --- a/go.mod +++ b/go.mod @@ -2,8 +2,6 @@ module github.com/flashbots/go-boost-utils go 1.21 -toolchain go1.21.5 - require ( github.com/attestantio/go-builder-client v0.4.2 github.com/attestantio/go-eth2-client v0.21.1 From ee2810094e5100289e5bbc4e287fc28eba17c1b0 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 08:27:35 -0500 Subject: [PATCH 09/32] Use lightclient's fork of geth --- go.mod | 16 +++------ go.sum | 16 ++++++--- utils/utils.go | 81 ++++++++++++++++++++++----------------------- utils/utils_test.go | 21 ------------ 4 files changed, 56 insertions(+), 78 deletions(-) diff --git a/go.mod b/go.mod index 7517e9b..d3d7b93 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/flashbots/go-boost-utils go 1.21 require ( - github.com/attestantio/go-builder-client v0.4.2 - github.com/attestantio/go-eth2-client v0.21.1 + github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 + github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.13.14 github.com/stretchr/testify v1.8.4 @@ -68,7 +68,7 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/sync v0.5.0 // indirect + golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect @@ -78,11 +78,5 @@ require ( rsc.io/tmplfunc v0.0.3 // indirect ) -// git clone git@github.com:jtraglia/go-eth2-client.git -b electra -replace github.com/attestantio/go-eth2-client => ../../jtraglia/go-eth2-client - -// git clone git@github.com:jtraglia/go-builder-client.git -b electra -replace github.com/attestantio/go-builder-client => ../../jtraglia/go-builder-client - -// git clone git@github.com:jtraglia/go-ethereum.git -b electra -replace github.com/ethereum/go-ethereum => ../../jtraglia/go-ethereum +// This version points to Lightclient's prague-devnet-0 branch. +replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 diff --git a/go.sum b/go.sum index c2f2dcf..57b2d0b 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,10 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= +github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= +github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 h1:gwMEOhFdbmCJy5olyRtGPmM4RoIXo6v2HkbKt7YpPr4= +github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16/go.mod h1:Ht9tN0WlhpgIWWO7Hqfi3/nq2rUGQv/zCd/BMI93a84= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= @@ -90,6 +94,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= @@ -114,6 +120,8 @@ github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 h1:srEOH43WDUtXLofgCmo3LOGUEfoVpe76/ho1qt7RmPs= +github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -198,15 +206,15 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/utils/utils.go b/utils/utils.go index 726dd3e..3fab817 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -470,35 +470,33 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par } baseFeePerGas := payload.BaseFeePerGas.ToBig() withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) - depositReceiptsHash := deriveDepositReceiptsHash(payload.DepositReceipts) - withdrawalRequestsHash := deriveWithdrawalRequestsHash(payload.WithdrawalRequests) + requestsHash := deriveRequestsHash(payload.DepositReceipts, payload.WithdrawalRequests) var beaconRootHash *common.Hash if parentBeaconRoot != nil { root := common.Hash(*parentBeaconRoot) beaconRootHash = &root } return &types.Header{ - ParentHash: common.Hash(payload.ParentHash), - UncleHash: types.EmptyUncleHash, - Coinbase: common.Address(payload.FeeRecipient), - Root: common.Hash(payload.StateRoot), - TxHash: transactionHash, - ReceiptHash: common.Hash(payload.ReceiptsRoot), - Bloom: payload.LogsBloom, - Difficulty: common.Big0, - Number: new(big.Int).SetUint64(payload.BlockNumber), - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Time: payload.Timestamp, - Extra: payload.ExtraData, - MixDigest: payload.PrevRandao, - BaseFee: baseFeePerGas, - WithdrawalsHash: &withdrawalsHash, - BlobGasUsed: &payload.BlobGasUsed, - ExcessBlobGas: &payload.ExcessBlobGas, - ParentBeaconRoot: beaconRootHash, - DepositReceiptsHash: &depositReceiptsHash, - WithdrawalRequestsHash: &withdrawalRequestsHash, + ParentHash: common.Hash(payload.ParentHash), + UncleHash: types.EmptyUncleHash, + Coinbase: common.Address(payload.FeeRecipient), + Root: common.Hash(payload.StateRoot), + TxHash: transactionHash, + ReceiptHash: common.Hash(payload.ReceiptsRoot), + Bloom: payload.LogsBloom, + Difficulty: common.Big0, + Number: new(big.Int).SetUint64(payload.BlockNumber), + GasLimit: payload.GasLimit, + GasUsed: payload.GasUsed, + Time: payload.Timestamp, + Extra: payload.ExtraData, + MixDigest: payload.PrevRandao, + BaseFee: baseFeePerGas, + WithdrawalsHash: &withdrawalsHash, + BlobGasUsed: &payload.BlobGasUsed, + ExcessBlobGas: &payload.ExcessBlobGas, + ParentBeaconRoot: beaconRootHash, + RequestsHash: &requestsHash, }, nil } @@ -528,30 +526,29 @@ func deriveWithdrawalsHash(withdrawals []*capella.Withdrawal) common.Hash { return types.DeriveSha(types.Withdrawals(withdrawalData), trie.NewStackTrie(nil)) } -func deriveDepositReceiptsHash(depositReceipts []*electra.DepositReceipt) common.Hash { - depositReceiptsData := make([]*types.DepositReceipt, len(depositReceipts)) - for i, d := range depositReceipts { - depositReceiptsData[i] = &types.DepositReceipt{ - Pubkey: d.Pubkey, - WithdrawalCredentials: [32]byte(d.WithdrawalCredentials), - Amount: uint64(d.Amount), - Signature: d.Signature, - Index: d.Index, +func deriveRequestsHash(depositRequests []*electra.DepositReceipt, withdrawalRequests []*electra.ExecutionLayerWithdrawalRequest) common.Hash { + deposits := make(types.Deposits, len(depositRequests)) + for i, e := range depositRequests { + deposits[i] = &types.Deposit{ + PublicKey: types.BLSPublicKey(e.Pubkey), + WithdrawalCredentials: common.Hash(e.WithdrawalCredentials), + Amount: uint64(e.Amount), + Signature: types.BLSSignature(e.Signature), + Index: e.Index, } } - return types.DeriveSha(types.DepositReceipts(depositReceiptsData), trie.NewStackTrie(nil)) -} - -func deriveWithdrawalRequestsHash(withdrawalRequests []*electra.ExecutionLayerWithdrawalRequest) common.Hash { - withdrawalRequestsData := make([]*types.WithdrawalRequest, len(withdrawalRequests)) + withdrawals := make(types.WithdrawalRequests, len(withdrawalRequests)) for i, e := range withdrawalRequests { - withdrawalRequestsData[i] = &types.WithdrawalRequest{ - SourceAddress: common.Address(e.SourceAddress), - ValidatorPubkey: e.ValidatorPubkey, - Amount: uint64(e.Amount), + withdrawals[i] = &types.WithdrawalRequest{ + Source: common.Address(e.SourceAddress), + PublicKey: types.BLSPublicKey(e.ValidatorPubkey), + Amount: uint64(e.Amount), } } - return types.DeriveSha(types.WithdrawalRequests(withdrawalRequestsData), trie.NewStackTrie(nil)) + + requests := deposits.Requests() + requests = append(requests, withdrawals.Requests()...) + return types.DeriveSha(requests, trie.NewStackTrie(nil)) } func deriveBaseFeePerGas(baseFeePerGas [32]byte) *big.Int { diff --git a/utils/utils_test.go b/utils/utils_test.go index f2f91a2..43bc52a 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -9,7 +9,6 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/stretchr/testify/require" ) @@ -175,26 +174,6 @@ func TestComputeHash(t *testing.T) { require.Equal(t, "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", hash.String()) }) - /* TODO(electra): update with real electra execution payload & known hash */ - t.Run("Should compute electra hash", func(t *testing.T) { - jsonFile, err := os.Open("../testdata/executionpayload/electra-case0.json") - require.NoError(t, err) - defer jsonFile.Close() - - payload := new(electra.ExecutionPayload) - require.NoError(t, DecodeJSON(jsonFile, payload)) - versionedPayload := &api.VersionedExecutionPayload{ - Version: spec.DataVersionElectra, - Electra: payload, - } - h, _ := HexToHash("0xa119064ee9c03e2c7ad5821b6077606c64f36542eda12ed61a1edc5f898a17fc") - r := phase0.Root(h) - hash, err := ComputeBlockHash(versionedPayload, &r) - require.NoError(t, err) - /* TODO(electra): not actually sure this is the right hash */ - require.Equal(t, "0x500991c7bb744af42002f9883f456f0b308abc07f74c18901aaf2dde352f59f2", hash.String()) - }) - t.Run("Should error on unknown version", func(t *testing.T) { payload := new(capella.ExecutionPayload) versionedPayload := &api.VersionedExecutionPayload{ From 46547fbf8bd8667b00803797ce8f378b96f685d7 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 09:04:03 -0500 Subject: [PATCH 10/32] Maybe fix linter issues --- go.mod | 1 + utils/utils.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/go.mod b/go.mod index d3d7b93..dc246b1 100644 --- a/go.mod +++ b/go.mod @@ -79,4 +79,5 @@ require ( ) // This version points to Lightclient's prague-devnet-0 branch. +//nolint:gomoddirectives replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 diff --git a/utils/utils.go b/utils/utils.go index 3fab817..e198d39 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -105,6 +105,8 @@ func DecodeJSON(r io.Reader, dst any) error { } // PayloadToPayloadHeader converts an ExecutionPayload to ExecutionPayloadHeader +// +// nolint:cyclop func PayloadToPayloadHeader(payload *api.VersionedExecutionPayload) (*api.VersionedExecutionPayloadHeader, error) { if payload == nil { return nil, ErrNilPayload @@ -341,6 +343,8 @@ func deriveWithdrawalRequestsRoot(withdrawalRequests []*electra.ExecutionLayerWi } // ComputeBlockHash computes the block hash for a given execution payload. +// +// nolint:cyclop func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot *phase0.Root) (phase0.Hash32, error) { switch payload.Version { case spec.DataVersionBellatrix: From 1050f25266002472999aaf887ce368ae44402f75 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 09:07:22 -0500 Subject: [PATCH 11/32] Remove space between // and nolint --- utils/utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index e198d39..f10e5cb 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -106,7 +106,7 @@ func DecodeJSON(r io.Reader, dst any) error { // PayloadToPayloadHeader converts an ExecutionPayload to ExecutionPayloadHeader // -// nolint:cyclop +//nolint:cyclop func PayloadToPayloadHeader(payload *api.VersionedExecutionPayload) (*api.VersionedExecutionPayloadHeader, error) { if payload == nil { return nil, ErrNilPayload @@ -344,7 +344,7 @@ func deriveWithdrawalRequestsRoot(withdrawalRequests []*electra.ExecutionLayerWi // ComputeBlockHash computes the block hash for a given execution payload. // -// nolint:cyclop +//nolint:cyclop func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot *phase0.Root) (phase0.Hash32, error) { switch payload.Version { case spec.DataVersionBellatrix: From 8dca70cca7ec22bea16c0e19884a05d0a190517e Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 09:14:15 -0500 Subject: [PATCH 12/32] Update replace-allow-list --- .golangci.yaml | 3 +++ go.mod | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.golangci.yaml b/.golangci.yaml index 291bd88..0e55a66 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -49,3 +49,6 @@ linters-settings: json: snake gofumpt: extra-rules: true + gomoddirectives: + replace-allow-list: + - github.com/ethereum/go-ethereum diff --git a/go.mod b/go.mod index dc246b1..d3d7b93 100644 --- a/go.mod +++ b/go.mod @@ -79,5 +79,4 @@ require ( ) // This version points to Lightclient's prague-devnet-0 branch. -//nolint:gomoddirectives replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 From 8f90a5df81b8c6f5d94202520f96a161855da744 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Thu, 9 May 2024 14:08:18 -0500 Subject: [PATCH 13/32] Remove fake electra-case0.json --- testdata/executionpayload/electra-case0.json | 255 ------------------- 1 file changed, 255 deletions(-) delete mode 100644 testdata/executionpayload/electra-case0.json diff --git a/testdata/executionpayload/electra-case0.json b/testdata/executionpayload/electra-case0.json deleted file mode 100644 index 9668ede..0000000 --- a/testdata/executionpayload/electra-case0.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "parent_hash": "0xc2209759cf577fc467798ba2fc686b2b66570d1fe717ca0e012afb7cb27da452", - "fee_recipient": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "state_root": "0xf70701c309633bb1bd26bad3d39a8114270911adee83f04919aa3bbb4a078cb2", - "receipts_root": "0x592c3cfac2ec01e970de0459f6789d532468a15c7facd880c71af056e59f8490", - "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "prev_randao": "0xac912dabb21238750ff741f21bc2f91e42751e9834fff9c138d6ac6bebb0e637", - "block_number": "297164", - "gas_limit": "30000000", - "gas_used": "2142000", - "timestamp": "1704997008", - "extra_data": "0xd883010d09846765746888676f312e32312e36856c696e7578", - "base_fee_per_gas": "7", - "block_hash": "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", - "transactions": [ - "0xf87283b2ca0f8477359407825208946177843db3138ae69679a54b95cf345ed759450d870e35fa931a000080850343e1feb0a0232f671cda17e58ee3e6a4bcc22e42595bd158e5ee8ebd6ecf19cbc5b6e4002ba063d962968cd08a134d6da2adea6f99502c3ac0779a10b25beae8c46d7fc85d02", - "0xf87283b2ca10847735940782520894687704db07e902e9a8b3754031d168d46e3d586e870e35fa931a000080850343e1feafa0c5e5914d867866d1273d46b579716468e786d4c80aca426faffdc364b413a98ba069c4bf7e84f637f0d0ee1dd2f829b36e88903594d23c94057fe013d1e8b350fd", - "0xf87283b2ca1184773594078252089415e6a5a2e131dd5467fa1ff3acd104f45ee5940b870e35fa931a000080850343e1feafa0c955abbd72f47cc67c217b89272e8d497042afed0d29b005c36774d76ab80dfaa04dd80f4235cd12899d9d5d66d88bd34b707aa3587d7dfde57d975a04ddcf512a", - "0xf87283b2ca1284773594078252089480c4c7125967139acaa931ee984a9db4100e0f3b870e35fa931a000080850343e1feafa0ee0a0d1a7b937dbd624b182697cd4b484127962367be1a4d900e7740ee078015a0534e89aa85da711f9003e7fffd1d2589964c16a74696afe8cb341c501995206c", - "0xf87283b2ca13847735940782520894d08a63244fcd28b0aec5075052cdce31ba04fead870e35fa931a000080850343e1feafa070a70e108545db07da5366e9bce96e9b2b798ae6b61010b317a67b912c33f655a02ce9b1ebda0ecd9a8e783a252f54e3f3de6696fba2e9fc790c9214db7459be8d", - "0xf87283b2ca148477359407825208940b06ef8be65fcda88f2dbae5813480f997ee8e35870e35fa931a000080850343e1feafa09c7c9f770758e04a772b82c6a9c8ed43cffba066327a01d2623d6578efba59caa017961cce26d31441091599d6e473c1813b0b1bf0ca76344cbc32cb1e7ba5ceb0", - "0xf87283b2ca158477359407825208941cb96c5809da5977f99f69c11ee58bae5711c5f1870e35fa931a000080850343e1feafa055cbf0ac7924fb36ddf37b083c0f0e3136fe862e40448f6f012190ace6453594a06b7e68ffc18ebc6cf3c9f22d767295c34ef25895fd3da939cd33908d2a432b4e", - "0xf87283b2ca168477359407825208942aa48ee899410a6d97c01b0bb0eeaf1771cc435b870e35fa931a000080850343e1feb0a002becdde6f3a450322c19de954654f3243943a49ba27255ad78bd46ffdc4f4a7a050a0e0edeaf11a4faed0799bf535d59651fda773d2092b266495fe4a06256c29", - "0xf87283b2ca1784773594078252089407b9d920dd8e8d83dc1125c94fc0b3cdcdf602fb870e35fa931a000080850343e1feb0a0720ff20485bbd392745bcf0a2d03cd0634278976b44a79a4b87d84f582e916cba0797e26992c2c8b0c7c18ba8fa650d1e9191087066b644c0c6d4f413bb9646ed9", - "0xf87283b2ca18847735940782520894fcb6e353ad4f79245c7cb704abcffe2f48684241870e35fa931a000080850343e1feafa0f34fd6a78e783da2ae1b44cd55f139ccb0173ea0e7167abcf6415cd7be6c81baa00598881b2deb805568720cd788f0fb4a5c9af23beccf420a2579f96efc310bd0", - "0xf87283b2ca198477359407825208940d3de4256d6322683fdea9ee23765ccbfcb83da4870e35fa931a000080850343e1feafa0fc096a77fa2fe301f3a14f34138592a2e66cee93087663186eba3781dac38858a0359d767d079cff952fef59fddbea5c67ac5376d5002bdc05b6d055f8eb774ccd", - "0xf87283b2ca1a8477359407825208946021752d8d9b2f221d4fea4349dea34ddbcfce50870e35fa931a000080850343e1feb0a0a3f4d571334ccc23448af71e9c1abb32c3d88cf2e529fc79c1a034d335d82908a007ef42156c784a198f34385e1e0d0756f6cd53fbf27fcb9854855ef4913b60e6", - "0xf87283b2ca1b84773594078252089461e296d527edc89e831cf593ec341f16197eeafb870e35fa931a000080850343e1feafa0520d8cfd1db39a7d3b243ba9d62db793838b168118230c96999b91dfbac6045da0783852f06a27b42fbdb7188813fedfe223774d259c1587c1940137d28d234407", - "0xf87283b2ca1c847735940782520894cf7317ee7a3b497ecf634b94bff60ff91b925747870e35fa931a000080850343e1feb0a019b02287fad94f6aeca7489a8123e4bcf9ab70f5388926e80e98a0216f512f5ca0125160a3fd03d61d93b7db3c773d71f4e1dc00ccc1f1266666beef2cfc01d558", - "0xf87283b2ca1d8477359407825208947e7b519df31f77ced83eea1b16aedb6dcb0f0b24870e35fa931a000080850343e1feb0a0a532259c3e2f94983cef203ebf45ef790d2c534cfe319f9d67efa89d5959ac3aa0410923dface7953f5679eb67f19bff37dbc8357c0887f89051d7be7adfe11812", - "0xf87283b2ca1e84773594078252089488a075e0fb1c9309a200a8bf0a88b214bf7ceb8d870e35fa931a000080850343e1feafa0be569c9e097589df0647ad61d0bc9cb9de1ea358718877e05883a0404fed32b9a02821efb1766a325c08417f5a186797776325a1e666cd3e386b89d284e210a5ac", - "0xf87283b2ca1f847735940782520894c8d7cfb58f3ac02568e6505bf3fb5eb6f0807039870e35fa931a000080850343e1feb0a03f52fd1f9d38d20a618f4d896a9dce54dda51ccce1558df625ac19e9c05a0faba02de2de155588a35a527370c5d9ac33d1195e670bced9133bfc263cce3a3f50e3", - "0xf87283b2ca20847735940782520894e0132e8d7b1b766e0ade5543d6c6c0b2d5a2f01d870e35fa931a000080850343e1feb0a084fb4f3725298a31db9fc4b2dfd953dbda3a97eb3a92365a69ec1230b4a75227a023b6d656447cc12759d47101c9103dd73bfaf65b203724b74345378c258fd221", - "0xf87283b2ca21847735940782520894eb674c0411db79654afdc1e131f3b6e734baee6c870e35fa931a000080850343e1feafa0bf15d38f7e79e0960c36ca74af4e1bbd8772a62255ee19276eb18e41ee70a34ea07c50fbe6802a3d60aa84e89c805ef7816a83cec793fbd9bf7e3ab1ac662ba02f", - "0xf87283b2ca22847735940782520894dc07c60993cf689438b8c85f86b0ed938dca77ea870e35fa931a000080850343e1feb0a01b9c81df7d9134acc80f5cf2e692968567b03e289b1f4df2c624062cfc2df9dca04b9e21222c3d4ed50ab082c0dae22a7cf9efd24543df952616f2cf503d414293", - "0xf87283b2ca23847735940782520894110ddc93db59ed31a03518510221ec2f35d28f2f870e35fa931a000080850343e1feb0a07f8ef8175043b631fedd9d72de45e96a693b778f73573f30b60b03fc6f8cb365a06608f3a89d7baf0e39b8e7813611282c0bd1de80c9fdb7c940b4be15db6b8e99", - "0xf87283b2ca24847735940782520894b599a876aaac824cfce21bdf15627c9fd8634c30870e35fa931a000080850343e1feb0a07edb8421bd20f16e534f6c29b76ba38afe29433f0c70de4ffeeea040009d0b5ca0483a80c5b85b48c721c1bc9662e966408cbc3844bfb40e6d839151c1dea3e54a", - "0xf87283b2ca25847735940782520894d36e5540dd71acbd6416d60252c4d7c34a3c8245870e35fa931a000080850343e1feafa0f78ac8bf770b81b2942ece8bbf94bcfb660c406bcdece24e5e5441bc8e81996aa0383441f7a3f938ebe2757974d594105781e9b3d215da60e4c2b224342840e224", - "0xf87283b2ca268477359407825208943adeca35af56206a74987a8fe13c669365c770cf870e35fa931a000080850343e1feb0a069d54c6d92b31245eeaab0cbdc3c0010dbc5f9ae9b94eee9a929f1ba606d9825a0596a765de29b8423c5b0645942482bf6b140d55ee32b85b1b25d08a665eb9068", - "0xf87183b2ca27847735940782520894d77b95acd12f7b4b5692b55717b7bbca11651954870e35fa931a000080850343e1feaf9fac6d65c95332569e9f9c64eb6b0721d7017d66dbf645227d57db01aba2903aa07ba9d73969e8cbd1bbb4907b0139a7d1967a130aa0b9d755988f7ee395c76f4a", - "0xf87283b2ca28847735940782520894f388bf5766b5ed5d4e1cbf15772e677dbfa80b00870e35fa931a000080850343e1feb0a0f641653544d7ecdef834e47d6b75c2864d1083c7f2410286d02ab50232c79ae9a0304f16db7e99d956da655f615b1b55a16b07b6f4abb49cec967e1f9a31d799a7", - "0xf87283b2ca2984773594078252089435d4996296e58560e6ef47787d51b55f1e2bd92a870e35fa931a000080850343e1feafa0b5501a2f3d9591fdad84883d3f7b1f863765f7c5cd1105812bcd925da581f999a052201608e0e780ef773cdd52722e00abb75bf62ed819dbe467905f1ecc34e69d", - "0xf87283b2ca2a847735940782520894a4c3b77b898e53d6095f11c53a1ce272cff9af31870e35fa931a000080850343e1feafa0c8522a33db78a306e1ba08e3d02d58644de3c057f02d4b09f8d71d5cd30924d3a05d639a640f163b13f5fda66a116ba6653dab2769fea6cf627d4f43506c7d6bdb", - "0xf87283b2ca2b8477359407825208946e84f6113fc1919714f0266705813fb81a17181f870e35fa931a000080850343e1feb0a03d7d83fe6c67520c038b7ab5e54e323b71238ead8d23be5d8ae3d2806176e412a05ab8c4a341fd1ff343b045d491ff58a02ec222866f762e2d753c7142678a345a", - "0xf87183b2ca2c847735940782520894e9ae1a806004e1452baae0493920815aadd84798870e35fa931a000080850343e1feb0a0bae01fbd421b4867be2703267d54589135e2befb91a85f4e60652084137f4e739fb11761069bf01930f2dc102a23f7c767d5cb463283c92c3236662a4be58b47", - "0xf87283b2ca2d847735940782520894fe1905d8ebd20e037274eef441283c811ea82c16870e35fa931a000080850343e1feafa039c42f2963bf66deca076d981a9851fc932d445f0528c70d544a3e5a3077b86ea0326ee1251bb86cc43aabe95653e6d188641e6f229d5e3abff8407dbb579b535a", - "0xf87283b2ca2e8477359407825208946adece88e477f53a143a4c29d97940df2ec768e0870e35fa931a000080850343e1feb0a018ae4840d3c615c217bb83a44cbc508209ea7fbf93f90302d6e5831847423e8da058ba46567d6d2051dbe2f936ad0ce69c682f0f9e3d5bf0d310cb7bf6819a71cf", - "0xf87283b2ca2f8477359407825208940d34d140a7376892c4593fcea3ae26f5d6f202d7870e35fa931a000080850343e1feafa07b923f2c17a76f1d22da7c562edcc008738c45570430e552e9c231572c3abbd2a0582cb8258df9f2688860892339e4bbd9742403853aeec78db0dee5a1d94af8b6", - "0xf87283b2ca30847735940782520894d1c7fa75b9bc55d041fcdf215f3e3a351c9f9edc870e35fa931a000080850343e1feb0a0781db8b5130b5ca1b60a0f4c62a402774d3e108e64e26aab31667537e345684fa046d10c31efaf6e6c4bb87a8a790bb5981760aa6e4da557b65d2c6b7d54a05351", - "0xf87283b2ca31847735940782520894418ebe350a8c6387bf5e42f3502742af8e0781f1870e35fa931a000080850343e1feb0a0d455c6bf7482003643ed2165fafdd3102b9fc95c838646c9ab05e4f997eb7500a05898d44175872173d320e0c1b8cbd79a23b0fbb4c6a6be3ad6f7922842703f10", - "0xf87283b2ca3284773594078252089484914d2770c711d27888c775c547b1d933b48c47870e35fa931a000080850343e1feb0a0bcf8de651d81fbfcd4d368173d74ba18c00ffe736abd9d08227efdb781bd9e79a060619e34c1d4f3451f988ec2b26c73b7998b13c22bb1a44dfcb29ea3e60e415c", - "0xf87283b2ca338477359407825208948f51e560b85edf2e653c689c4e9fac02ce0556b8870e35fa931a000080850343e1feafa0dec3a0ec938c81a3c352bd2f24e4385a5db10294975b00ea5084cfc1227de714a0518d2e5113cdea9cf38ed730995460dd8c27d530e50331579026ad647720704b", - "0xf87283b2ca34847735940782520894ee2503205c24dc66346e356f13f333fb8782d358870e35fa931a000080850343e1feafa01a777ef51abf54680c8e458a85f5272bc56a32049e7fb1b3f8c03d8c24bb8ef6a02607c211e587680030456b34c93a3dc9f337e7d72ba8cc4ef18f9efef823a793", - "0xf87283b2ca35847735940782520894096ba6c59bd667a0fea9a356bcc988e4d9f2d8eb870e35fa931a000080850343e1feafa01128eeb14e0284b587284ef9b6abc408414f271d9104f20b7f06df4e57b869c2a05f713934d3e343f12a345caa3e90f3e5fc66c5914cddabe120cce8a6e93eb4a7", - "0xf87283b2ca36847735940782520894da0adce4f1dc7debe7b2b52e8fe9ace6c7ea9c66870e35fa931a000080850343e1feafa0cd891d5f4085cf36554d2e3da56af2fcc6926af19c1730e5b0afb62369c0a11ea03c9fe6fa610de7047d066bdeb672cbd2914ccf191351af843c9c091e14e9f770", - "0xf87283b2ca37847735940782520894af7d412aeab7525c0541dc3aa6c1085cfb8c9099870e35fa931a000080850343e1feafa0e0ccc70c1ca5e04c94f1234850eddb05b085e1e01c4bd7c97ebb4863bda6b763a029bd2de58dffa4796119e6195ead233f275cc4ca4fc050bd1325900da650933e", - "0xf87283b2ca388477359407825208943cf8c0d567261eaf4ac0872d33a9f48af361769f870e35fa931a000080850343e1feb0a07af283307e8d1bf27baafbacf94196e55e047101052ac573e5fcc87e7eb6e2cea06f2b5b7a0bb6ebc78eadfed2b3c149e482759d7371959b75115f1f4db00e1fb7", - "0xf87283b2ca398477359407825208944779242587ba9e828999249eadd82984430f4843870e35fa931a000080850343e1feafa01214e6f99a7571b3e7ab860f162389fcc42a5cfd7ddfa52a2561339428c98074a03358448c69fbb0aacc21d69ea32c90efd3d23a51037a4268cc015eadf1bde318", - "0xf87283b2ca3a847735940782520894ea531cfe2de357ecff3855b88dbd07f60b03cdca870e35fa931a000080850343e1feb0a054f3fcdc61bcdb829789113e529a1c5d30c92b2316263c563d61c0e441190856a065f1a017a33f86fde74cca0b58c32b5a740cac2db10b1a8a340d24f4a79d8bd8", - "0xf87283b2ca3b847735940782520894d00b5f53ea2a66ad33c3fee304bb22857dfb8a87870e35fa931a000080850343e1feb0a073309bd39bcde633947c863113cd66959d849113c1c40326c4fd779e980ba868a0345025d2863c04212fd6d949e18b2456e2e732c74eb20da251863e241fbff1d7", - "0xf87283b2ca3c8477359407825208947ead29f6616f78f21a951c9686dd257be7b8efe4870e35fa931a000080850343e1feafa08ca2d7c5678210e30a304e650131dd19b2a9bce96979c1a548d78cb5e74dd851a05c3077cba3c44d8cd94c0b45f44eecc9d55ae4ec3d50663fd5623fcf24045bb9", - "0xf87283b2ca3d847735940782520894d503c13ee55c1ea128357d4018ec58d0d5e5c3db870e35fa931a000080850343e1feb0a068bdf5f3c8b9777e84ca44fc1ad973d25c876d43fbd0c49051bedb80372940eea00ed7951529740e7dcd348698c9c7fec08062f72b43f55e5fa46ffda1d4eeb6d1", - "0xf87283b2ca3e8477359407825208944ac670d8760faf780468638ef80034876ed8918d870e35fa931a000080850343e1feb0a043549d94f55bd35e7adf97af4c8f5032c510d9ee23aab159bd5f678627f6e8c7a02759974379335b215c72dcdebb2613d60b9355be0d2878792c3f7f979170963d", - "0xf87283b2ca3f84773594078252089424ffb8c97ce443f8d3265ba3316defcfc07c659c870e35fa931a000080850343e1feafa0f91a15f02f15dabc13f35460cd888caf70b56a373de0e796e00e870a1fe57ab5a024f0e6d0ebe5b0e4f67d65095a263320055ca23e711f6030dc5f47182458b4c6", - "0xf87283b2ca408477359407825208940c5cafc547ab98c9ceaa1c07fdd6bf7820aeb954870e35fa931a000080850343e1feafa0716afd885054db1ea6c6e6defbe66fb62ddc8fe993e8a6014104e252922e77d5a00f4818bab49844de73fe28887ec8881c6dd462924a8cb68ec30f819afdb2b487", - "0xf87283b2ca41847735940782520894db8d964741c53e55df9c2d4e9414c6c96482874e870e35fa931a000080850343e1feafa033b647be0c59bbaed1bb0f995007f86a7b650ad32ff5ae421e78a23624d4548aa044321613820305ab64ecbadaab1562f9dbd78ecfe9f366f3729d1c5b461b8a9f", - "0xf87283b2ca42847735940782520894ba85bb35ae6ff7a34745993fcf92b9afd34124f1870e35fa931a000080850343e1feafa0c3c3271016649caaac7df0e9a2543badc0ff1c5b9d9d8d6dd70faec8b450890ca005960b5204a2329f8d274cf7e457b095bc371d3851809fa651ce9c02063e2100", - "0xf87283b2ca4384773594078252089458871015f5a2d3948264f7c16ad194c80ffd531d870e35fa931a000080850343e1feafa062bc239f09834b88fc6c3ec9568b2a17dbb95f1750ce5da64d6ba2320aae6376a044367552953846b53137586f6183a15e86eebee779237d28e654c35cffbc952e", - "0xf87283b2ca448477359407825208942a90af45df70b0031f218cc122598ddf3e10469f870e35fa931a000080850343e1feafa05a42a11507d7a5562f0f59695da017cb9cc71c57c9c8aa1482189e989f1524a1a02c91dc11d04a6eea954accfdc785633c92ec18a964577f57e03a452c4f0a89db", - "0xf87283b2ca45847735940782520894761bbaaea6ceb265f5262c3b559adc2ad3ed2f09870e35fa931a000080850343e1feafa039d29e4590b51ff8cfec9d0e5f184c756e18d7607377cd117e454e81587ed888a04d5308a90dd4f5725caf97df20f60d6c838d32243e1ecd214ae7dc0b9e508b9c", - "0xf87283b2ca46847735940782520894dfe86f51c5e603f1420d1f0ab366bd3bfe23d2a7870e35fa931a000080850343e1feb0a04392ac4309de3f1de55af346511f8ec72767e0ca42b9a6a2e5e73725a3aa3b0ca0144158ec8215d503eb295a177f28e24586d1b0230330499fda0bf71df7b9c07f", - "0xf87283b2ca47847735940782520894d616547158b05ab5079106dc0336d72763a72871870e35fa931a000080850343e1feb0a0a7d58d7a5562ac985fb9bd3b1345be2cc82f91896ba0f56deb755945127c1093a00c973033cb96bdb63e065151a88f21a9ddb1b5aac28da09f0b6cb40b69b5beb0", - "0xf87283b2ca48847735940782520894dc68cd278cb7f5f666ce7b0a3a214a8540ed4dfa870e35fa931a000080850343e1feafa0ce9d683746ae919212073b51be72b5677274d7a5fffc75bbd38adb2a4bdb3cd8a06d33c96bcda7828f9a6bab6069ebbe9b591717b92eaf9b6d8a532043c78013e6", - "0xf87283b2ca4984773594078252089411f8107da05b6905e8cc0227ca3b0c6eb764fac0870e35fa931a000080850343e1feafa08b342274bbff60e2d3a2f580ac22a6f580a6e46cac0ae193af985c8321d77413a017390dd6aa0c2f3783592bb05f8c0e2d165fdb6e4519cd720e8d408ffdb8213b", - "0xf87283b2ca4a84773594078252089404da906545679850a7ee0ef6836e183031bedc88870e35fa931a000080850343e1feafa013ef4954ad7866e0d34d526acadcd276bc1d99b4a1402bf9d79eb5bc74211336a06d38c764c38e3a4f920a23e92b6b88cec93284788c95ecb4a52cf46d336b3b71", - "0xf87283b2ca4b8477359407825208948bdc25c43c010fd3db6281fcd8f7a0bed18838e3870e35fa931a000080850343e1feafa03947d852b7715cd3439339491143eb3608bcb66f55098dff59412c7dbd338b4ba06cf19ec280ee1bf31544107382afd721bae389dab865c91202e9ebb8130e1b52", - "0xf87183b2ca4c847735940782520894af16f746b8a834a383fd0597d941fee52b7791eb870e35fa931a000080850343e1feb0a0dd4b05f33647254a3fe524bb87b78f5d07f2da07d45c93a516c3596d11996f1b9f13486308ceb7a0a5d0d54d1f75fd673b8755439c9e6987b495081aa2e1a043", - "0xf87283b2ca4d8477359407825208940c5c736600f8ea58ccb89aa72e3f3634651fd551870e35fa931a000080850343e1feafa02bedac70c35bfcd2e311b60730926d942d567eab0d3fce68c60a551d3951f56ea016e3100ee3ebf179ea3253bcb493883a0b124db18df108c3eab6a5fef90abb5b", - "0xf87283b2ca4e8477359407825208946f475e0f0e9eda58556fddc04de9b1a9b6a4cfb4870e35fa931a000080850343e1feafa0eef87d4e6b018e4a38b649b15ecda079cca7957cb4d3863e01ca61ded09a76a2a028f6458e7755aeeba2c21104a0605dfb94cadbd9c8e4f1f9b971201f5fd925f2", - "0xf87283b2ca4f8477359407825208949b2e76498a695c4dc7d0890069cffa84a9581d24870e35fa931a000080850343e1feafa0c3255cc7aef487e5ab9d931a259b831e2fd74f8a23ef523b87b17e20a00a80e6a07ecdf24edf74b2d7bb9ba74c6124320c1c673480dbc3897a1838a7486bfbe624", - "0xf87283b2ca50847735940782520894e2d2b2069f4a54fcc171223ff0c17adbd743c285870e35fa931a000080850343e1feafa0227ed6dfc5bf27ffc152d145c64fa108b964d56e9b3c118d3dc6c2909344e6e4a0633a165999e15ec506cf89063338f9857180bb8c163d252233b4306996240ea7", - "0xf87283b2ca51847735940782520894386bd49f04322544f3c7178fa5ae1a24b947b454870e35fa931a000080850343e1feb0a082d510950cc6246f7fc969e92def81b18d63d6b547a99ebc30e4897ab3342724a01dce6f14dbeb5b3bedc273ab9e244f62fa7df2bcf518a85ec1b6544f18244fcf", - "0xf87183b2ca5284773594078252089400af839c3fc067fafc2e0a205858d6957f0dd18d870e35fa931a000080850343e1feb0a0908e55d774b8264736b283d848bb2f799c71a1cfbb1dddb304dad8eefc4685389f6a1da60e6fc82ae4713c84ba99e8bfbafb35191c4563ba64af5fd0ce002d50", - "0xf87283b2ca53847735940782520894ebb6d32a650afa9221b55a11c6a6de52b6f07cd7870e35fa931a000080850343e1feafa06c35791de05fe59e5a94fb3e981b0c4b095927535fb41b01209b4ed85a611676a050b7eaedd0c887c86f23419e192c9d077e3d97fdf01d3ff8808cd41acd84f41e", - "0xf87283b2ca54847735940782520894011d26a3a9adc9203c8943a6a77aa8657af52420870e35fa931a000080850343e1feb0a0be0a8e72b046c792992f2954e3386b29891f38302d55b0677bc8e953076aaa5ba03a41c430059e43b0db1a4f86e647b100d455b8d2a9691bbf22b609a4caaa2866", - "0xf87283b2ca558477359407825208949c85bc61a89fb5abd957e6c819c653fc1aa0d11b870e35fa931a000080850343e1feb0a0c93b731af016e9f08877512ae4d07ab8befd333c0736373fe68916b3045a3f5ca055caed9ee7e794c05f4d36bc6b75a617120f5de9d16243c6760fc97b7feff1df", - "0xf87283b2ca56847735940782520894bd8e8435b7897d87cf7cedb5cf8c5dd865dbf720870e35fa931a000080850343e1feafa044276922dcd7957054e067ae806a4e7d2b430bb307c7b845a2f5133a5fdb8c7ba00cef595bce18815b382533b9e4c8a3fa1473e5354baad59300e4a9b5f4d41bd1", - "0xf87283b2ca57847735940782520894adebee2e3ff041078b62380d001c6e51b4f15598870e35fa931a000080850343e1feb0a0551e6ca15c83a2680873aeb33fccf1337666d6a420c91a02648c2192cfac5fb0a007c9af16b3893662c63da9569eb79d53d7dd38ea4c316fc413e708cc0aea5adb", - "0xf87283b2ca5884773594078252089471e94c459c9f05085fc0d34b5f21e648e05dc6b3870e35fa931a000080850343e1feafa0fa835fb15e28a55143f8ed2dfb179841126abaff9afcfedfa593b8bd506a6789a03fe24cfd2c20f9dc571ad90950d9af214fc310799503210a141cf48b5859b3ff", - "0xf87283b2ca598477359407825208947c1fe317db82c9298b87c56c3194178271b621e1870e35fa931a000080850343e1feb0a0cf5b615d8d2233efcb152127ca8f940f8724184c5f2326077f297d91efc63fada0053c796c6c330530c0a04afbaab7ac72825ccfa74f74ca5b86d0546d19ee7b0c", - "0xf87283b2ca5a847735940782520894e069d1c9abf5127bdc3a164fb93b96bfa9f74ce0870e35fa931a000080850343e1feafa0ac4eb8d4437ac45d2a2673654b0b9a69c31917d1a09be66dee2010bac2cd128aa019b3dcda289a8d7ab95d573987e4197cb89645bf2f4bbfb95dfffd8890554628", - "0xf87283b2ca5b847735940782520894b9bbddd1eb6ef8fb1bdc6a853d5ad7486a9487dd870e35fa931a000080850343e1feb0a011e089873bcde117d4c4bbfc057f64275e18ab6e75175fc90c20693de7f0549ea03682fbbcb36ef87a033aa4d183c5716f5bdbe74fa04ff73c96817269683a014a", - "0xf87283b2ca5c847735940782520894a804387cdaf986d45831e8074efb2115af053f7a870e35fa931a000080850343e1feb0a044728ef6764e6d1d561979aac58024077406aeefebfc3e4fe103127c3793bfada057fd99cfa269c6ce10f97dffb575f38bd0d1d1970ef19648c5ede04c817a7986", - "0xf87283b2ca5d847735940782520894f23501d784a041fc911b4c86c2bfb1f63ec170ea870e35fa931a000080850343e1feb0a0bf2fd5822fac3c756284e07e487f7aa0e25f2aae051f6966bf1723d9aff4d713a07faac8a1050efbf9c1b7f061ce90abeddedf9d7f59f13f29702861470f6310c4", - "0xf87283b2ca5e8477359407825208943928be2a7058088313c0fb3294014e88a3c5ed4a870e35fa931a000080850343e1feb0a07073b1c53c64d977f43e5045f136aa22766664f5029c51d0f9f6e9562ade0056a017b0fa41efdcf364b40b65f09a00ee97e491a318844c62bc984fb17899f84daa", - "0xf87283b2ca5f847735940782520894196aa07204141478459c14106ef5e5282efe9957870e35fa931a000080850343e1feafa0dc23d116f1dc7833274484bcb750f8fde476d0f65980d2fb65ef422a2db6b342a0022af2882c4da8ea6e7439744c79f560fe47b5dacc6acf0e490859ebd6e7f90a", - "0xf87283b2ca60847735940782520894763cbf89560e2da270000822abda9584db693fa3870e35fa931a000080850343e1feb0a0cbd30950702cdd8fd9a2b6f3032107190402aeacded447d9e4ddca0be8f4a0a2a0327a730029720e5d40d64e59d6583ac054d22c9a54f3efbb8c4ae800c5f65b36", - "0xf87283b2ca618477359407825208947feaea0ff70ffc9eec2104f57f7136aff4dea680870e35fa931a000080850343e1feb0a077c86f7c3d82fe0b45c9468170fc7b9d31b29d6ab5d971be78eb9a58e9b3d14da0782285c77fa8ebc436d8b397a30f1a8a9169c9abf7df6a09d11546a66205ed5d", - "0xf87283b2ca62847735940782520894e5466aacd9dd6d3bb35060a1ccc76a438de88ca1870e35fa931a000080850343e1feb0a0ab09d576a36d217d08cc8eda52b35d510d6b834c32522ef99b55b76d9c8b8981a0758a5f42f92a59fe0fb0307f93418208cfb1267e348985172d62732739f84b2c", - "0xf87283b2ca63847735940782520894f670980415cfe8c4f8d10645ecf974c9a2fea00e870e35fa931a000080850343e1feafa04e6478a23686f9b3de241b2b9f55245db83c250588e26ad58345b29c39bbbd27a07436fe4148f284697f14e7896653f85aa86c4823dae35a09f55d7bbaa9f8d335", - "0xf87283b2ca64847735940782520894a29115bce7829ffdd989b7cf1bdd1eac06a2cb36870e35fa931a000080850343e1feb0a049373772d3078c96956c11a57a64406eaa8db802d9ff43d53ba9245a54729ad8a02f0379117dcf2a472b70aaa032fa6eeceaadee1573bc68bdfdb456238e2b25c4", - "0xf87283b2ca658477359407825208948f528aa67dc1846c893465fa1c8c26556bc5fe19870e35fa931a000080850343e1feb0a04a9206b2c7283b48c9eeac91626b8ecfcdd75954244771029635f4dab641ef83a013bd39a1bee8a2c22d41fd6d6f1d840c32ef000f2dad466014177e5d0263e866", - "0xf87283b2ca668477359407825208944dc4ec6ac43c8c45777292db987203c0248e17b7870e35fa931a000080850343e1feb0a0bdac2f6689e71fd20c81ab3ed3eb589481faded73989c5ee3b301abdf0df4b53a0578183bf6312dfe8b2719108accbb232f8e51483b25dfd7d3ecd1c610439956c", - "0xf87283b2ca678477359407825208940d2f39f251cb547cba567a31e5e9f93c19dffa85870e35fa931a000080850343e1feafa0f30cc48dba1051f2fd9819c4b02eece9570f10d41ae8b452aad94f5c42b82576a06426cf9fbfd3773ef5f393028b15eed015a6706e31f0240ca17c19b2351e7414", - "0xf87283b2ca688477359407825208949eb31fb94ce5111e2a04cb9d156b513887ccbd00870e35fa931a000080850343e1feafa0d9f46a2689133b09f2a2ea0ee95d1ef5aba6b1f5c004d6920e21a3b90341e065a050a5e2b5684ea9970890351a7a15677fc08aa9a5d00003a5c452c6662cd42852", - "0xf87283b2ca6984773594078252089404b88ef83f8c41b1465d360a1e82f07ae190892a870e35fa931a000080850343e1feafa051958bd1fe58327a52aa6a82e58821d55402f482b97328c60c4cfe01b8e36b3fa0539cd419d4cdd5c7c629820dfe8b71eb58ae568524e97b91a24731e521d2111b", - "0xf87283b2ca6a847735940782520894af23e04b04fbe15630eadd32a6f27a5a65ea554a870e35fa931a000080850343e1feafa0381d17559d00a1b6325c610bddfc9bd062f1b12057ded89955ab7ed5cccd4d09a010fd329e705cd269278c9b5cde9b779ecaa8e358a337f8add40ecfbd75dc4499", - "0xf87283b2ca6b847735940782520894746cdff371e3f1e905b3ac52280078bac2dec7dd870e35fa931a000080850343e1feafa0759d0869520d18b5358f314e05b69b1a90a326187da6a8008063d1432f5ffb22a0245f02da5d9697a34e53c312886257805f2b3bdfd840dc96322cb81e35823659", - "0xf87283b2ca6c847735940782520894c33e5155bdbf1a0a7ceb1b80f8586c5cda5c3781870e35fa931a000080850343e1feafa0c252b122d4a06b7aaf7bf78cd11f4e1399f7b250c1d865582e9e08e4bd9105dea015b154437cb829de566ba07b719034333ac218d9854e4389f8ba2046bec844ea", - "0xf87283b2ca6d847735940782520894e7fdef5f5219068f3d0f88a7445005574c662798870e35fa931a000080850343e1feafa0eda15bdec45215a52b664c11159ef2beaa944690a8f79717ac0ed1f0035f829ca07529a85f7eb5bd384bbb3b4d65542c49da763e1f897cab7a45cc6a47645b8673", - "0xf87283b2ca6e847735940782520894f0a81a63c5e09b0bd08e027de48058e377d3732d870e35fa931a000080850343e1feafa00bbf6ac00d963d190c05442699a841f9c80ec9945931e6adbe253354c99a1182a050e0fd4171c350df604d418a7e4837e7b8796ba7429fe32f436a21bccb645187", - "0xf87283b2ca6f8477359407825208949878ab34dc3b4a63c80fdb733491472c11d59a56870e35fa931a000080850343e1feb0a048e27126c94bbbc5405cc8375e1b7ad465c27d6c0bd76cb92d33d4040b22eb70a07f2c95cf62ea907537fda9c7b4f50478b0bd589af000a8040d579a170396915b", - "0xf87283b2ca70847735940782520894912859bebae3086ac7a062dee5d68aa8ed2d71ec870e35fa931a000080850343e1feb0a0295f18dad24c898d1bfb52a5ebc66cf9969f51a93466af8f58f5f40bb39f7e71a00ebec2985dfe0273b9efe27b62a40d1b09c9b34d15d79e57ba410f9465020c1a", - "0xf87283b2ca718477359407825208945a0b737ed85049410e5ea61f444d07d5c8c0359f870e35fa931a000080850343e1feafa04d86fff68888228429ec758044b01c250d411adb6deb1b0037ea8a82a72c2c69a0327aa62e850c6e885d0400921ce640bf774d5dfaec47cb6591c6f052b06ac168", - "0xf87283b2ca72847735940782520894305a5dfd46e6128abce28c03b3ad971f4e4915ff870e35fa931a000080850343e1feb0a02e8f17f15ac2086ab70089d77b903b123b868bac1b3cec813f676f77e31f24aba06cb86cccf93c88eaeb1494896a199741aa20bd479f63e23df92301af6d812996", - "0x03f89a8501a1f0ff4682775084773594008504a817c8008252089445fd980a780887e4fc4ae9f8d042d112d0802ac28080c08504a817c800e1a0015c8bc10440f3b13981c8eca320a2592d8af8fb6aa30a2b48dab94992d3f0eb01a0312cb2215fdc073c3861315c54aa152f685e45df0921003867bad8bee65aa107a05b49e2208d9e902d649c218d388ef46f1deb8dae206c7b6d719bff35dd53c023", - "0x03f89a8501a1f0ff4682765184773594008504a817c80082520894807381ff50bf094ed69ce4e16d393a63af21d8428080c08504a817c800e1a0012084b96d7bdc4d3f8fc1689150593e498063b67fdcc8028bb0191c6d521abb01a0fd9b96ec6f6eb1e24eacaf9e0c69faa87a3c6d72349a7566d226c575b0faf4a4a04b493a211a7b6e46889876ad198212960148dc8e0af2b7a745941d49a60934c0" - ], - "withdrawals": [ - { - "index": "3969157", - "validator_index": "2760", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "2598" - }, - { - "index": "3969158", - "validator_index": "2761", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969159", - "validator_index": "2768", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969160", - "validator_index": "2784", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969161", - "validator_index": "2786", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969162", - "validator_index": "2787", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969163", - "validator_index": "2794", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969164", - "validator_index": "2798", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969165", - "validator_index": "2811", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969166", - "validator_index": "2813", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969167", - "validator_index": "2827", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969168", - "validator_index": "2841", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969169", - "validator_index": "2845", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969170", - "validator_index": "2710", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969171", - "validator_index": "2724", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969172", - "validator_index": "2738", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - } - ], - "blob_gas_used": "262144", - "excess_blob_gas": "46399488", - "deposit_receipts": [ - { - "pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c", - "withdrawal_credentials": "0x01f24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", - "amount": "1234", - "signature": "0x50c43c26b8ea9b8c00fbbe16d2d61ea91abdeab72e9b3a84495b25c027dd7b93a8964fb5f1821617aed572a964baf470778a662a74a5b06f8f983bc107ed5b387cb324fa08355f30979878c3c7a0b98b0f3a1a2855a11387e98c0d730f88fa0b", - "index": "5678" - } - ], - "withdrawal_requests": [ - { - "source_address": "0x8e609ac80f4324e499a6efd24f221a2caa868224", - "validator_pubkey": "0x977e9c64a409aceb31101fff9775e76524c4c1dcf64910062e66e3133a4a4b0447ce0fd096129e3a329adeb302f7ca0c", - "amount": "0" - }, - { - "source_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f", - "validator_pubkey": "0x93a44c6999cff05bcb6770249ba5a74753dcfecfc6aefae564a0e067a1576ab4b9eff12a3c1623107fb3f3c6dd838859", - "amount": "10" - }, - { - "source_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f", - "validator_pubkey": "0x870e4932e9e6a4921941286c3f7eb07410ba844f765ba831cf92b6ac0f9a86e080f489205086fd9b64093b0b39abfbac", - "amount": "100" - }, - { - "source_address": "0x8d0b4dfccc8b2a268486d9754b135d8ad1ee7258", - "validator_pubkey": "0x8a049217690890447ee0a91502f8b40581f5889e023cf6261a336c8f60afd239722d170751f1d7f1a15626e7227e3ffc", - "amount": "1000" - }, - { - "source_address": "0xd4e11c28e04c0c2bf370b7a9989498b7ea02493f", - "validator_pubkey": "0x879bca77468086bd2ca90ba22bce90046738938cebf5d2facea448229088f01771f4a6a2efcfd548473035e0fd43008a", - "amount": "10000" - } - ] -} From d09fb679f21d64292bed05c0fb3ee1c78de46a3b Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 13 May 2024 12:39:52 +0300 Subject: [PATCH 14/32] Add basic block hash test for deneb/electra --- go.mod | 4 +-- go.sum | 4 +-- utils/utils_test.go | 80 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index d3d7b93..b19d376 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.13.14 + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb github.com/stretchr/testify v1.8.4 github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c ) @@ -38,7 +39,6 @@ require ( github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/holiman/uint256 v1.2.4 // indirect github.com/klauspost/compress v1.15.15 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect @@ -79,4 +79,4 @@ require ( ) // This version points to Lightclient's prague-devnet-0 branch. -replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 +replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240513091005-ce8886c120a0 diff --git a/go.sum b/go.sum index 57b2d0b..b15c2de 100644 --- a/go.sum +++ b/go.sum @@ -120,8 +120,8 @@ github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063 h1:srEOH43WDUtXLofgCmo3LOGUEfoVpe76/ho1qt7RmPs= -github.com/lightclient/go-ethereum v1.10.10-0.20240429213339-9b7958ba0063/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= +github.com/lightclient/go-ethereum v1.10.10-0.20240513091005-ce8886c120a0 h1:PUpmruyI+n8mie45nXO+fHKjIPCYQnUcWesqAcYuhdE= +github.com/lightclient/go-ethereum v1.10.10-0.20240513091005-ce8886c120a0/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= diff --git a/utils/utils_test.go b/utils/utils_test.go index 43bc52a..5413be2 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -1,6 +1,11 @@ package utils import ( + "fmt" + "github.com/attestantio/go-eth2-client/spec/electra" + "github.com/golang/snappy" + "io/ioutil" + "net/http" "os" "testing" @@ -13,6 +18,33 @@ import ( "github.com/stretchr/testify/require" ) +const mainnetTests = "https://github.com/ethereum/consensus-spec-tests/raw/master/tests/mainnet/" + +func downloadFile(url string) ([]byte, error) { + client := &http.Client{} + req, err := http.NewRequest("GET", url, nil) + if err != nil { + return nil, err + } + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to download file: %s", resp.Status) + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + return body, nil +} + func TestHexToHash(t *testing.T) { _, err := HexToHash("0x01") require.Error(t, err) @@ -156,6 +188,54 @@ func TestComputeHash(t *testing.T) { require.Equal(t, "0x08751ea2076d3ecc606231495a90ba91a66a9b8fb1a2b76c333f1957a1c667c3", hash.String()) }) + t.Run("compute deneb block hash", func(t *testing.T) { + body := func() (body deneb.BeaconBlockBody) { + contentURL := mainnetTests + "deneb/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" + compressedData, err := downloadFile(contentURL) + require.NoError(t, err) + decompressedData, err := snappy.Decode(nil, compressedData) + require.NoError(t, err) + err = body.UnmarshalSSZ(decompressedData) + require.NoError(t, err) + return + }() + + versionedPayload := &api.VersionedExecutionPayload{ + Version: spec.DataVersionDeneb, + Deneb: body.ExecutionPayload, + } + + hash, err := ComputeBlockHash(versionedPayload, nil) + require.NoError(t, err) + expectedHash, err := versionedPayload.BlockHash() + require.NoError(t, err) + require.Equal(t, expectedHash, hash) + }) + + t.Run("compute electra block hash", func(t *testing.T) { + body := func() (body electra.BeaconBlockBody) { + contentURL := mainnetTests + "electra/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" + compressedData, err := downloadFile(contentURL) + require.NoError(t, err) + decompressedData, err := snappy.Decode(nil, compressedData) + require.NoError(t, err) + err = body.UnmarshalSSZ(decompressedData) + require.NoError(t, err) + return + }() + + versionedPayload := &api.VersionedExecutionPayload{ + Version: spec.DataVersionElectra, + Electra: body.ExecutionPayload, + } + + hash, err := ComputeBlockHash(versionedPayload, nil) + require.NoError(t, err) + expectedHash, err := versionedPayload.BlockHash() + require.NoError(t, err) + require.Equal(t, expectedHash, hash) + }) + t.Run("Should compute deneb hash", func(t *testing.T) { jsonFile, err := os.Open("../testdata/executionpayload/deneb-case0.json") require.NoError(t, err) From 996298b6b50e07406f37f413bf9642a36451a63e Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Tue, 14 May 2024 09:52:30 +0300 Subject: [PATCH 15/32] Remove old execpayload tests --- go.mod | 2 +- go.sum | 4 +- testdata/executionpayload/README.md | 1 - .../executionpayload/bellatrix-case0.json | 18 -- testdata/executionpayload/capella-case0.json | 133 ----------- testdata/executionpayload/deneb-case0.json | 219 ------------------ utils/utils_test.go | 68 +++--- 7 files changed, 34 insertions(+), 411 deletions(-) delete mode 100644 testdata/executionpayload/README.md delete mode 100644 testdata/executionpayload/bellatrix-case0.json delete mode 100644 testdata/executionpayload/capella-case0.json delete mode 100644 testdata/executionpayload/deneb-case0.json diff --git a/go.mod b/go.mod index b19d376..25116bc 100644 --- a/go.mod +++ b/go.mod @@ -79,4 +79,4 @@ require ( ) // This version points to Lightclient's prague-devnet-0 branch. -replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240513091005-ce8886c120a0 +replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c diff --git a/go.sum b/go.sum index b15c2de..d979e5e 100644 --- a/go.sum +++ b/go.sum @@ -120,8 +120,8 @@ github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lightclient/go-ethereum v1.10.10-0.20240513091005-ce8886c120a0 h1:PUpmruyI+n8mie45nXO+fHKjIPCYQnUcWesqAcYuhdE= -github.com/lightclient/go-ethereum v1.10.10-0.20240513091005-ce8886c120a0/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= +github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c h1:TLHlueMtMl77hse3AQE6bSkp/nNywO16dAappalliMY= +github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= diff --git a/testdata/executionpayload/README.md b/testdata/executionpayload/README.md deleted file mode 100644 index 0917a81..0000000 --- a/testdata/executionpayload/README.md +++ /dev/null @@ -1 +0,0 @@ -https://github.com/ethereum/consensus-spec-tests/tree/master/tests/mainnet/bellatrix/ssz_static/ExecutionPayload/ssz_random \ No newline at end of file diff --git a/testdata/executionpayload/bellatrix-case0.json b/testdata/executionpayload/bellatrix-case0.json deleted file mode 100644 index faaf9cf..0000000 --- a/testdata/executionpayload/bellatrix-case0.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "parent_hash": "0x89236ba32cb76b3f17cbba7620d956d561a08a42a22145bb5705099ed94eaddf", - "fee_recipient": "0x0000000000000000000000000000000000000000", - "state_root": "0x44f451f33692bc78735f7836ad9c25761ba15609155e7bfcb38ded400d95d500", - "receipts_root": "0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2", - "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "prev_randao": "0x0000000000000000000000000000000000000000000000000000000000000000", - "block_number": "11", - "gas_limit": "4707788", - "gas_used": "21000", - "timestamp": "9155", - "extra_data": "0x", - "base_fee_per_gas": "233138867", - "block_hash": "0x6662fb418aa7b5c5c80e2e8bc87be48db82e799c4704368d34ddeb3b12549655", - "transactions": [ - "0xf8670a843b9aca008252089400000000000000000000000000000000000000008203e880820a95a0ee3d06deddd2465aaa24bac5d329d3c40571c156c18d35c09a7c1daef2e95755a063e676889bbbdd27ab4e798b570f14ed8db32e4be22db15ab9f869c353b21f19" - ] -} \ No newline at end of file diff --git a/testdata/executionpayload/capella-case0.json b/testdata/executionpayload/capella-case0.json deleted file mode 100644 index 1617e6d..0000000 --- a/testdata/executionpayload/capella-case0.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "parent_hash": "0x40d276c614b86013c95bbe59698628940b6c62ef63d50a528c24e9eaab591198", - "fee_recipient": "0x13cb6ae34a13a0977f4d7101ebc24b87bb23f0d5", - "state_root": "0x0e5a097fa89d985392014b37b23e7f69286ed8dc8c06e2e55dada849d331c2e1", - "receipts_root": "0x1ddeeef0faf8c796762027d9ac55de825894985b18d6640cac1cc29041d50b7d", - "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "prev_randao": "0xf5af8152556568891bc536bdd0ccfa2e37b7c951dd57af0e9f8bd552b7426c53", - "block_number": "139225", - "gas_limit": "30000000", - "gas_used": "551506", - "timestamp": "1677021756", - "extra_data": "0x496c6c756d696e61746520446d6f63726174697a6520447374726962757465", - "base_fee_per_gas": "7", - "block_hash": "0x08751ea2076d3ecc606231495a90ba91a66a9b8fb1a2b76c333f1957a1c667c3", - "transactions": [ - "0xf875821054851010b87200830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f26fc10000841998aeef8328d3b9a0ac092d4e961e6382b8b3a80e60b4d55a52157ebda53a9183326f4dc3f1d1302ea062e966f7c072a22699fff9eaffe4893fa41d1fb72cd9382fc43fb083d299d8a7", - "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3b9a03cb8c728f77b35a07507b70aa922b6e31bae0fc870b0de7fba0d50dc6eb9ceefa0513ea444fb4133e923fc530c3a34a3de84623fa1a860761b2275e94a4801d757", - "0xf875821054850ee6b28000830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f399c6f200841998aeef8328d3baa005822bca0d7104540eae5db2b6b1c6269bca65510f44f769b2a9a1458be6397da04ea1f2d874c9effa336099ae5f2bd626887675a5ce9fb8847ecc2722131a0130", - "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3baa07925e78c3ac04877525a917beee6e24128356a63f3cd7c6ec221771cb405be8da05be8386defe14eef922fbba7c949f6404882a0d123e467ff11a55d6a9e4c18c1", - "0xf875821054850eab17b600830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f3d561bc00841998aeef8328d3b9a0cd6b92b536ec40391285420feb8248bc129b80345a9ba19fc33f5653823a7706a0646f8ce3664772820240cabd6f6f9c1248e3017fdf4d5c5fb72763e61f78d446", - "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3baa05bf1ba6fac6f621ec8528d3f6b5abbae72e3f9c8a212ddaad551f29427c30a49a05a33b94218db9e44ffbdf068d63be62475719a0029dcd652437344608d583d04", - "0xf875821054850e6f7cec00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f410fc8600841998aeef8328d3baa00358efcdf94fee3b7736a1acde54bdaba1dcde70d028acb26e8a658a3a4e8395a00a24ea2c5d9f398ff9747e43c896096ea770fb9ecd09c0979229198cd08dbde8", - "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3b9a0d03940e5d6f837663e31647492cbdb78d6682838d88522f939c8f67737ff435fa07747a35e473163a7fa8ddeae5a1c04b7ff93881170940758dc2e09eb4a704d4e", - "0xf875821054850e33e22200830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f44c975000841998aeef8328d3baa070381fcd0adb9c49e68fe861c7badc5d644d7140db3e2235b61e22eb9a023e1ba02fe84ed44efd953759c6c4892077acc571a8798d0afe84552e70be2298e717bb", - "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3b9a07a1e1c837de4d9e5797c0d76fd1b8dd4b768893e6990d4320063636230cc9b47a018d81eb0e8a82de9e5ee9eb886c8b0a6fcde6d52ee5d2f1fe9e472499d8d7828", - "0xf875821054850df8475800830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f488321a00841998aeef8328d3b9a0cff9e433b2df74270efe3bed7b19e9eb845c0b51da98cf235db283b05a4c52eea066302c9e70d910b3b97caa4d9f4e7d884af346f26e7ef25925009e93844da676", - "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3baa02aa3cb1e8b51a9080ec3b92f8978995f0b794fd8db0614d5a384711cc1db3259a012351f30cffed3adc0d2c89b71d2fecbdcc2133cfeb7b1058532bbb0e53e45e9", - "0x02f877831469cb82cbe48405f5e1008405f5e10e825208948aa2b8622c1223a62fbc1119fa2b483ab41b250b88016345785d8a000080c080a0600fd64f4b97683e7b1130f5bc9e9860e0bb9f6dc6c3bf13ecdb6554cc6596c1a02682d446b692d0d8e2a7e4d15ba9fd259230bea211fc40ee056629ede5093811", - "0x02f877831469cb82cbe58405f5e1008405f5e10e82520894388979a907fee4c8083aaffb9f66bc33001c1d4d88016345785d8a000080c001a0b242a130a0e7976a70766124772c6bc7a01c11e08bb1af134ae7d077b45c1528a03adc5e74af9304312fa53bf858babe795bcfe06ab5188873b6fe7623c08b7b57", - "0x02f877831469cb82cbe58405f5e1008405f5e10e825208948aa2b8622c1223a62fbc1119fa2b483ab41b250b88016345785d8a000080c001a05defd8d136d031e2c9afcc1bd590dc6e3fda7863a641771f6d0d168cbf610f02a03b2a491394fc5702ce911a312324660018e4421084f53b965d8b3f238143ad63", - "0x02f877831469cb82cbe68405f5e1008405f5e10e82520894388979a907fee4c8083aaffb9f66bc33001c1d4d88016345785d8a000080c001a0dc74824467ca640cdeae147a837e867b92548ea2e1ca739a865e022dc27b8a7aa062f6d55d06030a6a90e57b2086336cf33a00fa4ac1a08ba9a14b7c1b83e51647", - "0x02f86e831469cb8209aa800782520894f97e180c050e5ab072211ad2c213eb5aee4df13487614fca865658a280c080a011f98172aa018c80ff382d7d4c51534fd78fa29254dac91746e3d0c6ef7010dea04cbc906ab1c898206d3b084cd38066d9d1e671bf11cc98d41ceb93a20cc8d5e3" - ], - "withdrawals": [ - { - "index": "1530173", - "validator_index": "48240", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530174", - "validator_index": "48241", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530175", - "validator_index": "48242", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530176", - "validator_index": "48243", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530177", - "validator_index": "48244", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530178", - "validator_index": "48245", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530179", - "validator_index": "48246", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530180", - "validator_index": "48247", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "178988" - }, - { - "index": "1530181", - "validator_index": "48248", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530182", - "validator_index": "48249", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "178988" - }, - { - "index": "1530183", - "validator_index": "48250", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530184", - "validator_index": "48251", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530185", - "validator_index": "48252", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530186", - "validator_index": "48253", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530187", - "validator_index": "48254", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - }, - { - "index": "1530188", - "validator_index": "48255", - "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "amount": "188209" - } - ] - } - \ No newline at end of file diff --git a/testdata/executionpayload/deneb-case0.json b/testdata/executionpayload/deneb-case0.json deleted file mode 100644 index 7a0a020..0000000 --- a/testdata/executionpayload/deneb-case0.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "parent_hash": "0xc2209759cf577fc467798ba2fc686b2b66570d1fe717ca0e012afb7cb27da452", - "fee_recipient": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", - "state_root": "0xf70701c309633bb1bd26bad3d39a8114270911adee83f04919aa3bbb4a078cb2", - "receipts_root": "0x592c3cfac2ec01e970de0459f6789d532468a15c7facd880c71af056e59f8490", - "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "prev_randao": "0xac912dabb21238750ff741f21bc2f91e42751e9834fff9c138d6ac6bebb0e637", - "block_number": "297164", - "gas_limit": "30000000", - "gas_used": "2142000", - "timestamp": "1704997008", - "extra_data": "0xd883010d09846765746888676f312e32312e36856c696e7578", - "base_fee_per_gas": "7", - "block_hash": "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", - "transactions": [ - "0xf87283b2ca0f8477359407825208946177843db3138ae69679a54b95cf345ed759450d870e35fa931a000080850343e1feb0a0232f671cda17e58ee3e6a4bcc22e42595bd158e5ee8ebd6ecf19cbc5b6e4002ba063d962968cd08a134d6da2adea6f99502c3ac0779a10b25beae8c46d7fc85d02", - "0xf87283b2ca10847735940782520894687704db07e902e9a8b3754031d168d46e3d586e870e35fa931a000080850343e1feafa0c5e5914d867866d1273d46b579716468e786d4c80aca426faffdc364b413a98ba069c4bf7e84f637f0d0ee1dd2f829b36e88903594d23c94057fe013d1e8b350fd", - "0xf87283b2ca1184773594078252089415e6a5a2e131dd5467fa1ff3acd104f45ee5940b870e35fa931a000080850343e1feafa0c955abbd72f47cc67c217b89272e8d497042afed0d29b005c36774d76ab80dfaa04dd80f4235cd12899d9d5d66d88bd34b707aa3587d7dfde57d975a04ddcf512a", - "0xf87283b2ca1284773594078252089480c4c7125967139acaa931ee984a9db4100e0f3b870e35fa931a000080850343e1feafa0ee0a0d1a7b937dbd624b182697cd4b484127962367be1a4d900e7740ee078015a0534e89aa85da711f9003e7fffd1d2589964c16a74696afe8cb341c501995206c", - "0xf87283b2ca13847735940782520894d08a63244fcd28b0aec5075052cdce31ba04fead870e35fa931a000080850343e1feafa070a70e108545db07da5366e9bce96e9b2b798ae6b61010b317a67b912c33f655a02ce9b1ebda0ecd9a8e783a252f54e3f3de6696fba2e9fc790c9214db7459be8d", - "0xf87283b2ca148477359407825208940b06ef8be65fcda88f2dbae5813480f997ee8e35870e35fa931a000080850343e1feafa09c7c9f770758e04a772b82c6a9c8ed43cffba066327a01d2623d6578efba59caa017961cce26d31441091599d6e473c1813b0b1bf0ca76344cbc32cb1e7ba5ceb0", - "0xf87283b2ca158477359407825208941cb96c5809da5977f99f69c11ee58bae5711c5f1870e35fa931a000080850343e1feafa055cbf0ac7924fb36ddf37b083c0f0e3136fe862e40448f6f012190ace6453594a06b7e68ffc18ebc6cf3c9f22d767295c34ef25895fd3da939cd33908d2a432b4e", - "0xf87283b2ca168477359407825208942aa48ee899410a6d97c01b0bb0eeaf1771cc435b870e35fa931a000080850343e1feb0a002becdde6f3a450322c19de954654f3243943a49ba27255ad78bd46ffdc4f4a7a050a0e0edeaf11a4faed0799bf535d59651fda773d2092b266495fe4a06256c29", - "0xf87283b2ca1784773594078252089407b9d920dd8e8d83dc1125c94fc0b3cdcdf602fb870e35fa931a000080850343e1feb0a0720ff20485bbd392745bcf0a2d03cd0634278976b44a79a4b87d84f582e916cba0797e26992c2c8b0c7c18ba8fa650d1e9191087066b644c0c6d4f413bb9646ed9", - "0xf87283b2ca18847735940782520894fcb6e353ad4f79245c7cb704abcffe2f48684241870e35fa931a000080850343e1feafa0f34fd6a78e783da2ae1b44cd55f139ccb0173ea0e7167abcf6415cd7be6c81baa00598881b2deb805568720cd788f0fb4a5c9af23beccf420a2579f96efc310bd0", - "0xf87283b2ca198477359407825208940d3de4256d6322683fdea9ee23765ccbfcb83da4870e35fa931a000080850343e1feafa0fc096a77fa2fe301f3a14f34138592a2e66cee93087663186eba3781dac38858a0359d767d079cff952fef59fddbea5c67ac5376d5002bdc05b6d055f8eb774ccd", - "0xf87283b2ca1a8477359407825208946021752d8d9b2f221d4fea4349dea34ddbcfce50870e35fa931a000080850343e1feb0a0a3f4d571334ccc23448af71e9c1abb32c3d88cf2e529fc79c1a034d335d82908a007ef42156c784a198f34385e1e0d0756f6cd53fbf27fcb9854855ef4913b60e6", - "0xf87283b2ca1b84773594078252089461e296d527edc89e831cf593ec341f16197eeafb870e35fa931a000080850343e1feafa0520d8cfd1db39a7d3b243ba9d62db793838b168118230c96999b91dfbac6045da0783852f06a27b42fbdb7188813fedfe223774d259c1587c1940137d28d234407", - "0xf87283b2ca1c847735940782520894cf7317ee7a3b497ecf634b94bff60ff91b925747870e35fa931a000080850343e1feb0a019b02287fad94f6aeca7489a8123e4bcf9ab70f5388926e80e98a0216f512f5ca0125160a3fd03d61d93b7db3c773d71f4e1dc00ccc1f1266666beef2cfc01d558", - "0xf87283b2ca1d8477359407825208947e7b519df31f77ced83eea1b16aedb6dcb0f0b24870e35fa931a000080850343e1feb0a0a532259c3e2f94983cef203ebf45ef790d2c534cfe319f9d67efa89d5959ac3aa0410923dface7953f5679eb67f19bff37dbc8357c0887f89051d7be7adfe11812", - "0xf87283b2ca1e84773594078252089488a075e0fb1c9309a200a8bf0a88b214bf7ceb8d870e35fa931a000080850343e1feafa0be569c9e097589df0647ad61d0bc9cb9de1ea358718877e05883a0404fed32b9a02821efb1766a325c08417f5a186797776325a1e666cd3e386b89d284e210a5ac", - "0xf87283b2ca1f847735940782520894c8d7cfb58f3ac02568e6505bf3fb5eb6f0807039870e35fa931a000080850343e1feb0a03f52fd1f9d38d20a618f4d896a9dce54dda51ccce1558df625ac19e9c05a0faba02de2de155588a35a527370c5d9ac33d1195e670bced9133bfc263cce3a3f50e3", - "0xf87283b2ca20847735940782520894e0132e8d7b1b766e0ade5543d6c6c0b2d5a2f01d870e35fa931a000080850343e1feb0a084fb4f3725298a31db9fc4b2dfd953dbda3a97eb3a92365a69ec1230b4a75227a023b6d656447cc12759d47101c9103dd73bfaf65b203724b74345378c258fd221", - "0xf87283b2ca21847735940782520894eb674c0411db79654afdc1e131f3b6e734baee6c870e35fa931a000080850343e1feafa0bf15d38f7e79e0960c36ca74af4e1bbd8772a62255ee19276eb18e41ee70a34ea07c50fbe6802a3d60aa84e89c805ef7816a83cec793fbd9bf7e3ab1ac662ba02f", - "0xf87283b2ca22847735940782520894dc07c60993cf689438b8c85f86b0ed938dca77ea870e35fa931a000080850343e1feb0a01b9c81df7d9134acc80f5cf2e692968567b03e289b1f4df2c624062cfc2df9dca04b9e21222c3d4ed50ab082c0dae22a7cf9efd24543df952616f2cf503d414293", - "0xf87283b2ca23847735940782520894110ddc93db59ed31a03518510221ec2f35d28f2f870e35fa931a000080850343e1feb0a07f8ef8175043b631fedd9d72de45e96a693b778f73573f30b60b03fc6f8cb365a06608f3a89d7baf0e39b8e7813611282c0bd1de80c9fdb7c940b4be15db6b8e99", - "0xf87283b2ca24847735940782520894b599a876aaac824cfce21bdf15627c9fd8634c30870e35fa931a000080850343e1feb0a07edb8421bd20f16e534f6c29b76ba38afe29433f0c70de4ffeeea040009d0b5ca0483a80c5b85b48c721c1bc9662e966408cbc3844bfb40e6d839151c1dea3e54a", - "0xf87283b2ca25847735940782520894d36e5540dd71acbd6416d60252c4d7c34a3c8245870e35fa931a000080850343e1feafa0f78ac8bf770b81b2942ece8bbf94bcfb660c406bcdece24e5e5441bc8e81996aa0383441f7a3f938ebe2757974d594105781e9b3d215da60e4c2b224342840e224", - "0xf87283b2ca268477359407825208943adeca35af56206a74987a8fe13c669365c770cf870e35fa931a000080850343e1feb0a069d54c6d92b31245eeaab0cbdc3c0010dbc5f9ae9b94eee9a929f1ba606d9825a0596a765de29b8423c5b0645942482bf6b140d55ee32b85b1b25d08a665eb9068", - "0xf87183b2ca27847735940782520894d77b95acd12f7b4b5692b55717b7bbca11651954870e35fa931a000080850343e1feaf9fac6d65c95332569e9f9c64eb6b0721d7017d66dbf645227d57db01aba2903aa07ba9d73969e8cbd1bbb4907b0139a7d1967a130aa0b9d755988f7ee395c76f4a", - "0xf87283b2ca28847735940782520894f388bf5766b5ed5d4e1cbf15772e677dbfa80b00870e35fa931a000080850343e1feb0a0f641653544d7ecdef834e47d6b75c2864d1083c7f2410286d02ab50232c79ae9a0304f16db7e99d956da655f615b1b55a16b07b6f4abb49cec967e1f9a31d799a7", - "0xf87283b2ca2984773594078252089435d4996296e58560e6ef47787d51b55f1e2bd92a870e35fa931a000080850343e1feafa0b5501a2f3d9591fdad84883d3f7b1f863765f7c5cd1105812bcd925da581f999a052201608e0e780ef773cdd52722e00abb75bf62ed819dbe467905f1ecc34e69d", - "0xf87283b2ca2a847735940782520894a4c3b77b898e53d6095f11c53a1ce272cff9af31870e35fa931a000080850343e1feafa0c8522a33db78a306e1ba08e3d02d58644de3c057f02d4b09f8d71d5cd30924d3a05d639a640f163b13f5fda66a116ba6653dab2769fea6cf627d4f43506c7d6bdb", - "0xf87283b2ca2b8477359407825208946e84f6113fc1919714f0266705813fb81a17181f870e35fa931a000080850343e1feb0a03d7d83fe6c67520c038b7ab5e54e323b71238ead8d23be5d8ae3d2806176e412a05ab8c4a341fd1ff343b045d491ff58a02ec222866f762e2d753c7142678a345a", - "0xf87183b2ca2c847735940782520894e9ae1a806004e1452baae0493920815aadd84798870e35fa931a000080850343e1feb0a0bae01fbd421b4867be2703267d54589135e2befb91a85f4e60652084137f4e739fb11761069bf01930f2dc102a23f7c767d5cb463283c92c3236662a4be58b47", - "0xf87283b2ca2d847735940782520894fe1905d8ebd20e037274eef441283c811ea82c16870e35fa931a000080850343e1feafa039c42f2963bf66deca076d981a9851fc932d445f0528c70d544a3e5a3077b86ea0326ee1251bb86cc43aabe95653e6d188641e6f229d5e3abff8407dbb579b535a", - "0xf87283b2ca2e8477359407825208946adece88e477f53a143a4c29d97940df2ec768e0870e35fa931a000080850343e1feb0a018ae4840d3c615c217bb83a44cbc508209ea7fbf93f90302d6e5831847423e8da058ba46567d6d2051dbe2f936ad0ce69c682f0f9e3d5bf0d310cb7bf6819a71cf", - "0xf87283b2ca2f8477359407825208940d34d140a7376892c4593fcea3ae26f5d6f202d7870e35fa931a000080850343e1feafa07b923f2c17a76f1d22da7c562edcc008738c45570430e552e9c231572c3abbd2a0582cb8258df9f2688860892339e4bbd9742403853aeec78db0dee5a1d94af8b6", - "0xf87283b2ca30847735940782520894d1c7fa75b9bc55d041fcdf215f3e3a351c9f9edc870e35fa931a000080850343e1feb0a0781db8b5130b5ca1b60a0f4c62a402774d3e108e64e26aab31667537e345684fa046d10c31efaf6e6c4bb87a8a790bb5981760aa6e4da557b65d2c6b7d54a05351", - "0xf87283b2ca31847735940782520894418ebe350a8c6387bf5e42f3502742af8e0781f1870e35fa931a000080850343e1feb0a0d455c6bf7482003643ed2165fafdd3102b9fc95c838646c9ab05e4f997eb7500a05898d44175872173d320e0c1b8cbd79a23b0fbb4c6a6be3ad6f7922842703f10", - "0xf87283b2ca3284773594078252089484914d2770c711d27888c775c547b1d933b48c47870e35fa931a000080850343e1feb0a0bcf8de651d81fbfcd4d368173d74ba18c00ffe736abd9d08227efdb781bd9e79a060619e34c1d4f3451f988ec2b26c73b7998b13c22bb1a44dfcb29ea3e60e415c", - "0xf87283b2ca338477359407825208948f51e560b85edf2e653c689c4e9fac02ce0556b8870e35fa931a000080850343e1feafa0dec3a0ec938c81a3c352bd2f24e4385a5db10294975b00ea5084cfc1227de714a0518d2e5113cdea9cf38ed730995460dd8c27d530e50331579026ad647720704b", - "0xf87283b2ca34847735940782520894ee2503205c24dc66346e356f13f333fb8782d358870e35fa931a000080850343e1feafa01a777ef51abf54680c8e458a85f5272bc56a32049e7fb1b3f8c03d8c24bb8ef6a02607c211e587680030456b34c93a3dc9f337e7d72ba8cc4ef18f9efef823a793", - "0xf87283b2ca35847735940782520894096ba6c59bd667a0fea9a356bcc988e4d9f2d8eb870e35fa931a000080850343e1feafa01128eeb14e0284b587284ef9b6abc408414f271d9104f20b7f06df4e57b869c2a05f713934d3e343f12a345caa3e90f3e5fc66c5914cddabe120cce8a6e93eb4a7", - "0xf87283b2ca36847735940782520894da0adce4f1dc7debe7b2b52e8fe9ace6c7ea9c66870e35fa931a000080850343e1feafa0cd891d5f4085cf36554d2e3da56af2fcc6926af19c1730e5b0afb62369c0a11ea03c9fe6fa610de7047d066bdeb672cbd2914ccf191351af843c9c091e14e9f770", - "0xf87283b2ca37847735940782520894af7d412aeab7525c0541dc3aa6c1085cfb8c9099870e35fa931a000080850343e1feafa0e0ccc70c1ca5e04c94f1234850eddb05b085e1e01c4bd7c97ebb4863bda6b763a029bd2de58dffa4796119e6195ead233f275cc4ca4fc050bd1325900da650933e", - "0xf87283b2ca388477359407825208943cf8c0d567261eaf4ac0872d33a9f48af361769f870e35fa931a000080850343e1feb0a07af283307e8d1bf27baafbacf94196e55e047101052ac573e5fcc87e7eb6e2cea06f2b5b7a0bb6ebc78eadfed2b3c149e482759d7371959b75115f1f4db00e1fb7", - "0xf87283b2ca398477359407825208944779242587ba9e828999249eadd82984430f4843870e35fa931a000080850343e1feafa01214e6f99a7571b3e7ab860f162389fcc42a5cfd7ddfa52a2561339428c98074a03358448c69fbb0aacc21d69ea32c90efd3d23a51037a4268cc015eadf1bde318", - "0xf87283b2ca3a847735940782520894ea531cfe2de357ecff3855b88dbd07f60b03cdca870e35fa931a000080850343e1feb0a054f3fcdc61bcdb829789113e529a1c5d30c92b2316263c563d61c0e441190856a065f1a017a33f86fde74cca0b58c32b5a740cac2db10b1a8a340d24f4a79d8bd8", - "0xf87283b2ca3b847735940782520894d00b5f53ea2a66ad33c3fee304bb22857dfb8a87870e35fa931a000080850343e1feb0a073309bd39bcde633947c863113cd66959d849113c1c40326c4fd779e980ba868a0345025d2863c04212fd6d949e18b2456e2e732c74eb20da251863e241fbff1d7", - "0xf87283b2ca3c8477359407825208947ead29f6616f78f21a951c9686dd257be7b8efe4870e35fa931a000080850343e1feafa08ca2d7c5678210e30a304e650131dd19b2a9bce96979c1a548d78cb5e74dd851a05c3077cba3c44d8cd94c0b45f44eecc9d55ae4ec3d50663fd5623fcf24045bb9", - "0xf87283b2ca3d847735940782520894d503c13ee55c1ea128357d4018ec58d0d5e5c3db870e35fa931a000080850343e1feb0a068bdf5f3c8b9777e84ca44fc1ad973d25c876d43fbd0c49051bedb80372940eea00ed7951529740e7dcd348698c9c7fec08062f72b43f55e5fa46ffda1d4eeb6d1", - "0xf87283b2ca3e8477359407825208944ac670d8760faf780468638ef80034876ed8918d870e35fa931a000080850343e1feb0a043549d94f55bd35e7adf97af4c8f5032c510d9ee23aab159bd5f678627f6e8c7a02759974379335b215c72dcdebb2613d60b9355be0d2878792c3f7f979170963d", - "0xf87283b2ca3f84773594078252089424ffb8c97ce443f8d3265ba3316defcfc07c659c870e35fa931a000080850343e1feafa0f91a15f02f15dabc13f35460cd888caf70b56a373de0e796e00e870a1fe57ab5a024f0e6d0ebe5b0e4f67d65095a263320055ca23e711f6030dc5f47182458b4c6", - "0xf87283b2ca408477359407825208940c5cafc547ab98c9ceaa1c07fdd6bf7820aeb954870e35fa931a000080850343e1feafa0716afd885054db1ea6c6e6defbe66fb62ddc8fe993e8a6014104e252922e77d5a00f4818bab49844de73fe28887ec8881c6dd462924a8cb68ec30f819afdb2b487", - "0xf87283b2ca41847735940782520894db8d964741c53e55df9c2d4e9414c6c96482874e870e35fa931a000080850343e1feafa033b647be0c59bbaed1bb0f995007f86a7b650ad32ff5ae421e78a23624d4548aa044321613820305ab64ecbadaab1562f9dbd78ecfe9f366f3729d1c5b461b8a9f", - "0xf87283b2ca42847735940782520894ba85bb35ae6ff7a34745993fcf92b9afd34124f1870e35fa931a000080850343e1feafa0c3c3271016649caaac7df0e9a2543badc0ff1c5b9d9d8d6dd70faec8b450890ca005960b5204a2329f8d274cf7e457b095bc371d3851809fa651ce9c02063e2100", - "0xf87283b2ca4384773594078252089458871015f5a2d3948264f7c16ad194c80ffd531d870e35fa931a000080850343e1feafa062bc239f09834b88fc6c3ec9568b2a17dbb95f1750ce5da64d6ba2320aae6376a044367552953846b53137586f6183a15e86eebee779237d28e654c35cffbc952e", - "0xf87283b2ca448477359407825208942a90af45df70b0031f218cc122598ddf3e10469f870e35fa931a000080850343e1feafa05a42a11507d7a5562f0f59695da017cb9cc71c57c9c8aa1482189e989f1524a1a02c91dc11d04a6eea954accfdc785633c92ec18a964577f57e03a452c4f0a89db", - "0xf87283b2ca45847735940782520894761bbaaea6ceb265f5262c3b559adc2ad3ed2f09870e35fa931a000080850343e1feafa039d29e4590b51ff8cfec9d0e5f184c756e18d7607377cd117e454e81587ed888a04d5308a90dd4f5725caf97df20f60d6c838d32243e1ecd214ae7dc0b9e508b9c", - "0xf87283b2ca46847735940782520894dfe86f51c5e603f1420d1f0ab366bd3bfe23d2a7870e35fa931a000080850343e1feb0a04392ac4309de3f1de55af346511f8ec72767e0ca42b9a6a2e5e73725a3aa3b0ca0144158ec8215d503eb295a177f28e24586d1b0230330499fda0bf71df7b9c07f", - "0xf87283b2ca47847735940782520894d616547158b05ab5079106dc0336d72763a72871870e35fa931a000080850343e1feb0a0a7d58d7a5562ac985fb9bd3b1345be2cc82f91896ba0f56deb755945127c1093a00c973033cb96bdb63e065151a88f21a9ddb1b5aac28da09f0b6cb40b69b5beb0", - "0xf87283b2ca48847735940782520894dc68cd278cb7f5f666ce7b0a3a214a8540ed4dfa870e35fa931a000080850343e1feafa0ce9d683746ae919212073b51be72b5677274d7a5fffc75bbd38adb2a4bdb3cd8a06d33c96bcda7828f9a6bab6069ebbe9b591717b92eaf9b6d8a532043c78013e6", - "0xf87283b2ca4984773594078252089411f8107da05b6905e8cc0227ca3b0c6eb764fac0870e35fa931a000080850343e1feafa08b342274bbff60e2d3a2f580ac22a6f580a6e46cac0ae193af985c8321d77413a017390dd6aa0c2f3783592bb05f8c0e2d165fdb6e4519cd720e8d408ffdb8213b", - "0xf87283b2ca4a84773594078252089404da906545679850a7ee0ef6836e183031bedc88870e35fa931a000080850343e1feafa013ef4954ad7866e0d34d526acadcd276bc1d99b4a1402bf9d79eb5bc74211336a06d38c764c38e3a4f920a23e92b6b88cec93284788c95ecb4a52cf46d336b3b71", - "0xf87283b2ca4b8477359407825208948bdc25c43c010fd3db6281fcd8f7a0bed18838e3870e35fa931a000080850343e1feafa03947d852b7715cd3439339491143eb3608bcb66f55098dff59412c7dbd338b4ba06cf19ec280ee1bf31544107382afd721bae389dab865c91202e9ebb8130e1b52", - "0xf87183b2ca4c847735940782520894af16f746b8a834a383fd0597d941fee52b7791eb870e35fa931a000080850343e1feb0a0dd4b05f33647254a3fe524bb87b78f5d07f2da07d45c93a516c3596d11996f1b9f13486308ceb7a0a5d0d54d1f75fd673b8755439c9e6987b495081aa2e1a043", - "0xf87283b2ca4d8477359407825208940c5c736600f8ea58ccb89aa72e3f3634651fd551870e35fa931a000080850343e1feafa02bedac70c35bfcd2e311b60730926d942d567eab0d3fce68c60a551d3951f56ea016e3100ee3ebf179ea3253bcb493883a0b124db18df108c3eab6a5fef90abb5b", - "0xf87283b2ca4e8477359407825208946f475e0f0e9eda58556fddc04de9b1a9b6a4cfb4870e35fa931a000080850343e1feafa0eef87d4e6b018e4a38b649b15ecda079cca7957cb4d3863e01ca61ded09a76a2a028f6458e7755aeeba2c21104a0605dfb94cadbd9c8e4f1f9b971201f5fd925f2", - "0xf87283b2ca4f8477359407825208949b2e76498a695c4dc7d0890069cffa84a9581d24870e35fa931a000080850343e1feafa0c3255cc7aef487e5ab9d931a259b831e2fd74f8a23ef523b87b17e20a00a80e6a07ecdf24edf74b2d7bb9ba74c6124320c1c673480dbc3897a1838a7486bfbe624", - "0xf87283b2ca50847735940782520894e2d2b2069f4a54fcc171223ff0c17adbd743c285870e35fa931a000080850343e1feafa0227ed6dfc5bf27ffc152d145c64fa108b964d56e9b3c118d3dc6c2909344e6e4a0633a165999e15ec506cf89063338f9857180bb8c163d252233b4306996240ea7", - "0xf87283b2ca51847735940782520894386bd49f04322544f3c7178fa5ae1a24b947b454870e35fa931a000080850343e1feb0a082d510950cc6246f7fc969e92def81b18d63d6b547a99ebc30e4897ab3342724a01dce6f14dbeb5b3bedc273ab9e244f62fa7df2bcf518a85ec1b6544f18244fcf", - "0xf87183b2ca5284773594078252089400af839c3fc067fafc2e0a205858d6957f0dd18d870e35fa931a000080850343e1feb0a0908e55d774b8264736b283d848bb2f799c71a1cfbb1dddb304dad8eefc4685389f6a1da60e6fc82ae4713c84ba99e8bfbafb35191c4563ba64af5fd0ce002d50", - "0xf87283b2ca53847735940782520894ebb6d32a650afa9221b55a11c6a6de52b6f07cd7870e35fa931a000080850343e1feafa06c35791de05fe59e5a94fb3e981b0c4b095927535fb41b01209b4ed85a611676a050b7eaedd0c887c86f23419e192c9d077e3d97fdf01d3ff8808cd41acd84f41e", - "0xf87283b2ca54847735940782520894011d26a3a9adc9203c8943a6a77aa8657af52420870e35fa931a000080850343e1feb0a0be0a8e72b046c792992f2954e3386b29891f38302d55b0677bc8e953076aaa5ba03a41c430059e43b0db1a4f86e647b100d455b8d2a9691bbf22b609a4caaa2866", - "0xf87283b2ca558477359407825208949c85bc61a89fb5abd957e6c819c653fc1aa0d11b870e35fa931a000080850343e1feb0a0c93b731af016e9f08877512ae4d07ab8befd333c0736373fe68916b3045a3f5ca055caed9ee7e794c05f4d36bc6b75a617120f5de9d16243c6760fc97b7feff1df", - "0xf87283b2ca56847735940782520894bd8e8435b7897d87cf7cedb5cf8c5dd865dbf720870e35fa931a000080850343e1feafa044276922dcd7957054e067ae806a4e7d2b430bb307c7b845a2f5133a5fdb8c7ba00cef595bce18815b382533b9e4c8a3fa1473e5354baad59300e4a9b5f4d41bd1", - "0xf87283b2ca57847735940782520894adebee2e3ff041078b62380d001c6e51b4f15598870e35fa931a000080850343e1feb0a0551e6ca15c83a2680873aeb33fccf1337666d6a420c91a02648c2192cfac5fb0a007c9af16b3893662c63da9569eb79d53d7dd38ea4c316fc413e708cc0aea5adb", - "0xf87283b2ca5884773594078252089471e94c459c9f05085fc0d34b5f21e648e05dc6b3870e35fa931a000080850343e1feafa0fa835fb15e28a55143f8ed2dfb179841126abaff9afcfedfa593b8bd506a6789a03fe24cfd2c20f9dc571ad90950d9af214fc310799503210a141cf48b5859b3ff", - "0xf87283b2ca598477359407825208947c1fe317db82c9298b87c56c3194178271b621e1870e35fa931a000080850343e1feb0a0cf5b615d8d2233efcb152127ca8f940f8724184c5f2326077f297d91efc63fada0053c796c6c330530c0a04afbaab7ac72825ccfa74f74ca5b86d0546d19ee7b0c", - "0xf87283b2ca5a847735940782520894e069d1c9abf5127bdc3a164fb93b96bfa9f74ce0870e35fa931a000080850343e1feafa0ac4eb8d4437ac45d2a2673654b0b9a69c31917d1a09be66dee2010bac2cd128aa019b3dcda289a8d7ab95d573987e4197cb89645bf2f4bbfb95dfffd8890554628", - "0xf87283b2ca5b847735940782520894b9bbddd1eb6ef8fb1bdc6a853d5ad7486a9487dd870e35fa931a000080850343e1feb0a011e089873bcde117d4c4bbfc057f64275e18ab6e75175fc90c20693de7f0549ea03682fbbcb36ef87a033aa4d183c5716f5bdbe74fa04ff73c96817269683a014a", - "0xf87283b2ca5c847735940782520894a804387cdaf986d45831e8074efb2115af053f7a870e35fa931a000080850343e1feb0a044728ef6764e6d1d561979aac58024077406aeefebfc3e4fe103127c3793bfada057fd99cfa269c6ce10f97dffb575f38bd0d1d1970ef19648c5ede04c817a7986", - "0xf87283b2ca5d847735940782520894f23501d784a041fc911b4c86c2bfb1f63ec170ea870e35fa931a000080850343e1feb0a0bf2fd5822fac3c756284e07e487f7aa0e25f2aae051f6966bf1723d9aff4d713a07faac8a1050efbf9c1b7f061ce90abeddedf9d7f59f13f29702861470f6310c4", - "0xf87283b2ca5e8477359407825208943928be2a7058088313c0fb3294014e88a3c5ed4a870e35fa931a000080850343e1feb0a07073b1c53c64d977f43e5045f136aa22766664f5029c51d0f9f6e9562ade0056a017b0fa41efdcf364b40b65f09a00ee97e491a318844c62bc984fb17899f84daa", - "0xf87283b2ca5f847735940782520894196aa07204141478459c14106ef5e5282efe9957870e35fa931a000080850343e1feafa0dc23d116f1dc7833274484bcb750f8fde476d0f65980d2fb65ef422a2db6b342a0022af2882c4da8ea6e7439744c79f560fe47b5dacc6acf0e490859ebd6e7f90a", - "0xf87283b2ca60847735940782520894763cbf89560e2da270000822abda9584db693fa3870e35fa931a000080850343e1feb0a0cbd30950702cdd8fd9a2b6f3032107190402aeacded447d9e4ddca0be8f4a0a2a0327a730029720e5d40d64e59d6583ac054d22c9a54f3efbb8c4ae800c5f65b36", - "0xf87283b2ca618477359407825208947feaea0ff70ffc9eec2104f57f7136aff4dea680870e35fa931a000080850343e1feb0a077c86f7c3d82fe0b45c9468170fc7b9d31b29d6ab5d971be78eb9a58e9b3d14da0782285c77fa8ebc436d8b397a30f1a8a9169c9abf7df6a09d11546a66205ed5d", - "0xf87283b2ca62847735940782520894e5466aacd9dd6d3bb35060a1ccc76a438de88ca1870e35fa931a000080850343e1feb0a0ab09d576a36d217d08cc8eda52b35d510d6b834c32522ef99b55b76d9c8b8981a0758a5f42f92a59fe0fb0307f93418208cfb1267e348985172d62732739f84b2c", - "0xf87283b2ca63847735940782520894f670980415cfe8c4f8d10645ecf974c9a2fea00e870e35fa931a000080850343e1feafa04e6478a23686f9b3de241b2b9f55245db83c250588e26ad58345b29c39bbbd27a07436fe4148f284697f14e7896653f85aa86c4823dae35a09f55d7bbaa9f8d335", - "0xf87283b2ca64847735940782520894a29115bce7829ffdd989b7cf1bdd1eac06a2cb36870e35fa931a000080850343e1feb0a049373772d3078c96956c11a57a64406eaa8db802d9ff43d53ba9245a54729ad8a02f0379117dcf2a472b70aaa032fa6eeceaadee1573bc68bdfdb456238e2b25c4", - "0xf87283b2ca658477359407825208948f528aa67dc1846c893465fa1c8c26556bc5fe19870e35fa931a000080850343e1feb0a04a9206b2c7283b48c9eeac91626b8ecfcdd75954244771029635f4dab641ef83a013bd39a1bee8a2c22d41fd6d6f1d840c32ef000f2dad466014177e5d0263e866", - "0xf87283b2ca668477359407825208944dc4ec6ac43c8c45777292db987203c0248e17b7870e35fa931a000080850343e1feb0a0bdac2f6689e71fd20c81ab3ed3eb589481faded73989c5ee3b301abdf0df4b53a0578183bf6312dfe8b2719108accbb232f8e51483b25dfd7d3ecd1c610439956c", - "0xf87283b2ca678477359407825208940d2f39f251cb547cba567a31e5e9f93c19dffa85870e35fa931a000080850343e1feafa0f30cc48dba1051f2fd9819c4b02eece9570f10d41ae8b452aad94f5c42b82576a06426cf9fbfd3773ef5f393028b15eed015a6706e31f0240ca17c19b2351e7414", - "0xf87283b2ca688477359407825208949eb31fb94ce5111e2a04cb9d156b513887ccbd00870e35fa931a000080850343e1feafa0d9f46a2689133b09f2a2ea0ee95d1ef5aba6b1f5c004d6920e21a3b90341e065a050a5e2b5684ea9970890351a7a15677fc08aa9a5d00003a5c452c6662cd42852", - "0xf87283b2ca6984773594078252089404b88ef83f8c41b1465d360a1e82f07ae190892a870e35fa931a000080850343e1feafa051958bd1fe58327a52aa6a82e58821d55402f482b97328c60c4cfe01b8e36b3fa0539cd419d4cdd5c7c629820dfe8b71eb58ae568524e97b91a24731e521d2111b", - "0xf87283b2ca6a847735940782520894af23e04b04fbe15630eadd32a6f27a5a65ea554a870e35fa931a000080850343e1feafa0381d17559d00a1b6325c610bddfc9bd062f1b12057ded89955ab7ed5cccd4d09a010fd329e705cd269278c9b5cde9b779ecaa8e358a337f8add40ecfbd75dc4499", - "0xf87283b2ca6b847735940782520894746cdff371e3f1e905b3ac52280078bac2dec7dd870e35fa931a000080850343e1feafa0759d0869520d18b5358f314e05b69b1a90a326187da6a8008063d1432f5ffb22a0245f02da5d9697a34e53c312886257805f2b3bdfd840dc96322cb81e35823659", - "0xf87283b2ca6c847735940782520894c33e5155bdbf1a0a7ceb1b80f8586c5cda5c3781870e35fa931a000080850343e1feafa0c252b122d4a06b7aaf7bf78cd11f4e1399f7b250c1d865582e9e08e4bd9105dea015b154437cb829de566ba07b719034333ac218d9854e4389f8ba2046bec844ea", - "0xf87283b2ca6d847735940782520894e7fdef5f5219068f3d0f88a7445005574c662798870e35fa931a000080850343e1feafa0eda15bdec45215a52b664c11159ef2beaa944690a8f79717ac0ed1f0035f829ca07529a85f7eb5bd384bbb3b4d65542c49da763e1f897cab7a45cc6a47645b8673", - "0xf87283b2ca6e847735940782520894f0a81a63c5e09b0bd08e027de48058e377d3732d870e35fa931a000080850343e1feafa00bbf6ac00d963d190c05442699a841f9c80ec9945931e6adbe253354c99a1182a050e0fd4171c350df604d418a7e4837e7b8796ba7429fe32f436a21bccb645187", - "0xf87283b2ca6f8477359407825208949878ab34dc3b4a63c80fdb733491472c11d59a56870e35fa931a000080850343e1feb0a048e27126c94bbbc5405cc8375e1b7ad465c27d6c0bd76cb92d33d4040b22eb70a07f2c95cf62ea907537fda9c7b4f50478b0bd589af000a8040d579a170396915b", - "0xf87283b2ca70847735940782520894912859bebae3086ac7a062dee5d68aa8ed2d71ec870e35fa931a000080850343e1feb0a0295f18dad24c898d1bfb52a5ebc66cf9969f51a93466af8f58f5f40bb39f7e71a00ebec2985dfe0273b9efe27b62a40d1b09c9b34d15d79e57ba410f9465020c1a", - "0xf87283b2ca718477359407825208945a0b737ed85049410e5ea61f444d07d5c8c0359f870e35fa931a000080850343e1feafa04d86fff68888228429ec758044b01c250d411adb6deb1b0037ea8a82a72c2c69a0327aa62e850c6e885d0400921ce640bf774d5dfaec47cb6591c6f052b06ac168", - "0xf87283b2ca72847735940782520894305a5dfd46e6128abce28c03b3ad971f4e4915ff870e35fa931a000080850343e1feb0a02e8f17f15ac2086ab70089d77b903b123b868bac1b3cec813f676f77e31f24aba06cb86cccf93c88eaeb1494896a199741aa20bd479f63e23df92301af6d812996", - "0x03f89a8501a1f0ff4682775084773594008504a817c8008252089445fd980a780887e4fc4ae9f8d042d112d0802ac28080c08504a817c800e1a0015c8bc10440f3b13981c8eca320a2592d8af8fb6aa30a2b48dab94992d3f0eb01a0312cb2215fdc073c3861315c54aa152f685e45df0921003867bad8bee65aa107a05b49e2208d9e902d649c218d388ef46f1deb8dae206c7b6d719bff35dd53c023", - "0x03f89a8501a1f0ff4682765184773594008504a817c80082520894807381ff50bf094ed69ce4e16d393a63af21d8428080c08504a817c800e1a0012084b96d7bdc4d3f8fc1689150593e498063b67fdcc8028bb0191c6d521abb01a0fd9b96ec6f6eb1e24eacaf9e0c69faa87a3c6d72349a7566d226c575b0faf4a4a04b493a211a7b6e46889876ad198212960148dc8e0af2b7a745941d49a60934c0" - ], - "withdrawals": [ - { - "index": "3969157", - "validator_index": "2760", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "2598" - }, - { - "index": "3969158", - "validator_index": "2761", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969159", - "validator_index": "2768", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969160", - "validator_index": "2784", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969161", - "validator_index": "2786", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969162", - "validator_index": "2787", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969163", - "validator_index": "2794", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969164", - "validator_index": "2798", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969165", - "validator_index": "2811", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969166", - "validator_index": "2813", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969167", - "validator_index": "2827", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969168", - "validator_index": "2841", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969169", - "validator_index": "2845", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969170", - "validator_index": "2710", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969171", - "validator_index": "2724", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - }, - { - "index": "3969172", - "validator_index": "2738", - "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", - "amount": "1299" - } - ], - "blob_gas_used": "262144", - "excess_blob_gas": "46399488" -} diff --git a/utils/utils_test.go b/utils/utils_test.go index 5413be2..d5317e3 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -2,19 +2,17 @@ package utils import ( "fmt" + "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/electra" "github.com/golang/snappy" "io/ioutil" "net/http" - "os" "testing" "github.com/attestantio/go-builder-client/api" "github.com/attestantio/go-eth2-client/spec" - "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/stretchr/testify/require" ) @@ -154,38 +152,52 @@ func TestHexToSignature(t *testing.T) { } func TestComputeHash(t *testing.T) { - t.Run("Should compute bellatrix hash", func(t *testing.T) { - jsonFile, err := os.Open("../testdata/executionpayload/bellatrix-case0.json") - require.NoError(t, err) - defer jsonFile.Close() + t.Run("compute bellatrix block hash", func(t *testing.T) { + body := func() (body bellatrix.BeaconBlockBody) { + contentURL := mainnetTests + "bellatrix/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" + compressedData, err := downloadFile(contentURL) + require.NoError(t, err) + decompressedData, err := snappy.Decode(nil, compressedData) + require.NoError(t, err) + err = body.UnmarshalSSZ(decompressedData) + require.NoError(t, err) + return + }() - payload := new(bellatrix.ExecutionPayload) - require.NoError(t, DecodeJSON(jsonFile, payload)) versionedPayload := &api.VersionedExecutionPayload{ Version: spec.DataVersionBellatrix, - Bellatrix: payload, + Bellatrix: body.ExecutionPayload, } hash, err := ComputeBlockHash(versionedPayload, nil) require.NoError(t, err) - require.Equal(t, "0x6662fb418aa7b5c5c80e2e8bc87be48db82e799c4704368d34ddeb3b12549655", hash.String()) + expectedHash, err := versionedPayload.BlockHash() + require.NoError(t, err) + require.Equal(t, expectedHash, hash) }) - t.Run("Should compute capella hash", func(t *testing.T) { - jsonFile, err := os.Open("../testdata/executionpayload/capella-case0.json") - require.NoError(t, err) - defer jsonFile.Close() + t.Run("compute capella block hash", func(t *testing.T) { + body := func() (body capella.BeaconBlockBody) { + contentURL := mainnetTests + "capella/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" + compressedData, err := downloadFile(contentURL) + require.NoError(t, err) + decompressedData, err := snappy.Decode(nil, compressedData) + require.NoError(t, err) + err = body.UnmarshalSSZ(decompressedData) + require.NoError(t, err) + return + }() - payload := new(capella.ExecutionPayload) - require.NoError(t, DecodeJSON(jsonFile, payload)) versionedPayload := &api.VersionedExecutionPayload{ Version: spec.DataVersionCapella, - Capella: payload, + Capella: body.ExecutionPayload, } hash, err := ComputeBlockHash(versionedPayload, nil) require.NoError(t, err) - require.Equal(t, "0x08751ea2076d3ecc606231495a90ba91a66a9b8fb1a2b76c333f1957a1c667c3", hash.String()) + expectedHash, err := versionedPayload.BlockHash() + require.NoError(t, err) + require.Equal(t, expectedHash, hash) }) t.Run("compute deneb block hash", func(t *testing.T) { @@ -236,24 +248,6 @@ func TestComputeHash(t *testing.T) { require.Equal(t, expectedHash, hash) }) - t.Run("Should compute deneb hash", func(t *testing.T) { - jsonFile, err := os.Open("../testdata/executionpayload/deneb-case0.json") - require.NoError(t, err) - defer jsonFile.Close() - - payload := new(deneb.ExecutionPayload) - require.NoError(t, DecodeJSON(jsonFile, payload)) - versionedPayload := &api.VersionedExecutionPayload{ - Version: spec.DataVersionDeneb, - Deneb: payload, - } - h, _ := HexToHash("0xa119064ee9c03e2c7ad5821b6077606c64f36542eda12ed61a1edc5f898a17fc") - r := phase0.Root(h) - hash, err := ComputeBlockHash(versionedPayload, &r) - require.NoError(t, err) - require.Equal(t, "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", hash.String()) - }) - t.Run("Should error on unknown version", func(t *testing.T) { payload := new(capella.ExecutionPayload) versionedPayload := &api.VersionedExecutionPayload{ From f3154498ceaa2022a3c70b0a2a6964167546d79b Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 17 May 2024 10:52:26 +0300 Subject: [PATCH 16/32] Temporarily use jtraglia's go-eth2-client --- go.mod | 3 +++ go.sum | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 25116bc..598ac23 100644 --- a/go.mod +++ b/go.mod @@ -80,3 +80,6 @@ require ( // This version points to Lightclient's prague-devnet-0 branch. replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c + +// Temporary replacement until Jim merges https://github.com/attestantio/go-eth2-client/pull/141 +replace github.com/attestantio/go-eth2-client => github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 diff --git a/go.sum b/go.sum index d979e5e..33aa93c 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,6 @@ github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bw github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= -github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 h1:gwMEOhFdbmCJy5olyRtGPmM4RoIXo6v2HkbKt7YpPr4= -github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16/go.mod h1:Ht9tN0WlhpgIWWO7Hqfi3/nq2rUGQv/zCd/BMI93a84= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= @@ -104,6 +102,8 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= +github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 h1:HH8D9fL6hkOsyRDpWhw4yYvZrMReyWf9WSWaMQt0Jjw= +github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= From 4e05fe727c9ddf46f022f146c31a5418cc127fce Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Fri, 17 May 2024 15:14:05 +0300 Subject: [PATCH 17/32] Use new go-eth2-client --- go.mod | 5 +---- go.sum | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 598ac23..3ff0ba9 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 - github.com/attestantio/go-eth2-client v0.21.4-0.20240508205406-66fbb02e3c16 + github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.13.14 github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb @@ -80,6 +80,3 @@ require ( // This version points to Lightclient's prague-devnet-0 branch. replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c - -// Temporary replacement until Jim merges https://github.com/attestantio/go-eth2-client/pull/141 -replace github.com/attestantio/go-eth2-client => github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 diff --git a/go.sum b/go.sum index 33aa93c..2c82799 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bw github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= +github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 h1:3HjnisE8nFHBhf20H4ya9Q+4HvX1bbV8lCM6LJLLcg0= +github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= From 647025326142c86fa9d3a1d18c7b5b576efa5ded Mon Sep 17 00:00:00 2001 From: avalonche Date: Tue, 6 Aug 2024 10:29:58 +1000 Subject: [PATCH 18/32] update deps --- go.mod | 10 +++++----- go.sum | 22 ++++++++++------------ utils/utils.go | 20 ++++++++++---------- utils/utils_test.go | 10 +++++----- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/go.mod b/go.mod index 3ff0ba9..20af7be 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/flashbots/go-boost-utils go 1.21 require ( - github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 - github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 + github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 + github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.13.14 github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb @@ -66,11 +66,11 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect - golang.org/x/crypto v0.22.0 // indirect + golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 2c82799..ce1aab7 100644 --- a/go.sum +++ b/go.sum @@ -4,10 +4,10 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= -github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24 h1:KXWQwsxrrJD1G7rp+18uESZ0BSPmUdady46iAfCgwDY= -github.com/attestantio/go-builder-client v0.4.6-0.20240508205504-2210689d2f24/go.mod h1:bs7HF4beRWCjcvKsHH8nEl3aDzrTqeUjXOfqpfrYTJQ= -github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55 h1:3HjnisE8nFHBhf20H4ya9Q+4HvX1bbV8lCM6LJLLcg0= -github.com/attestantio/go-eth2-client v0.21.4-0.20240517101940-c13fd7112c55/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= +github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 h1:jJXtY57BeRnwBuEO1VuSUA8lXyG/p91+6pTJissw/Io= +github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024/go.mod h1:jkCVVMh1l98Vor3JYAAj2Ru+oFwfuZN/UjXw83gI86U= +github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 h1:4eDRCMSJU+iMwL5I2cYdwha1So20xBG8xD557o5TlD4= +github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= @@ -104,8 +104,6 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= -github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532 h1:HH8D9fL6hkOsyRDpWhw4yYvZrMReyWf9WSWaMQt0Jjw= -github.com/jtraglia/go-eth2-client v0.21.4-0.20240517074005-afe509204532/go.mod h1:RssbJ8txdfZ+O7cIjOKCvizcTWHzgPuJNByrwtQ6tBQ= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= @@ -195,8 +193,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -234,13 +232,13 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/utils/utils.go b/utils/utils.go index f10e5cb..f1ab71c 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -273,7 +273,7 @@ func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra. return nil, fmt.Errorf("failed to derive withdrawals root: %w", err) } - depositReceiptsRoot, err := deriveDepositReceiptsRoot(payload.DepositReceipts) + depositRequestsRoot, err := deriveDepositRequestsRoot(payload.DepositRequests) if err != nil { return nil, fmt.Errorf("failed to derive deposit receipts root: %w", err) } @@ -301,7 +301,7 @@ func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra. WithdrawalsRoot: wdRoot, BlobGasUsed: payload.BlobGasUsed, ExcessBlobGas: payload.ExcessBlobGas, - DepositReceiptsRoot: depositReceiptsRoot, + DepositRequestsRoot: depositRequestsRoot, WithdrawalRequestsRoot: withdrawalRequestsRoot, }, nil } @@ -324,17 +324,17 @@ func deriveWithdrawalsRoot(withdrawals []*capella.Withdrawal) (phase0.Root, erro return wdRoot, nil } -func deriveDepositReceiptsRoot(depositReceipts []*electra.DepositReceipt) (phase0.Root, error) { - drs := utilelectra.DepositReceipts{DepositReceipts: depositReceipts} - depositReceiptsRoot, err := drs.HashTreeRoot() +func deriveDepositRequestsRoot(depositRequests []*electra.DepositRequest) (phase0.Root, error) { + drs := utilelectra.DepositRequests{DepositRequests: depositRequests} + depositRequestsRoot, err := drs.HashTreeRoot() if err != nil { return phase0.Root{}, err } - return depositReceiptsRoot, nil + return depositRequestsRoot, nil } -func deriveWithdrawalRequestsRoot(withdrawalRequests []*electra.ExecutionLayerWithdrawalRequest) (phase0.Root, error) { - wrs := utilelectra.ExecutionPayloadWithdrawalRequests{WithdrawalRequests: withdrawalRequests} +func deriveWithdrawalRequestsRoot(withdrawalRequests []*electra.WithdrawalRequest) (phase0.Root, error) { + wrs := utilelectra.WithdrawalRequests{WithdrawalRequests: withdrawalRequests} withdrawalRequestsRoot, err := wrs.HashTreeRoot() if err != nil { return phase0.Root{}, err @@ -474,7 +474,7 @@ func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, par } baseFeePerGas := payload.BaseFeePerGas.ToBig() withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) - requestsHash := deriveRequestsHash(payload.DepositReceipts, payload.WithdrawalRequests) + requestsHash := deriveRequestsHash(payload.DepositRequests, payload.WithdrawalRequests) var beaconRootHash *common.Hash if parentBeaconRoot != nil { root := common.Hash(*parentBeaconRoot) @@ -530,7 +530,7 @@ func deriveWithdrawalsHash(withdrawals []*capella.Withdrawal) common.Hash { return types.DeriveSha(types.Withdrawals(withdrawalData), trie.NewStackTrie(nil)) } -func deriveRequestsHash(depositRequests []*electra.DepositReceipt, withdrawalRequests []*electra.ExecutionLayerWithdrawalRequest) common.Hash { +func deriveRequestsHash(depositRequests []*electra.DepositRequest, withdrawalRequests []*electra.WithdrawalRequest) common.Hash { deposits := make(types.Deposits, len(depositRequests)) for i, e := range depositRequests { deposits[i] = &types.Deposit{ diff --git a/utils/utils_test.go b/utils/utils_test.go index d5317e3..a327431 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -2,17 +2,17 @@ package utils import ( "fmt" - "github.com/attestantio/go-eth2-client/spec/bellatrix" - "github.com/attestantio/go-eth2-client/spec/electra" - "github.com/golang/snappy" - "io/ioutil" + "io" "net/http" "testing" "github.com/attestantio/go-builder-client/api" "github.com/attestantio/go-eth2-client/spec" + "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" + "github.com/attestantio/go-eth2-client/spec/electra" + "github.com/golang/snappy" "github.com/stretchr/testify/require" ) @@ -35,7 +35,7 @@ func downloadFile(url string) ([]byte, error) { return nil, fmt.Errorf("failed to download file: %s", resp.Status) } - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } From e9a5319ff9ad5606a57f33ac99ae9bbe9229194c Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 13:50:05 -0500 Subject: [PATCH 19/32] Start to make changes for v1.5.0-alpha.6 --- .golangci.yaml | 2 + go.mod | 8 +- go.sum | 8 +- testdata/executionpayload/README.md | 1 + .../executionpayload/bellatrix-case0.json | 18 ++ testdata/executionpayload/capella-case0.json | 133 +++++++++++ testdata/executionpayload/deneb-case0.json | 219 ++++++++++++++++++ utils/utils.go | 143 +----------- utils/utils_test.go | 132 +++-------- 9 files changed, 415 insertions(+), 249 deletions(-) create mode 100644 testdata/executionpayload/README.md create mode 100644 testdata/executionpayload/bellatrix-case0.json create mode 100644 testdata/executionpayload/capella-case0.json create mode 100644 testdata/executionpayload/deneb-case0.json diff --git a/.golangci.yaml b/.golangci.yaml index 0e55a66..c25dd9a 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -52,3 +52,5 @@ linters-settings: gomoddirectives: replace-allow-list: - github.com/ethereum/go-ethereum + - github.com/attestantio/go-builder-client + - github.com/attestantio/go-eth2-client diff --git a/go.mod b/go.mod index 20af7be..6996d2d 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,6 @@ require ( github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.13.14 - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb github.com/stretchr/testify v1.8.4 github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c ) @@ -39,6 +38,7 @@ require ( github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/holiman/uint256 v1.2.4 // indirect github.com/klauspost/compress v1.15.15 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect @@ -80,3 +80,9 @@ require ( // This version points to Lightclient's prague-devnet-0 branch. replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c + +// Remove this when Jim merges pk910's PR. +replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca + +// Remove this when Jim merge's jtraglia's PR. +replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 diff --git a/go.sum b/go.sum index ce1aab7..994feb5 100644 --- a/go.sum +++ b/go.sum @@ -4,10 +4,6 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= -github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 h1:jJXtY57BeRnwBuEO1VuSUA8lXyG/p91+6pTJissw/Io= -github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024/go.mod h1:jkCVVMh1l98Vor3JYAAj2Ru+oFwfuZN/UjXw83gI86U= -github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 h1:4eDRCMSJU+iMwL5I2cYdwha1So20xBG8xD557o5TlD4= -github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= @@ -104,6 +100,8 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= +github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 h1:1W/Cz544b7FmjTn/5dB8obNDAFuRdRsywWJgOmxz5mU= +github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5/go.mod h1:lPd6wgiraLD0umFeiCjYaqoMLeU2b3dMATOJ9B/jnIA= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= @@ -152,6 +150,8 @@ github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca h1:rc6VVR79GdE58Wx1Arh9QNo+0qmXOfYjWQhrbkSeoI0= +github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/testdata/executionpayload/README.md b/testdata/executionpayload/README.md new file mode 100644 index 0000000..0917a81 --- /dev/null +++ b/testdata/executionpayload/README.md @@ -0,0 +1 @@ +https://github.com/ethereum/consensus-spec-tests/tree/master/tests/mainnet/bellatrix/ssz_static/ExecutionPayload/ssz_random \ No newline at end of file diff --git a/testdata/executionpayload/bellatrix-case0.json b/testdata/executionpayload/bellatrix-case0.json new file mode 100644 index 0000000..faaf9cf --- /dev/null +++ b/testdata/executionpayload/bellatrix-case0.json @@ -0,0 +1,18 @@ +{ + "parent_hash": "0x89236ba32cb76b3f17cbba7620d956d561a08a42a22145bb5705099ed94eaddf", + "fee_recipient": "0x0000000000000000000000000000000000000000", + "state_root": "0x44f451f33692bc78735f7836ad9c25761ba15609155e7bfcb38ded400d95d500", + "receipts_root": "0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2", + "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "prev_randao": "0x0000000000000000000000000000000000000000000000000000000000000000", + "block_number": "11", + "gas_limit": "4707788", + "gas_used": "21000", + "timestamp": "9155", + "extra_data": "0x", + "base_fee_per_gas": "233138867", + "block_hash": "0x6662fb418aa7b5c5c80e2e8bc87be48db82e799c4704368d34ddeb3b12549655", + "transactions": [ + "0xf8670a843b9aca008252089400000000000000000000000000000000000000008203e880820a95a0ee3d06deddd2465aaa24bac5d329d3c40571c156c18d35c09a7c1daef2e95755a063e676889bbbdd27ab4e798b570f14ed8db32e4be22db15ab9f869c353b21f19" + ] +} \ No newline at end of file diff --git a/testdata/executionpayload/capella-case0.json b/testdata/executionpayload/capella-case0.json new file mode 100644 index 0000000..1617e6d --- /dev/null +++ b/testdata/executionpayload/capella-case0.json @@ -0,0 +1,133 @@ +{ + "parent_hash": "0x40d276c614b86013c95bbe59698628940b6c62ef63d50a528c24e9eaab591198", + "fee_recipient": "0x13cb6ae34a13a0977f4d7101ebc24b87bb23f0d5", + "state_root": "0x0e5a097fa89d985392014b37b23e7f69286ed8dc8c06e2e55dada849d331c2e1", + "receipts_root": "0x1ddeeef0faf8c796762027d9ac55de825894985b18d6640cac1cc29041d50b7d", + "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "prev_randao": "0xf5af8152556568891bc536bdd0ccfa2e37b7c951dd57af0e9f8bd552b7426c53", + "block_number": "139225", + "gas_limit": "30000000", + "gas_used": "551506", + "timestamp": "1677021756", + "extra_data": "0x496c6c756d696e61746520446d6f63726174697a6520447374726962757465", + "base_fee_per_gas": "7", + "block_hash": "0x08751ea2076d3ecc606231495a90ba91a66a9b8fb1a2b76c333f1957a1c667c3", + "transactions": [ + "0xf875821054851010b87200830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f26fc10000841998aeef8328d3b9a0ac092d4e961e6382b8b3a80e60b4d55a52157ebda53a9183326f4dc3f1d1302ea062e966f7c072a22699fff9eaffe4893fa41d1fb72cd9382fc43fb083d299d8a7", + "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3b9a03cb8c728f77b35a07507b70aa922b6e31bae0fc870b0de7fba0d50dc6eb9ceefa0513ea444fb4133e923fc530c3a34a3de84623fa1a860761b2275e94a4801d757", + "0xf875821054850ee6b28000830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f399c6f200841998aeef8328d3baa005822bca0d7104540eae5db2b6b1c6269bca65510f44f769b2a9a1458be6397da04ea1f2d874c9effa336099ae5f2bd626887675a5ce9fb8847ecc2722131a0130", + "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3baa07925e78c3ac04877525a917beee6e24128356a63f3cd7c6ec221771cb405be8da05be8386defe14eef922fbba7c949f6404882a0d123e467ff11a55d6a9e4c18c1", + "0xf875821054850eab17b600830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f3d561bc00841998aeef8328d3b9a0cd6b92b536ec40391285420feb8248bc129b80345a9ba19fc33f5653823a7706a0646f8ce3664772820240cabd6f6f9c1248e3017fdf4d5c5fb72763e61f78d446", + "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3baa05bf1ba6fac6f621ec8528d3f6b5abbae72e3f9c8a212ddaad551f29427c30a49a05a33b94218db9e44ffbdf068d63be62475719a0029dcd652437344608d583d04", + "0xf875821054850e6f7cec00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f410fc8600841998aeef8328d3baa00358efcdf94fee3b7736a1acde54bdaba1dcde70d028acb26e8a658a3a4e8395a00a24ea2c5d9f398ff9747e43c896096ea770fb9ecd09c0979229198cd08dbde8", + "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3b9a0d03940e5d6f837663e31647492cbdb78d6682838d88522f939c8f67737ff435fa07747a35e473163a7fa8ddeae5a1c04b7ff93881170940758dc2e09eb4a704d4e", + "0xf875821054850e33e22200830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f44c975000841998aeef8328d3baa070381fcd0adb9c49e68fe861c7badc5d644d7140db3e2235b61e22eb9a023e1ba02fe84ed44efd953759c6c4892077acc571a8798d0afe84552e70be2298e717bb", + "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3b9a07a1e1c837de4d9e5797c0d76fd1b8dd4b768893e6990d4320063636230cc9b47a018d81eb0e8a82de9e5ee9eb886c8b0a6fcde6d52ee5d2f1fe9e472499d8d7828", + "0xf875821054850df8475800830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd8872386f488321a00841998aeef8328d3b9a0cff9e433b2df74270efe3bed7b19e9eb845c0b51da98cf235db283b05a4c52eea066302c9e70d910b3b97caa4d9f4e7d884af346f26e7ef25925009e93844da676", + "0xf86e821055850dbcac8e00830186a094f9aec40f2a2b2effe691491d7cfe3c90ddf6bbd880844e71d92d8328d3baa02aa3cb1e8b51a9080ec3b92f8978995f0b794fd8db0614d5a384711cc1db3259a012351f30cffed3adc0d2c89b71d2fecbdcc2133cfeb7b1058532bbb0e53e45e9", + "0x02f877831469cb82cbe48405f5e1008405f5e10e825208948aa2b8622c1223a62fbc1119fa2b483ab41b250b88016345785d8a000080c080a0600fd64f4b97683e7b1130f5bc9e9860e0bb9f6dc6c3bf13ecdb6554cc6596c1a02682d446b692d0d8e2a7e4d15ba9fd259230bea211fc40ee056629ede5093811", + "0x02f877831469cb82cbe58405f5e1008405f5e10e82520894388979a907fee4c8083aaffb9f66bc33001c1d4d88016345785d8a000080c001a0b242a130a0e7976a70766124772c6bc7a01c11e08bb1af134ae7d077b45c1528a03adc5e74af9304312fa53bf858babe795bcfe06ab5188873b6fe7623c08b7b57", + "0x02f877831469cb82cbe58405f5e1008405f5e10e825208948aa2b8622c1223a62fbc1119fa2b483ab41b250b88016345785d8a000080c001a05defd8d136d031e2c9afcc1bd590dc6e3fda7863a641771f6d0d168cbf610f02a03b2a491394fc5702ce911a312324660018e4421084f53b965d8b3f238143ad63", + "0x02f877831469cb82cbe68405f5e1008405f5e10e82520894388979a907fee4c8083aaffb9f66bc33001c1d4d88016345785d8a000080c001a0dc74824467ca640cdeae147a837e867b92548ea2e1ca739a865e022dc27b8a7aa062f6d55d06030a6a90e57b2086336cf33a00fa4ac1a08ba9a14b7c1b83e51647", + "0x02f86e831469cb8209aa800782520894f97e180c050e5ab072211ad2c213eb5aee4df13487614fca865658a280c080a011f98172aa018c80ff382d7d4c51534fd78fa29254dac91746e3d0c6ef7010dea04cbc906ab1c898206d3b084cd38066d9d1e671bf11cc98d41ceb93a20cc8d5e3" + ], + "withdrawals": [ + { + "index": "1530173", + "validator_index": "48240", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530174", + "validator_index": "48241", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530175", + "validator_index": "48242", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530176", + "validator_index": "48243", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530177", + "validator_index": "48244", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530178", + "validator_index": "48245", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530179", + "validator_index": "48246", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530180", + "validator_index": "48247", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "178988" + }, + { + "index": "1530181", + "validator_index": "48248", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530182", + "validator_index": "48249", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "178988" + }, + { + "index": "1530183", + "validator_index": "48250", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530184", + "validator_index": "48251", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530185", + "validator_index": "48252", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530186", + "validator_index": "48253", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530187", + "validator_index": "48254", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + }, + { + "index": "1530188", + "validator_index": "48255", + "address": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "amount": "188209" + } + ] + } + \ No newline at end of file diff --git a/testdata/executionpayload/deneb-case0.json b/testdata/executionpayload/deneb-case0.json new file mode 100644 index 0000000..7a0a020 --- /dev/null +++ b/testdata/executionpayload/deneb-case0.json @@ -0,0 +1,219 @@ +{ + "parent_hash": "0xc2209759cf577fc467798ba2fc686b2b66570d1fe717ca0e012afb7cb27da452", + "fee_recipient": "0xf97e180c050e5ab072211ad2c213eb5aee4df134", + "state_root": "0xf70701c309633bb1bd26bad3d39a8114270911adee83f04919aa3bbb4a078cb2", + "receipts_root": "0x592c3cfac2ec01e970de0459f6789d532468a15c7facd880c71af056e59f8490", + "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "prev_randao": "0xac912dabb21238750ff741f21bc2f91e42751e9834fff9c138d6ac6bebb0e637", + "block_number": "297164", + "gas_limit": "30000000", + "gas_used": "2142000", + "timestamp": "1704997008", + "extra_data": "0xd883010d09846765746888676f312e32312e36856c696e7578", + "base_fee_per_gas": "7", + "block_hash": "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", + "transactions": [ + "0xf87283b2ca0f8477359407825208946177843db3138ae69679a54b95cf345ed759450d870e35fa931a000080850343e1feb0a0232f671cda17e58ee3e6a4bcc22e42595bd158e5ee8ebd6ecf19cbc5b6e4002ba063d962968cd08a134d6da2adea6f99502c3ac0779a10b25beae8c46d7fc85d02", + "0xf87283b2ca10847735940782520894687704db07e902e9a8b3754031d168d46e3d586e870e35fa931a000080850343e1feafa0c5e5914d867866d1273d46b579716468e786d4c80aca426faffdc364b413a98ba069c4bf7e84f637f0d0ee1dd2f829b36e88903594d23c94057fe013d1e8b350fd", + "0xf87283b2ca1184773594078252089415e6a5a2e131dd5467fa1ff3acd104f45ee5940b870e35fa931a000080850343e1feafa0c955abbd72f47cc67c217b89272e8d497042afed0d29b005c36774d76ab80dfaa04dd80f4235cd12899d9d5d66d88bd34b707aa3587d7dfde57d975a04ddcf512a", + "0xf87283b2ca1284773594078252089480c4c7125967139acaa931ee984a9db4100e0f3b870e35fa931a000080850343e1feafa0ee0a0d1a7b937dbd624b182697cd4b484127962367be1a4d900e7740ee078015a0534e89aa85da711f9003e7fffd1d2589964c16a74696afe8cb341c501995206c", + "0xf87283b2ca13847735940782520894d08a63244fcd28b0aec5075052cdce31ba04fead870e35fa931a000080850343e1feafa070a70e108545db07da5366e9bce96e9b2b798ae6b61010b317a67b912c33f655a02ce9b1ebda0ecd9a8e783a252f54e3f3de6696fba2e9fc790c9214db7459be8d", + "0xf87283b2ca148477359407825208940b06ef8be65fcda88f2dbae5813480f997ee8e35870e35fa931a000080850343e1feafa09c7c9f770758e04a772b82c6a9c8ed43cffba066327a01d2623d6578efba59caa017961cce26d31441091599d6e473c1813b0b1bf0ca76344cbc32cb1e7ba5ceb0", + "0xf87283b2ca158477359407825208941cb96c5809da5977f99f69c11ee58bae5711c5f1870e35fa931a000080850343e1feafa055cbf0ac7924fb36ddf37b083c0f0e3136fe862e40448f6f012190ace6453594a06b7e68ffc18ebc6cf3c9f22d767295c34ef25895fd3da939cd33908d2a432b4e", + "0xf87283b2ca168477359407825208942aa48ee899410a6d97c01b0bb0eeaf1771cc435b870e35fa931a000080850343e1feb0a002becdde6f3a450322c19de954654f3243943a49ba27255ad78bd46ffdc4f4a7a050a0e0edeaf11a4faed0799bf535d59651fda773d2092b266495fe4a06256c29", + "0xf87283b2ca1784773594078252089407b9d920dd8e8d83dc1125c94fc0b3cdcdf602fb870e35fa931a000080850343e1feb0a0720ff20485bbd392745bcf0a2d03cd0634278976b44a79a4b87d84f582e916cba0797e26992c2c8b0c7c18ba8fa650d1e9191087066b644c0c6d4f413bb9646ed9", + "0xf87283b2ca18847735940782520894fcb6e353ad4f79245c7cb704abcffe2f48684241870e35fa931a000080850343e1feafa0f34fd6a78e783da2ae1b44cd55f139ccb0173ea0e7167abcf6415cd7be6c81baa00598881b2deb805568720cd788f0fb4a5c9af23beccf420a2579f96efc310bd0", + "0xf87283b2ca198477359407825208940d3de4256d6322683fdea9ee23765ccbfcb83da4870e35fa931a000080850343e1feafa0fc096a77fa2fe301f3a14f34138592a2e66cee93087663186eba3781dac38858a0359d767d079cff952fef59fddbea5c67ac5376d5002bdc05b6d055f8eb774ccd", + "0xf87283b2ca1a8477359407825208946021752d8d9b2f221d4fea4349dea34ddbcfce50870e35fa931a000080850343e1feb0a0a3f4d571334ccc23448af71e9c1abb32c3d88cf2e529fc79c1a034d335d82908a007ef42156c784a198f34385e1e0d0756f6cd53fbf27fcb9854855ef4913b60e6", + "0xf87283b2ca1b84773594078252089461e296d527edc89e831cf593ec341f16197eeafb870e35fa931a000080850343e1feafa0520d8cfd1db39a7d3b243ba9d62db793838b168118230c96999b91dfbac6045da0783852f06a27b42fbdb7188813fedfe223774d259c1587c1940137d28d234407", + "0xf87283b2ca1c847735940782520894cf7317ee7a3b497ecf634b94bff60ff91b925747870e35fa931a000080850343e1feb0a019b02287fad94f6aeca7489a8123e4bcf9ab70f5388926e80e98a0216f512f5ca0125160a3fd03d61d93b7db3c773d71f4e1dc00ccc1f1266666beef2cfc01d558", + "0xf87283b2ca1d8477359407825208947e7b519df31f77ced83eea1b16aedb6dcb0f0b24870e35fa931a000080850343e1feb0a0a532259c3e2f94983cef203ebf45ef790d2c534cfe319f9d67efa89d5959ac3aa0410923dface7953f5679eb67f19bff37dbc8357c0887f89051d7be7adfe11812", + "0xf87283b2ca1e84773594078252089488a075e0fb1c9309a200a8bf0a88b214bf7ceb8d870e35fa931a000080850343e1feafa0be569c9e097589df0647ad61d0bc9cb9de1ea358718877e05883a0404fed32b9a02821efb1766a325c08417f5a186797776325a1e666cd3e386b89d284e210a5ac", + "0xf87283b2ca1f847735940782520894c8d7cfb58f3ac02568e6505bf3fb5eb6f0807039870e35fa931a000080850343e1feb0a03f52fd1f9d38d20a618f4d896a9dce54dda51ccce1558df625ac19e9c05a0faba02de2de155588a35a527370c5d9ac33d1195e670bced9133bfc263cce3a3f50e3", + "0xf87283b2ca20847735940782520894e0132e8d7b1b766e0ade5543d6c6c0b2d5a2f01d870e35fa931a000080850343e1feb0a084fb4f3725298a31db9fc4b2dfd953dbda3a97eb3a92365a69ec1230b4a75227a023b6d656447cc12759d47101c9103dd73bfaf65b203724b74345378c258fd221", + "0xf87283b2ca21847735940782520894eb674c0411db79654afdc1e131f3b6e734baee6c870e35fa931a000080850343e1feafa0bf15d38f7e79e0960c36ca74af4e1bbd8772a62255ee19276eb18e41ee70a34ea07c50fbe6802a3d60aa84e89c805ef7816a83cec793fbd9bf7e3ab1ac662ba02f", + "0xf87283b2ca22847735940782520894dc07c60993cf689438b8c85f86b0ed938dca77ea870e35fa931a000080850343e1feb0a01b9c81df7d9134acc80f5cf2e692968567b03e289b1f4df2c624062cfc2df9dca04b9e21222c3d4ed50ab082c0dae22a7cf9efd24543df952616f2cf503d414293", + "0xf87283b2ca23847735940782520894110ddc93db59ed31a03518510221ec2f35d28f2f870e35fa931a000080850343e1feb0a07f8ef8175043b631fedd9d72de45e96a693b778f73573f30b60b03fc6f8cb365a06608f3a89d7baf0e39b8e7813611282c0bd1de80c9fdb7c940b4be15db6b8e99", + "0xf87283b2ca24847735940782520894b599a876aaac824cfce21bdf15627c9fd8634c30870e35fa931a000080850343e1feb0a07edb8421bd20f16e534f6c29b76ba38afe29433f0c70de4ffeeea040009d0b5ca0483a80c5b85b48c721c1bc9662e966408cbc3844bfb40e6d839151c1dea3e54a", + "0xf87283b2ca25847735940782520894d36e5540dd71acbd6416d60252c4d7c34a3c8245870e35fa931a000080850343e1feafa0f78ac8bf770b81b2942ece8bbf94bcfb660c406bcdece24e5e5441bc8e81996aa0383441f7a3f938ebe2757974d594105781e9b3d215da60e4c2b224342840e224", + "0xf87283b2ca268477359407825208943adeca35af56206a74987a8fe13c669365c770cf870e35fa931a000080850343e1feb0a069d54c6d92b31245eeaab0cbdc3c0010dbc5f9ae9b94eee9a929f1ba606d9825a0596a765de29b8423c5b0645942482bf6b140d55ee32b85b1b25d08a665eb9068", + "0xf87183b2ca27847735940782520894d77b95acd12f7b4b5692b55717b7bbca11651954870e35fa931a000080850343e1feaf9fac6d65c95332569e9f9c64eb6b0721d7017d66dbf645227d57db01aba2903aa07ba9d73969e8cbd1bbb4907b0139a7d1967a130aa0b9d755988f7ee395c76f4a", + "0xf87283b2ca28847735940782520894f388bf5766b5ed5d4e1cbf15772e677dbfa80b00870e35fa931a000080850343e1feb0a0f641653544d7ecdef834e47d6b75c2864d1083c7f2410286d02ab50232c79ae9a0304f16db7e99d956da655f615b1b55a16b07b6f4abb49cec967e1f9a31d799a7", + "0xf87283b2ca2984773594078252089435d4996296e58560e6ef47787d51b55f1e2bd92a870e35fa931a000080850343e1feafa0b5501a2f3d9591fdad84883d3f7b1f863765f7c5cd1105812bcd925da581f999a052201608e0e780ef773cdd52722e00abb75bf62ed819dbe467905f1ecc34e69d", + "0xf87283b2ca2a847735940782520894a4c3b77b898e53d6095f11c53a1ce272cff9af31870e35fa931a000080850343e1feafa0c8522a33db78a306e1ba08e3d02d58644de3c057f02d4b09f8d71d5cd30924d3a05d639a640f163b13f5fda66a116ba6653dab2769fea6cf627d4f43506c7d6bdb", + "0xf87283b2ca2b8477359407825208946e84f6113fc1919714f0266705813fb81a17181f870e35fa931a000080850343e1feb0a03d7d83fe6c67520c038b7ab5e54e323b71238ead8d23be5d8ae3d2806176e412a05ab8c4a341fd1ff343b045d491ff58a02ec222866f762e2d753c7142678a345a", + "0xf87183b2ca2c847735940782520894e9ae1a806004e1452baae0493920815aadd84798870e35fa931a000080850343e1feb0a0bae01fbd421b4867be2703267d54589135e2befb91a85f4e60652084137f4e739fb11761069bf01930f2dc102a23f7c767d5cb463283c92c3236662a4be58b47", + "0xf87283b2ca2d847735940782520894fe1905d8ebd20e037274eef441283c811ea82c16870e35fa931a000080850343e1feafa039c42f2963bf66deca076d981a9851fc932d445f0528c70d544a3e5a3077b86ea0326ee1251bb86cc43aabe95653e6d188641e6f229d5e3abff8407dbb579b535a", + "0xf87283b2ca2e8477359407825208946adece88e477f53a143a4c29d97940df2ec768e0870e35fa931a000080850343e1feb0a018ae4840d3c615c217bb83a44cbc508209ea7fbf93f90302d6e5831847423e8da058ba46567d6d2051dbe2f936ad0ce69c682f0f9e3d5bf0d310cb7bf6819a71cf", + "0xf87283b2ca2f8477359407825208940d34d140a7376892c4593fcea3ae26f5d6f202d7870e35fa931a000080850343e1feafa07b923f2c17a76f1d22da7c562edcc008738c45570430e552e9c231572c3abbd2a0582cb8258df9f2688860892339e4bbd9742403853aeec78db0dee5a1d94af8b6", + "0xf87283b2ca30847735940782520894d1c7fa75b9bc55d041fcdf215f3e3a351c9f9edc870e35fa931a000080850343e1feb0a0781db8b5130b5ca1b60a0f4c62a402774d3e108e64e26aab31667537e345684fa046d10c31efaf6e6c4bb87a8a790bb5981760aa6e4da557b65d2c6b7d54a05351", + "0xf87283b2ca31847735940782520894418ebe350a8c6387bf5e42f3502742af8e0781f1870e35fa931a000080850343e1feb0a0d455c6bf7482003643ed2165fafdd3102b9fc95c838646c9ab05e4f997eb7500a05898d44175872173d320e0c1b8cbd79a23b0fbb4c6a6be3ad6f7922842703f10", + "0xf87283b2ca3284773594078252089484914d2770c711d27888c775c547b1d933b48c47870e35fa931a000080850343e1feb0a0bcf8de651d81fbfcd4d368173d74ba18c00ffe736abd9d08227efdb781bd9e79a060619e34c1d4f3451f988ec2b26c73b7998b13c22bb1a44dfcb29ea3e60e415c", + "0xf87283b2ca338477359407825208948f51e560b85edf2e653c689c4e9fac02ce0556b8870e35fa931a000080850343e1feafa0dec3a0ec938c81a3c352bd2f24e4385a5db10294975b00ea5084cfc1227de714a0518d2e5113cdea9cf38ed730995460dd8c27d530e50331579026ad647720704b", + "0xf87283b2ca34847735940782520894ee2503205c24dc66346e356f13f333fb8782d358870e35fa931a000080850343e1feafa01a777ef51abf54680c8e458a85f5272bc56a32049e7fb1b3f8c03d8c24bb8ef6a02607c211e587680030456b34c93a3dc9f337e7d72ba8cc4ef18f9efef823a793", + "0xf87283b2ca35847735940782520894096ba6c59bd667a0fea9a356bcc988e4d9f2d8eb870e35fa931a000080850343e1feafa01128eeb14e0284b587284ef9b6abc408414f271d9104f20b7f06df4e57b869c2a05f713934d3e343f12a345caa3e90f3e5fc66c5914cddabe120cce8a6e93eb4a7", + "0xf87283b2ca36847735940782520894da0adce4f1dc7debe7b2b52e8fe9ace6c7ea9c66870e35fa931a000080850343e1feafa0cd891d5f4085cf36554d2e3da56af2fcc6926af19c1730e5b0afb62369c0a11ea03c9fe6fa610de7047d066bdeb672cbd2914ccf191351af843c9c091e14e9f770", + "0xf87283b2ca37847735940782520894af7d412aeab7525c0541dc3aa6c1085cfb8c9099870e35fa931a000080850343e1feafa0e0ccc70c1ca5e04c94f1234850eddb05b085e1e01c4bd7c97ebb4863bda6b763a029bd2de58dffa4796119e6195ead233f275cc4ca4fc050bd1325900da650933e", + "0xf87283b2ca388477359407825208943cf8c0d567261eaf4ac0872d33a9f48af361769f870e35fa931a000080850343e1feb0a07af283307e8d1bf27baafbacf94196e55e047101052ac573e5fcc87e7eb6e2cea06f2b5b7a0bb6ebc78eadfed2b3c149e482759d7371959b75115f1f4db00e1fb7", + "0xf87283b2ca398477359407825208944779242587ba9e828999249eadd82984430f4843870e35fa931a000080850343e1feafa01214e6f99a7571b3e7ab860f162389fcc42a5cfd7ddfa52a2561339428c98074a03358448c69fbb0aacc21d69ea32c90efd3d23a51037a4268cc015eadf1bde318", + "0xf87283b2ca3a847735940782520894ea531cfe2de357ecff3855b88dbd07f60b03cdca870e35fa931a000080850343e1feb0a054f3fcdc61bcdb829789113e529a1c5d30c92b2316263c563d61c0e441190856a065f1a017a33f86fde74cca0b58c32b5a740cac2db10b1a8a340d24f4a79d8bd8", + "0xf87283b2ca3b847735940782520894d00b5f53ea2a66ad33c3fee304bb22857dfb8a87870e35fa931a000080850343e1feb0a073309bd39bcde633947c863113cd66959d849113c1c40326c4fd779e980ba868a0345025d2863c04212fd6d949e18b2456e2e732c74eb20da251863e241fbff1d7", + "0xf87283b2ca3c8477359407825208947ead29f6616f78f21a951c9686dd257be7b8efe4870e35fa931a000080850343e1feafa08ca2d7c5678210e30a304e650131dd19b2a9bce96979c1a548d78cb5e74dd851a05c3077cba3c44d8cd94c0b45f44eecc9d55ae4ec3d50663fd5623fcf24045bb9", + "0xf87283b2ca3d847735940782520894d503c13ee55c1ea128357d4018ec58d0d5e5c3db870e35fa931a000080850343e1feb0a068bdf5f3c8b9777e84ca44fc1ad973d25c876d43fbd0c49051bedb80372940eea00ed7951529740e7dcd348698c9c7fec08062f72b43f55e5fa46ffda1d4eeb6d1", + "0xf87283b2ca3e8477359407825208944ac670d8760faf780468638ef80034876ed8918d870e35fa931a000080850343e1feb0a043549d94f55bd35e7adf97af4c8f5032c510d9ee23aab159bd5f678627f6e8c7a02759974379335b215c72dcdebb2613d60b9355be0d2878792c3f7f979170963d", + "0xf87283b2ca3f84773594078252089424ffb8c97ce443f8d3265ba3316defcfc07c659c870e35fa931a000080850343e1feafa0f91a15f02f15dabc13f35460cd888caf70b56a373de0e796e00e870a1fe57ab5a024f0e6d0ebe5b0e4f67d65095a263320055ca23e711f6030dc5f47182458b4c6", + "0xf87283b2ca408477359407825208940c5cafc547ab98c9ceaa1c07fdd6bf7820aeb954870e35fa931a000080850343e1feafa0716afd885054db1ea6c6e6defbe66fb62ddc8fe993e8a6014104e252922e77d5a00f4818bab49844de73fe28887ec8881c6dd462924a8cb68ec30f819afdb2b487", + "0xf87283b2ca41847735940782520894db8d964741c53e55df9c2d4e9414c6c96482874e870e35fa931a000080850343e1feafa033b647be0c59bbaed1bb0f995007f86a7b650ad32ff5ae421e78a23624d4548aa044321613820305ab64ecbadaab1562f9dbd78ecfe9f366f3729d1c5b461b8a9f", + "0xf87283b2ca42847735940782520894ba85bb35ae6ff7a34745993fcf92b9afd34124f1870e35fa931a000080850343e1feafa0c3c3271016649caaac7df0e9a2543badc0ff1c5b9d9d8d6dd70faec8b450890ca005960b5204a2329f8d274cf7e457b095bc371d3851809fa651ce9c02063e2100", + "0xf87283b2ca4384773594078252089458871015f5a2d3948264f7c16ad194c80ffd531d870e35fa931a000080850343e1feafa062bc239f09834b88fc6c3ec9568b2a17dbb95f1750ce5da64d6ba2320aae6376a044367552953846b53137586f6183a15e86eebee779237d28e654c35cffbc952e", + "0xf87283b2ca448477359407825208942a90af45df70b0031f218cc122598ddf3e10469f870e35fa931a000080850343e1feafa05a42a11507d7a5562f0f59695da017cb9cc71c57c9c8aa1482189e989f1524a1a02c91dc11d04a6eea954accfdc785633c92ec18a964577f57e03a452c4f0a89db", + "0xf87283b2ca45847735940782520894761bbaaea6ceb265f5262c3b559adc2ad3ed2f09870e35fa931a000080850343e1feafa039d29e4590b51ff8cfec9d0e5f184c756e18d7607377cd117e454e81587ed888a04d5308a90dd4f5725caf97df20f60d6c838d32243e1ecd214ae7dc0b9e508b9c", + "0xf87283b2ca46847735940782520894dfe86f51c5e603f1420d1f0ab366bd3bfe23d2a7870e35fa931a000080850343e1feb0a04392ac4309de3f1de55af346511f8ec72767e0ca42b9a6a2e5e73725a3aa3b0ca0144158ec8215d503eb295a177f28e24586d1b0230330499fda0bf71df7b9c07f", + "0xf87283b2ca47847735940782520894d616547158b05ab5079106dc0336d72763a72871870e35fa931a000080850343e1feb0a0a7d58d7a5562ac985fb9bd3b1345be2cc82f91896ba0f56deb755945127c1093a00c973033cb96bdb63e065151a88f21a9ddb1b5aac28da09f0b6cb40b69b5beb0", + "0xf87283b2ca48847735940782520894dc68cd278cb7f5f666ce7b0a3a214a8540ed4dfa870e35fa931a000080850343e1feafa0ce9d683746ae919212073b51be72b5677274d7a5fffc75bbd38adb2a4bdb3cd8a06d33c96bcda7828f9a6bab6069ebbe9b591717b92eaf9b6d8a532043c78013e6", + "0xf87283b2ca4984773594078252089411f8107da05b6905e8cc0227ca3b0c6eb764fac0870e35fa931a000080850343e1feafa08b342274bbff60e2d3a2f580ac22a6f580a6e46cac0ae193af985c8321d77413a017390dd6aa0c2f3783592bb05f8c0e2d165fdb6e4519cd720e8d408ffdb8213b", + "0xf87283b2ca4a84773594078252089404da906545679850a7ee0ef6836e183031bedc88870e35fa931a000080850343e1feafa013ef4954ad7866e0d34d526acadcd276bc1d99b4a1402bf9d79eb5bc74211336a06d38c764c38e3a4f920a23e92b6b88cec93284788c95ecb4a52cf46d336b3b71", + "0xf87283b2ca4b8477359407825208948bdc25c43c010fd3db6281fcd8f7a0bed18838e3870e35fa931a000080850343e1feafa03947d852b7715cd3439339491143eb3608bcb66f55098dff59412c7dbd338b4ba06cf19ec280ee1bf31544107382afd721bae389dab865c91202e9ebb8130e1b52", + "0xf87183b2ca4c847735940782520894af16f746b8a834a383fd0597d941fee52b7791eb870e35fa931a000080850343e1feb0a0dd4b05f33647254a3fe524bb87b78f5d07f2da07d45c93a516c3596d11996f1b9f13486308ceb7a0a5d0d54d1f75fd673b8755439c9e6987b495081aa2e1a043", + "0xf87283b2ca4d8477359407825208940c5c736600f8ea58ccb89aa72e3f3634651fd551870e35fa931a000080850343e1feafa02bedac70c35bfcd2e311b60730926d942d567eab0d3fce68c60a551d3951f56ea016e3100ee3ebf179ea3253bcb493883a0b124db18df108c3eab6a5fef90abb5b", + "0xf87283b2ca4e8477359407825208946f475e0f0e9eda58556fddc04de9b1a9b6a4cfb4870e35fa931a000080850343e1feafa0eef87d4e6b018e4a38b649b15ecda079cca7957cb4d3863e01ca61ded09a76a2a028f6458e7755aeeba2c21104a0605dfb94cadbd9c8e4f1f9b971201f5fd925f2", + "0xf87283b2ca4f8477359407825208949b2e76498a695c4dc7d0890069cffa84a9581d24870e35fa931a000080850343e1feafa0c3255cc7aef487e5ab9d931a259b831e2fd74f8a23ef523b87b17e20a00a80e6a07ecdf24edf74b2d7bb9ba74c6124320c1c673480dbc3897a1838a7486bfbe624", + "0xf87283b2ca50847735940782520894e2d2b2069f4a54fcc171223ff0c17adbd743c285870e35fa931a000080850343e1feafa0227ed6dfc5bf27ffc152d145c64fa108b964d56e9b3c118d3dc6c2909344e6e4a0633a165999e15ec506cf89063338f9857180bb8c163d252233b4306996240ea7", + "0xf87283b2ca51847735940782520894386bd49f04322544f3c7178fa5ae1a24b947b454870e35fa931a000080850343e1feb0a082d510950cc6246f7fc969e92def81b18d63d6b547a99ebc30e4897ab3342724a01dce6f14dbeb5b3bedc273ab9e244f62fa7df2bcf518a85ec1b6544f18244fcf", + "0xf87183b2ca5284773594078252089400af839c3fc067fafc2e0a205858d6957f0dd18d870e35fa931a000080850343e1feb0a0908e55d774b8264736b283d848bb2f799c71a1cfbb1dddb304dad8eefc4685389f6a1da60e6fc82ae4713c84ba99e8bfbafb35191c4563ba64af5fd0ce002d50", + "0xf87283b2ca53847735940782520894ebb6d32a650afa9221b55a11c6a6de52b6f07cd7870e35fa931a000080850343e1feafa06c35791de05fe59e5a94fb3e981b0c4b095927535fb41b01209b4ed85a611676a050b7eaedd0c887c86f23419e192c9d077e3d97fdf01d3ff8808cd41acd84f41e", + "0xf87283b2ca54847735940782520894011d26a3a9adc9203c8943a6a77aa8657af52420870e35fa931a000080850343e1feb0a0be0a8e72b046c792992f2954e3386b29891f38302d55b0677bc8e953076aaa5ba03a41c430059e43b0db1a4f86e647b100d455b8d2a9691bbf22b609a4caaa2866", + "0xf87283b2ca558477359407825208949c85bc61a89fb5abd957e6c819c653fc1aa0d11b870e35fa931a000080850343e1feb0a0c93b731af016e9f08877512ae4d07ab8befd333c0736373fe68916b3045a3f5ca055caed9ee7e794c05f4d36bc6b75a617120f5de9d16243c6760fc97b7feff1df", + "0xf87283b2ca56847735940782520894bd8e8435b7897d87cf7cedb5cf8c5dd865dbf720870e35fa931a000080850343e1feafa044276922dcd7957054e067ae806a4e7d2b430bb307c7b845a2f5133a5fdb8c7ba00cef595bce18815b382533b9e4c8a3fa1473e5354baad59300e4a9b5f4d41bd1", + "0xf87283b2ca57847735940782520894adebee2e3ff041078b62380d001c6e51b4f15598870e35fa931a000080850343e1feb0a0551e6ca15c83a2680873aeb33fccf1337666d6a420c91a02648c2192cfac5fb0a007c9af16b3893662c63da9569eb79d53d7dd38ea4c316fc413e708cc0aea5adb", + "0xf87283b2ca5884773594078252089471e94c459c9f05085fc0d34b5f21e648e05dc6b3870e35fa931a000080850343e1feafa0fa835fb15e28a55143f8ed2dfb179841126abaff9afcfedfa593b8bd506a6789a03fe24cfd2c20f9dc571ad90950d9af214fc310799503210a141cf48b5859b3ff", + "0xf87283b2ca598477359407825208947c1fe317db82c9298b87c56c3194178271b621e1870e35fa931a000080850343e1feb0a0cf5b615d8d2233efcb152127ca8f940f8724184c5f2326077f297d91efc63fada0053c796c6c330530c0a04afbaab7ac72825ccfa74f74ca5b86d0546d19ee7b0c", + "0xf87283b2ca5a847735940782520894e069d1c9abf5127bdc3a164fb93b96bfa9f74ce0870e35fa931a000080850343e1feafa0ac4eb8d4437ac45d2a2673654b0b9a69c31917d1a09be66dee2010bac2cd128aa019b3dcda289a8d7ab95d573987e4197cb89645bf2f4bbfb95dfffd8890554628", + "0xf87283b2ca5b847735940782520894b9bbddd1eb6ef8fb1bdc6a853d5ad7486a9487dd870e35fa931a000080850343e1feb0a011e089873bcde117d4c4bbfc057f64275e18ab6e75175fc90c20693de7f0549ea03682fbbcb36ef87a033aa4d183c5716f5bdbe74fa04ff73c96817269683a014a", + "0xf87283b2ca5c847735940782520894a804387cdaf986d45831e8074efb2115af053f7a870e35fa931a000080850343e1feb0a044728ef6764e6d1d561979aac58024077406aeefebfc3e4fe103127c3793bfada057fd99cfa269c6ce10f97dffb575f38bd0d1d1970ef19648c5ede04c817a7986", + "0xf87283b2ca5d847735940782520894f23501d784a041fc911b4c86c2bfb1f63ec170ea870e35fa931a000080850343e1feb0a0bf2fd5822fac3c756284e07e487f7aa0e25f2aae051f6966bf1723d9aff4d713a07faac8a1050efbf9c1b7f061ce90abeddedf9d7f59f13f29702861470f6310c4", + "0xf87283b2ca5e8477359407825208943928be2a7058088313c0fb3294014e88a3c5ed4a870e35fa931a000080850343e1feb0a07073b1c53c64d977f43e5045f136aa22766664f5029c51d0f9f6e9562ade0056a017b0fa41efdcf364b40b65f09a00ee97e491a318844c62bc984fb17899f84daa", + "0xf87283b2ca5f847735940782520894196aa07204141478459c14106ef5e5282efe9957870e35fa931a000080850343e1feafa0dc23d116f1dc7833274484bcb750f8fde476d0f65980d2fb65ef422a2db6b342a0022af2882c4da8ea6e7439744c79f560fe47b5dacc6acf0e490859ebd6e7f90a", + "0xf87283b2ca60847735940782520894763cbf89560e2da270000822abda9584db693fa3870e35fa931a000080850343e1feb0a0cbd30950702cdd8fd9a2b6f3032107190402aeacded447d9e4ddca0be8f4a0a2a0327a730029720e5d40d64e59d6583ac054d22c9a54f3efbb8c4ae800c5f65b36", + "0xf87283b2ca618477359407825208947feaea0ff70ffc9eec2104f57f7136aff4dea680870e35fa931a000080850343e1feb0a077c86f7c3d82fe0b45c9468170fc7b9d31b29d6ab5d971be78eb9a58e9b3d14da0782285c77fa8ebc436d8b397a30f1a8a9169c9abf7df6a09d11546a66205ed5d", + "0xf87283b2ca62847735940782520894e5466aacd9dd6d3bb35060a1ccc76a438de88ca1870e35fa931a000080850343e1feb0a0ab09d576a36d217d08cc8eda52b35d510d6b834c32522ef99b55b76d9c8b8981a0758a5f42f92a59fe0fb0307f93418208cfb1267e348985172d62732739f84b2c", + "0xf87283b2ca63847735940782520894f670980415cfe8c4f8d10645ecf974c9a2fea00e870e35fa931a000080850343e1feafa04e6478a23686f9b3de241b2b9f55245db83c250588e26ad58345b29c39bbbd27a07436fe4148f284697f14e7896653f85aa86c4823dae35a09f55d7bbaa9f8d335", + "0xf87283b2ca64847735940782520894a29115bce7829ffdd989b7cf1bdd1eac06a2cb36870e35fa931a000080850343e1feb0a049373772d3078c96956c11a57a64406eaa8db802d9ff43d53ba9245a54729ad8a02f0379117dcf2a472b70aaa032fa6eeceaadee1573bc68bdfdb456238e2b25c4", + "0xf87283b2ca658477359407825208948f528aa67dc1846c893465fa1c8c26556bc5fe19870e35fa931a000080850343e1feb0a04a9206b2c7283b48c9eeac91626b8ecfcdd75954244771029635f4dab641ef83a013bd39a1bee8a2c22d41fd6d6f1d840c32ef000f2dad466014177e5d0263e866", + "0xf87283b2ca668477359407825208944dc4ec6ac43c8c45777292db987203c0248e17b7870e35fa931a000080850343e1feb0a0bdac2f6689e71fd20c81ab3ed3eb589481faded73989c5ee3b301abdf0df4b53a0578183bf6312dfe8b2719108accbb232f8e51483b25dfd7d3ecd1c610439956c", + "0xf87283b2ca678477359407825208940d2f39f251cb547cba567a31e5e9f93c19dffa85870e35fa931a000080850343e1feafa0f30cc48dba1051f2fd9819c4b02eece9570f10d41ae8b452aad94f5c42b82576a06426cf9fbfd3773ef5f393028b15eed015a6706e31f0240ca17c19b2351e7414", + "0xf87283b2ca688477359407825208949eb31fb94ce5111e2a04cb9d156b513887ccbd00870e35fa931a000080850343e1feafa0d9f46a2689133b09f2a2ea0ee95d1ef5aba6b1f5c004d6920e21a3b90341e065a050a5e2b5684ea9970890351a7a15677fc08aa9a5d00003a5c452c6662cd42852", + "0xf87283b2ca6984773594078252089404b88ef83f8c41b1465d360a1e82f07ae190892a870e35fa931a000080850343e1feafa051958bd1fe58327a52aa6a82e58821d55402f482b97328c60c4cfe01b8e36b3fa0539cd419d4cdd5c7c629820dfe8b71eb58ae568524e97b91a24731e521d2111b", + "0xf87283b2ca6a847735940782520894af23e04b04fbe15630eadd32a6f27a5a65ea554a870e35fa931a000080850343e1feafa0381d17559d00a1b6325c610bddfc9bd062f1b12057ded89955ab7ed5cccd4d09a010fd329e705cd269278c9b5cde9b779ecaa8e358a337f8add40ecfbd75dc4499", + "0xf87283b2ca6b847735940782520894746cdff371e3f1e905b3ac52280078bac2dec7dd870e35fa931a000080850343e1feafa0759d0869520d18b5358f314e05b69b1a90a326187da6a8008063d1432f5ffb22a0245f02da5d9697a34e53c312886257805f2b3bdfd840dc96322cb81e35823659", + "0xf87283b2ca6c847735940782520894c33e5155bdbf1a0a7ceb1b80f8586c5cda5c3781870e35fa931a000080850343e1feafa0c252b122d4a06b7aaf7bf78cd11f4e1399f7b250c1d865582e9e08e4bd9105dea015b154437cb829de566ba07b719034333ac218d9854e4389f8ba2046bec844ea", + "0xf87283b2ca6d847735940782520894e7fdef5f5219068f3d0f88a7445005574c662798870e35fa931a000080850343e1feafa0eda15bdec45215a52b664c11159ef2beaa944690a8f79717ac0ed1f0035f829ca07529a85f7eb5bd384bbb3b4d65542c49da763e1f897cab7a45cc6a47645b8673", + "0xf87283b2ca6e847735940782520894f0a81a63c5e09b0bd08e027de48058e377d3732d870e35fa931a000080850343e1feafa00bbf6ac00d963d190c05442699a841f9c80ec9945931e6adbe253354c99a1182a050e0fd4171c350df604d418a7e4837e7b8796ba7429fe32f436a21bccb645187", + "0xf87283b2ca6f8477359407825208949878ab34dc3b4a63c80fdb733491472c11d59a56870e35fa931a000080850343e1feb0a048e27126c94bbbc5405cc8375e1b7ad465c27d6c0bd76cb92d33d4040b22eb70a07f2c95cf62ea907537fda9c7b4f50478b0bd589af000a8040d579a170396915b", + "0xf87283b2ca70847735940782520894912859bebae3086ac7a062dee5d68aa8ed2d71ec870e35fa931a000080850343e1feb0a0295f18dad24c898d1bfb52a5ebc66cf9969f51a93466af8f58f5f40bb39f7e71a00ebec2985dfe0273b9efe27b62a40d1b09c9b34d15d79e57ba410f9465020c1a", + "0xf87283b2ca718477359407825208945a0b737ed85049410e5ea61f444d07d5c8c0359f870e35fa931a000080850343e1feafa04d86fff68888228429ec758044b01c250d411adb6deb1b0037ea8a82a72c2c69a0327aa62e850c6e885d0400921ce640bf774d5dfaec47cb6591c6f052b06ac168", + "0xf87283b2ca72847735940782520894305a5dfd46e6128abce28c03b3ad971f4e4915ff870e35fa931a000080850343e1feb0a02e8f17f15ac2086ab70089d77b903b123b868bac1b3cec813f676f77e31f24aba06cb86cccf93c88eaeb1494896a199741aa20bd479f63e23df92301af6d812996", + "0x03f89a8501a1f0ff4682775084773594008504a817c8008252089445fd980a780887e4fc4ae9f8d042d112d0802ac28080c08504a817c800e1a0015c8bc10440f3b13981c8eca320a2592d8af8fb6aa30a2b48dab94992d3f0eb01a0312cb2215fdc073c3861315c54aa152f685e45df0921003867bad8bee65aa107a05b49e2208d9e902d649c218d388ef46f1deb8dae206c7b6d719bff35dd53c023", + "0x03f89a8501a1f0ff4682765184773594008504a817c80082520894807381ff50bf094ed69ce4e16d393a63af21d8428080c08504a817c800e1a0012084b96d7bdc4d3f8fc1689150593e498063b67fdcc8028bb0191c6d521abb01a0fd9b96ec6f6eb1e24eacaf9e0c69faa87a3c6d72349a7566d226c575b0faf4a4a04b493a211a7b6e46889876ad198212960148dc8e0af2b7a745941d49a60934c0" + ], + "withdrawals": [ + { + "index": "3969157", + "validator_index": "2760", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "2598" + }, + { + "index": "3969158", + "validator_index": "2761", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969159", + "validator_index": "2768", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969160", + "validator_index": "2784", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969161", + "validator_index": "2786", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969162", + "validator_index": "2787", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969163", + "validator_index": "2794", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969164", + "validator_index": "2798", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969165", + "validator_index": "2811", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969166", + "validator_index": "2813", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969167", + "validator_index": "2827", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969168", + "validator_index": "2841", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969169", + "validator_index": "2845", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969170", + "validator_index": "2710", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969171", + "validator_index": "2724", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + }, + { + "index": "3969172", + "validator_index": "2738", + "address": "0x388ea662ef2c223ec0b047d41bf3c0f362142ad5", + "amount": "1299" + } + ], + "blob_gas_used": "262144", + "excess_blob_gas": "46399488" +} diff --git a/utils/utils.go b/utils/utils.go index f1ab71c..196fdd9 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -12,11 +12,9 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/electra" "github.com/attestantio/go-eth2-client/spec/phase0" utilbellatrix "github.com/attestantio/go-eth2-client/util/bellatrix" utilcapella "github.com/attestantio/go-eth2-client/util/capella" - utilelectra "github.com/attestantio/go-eth2-client/util/electra" bls12381 "github.com/consensys/gnark-crypto/ecc/bls12-381" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -105,8 +103,6 @@ func DecodeJSON(r io.Reader, dst any) error { } // PayloadToPayloadHeader converts an ExecutionPayload to ExecutionPayloadHeader -// -//nolint:cyclop func PayloadToPayloadHeader(payload *api.VersionedExecutionPayload) (*api.VersionedExecutionPayloadHeader, error) { if payload == nil { return nil, ErrNilPayload @@ -144,7 +140,8 @@ func PayloadToPayloadHeader(payload *api.VersionedExecutionPayload) (*api.Versio Deneb: header, }, nil case spec.DataVersionElectra: - header, err := electraPayloadToPayloadHeader(payload.Electra) + // Electra uses the same ExecutionPayload as Deneb + header, err := denebPayloadToPayloadHeader(payload.Electra) if err != nil { return nil, err } @@ -258,54 +255,6 @@ func denebPayloadToPayloadHeader(payload *deneb.ExecutionPayload) (*deneb.Execut }, nil } -func electraPayloadToPayloadHeader(payload *electra.ExecutionPayload) (*electra.ExecutionPayloadHeader, error) { - if payload == nil { - return nil, ErrNilPayload - } - - txRoot, err := deriveTransactionsRoot(payload.Transactions) - if err != nil { - return nil, fmt.Errorf("failed to derive transactions root: %w", err) - } - - wdRoot, err := deriveWithdrawalsRoot(payload.Withdrawals) - if err != nil { - return nil, fmt.Errorf("failed to derive withdrawals root: %w", err) - } - - depositRequestsRoot, err := deriveDepositRequestsRoot(payload.DepositRequests) - if err != nil { - return nil, fmt.Errorf("failed to derive deposit receipts root: %w", err) - } - - withdrawalRequestsRoot, err := deriveWithdrawalRequestsRoot(payload.WithdrawalRequests) - if err != nil { - return nil, fmt.Errorf("failed to derive exits root: %w", err) - } - - return &electra.ExecutionPayloadHeader{ - ParentHash: payload.ParentHash, - FeeRecipient: payload.FeeRecipient, - StateRoot: payload.StateRoot, - ReceiptsRoot: payload.ReceiptsRoot, - LogsBloom: payload.LogsBloom, - PrevRandao: payload.PrevRandao, - BlockNumber: payload.BlockNumber, - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Timestamp: payload.Timestamp, - ExtraData: payload.ExtraData, - BaseFeePerGas: payload.BaseFeePerGas, - BlockHash: payload.BlockHash, - TransactionsRoot: txRoot, - WithdrawalsRoot: wdRoot, - BlobGasUsed: payload.BlobGasUsed, - ExcessBlobGas: payload.ExcessBlobGas, - DepositRequestsRoot: depositRequestsRoot, - WithdrawalRequestsRoot: withdrawalRequestsRoot, - }, nil -} - func deriveTransactionsRoot(transactions []bellatrix.Transaction) (phase0.Root, error) { txs := utilbellatrix.ExecutionPayloadTransactions{Transactions: transactions} txRoot, err := txs.HashTreeRoot() @@ -324,27 +273,7 @@ func deriveWithdrawalsRoot(withdrawals []*capella.Withdrawal) (phase0.Root, erro return wdRoot, nil } -func deriveDepositRequestsRoot(depositRequests []*electra.DepositRequest) (phase0.Root, error) { - drs := utilelectra.DepositRequests{DepositRequests: depositRequests} - depositRequestsRoot, err := drs.HashTreeRoot() - if err != nil { - return phase0.Root{}, err - } - return depositRequestsRoot, nil -} - -func deriveWithdrawalRequestsRoot(withdrawalRequests []*electra.WithdrawalRequest) (phase0.Root, error) { - wrs := utilelectra.WithdrawalRequests{WithdrawalRequests: withdrawalRequests} - withdrawalRequestsRoot, err := wrs.HashTreeRoot() - if err != nil { - return phase0.Root{}, err - } - return withdrawalRequestsRoot, nil -} - // ComputeBlockHash computes the block hash for a given execution payload. -// -//nolint:cyclop func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot *phase0.Root) (phase0.Hash32, error) { switch payload.Version { case spec.DataVersionBellatrix: @@ -365,12 +294,6 @@ func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot * return phase0.Hash32{}, err } return phase0.Hash32(header.Hash()), nil - case spec.DataVersionElectra: - header, err := electraExecutionPayloadToBlockHeader(payload.Electra, parentBeaconRoot) - if err != nil { - return phase0.Hash32{}, err - } - return phase0.Hash32(header.Hash()), nil case spec.DataVersionPhase0, spec.DataVersionAltair: return phase0.Hash32{}, fmt.Errorf("%w: %d", ErrUnsupportedVersion, payload.Version) case spec.DataVersionUnknown: @@ -467,43 +390,6 @@ func denebExecutionPayloadToBlockHeader(payload *deneb.ExecutionPayload, parentB }, nil } -func electraExecutionPayloadToBlockHeader(payload *electra.ExecutionPayload, parentBeaconRoot *phase0.Root) (*types.Header, error) { - transactionHash, err := deriveTransactionsHash(payload.Transactions) - if err != nil { - return nil, err - } - baseFeePerGas := payload.BaseFeePerGas.ToBig() - withdrawalsHash := deriveWithdrawalsHash(payload.Withdrawals) - requestsHash := deriveRequestsHash(payload.DepositRequests, payload.WithdrawalRequests) - var beaconRootHash *common.Hash - if parentBeaconRoot != nil { - root := common.Hash(*parentBeaconRoot) - beaconRootHash = &root - } - return &types.Header{ - ParentHash: common.Hash(payload.ParentHash), - UncleHash: types.EmptyUncleHash, - Coinbase: common.Address(payload.FeeRecipient), - Root: common.Hash(payload.StateRoot), - TxHash: transactionHash, - ReceiptHash: common.Hash(payload.ReceiptsRoot), - Bloom: payload.LogsBloom, - Difficulty: common.Big0, - Number: new(big.Int).SetUint64(payload.BlockNumber), - GasLimit: payload.GasLimit, - GasUsed: payload.GasUsed, - Time: payload.Timestamp, - Extra: payload.ExtraData, - MixDigest: payload.PrevRandao, - BaseFee: baseFeePerGas, - WithdrawalsHash: &withdrawalsHash, - BlobGasUsed: &payload.BlobGasUsed, - ExcessBlobGas: &payload.ExcessBlobGas, - ParentBeaconRoot: beaconRootHash, - RequestsHash: &requestsHash, - }, nil -} - func deriveTransactionsHash(transactions []bellatrix.Transaction) (common.Hash, error) { transactionData := make([]*types.Transaction, len(transactions)) for i, encTx := range transactions { @@ -530,31 +416,6 @@ func deriveWithdrawalsHash(withdrawals []*capella.Withdrawal) common.Hash { return types.DeriveSha(types.Withdrawals(withdrawalData), trie.NewStackTrie(nil)) } -func deriveRequestsHash(depositRequests []*electra.DepositRequest, withdrawalRequests []*electra.WithdrawalRequest) common.Hash { - deposits := make(types.Deposits, len(depositRequests)) - for i, e := range depositRequests { - deposits[i] = &types.Deposit{ - PublicKey: types.BLSPublicKey(e.Pubkey), - WithdrawalCredentials: common.Hash(e.WithdrawalCredentials), - Amount: uint64(e.Amount), - Signature: types.BLSSignature(e.Signature), - Index: e.Index, - } - } - withdrawals := make(types.WithdrawalRequests, len(withdrawalRequests)) - for i, e := range withdrawalRequests { - withdrawals[i] = &types.WithdrawalRequest{ - Source: common.Address(e.SourceAddress), - PublicKey: types.BLSPublicKey(e.ValidatorPubkey), - Amount: uint64(e.Amount), - } - } - - requests := deposits.Requests() - requests = append(requests, withdrawals.Requests()...) - return types.DeriveSha(requests, trie.NewStackTrie(nil)) -} - func deriveBaseFeePerGas(baseFeePerGas [32]byte) *big.Int { // base fee per gas is stored little-endian but we need it // big-endian for big.Int. diff --git a/utils/utils_test.go b/utils/utils_test.go index a327431..43bc52a 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -1,9 +1,7 @@ package utils import ( - "fmt" - "io" - "net/http" + "os" "testing" "github.com/attestantio/go-builder-client/api" @@ -11,38 +9,10 @@ import ( "github.com/attestantio/go-eth2-client/spec/bellatrix" "github.com/attestantio/go-eth2-client/spec/capella" "github.com/attestantio/go-eth2-client/spec/deneb" - "github.com/attestantio/go-eth2-client/spec/electra" - "github.com/golang/snappy" + "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/stretchr/testify/require" ) -const mainnetTests = "https://github.com/ethereum/consensus-spec-tests/raw/master/tests/mainnet/" - -func downloadFile(url string) ([]byte, error) { - client := &http.Client{} - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - - resp, err := client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - return nil, fmt.Errorf("failed to download file: %s", resp.Status) - } - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - return body, nil -} - func TestHexToHash(t *testing.T) { _, err := HexToHash("0x01") require.Error(t, err) @@ -152,100 +122,56 @@ func TestHexToSignature(t *testing.T) { } func TestComputeHash(t *testing.T) { - t.Run("compute bellatrix block hash", func(t *testing.T) { - body := func() (body bellatrix.BeaconBlockBody) { - contentURL := mainnetTests + "bellatrix/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" - compressedData, err := downloadFile(contentURL) - require.NoError(t, err) - decompressedData, err := snappy.Decode(nil, compressedData) - require.NoError(t, err) - err = body.UnmarshalSSZ(decompressedData) - require.NoError(t, err) - return - }() + t.Run("Should compute bellatrix hash", func(t *testing.T) { + jsonFile, err := os.Open("../testdata/executionpayload/bellatrix-case0.json") + require.NoError(t, err) + defer jsonFile.Close() + payload := new(bellatrix.ExecutionPayload) + require.NoError(t, DecodeJSON(jsonFile, payload)) versionedPayload := &api.VersionedExecutionPayload{ Version: spec.DataVersionBellatrix, - Bellatrix: body.ExecutionPayload, + Bellatrix: payload, } hash, err := ComputeBlockHash(versionedPayload, nil) require.NoError(t, err) - expectedHash, err := versionedPayload.BlockHash() - require.NoError(t, err) - require.Equal(t, expectedHash, hash) + require.Equal(t, "0x6662fb418aa7b5c5c80e2e8bc87be48db82e799c4704368d34ddeb3b12549655", hash.String()) }) - t.Run("compute capella block hash", func(t *testing.T) { - body := func() (body capella.BeaconBlockBody) { - contentURL := mainnetTests + "capella/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" - compressedData, err := downloadFile(contentURL) - require.NoError(t, err) - decompressedData, err := snappy.Decode(nil, compressedData) - require.NoError(t, err) - err = body.UnmarshalSSZ(decompressedData) - require.NoError(t, err) - return - }() + t.Run("Should compute capella hash", func(t *testing.T) { + jsonFile, err := os.Open("../testdata/executionpayload/capella-case0.json") + require.NoError(t, err) + defer jsonFile.Close() + payload := new(capella.ExecutionPayload) + require.NoError(t, DecodeJSON(jsonFile, payload)) versionedPayload := &api.VersionedExecutionPayload{ Version: spec.DataVersionCapella, - Capella: body.ExecutionPayload, + Capella: payload, } hash, err := ComputeBlockHash(versionedPayload, nil) require.NoError(t, err) - expectedHash, err := versionedPayload.BlockHash() - require.NoError(t, err) - require.Equal(t, expectedHash, hash) + require.Equal(t, "0x08751ea2076d3ecc606231495a90ba91a66a9b8fb1a2b76c333f1957a1c667c3", hash.String()) }) - t.Run("compute deneb block hash", func(t *testing.T) { - body := func() (body deneb.BeaconBlockBody) { - contentURL := mainnetTests + "deneb/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" - compressedData, err := downloadFile(contentURL) - require.NoError(t, err) - decompressedData, err := snappy.Decode(nil, compressedData) - require.NoError(t, err) - err = body.UnmarshalSSZ(decompressedData) - require.NoError(t, err) - return - }() - - versionedPayload := &api.VersionedExecutionPayload{ - Version: spec.DataVersionDeneb, - Deneb: body.ExecutionPayload, - } - - hash, err := ComputeBlockHash(versionedPayload, nil) + t.Run("Should compute deneb hash", func(t *testing.T) { + jsonFile, err := os.Open("../testdata/executionpayload/deneb-case0.json") require.NoError(t, err) - expectedHash, err := versionedPayload.BlockHash() - require.NoError(t, err) - require.Equal(t, expectedHash, hash) - }) - - t.Run("compute electra block hash", func(t *testing.T) { - body := func() (body electra.BeaconBlockBody) { - contentURL := mainnetTests + "electra/operations/execution_payload/pyspec_tests/success_regular_payload/body.ssz_snappy" - compressedData, err := downloadFile(contentURL) - require.NoError(t, err) - decompressedData, err := snappy.Decode(nil, compressedData) - require.NoError(t, err) - err = body.UnmarshalSSZ(decompressedData) - require.NoError(t, err) - return - }() + defer jsonFile.Close() + payload := new(deneb.ExecutionPayload) + require.NoError(t, DecodeJSON(jsonFile, payload)) versionedPayload := &api.VersionedExecutionPayload{ - Version: spec.DataVersionElectra, - Electra: body.ExecutionPayload, + Version: spec.DataVersionDeneb, + Deneb: payload, } - - hash, err := ComputeBlockHash(versionedPayload, nil) - require.NoError(t, err) - expectedHash, err := versionedPayload.BlockHash() + h, _ := HexToHash("0xa119064ee9c03e2c7ad5821b6077606c64f36542eda12ed61a1edc5f898a17fc") + r := phase0.Root(h) + hash, err := ComputeBlockHash(versionedPayload, &r) require.NoError(t, err) - require.Equal(t, expectedHash, hash) + require.Equal(t, "0xd9491c8ae79611d0f08806f29b1e2e86cb8f64512aa381e543dcae257dda80d6", hash.String()) }) t.Run("Should error on unknown version", func(t *testing.T) { From a9590f22830f284e4f171506adac7e0d58019fe3 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 13:54:39 -0500 Subject: [PATCH 20/32] Remove go-ethereum replacement --- .golangci.yaml | 1 - go.mod | 40 +++++++++++++++---------------- go.sum | 64 +++++++++++++++++++++++++------------------------- 3 files changed, 52 insertions(+), 53 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index c25dd9a..e0bbea7 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -51,6 +51,5 @@ linters-settings: extra-rules: true gomoddirectives: replace-allow-list: - - github.com/ethereum/go-ethereum - github.com/attestantio/go-builder-client - github.com/attestantio/go-eth2-client diff --git a/go.mod b/go.mod index 6996d2d..d524853 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,15 @@ module github.com/flashbots/go-boost-utils -go 1.21 +go 1.22 + +toolchain go1.23.1 require ( - github.com/attestantio/go-builder-client v0.5.1-0.20240804084948-e06dcb494024 - github.com/attestantio/go-eth2-client v0.21.11-0.20240803084815-07eba3e76a14 + github.com/attestantio/go-builder-client v0.4.2 + github.com/attestantio/go-eth2-client v0.21.7-0.20240701211822-0a60485fce68 github.com/consensys/gnark-crypto v0.12.1 - github.com/ethereum/go-ethereum v1.13.14 - github.com/stretchr/testify v1.8.4 + github.com/ethereum/go-ethereum v1.14.9 + github.com/stretchr/testify v1.9.0 github.com/trailofbits/go-fuzz-utils v0.0.0-20210901195358-9657fcfd256c ) @@ -15,32 +17,33 @@ require ( github.com/DataDog/zstd v1.5.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cockroachdb/errors v1.11.1 // indirect + github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/fatih/color v1.16.0 // indirect github.com/ferranbt/fastssz v0.1.3 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect - github.com/getsentry/sentry-go v0.18.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/goccy/go-yaml v1.11.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/holiman/uint256 v1.2.4 // indirect - github.com/klauspost/compress v1.15.15 // indirect + github.com/holiman/uint256 v1.3.1 // indirect + github.com/klauspost/compress v1.16.0 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -69,18 +72,15 @@ require ( golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect + golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) -// This version points to Lightclient's prague-devnet-0 branch. -replace github.com/ethereum/go-ethereum => github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c - // Remove this when Jim merges pk910's PR. replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca diff --git a/go.sum b/go.sum index 994feb5..55bcb69 100644 --- a/go.sum +++ b/go.sum @@ -2,26 +2,28 @@ github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= -github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= -github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= +github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= +github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -30,8 +32,8 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -43,6 +45,10 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.14.9 h1:J7iwXDrtUyE9FUjUYbd4c9tyzwMh6dTJsKzo9i6SrwA= +github.com/ethereum/go-ethereum v1.14.9/go.mod h1:QeW+MtTpRdBEm2pUFoonByee8zfHv7kGp0wK0odvU1I= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= @@ -51,10 +57,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -90,11 +94,9 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc= github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= @@ -104,8 +106,8 @@ github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 h1:1W github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5/go.mod h1:lPd6wgiraLD0umFeiCjYaqoMLeU2b3dMATOJ9B/jnIA= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -118,8 +120,6 @@ github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c h1:TLHlueMtMl77hse3AQE6bSkp/nNywO16dAappalliMY= -github.com/lightclient/go-ethereum v1.10.10-0.20240514061317-d0d5d5390a5c/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -174,8 +174,8 @@ github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDN github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= @@ -232,8 +232,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -255,8 +255,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= From 47f44b9f2e8a07ff01adf410153b7b69a1432cd5 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 13:59:24 -0500 Subject: [PATCH 21/32] Fix some issues --- .golangci.yaml | 2 ++ utils/utils.go | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/.golangci.yaml b/.golangci.yaml index e0bbea7..af7817a 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -43,6 +43,8 @@ linters: - varcheck linters-settings: + cyclop: + max-complexity: 20 tagliatelle: case: rules: diff --git a/utils/utils.go b/utils/utils.go index 196fdd9..2235632 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -294,6 +294,13 @@ func ComputeBlockHash(payload *api.VersionedExecutionPayload, parentBeaconRoot * return phase0.Hash32{}, err } return phase0.Hash32(header.Hash()), nil + case spec.DataVersionElectra: + // Electra uses the same ExecutionPayload as Deneb + header, err := denebExecutionPayloadToBlockHeader(payload.Electra, parentBeaconRoot) + if err != nil { + return phase0.Hash32{}, err + } + return phase0.Hash32(header.Hash()), nil case spec.DataVersionPhase0, spec.DataVersionAltair: return phase0.Hash32{}, fmt.Errorf("%w: %d", ErrUnsupportedVersion, payload.Version) case spec.DataVersionUnknown: From 6209ed02a92c39ea51c1f7e294b6871b54f23a48 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 14:04:08 -0500 Subject: [PATCH 22/32] Remove toolchain line from go.mod --- go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.mod b/go.mod index d524853..eea3f0b 100644 --- a/go.mod +++ b/go.mod @@ -2,8 +2,6 @@ module github.com/flashbots/go-boost-utils go 1.22 -toolchain go1.23.1 - require ( github.com/attestantio/go-builder-client v0.4.2 github.com/attestantio/go-eth2-client v0.21.7-0.20240701211822-0a60485fce68 From 01b00973fe12481d41b1dc5b4128b78fc86418bb Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 14:12:16 -0500 Subject: [PATCH 23/32] Update github actions --- .github/workflows/checks.yml | 18 +++++++++--------- .github/workflows/release.yml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index e83d1c7..12dbd6e 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -12,13 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go 1.x - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: - go-version: ^1.20 + go-version: 'stable' id: go - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Run unit tests and generate the coverage report run: make test @@ -28,13 +28,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go 1.x - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: - go-version: ^1.20 + go-version: 'stable' id: go - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Install gofumpt run: go install mvdan.cc/gofumpt@latest @@ -56,13 +56,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Go 1.x - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: - go-version: ^1.20 + go-version: 'stable' id: go - name: Check out code into the Go module directory - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Fuzz each test for one second run: TERM=xterm FUZZTIME=1s make fuzz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8290fac..1253383 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Create release id: create_release From 969151155881d93bc79623aab4ad8dfe2d43325a Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 14:17:20 -0500 Subject: [PATCH 24/32] Use latest for staticcheck & golangci-lint --- .github/workflows/checks.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 12dbd6e..b6382a2 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -40,10 +40,10 @@ jobs: run: go install mvdan.cc/gofumpt@latest - name: Install staticcheck - run: go install honnef.co/go/tools/cmd/staticcheck@v0.4.3 + run: go install honnef.co/go/tools/cmd/staticcheck@latest - name: Install golangci-lint - run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.2 + run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - name: Lint run: make lint From 22f090f9547b8937b4030c1cc5bf853208a86eed Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 14:26:24 -0500 Subject: [PATCH 25/32] Update .golangci.yaml --- .golangci.yaml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index af7817a..716d659 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,6 +1,7 @@ linters: enable-all: true disable: + - depguard - dupl - exhaustruct - funlen @@ -10,12 +11,17 @@ linters: - godot - godox - gomnd + - inamedparam + - intrange - lll + - mnd - musttag - nlreturn - nonamedreturns - - nosnakecase - paralleltest + - perfsprint + - revive + - testifylint - testpackage - varnamelen - wrapcheck @@ -27,21 +33,8 @@ linters: - contextcheck - rowserrcheck - sqlclosecheck - - structcheck - wastedassign - # - # Disabled because deprecated: - # - - deadcode - - exhaustivestruct - - golint - - ifshort - - interfacer - - maligned - - scopelint - - varcheck - linters-settings: cyclop: max-complexity: 20 From 58709124077d0e515451942d76e3ad9eedd7fd00 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Wed, 25 Sep 2024 17:39:41 -0500 Subject: [PATCH 26/32] Remove replacements --- go.mod | 10 ++-------- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index eea3f0b..8a66039 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/flashbots/go-boost-utils go 1.22 require ( - github.com/attestantio/go-builder-client v0.4.2 - github.com/attestantio/go-eth2-client v0.21.7-0.20240701211822-0a60485fce68 + github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 + github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.14.9 github.com/stretchr/testify v1.9.0 @@ -78,9 +78,3 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) - -// Remove this when Jim merges pk910's PR. -replace github.com/attestantio/go-eth2-client => github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca - -// Remove this when Jim merge's jtraglia's PR. -replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 diff --git a/go.sum b/go.sum index 55bcb69..6139d38 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,10 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1:Ccyc8R6CJbnb5oTwjuYSa2XaYWFSN8R43Gh9V1zN3Dg= +github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= +github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 h1:/79oRg0Lu0WQPMh+WjKE5d6cUnCdw6OsiYfqZut1URo= +github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= @@ -102,8 +106,6 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= -github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5 h1:1W/Cz544b7FmjTn/5dB8obNDAFuRdRsywWJgOmxz5mU= -github.com/jtraglia/go-builder-client v0.4.6-0.20240925183257-4d86495441b5/go.mod h1:lPd6wgiraLD0umFeiCjYaqoMLeU2b3dMATOJ9B/jnIA= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= @@ -150,8 +152,6 @@ github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca h1:rc6VVR79GdE58Wx1Arh9QNo+0qmXOfYjWQhrbkSeoI0= -github.com/pk910/go-eth2-client v0.0.0-20240923174943-8d64565c83ca/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= From 6f018b0bbf18707614ec29e5c91851b1ac9e00dd Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 7 Oct 2024 12:37:08 -0500 Subject: [PATCH 27/32] Update go-eth2-client for alpha.7 support --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 8a66039..efc826b 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 - github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 + github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.14.9 github.com/stretchr/testify v1.9.0 diff --git a/go.sum b/go.sum index 6139d38..3ff17fa 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1 github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 h1:/79oRg0Lu0WQPMh+WjKE5d6cUnCdw6OsiYfqZut1URo= github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= +github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= +github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= From e6e643328cf36a4de6fb8f953152746ce27a1d4d Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 7 Oct 2024 12:41:25 -0500 Subject: [PATCH 28/32] Run go mod tidy --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index 3ff17fa..1e996fe 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,6 @@ github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjC github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1:Ccyc8R6CJbnb5oTwjuYSa2XaYWFSN8R43Gh9V1zN3Dg= github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= -github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304 h1:/79oRg0Lu0WQPMh+WjKE5d6cUnCdw6OsiYfqZut1URo= -github.com/attestantio/go-eth2-client v0.21.12-0.20240925220056-393fff117304/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= From 55b15840e5309f3fada5b4a812948b1e7a14d86d Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 15:18:57 -0500 Subject: [PATCH 29/32] Use replaced go-builder-client --- go.mod | 3 +++ go.sum | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index efc826b..7a48d53 100644 --- a/go.mod +++ b/go.mod @@ -78,3 +78,6 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) + +// Remove when go-builder-client is updated. +replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 diff --git a/go.sum b/go.sum index 1e996fe..c59f2b2 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,6 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 h1:Ccyc8R6CJbnb5oTwjuYSa2XaYWFSN8R43Gh9V1zN3Dg= -github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3/go.mod h1:qM91NvVG+fepPBN2/MDLpWJ9I/zZtpZAkXa8T9GFOvM= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -106,6 +104,8 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= +github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 h1:ip/ONBWDWPCGWNGrMXD2vvZH/ABjw5wKfcQ8z7a8MWo= +github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54/go.mod h1:UkqMh+CHZh63XDx3GdBLijRdFQu2Hyqh3n71V4G10Ws= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= From c3fca3d69760f3e5ee3357e921f9a79804c1c825 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 16:41:43 -0500 Subject: [PATCH 30/32] Add replace for go-eth2-client --- go.mod | 3 +++ go.sum | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 7a48d53..723c2ce 100644 --- a/go.mod +++ b/go.mod @@ -79,5 +79,8 @@ require ( rsc.io/tmplfunc v0.0.3 // indirect ) +// Remove when go-eth2-client is updated. +replace github.com/attestantio/go-eth2-client => github.com/jtraglia/go-eth2-client v0.21.5-0.20241014213529-c8e71ddfccc4 + // Remove when go-builder-client is updated. replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 diff --git a/go.sum b/go.sum index c59f2b2..0ca2de2 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,6 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 h1:3uu4l7TK5PPVBvVUpwxftDpKFddEE3g196BYJbKYq4g= -github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= @@ -106,6 +104,8 @@ github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0X github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 h1:ip/ONBWDWPCGWNGrMXD2vvZH/ABjw5wKfcQ8z7a8MWo= github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54/go.mod h1:UkqMh+CHZh63XDx3GdBLijRdFQu2Hyqh3n71V4G10Ws= +github.com/jtraglia/go-eth2-client v0.21.5-0.20241014213529-c8e71ddfccc4 h1:gbbca7v+H20HKrOYaMlCAboeAtP93DmM5pXILfVAy4c= +github.com/jtraglia/go-eth2-client v0.21.5-0.20241014213529-c8e71ddfccc4/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= From 0dbff0fb546834d21e51bdb22f279d3d9c3a481a Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 16:58:39 -0500 Subject: [PATCH 31/32] Update go-eth2-client --- go.mod | 5 +---- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 723c2ce..bd383e3 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.22 require ( github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 - github.com/attestantio/go-eth2-client v0.21.12-0.20241006200801-8fa702e3a895 + github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.14.9 github.com/stretchr/testify v1.9.0 @@ -79,8 +79,5 @@ require ( rsc.io/tmplfunc v0.0.3 // indirect ) -// Remove when go-eth2-client is updated. -replace github.com/attestantio/go-eth2-client => github.com/jtraglia/go-eth2-client v0.21.5-0.20241014213529-c8e71ddfccc4 - // Remove when go-builder-client is updated. replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 diff --git a/go.sum b/go.sum index 0ca2de2..2a4b268 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 h1:Xvkj/3ilNuZgoGnxu/uiXmCDmKjBE0ruygTHZIU1JFs= +github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= @@ -104,8 +106,6 @@ github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0X github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 h1:ip/ONBWDWPCGWNGrMXD2vvZH/ABjw5wKfcQ8z7a8MWo= github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54/go.mod h1:UkqMh+CHZh63XDx3GdBLijRdFQu2Hyqh3n71V4G10Ws= -github.com/jtraglia/go-eth2-client v0.21.5-0.20241014213529-c8e71ddfccc4 h1:gbbca7v+H20HKrOYaMlCAboeAtP93DmM5pXILfVAy4c= -github.com/jtraglia/go-eth2-client v0.21.5-0.20241014213529-c8e71ddfccc4/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= From 85cd9c032fdd7cf8bd827397d153cdb614b7e948 Mon Sep 17 00:00:00 2001 From: Justin Traglia Date: Mon, 14 Oct 2024 17:02:22 -0500 Subject: [PATCH 32/32] Update go-builder-client --- go.mod | 5 +---- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index bd383e3..169ba24 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/flashbots/go-boost-utils go 1.22 require ( - github.com/attestantio/go-builder-client v0.5.1-0.20240925223414-5da8987dd6f3 + github.com/attestantio/go-builder-client v0.5.1-0.20241014215920-ba44f1de4249 github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum/go-ethereum v1.14.9 @@ -78,6 +78,3 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) - -// Remove when go-builder-client is updated. -replace github.com/attestantio/go-builder-client => github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 diff --git a/go.sum b/go.sum index 2a4b268..ecd5a86 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/attestantio/go-builder-client v0.5.1-0.20241014215920-ba44f1de4249 h1:y01TZYnM3DDb3nkqA3VaoiqKuWWAgLIfrm63XOQJsFc= +github.com/attestantio/go-builder-client v0.5.1-0.20241014215920-ba44f1de4249/go.mod h1:X31JAUL4q6cY/OGClpBQcwFN7FBixt6Wjrqy7RrlhEc= github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43 h1:Xvkj/3ilNuZgoGnxu/uiXmCDmKjBE0ruygTHZIU1JFs= github.com/attestantio/go-eth2-client v0.21.12-0.20241014214053-759b0ace2e43/go.mod h1:vy5jU/uDZ2+RcVzq5BfnG+bQ3/6uu9DGwCrGsPtjJ1A= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -104,8 +106,6 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U= github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= -github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54 h1:ip/ONBWDWPCGWNGrMXD2vvZH/ABjw5wKfcQ8z7a8MWo= -github.com/jtraglia/go-builder-client v0.4.6-0.20241014193815-df58bba2ab54/go.mod h1:UkqMh+CHZh63XDx3GdBLijRdFQu2Hyqh3n71V4G10Ws= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=