mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-28 15:46:43 +00:00
feat: add beacon validation for client update
This commit is contained in:
parent
1b58d9431b
commit
337346d02f
19 changed files with 74 additions and 496 deletions
|
|
@ -2,254 +2,17 @@ package beacon
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"net"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/internal/testlog"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethereum/go-ethereum/p2p/discover"
|
||||
"github.com/ethereum/go-ethereum/p2p/discover/portalwire"
|
||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||
"github.com/ethereum/go-ethereum/portalnetwork/storage"
|
||||
"github.com/protolambda/ztyp/codec"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func setupBeaconNetwork(addr string, bootNodes []*enode.Node) (*BeaconNetwork, error) {
|
||||
conf := discover.DefaultPortalProtocolConfig()
|
||||
if addr != "" {
|
||||
conf.ListenAddr = addr
|
||||
}
|
||||
if bootNodes != nil {
|
||||
conf.BootstrapNodes = bootNodes
|
||||
}
|
||||
|
||||
addr1, err := net.ResolveUDPAddr("udp", conf.ListenAddr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
conn, err := net.ListenUDP("udp", addr1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
privKey, err := crypto.GenerateKey()
|
||||
if err != nil {
|
||||
panic("couldn't generate key: " + err.Error())
|
||||
}
|
||||
|
||||
discCfg := discover.Config{
|
||||
PrivateKey: privKey,
|
||||
NetRestrict: conf.NetRestrict,
|
||||
Bootnodes: conf.BootstrapNodes,
|
||||
}
|
||||
|
||||
nodeDB, err := enode.OpenDB(conf.NodeDBPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
localNode := enode.NewLocalNode(nodeDB, privKey)
|
||||
localNode.SetFallbackIP(net.IP{127, 0, 0, 1})
|
||||
localNode.Set(discover.Tag)
|
||||
|
||||
discV5, err := discover.ListenV5(conn, localNode, discCfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contentQueue := make(chan *discover.ContentElement, 50)
|
||||
|
||||
portalProtocol, err := discover.NewPortalProtocol(conf, portalwire.Beacon, privKey, conn, localNode, discV5, &storage.MockStorage{Db: make(map[string][]byte)}, contentQueue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewBeaconNetwork(portalProtocol), nil
|
||||
}
|
||||
|
||||
func TestBeaconNetworkContent(t *testing.T) {
|
||||
logger := testlog.Logger(t, log.LevelError)
|
||||
node1, err := setupBeaconNetwork(":6666", nil)
|
||||
assert.NoError(t, err)
|
||||
node1.log = logger
|
||||
node1.portalProtocol.Log = logger
|
||||
err = node1.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
|
||||
node2, err := setupBeaconNetwork(":6667", []*enode.Node{node1.portalProtocol.Self()})
|
||||
assert.NoError(t, err)
|
||||
node2.log = logger
|
||||
node2.portalProtocol.Log = logger
|
||||
err = node2.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
node3, err := setupBeaconNetwork(":6668", []*enode.Node{node1.portalProtocol.Self()})
|
||||
assert.NoError(t, err)
|
||||
node3.log = logger
|
||||
node3.portalProtocol.Log = logger
|
||||
err = node3.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
filePath := "testdata/light_client_updates_by_range.json"
|
||||
jsonStr, _ := os.ReadFile(filePath)
|
||||
|
||||
var result map[string]interface{}
|
||||
err = json.Unmarshal(jsonStr, &result)
|
||||
assert.NoError(t, err)
|
||||
|
||||
id := node1.portalProtocol.Self().ID()
|
||||
for _, v := range result {
|
||||
kBytes, _ := hexutil.Decode(v.(map[string]interface{})["content_key"].(string))
|
||||
vBytes, _ := hexutil.Decode(v.(map[string]interface{})["content_value"].(string))
|
||||
// contentKey := storage.NewContentKey(LightClientUpdate, kBytes).Encode()
|
||||
_, err = node1.portalProtocol.Gossip(&id, [][]byte{kBytes}, [][]byte{vBytes})
|
||||
assert.NoError(t, err)
|
||||
time.Sleep(3 * time.Second)
|
||||
|
||||
contentId := node2.portalProtocol.ToContentId(kBytes)
|
||||
get, err := node2.portalProtocol.Get(kBytes, contentId)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, vBytes, get)
|
||||
}
|
||||
|
||||
filePath1 := "testdata/light_client_finality_update.json"
|
||||
jsonStr1, _ := os.ReadFile(filePath1)
|
||||
|
||||
var result1 map[string]interface{}
|
||||
err = json.Unmarshal(jsonStr1, &result1)
|
||||
assert.NoError(t, err)
|
||||
|
||||
for _, v := range result1 {
|
||||
kBytes1, _ := hexutil.Decode(v.(map[string]interface{})["content_key"].(string))
|
||||
vBytes1, _ := hexutil.Decode(v.(map[string]interface{})["content_value"].(string))
|
||||
|
||||
// contentKey1 := storage.NewContentKey(LightClientFinalityUpdate, kBytes1).Encode()
|
||||
|
||||
id = node1.portalProtocol.Self().ID()
|
||||
_, err = node1.portalProtocol.Gossip(&id, [][]byte{kBytes1}, [][]byte{vBytes1})
|
||||
assert.NoError(t, err)
|
||||
|
||||
time.Sleep(3 * time.Second)
|
||||
|
||||
contentId1 := node2.portalProtocol.ToContentId(kBytes1)
|
||||
get1, err := node2.portalProtocol.Get(kBytes1, contentId1)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, vBytes1, get1)
|
||||
}
|
||||
|
||||
filePath2 := "testdata/light_client_optimistic_update.json"
|
||||
jsonStr2, _ := os.ReadFile(filePath2)
|
||||
|
||||
var result2 map[string]interface{}
|
||||
err = json.Unmarshal(jsonStr2, &result2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
for _, v := range result2 {
|
||||
kBytes2, _ := hexutil.Decode(v.(map[string]interface{})["content_key"].(string))
|
||||
vBytes2, _ := hexutil.Decode(v.(map[string]interface{})["content_value"].(string))
|
||||
|
||||
// contentKey2 := storage.NewContentKey(LightClientOptimisticUpdate, kBytes2).Encode()
|
||||
|
||||
id = node1.portalProtocol.Self().ID()
|
||||
_, err = node1.portalProtocol.Gossip(&id, [][]byte{kBytes2}, [][]byte{vBytes2})
|
||||
assert.NoError(t, err)
|
||||
|
||||
time.Sleep(3 * time.Second)
|
||||
|
||||
contentId2 := node2.portalProtocol.ToContentId(kBytes2)
|
||||
get2, err := node2.portalProtocol.Get(kBytes2, contentId2)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, vBytes2, get2)
|
||||
}
|
||||
|
||||
// filePath3 := "testdata/light_client_bootstrap.json"
|
||||
// jsonStr3, _ := os.ReadFile(filePath3)
|
||||
|
||||
// var result3 map[string]interface{}
|
||||
// err = json.Unmarshal(jsonStr3, &result3)
|
||||
// assert.NoError(t, err)
|
||||
|
||||
// for _, v := range result3 {
|
||||
// kBytes3, _ := hexutil.Decode(v.(map[string]interface{})["content_key"].(string))
|
||||
// vBytes3, _ := hexutil.Decode(v.(map[string]interface{})["content_value"].(string))
|
||||
|
||||
// contentKey3 := storage.NewContentKey(LightClientBootstrap, kBytes3).Encode()
|
||||
|
||||
// id = node1.portalProtocol.Self().ID()
|
||||
// _, err = node1.portalProtocol.Gossip(&id, [][]byte{contentKey3}, [][]byte{vBytes3})
|
||||
// assert.NoError(t, err)
|
||||
|
||||
// time.Sleep(3 * time.Second)
|
||||
|
||||
// contentId3 := node2.portalProtocol.ToContentId(contentKey3)
|
||||
// get3, err := node2.portalProtocol.Get(contentKey3, contentId3)
|
||||
// assert.NoError(t, err)
|
||||
// assert.Equal(t, vBytes3, get3)
|
||||
// }
|
||||
}
|
||||
|
||||
type Entry struct {
|
||||
ContentKey string `yaml:"content_key"`
|
||||
ContentValue string `yaml:"content_value"`
|
||||
}
|
||||
|
||||
func TestGossipTwoNodes(t *testing.T) {
|
||||
file, err := os.ReadFile("./testdata/hive/gossip.yaml")
|
||||
require.NoError(t, err)
|
||||
entries := make([]Entry, 0)
|
||||
err = yaml.Unmarshal(file, &entries)
|
||||
require.NoError(t, err)
|
||||
|
||||
keys := make([][]byte, 0)
|
||||
values := make([][]byte, 0)
|
||||
|
||||
for _, entry := range entries {
|
||||
keys = append(keys, hexutil.MustDecode(entry.ContentKey))
|
||||
values = append(values, hexutil.MustDecode(entry.ContentValue))
|
||||
}
|
||||
|
||||
logger := testlog.Logger(t, log.LvlTrace)
|
||||
node1, err := setupBeaconNetwork(":6998", nil)
|
||||
assert.NoError(t, err)
|
||||
node1.log = logger
|
||||
node1.portalProtocol.Log = logger
|
||||
err = node1.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
node2, err := setupBeaconNetwork(":6999", nil)
|
||||
assert.NoError(t, err)
|
||||
node2.log = logger
|
||||
node2.portalProtocol.Log = logger
|
||||
err = node2.Start()
|
||||
assert.NoError(t, err)
|
||||
|
||||
node2.portalProtocol.AddEnr(node1.portalProtocol.Self())
|
||||
|
||||
id := node2.portalProtocol.Self().ID()
|
||||
|
||||
num, err := node2.portalProtocol.Gossip(&id, keys, values)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, num, 1)
|
||||
|
||||
time.Sleep(time.Second * 10)
|
||||
|
||||
for i, key := range keys {
|
||||
val := values[i]
|
||||
res, err := node1.portalProtocol.Get(key, node1.portalProtocol.ToContentId(key))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, res, val)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLightClientBootstrapValidation(t *testing.T) {
|
||||
bootstrap, err := GetLightClientBootstrap(0)
|
||||
require.NoError(t, err)
|
||||
|
|
@ -286,7 +49,7 @@ func TestLightClientFinalityUpdateValidation(t *testing.T) {
|
|||
update, err := GetLightClientFinalityUpdate(0)
|
||||
require.NoError(t, err)
|
||||
key := &LightClientFinalityUpdateKey{
|
||||
FinalizedSlot: 17748599031001599584,
|
||||
FinalizedSlot: 10934316269310501102,
|
||||
}
|
||||
keyData, err := key.MarshalSSZ()
|
||||
require.NoError(t, err)
|
||||
|
|
@ -304,7 +67,7 @@ func TestLightClientOptimisticUpdateValidation(t *testing.T) {
|
|||
update, err := GetLightClientOptimisticUpdate(0)
|
||||
require.NoError(t, err)
|
||||
key := &LightClientOptimisticUpdateKey{
|
||||
OptimisticSlot: 6292665015452153680,
|
||||
OptimisticSlot: 15067541596220156845,
|
||||
}
|
||||
keyData, err := key.MarshalSSZ()
|
||||
require.NoError(t, err)
|
||||
|
|
@ -317,3 +80,8 @@ func TestLightClientOptimisticUpdateValidation(t *testing.T) {
|
|||
err = bn.validateContent(contentKey, buf.Bytes())
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestHistorySummariesWithProofValidation(t *testing.T) {
|
||||
_, err := GetHistorySummariesWithProof()
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,11 +3,16 @@ package beacon
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/p2p/discover"
|
||||
"github.com/ethereum/go-ethereum/p2p/discover/portalwire"
|
||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||
"github.com/ethereum/go-ethereum/portalnetwork/storage"
|
||||
ssz "github.com/ferranbt/fastssz"
|
||||
"github.com/golang/snappy"
|
||||
"github.com/protolambda/zrnt/eth2/beacon/capella"
|
||||
"github.com/protolambda/zrnt/eth2/beacon/common"
|
||||
"github.com/protolambda/zrnt/eth2/beacon/deneb"
|
||||
"github.com/protolambda/zrnt/eth2/configs"
|
||||
|
|
@ -15,6 +20,59 @@ import (
|
|||
"github.com/protolambda/ztyp/tree"
|
||||
)
|
||||
|
||||
func SetupBeaconNetwork(addr string, bootNodes []*enode.Node) (*BeaconNetwork, error) {
|
||||
conf := discover.DefaultPortalProtocolConfig()
|
||||
if addr != "" {
|
||||
conf.ListenAddr = addr
|
||||
}
|
||||
if bootNodes != nil {
|
||||
conf.BootstrapNodes = bootNodes
|
||||
}
|
||||
|
||||
addr1, err := net.ResolveUDPAddr("udp", conf.ListenAddr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
conn, err := net.ListenUDP("udp", addr1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
privKey, err := crypto.GenerateKey()
|
||||
if err != nil {
|
||||
panic("couldn't generate key: " + err.Error())
|
||||
}
|
||||
|
||||
discCfg := discover.Config{
|
||||
PrivateKey: privKey,
|
||||
NetRestrict: conf.NetRestrict,
|
||||
Bootnodes: conf.BootstrapNodes,
|
||||
}
|
||||
|
||||
nodeDB, err := enode.OpenDB(conf.NodeDBPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
localNode := enode.NewLocalNode(nodeDB, privKey)
|
||||
localNode.SetFallbackIP(net.IP{127, 0, 0, 1})
|
||||
localNode.Set(discover.Tag)
|
||||
|
||||
discV5, err := discover.ListenV5(conn, localNode, discCfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contentQueue := make(chan *discover.ContentElement, 50)
|
||||
|
||||
portalProtocol, err := discover.NewPortalProtocol(conf, portalwire.Beacon, privKey, conn, localNode, discV5, &storage.MockStorage{Db: make(map[string][]byte)}, contentQueue)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewBeaconNetwork(portalProtocol), nil
|
||||
}
|
||||
|
||||
func GetLightClientBootstrap(number uint8) (ForkedLightClientBootstrap, error) {
|
||||
file, err := os.ReadFile(fmt.Sprintf("testdata/beacon/LightClientBootstrap/ssz_random/case_%d/serialized.ssz_snappy", number))
|
||||
if err != nil {
|
||||
|
|
@ -58,7 +116,7 @@ func GetClientUpdate(number uint8) (ForkedLightClientUpdate, error) {
|
|||
}
|
||||
|
||||
func GetLightClientFinalityUpdate(number uint8) (ForkedLightClientFinalityUpdate, error) {
|
||||
file, err := os.ReadFile(fmt.Sprintf("testdata/beacon/LightClientFinalityUpdate/ssz_random/case_%d/serialized.ssz_snappy", number))
|
||||
file, err := os.ReadFile(fmt.Sprintf("testdata/beacon/deneb/LightClientFinalityUpdate/ssz_random/case_%d/serialized.ssz_snappy", number))
|
||||
if err != nil {
|
||||
return ForkedLightClientFinalityUpdate{}, err
|
||||
}
|
||||
|
|
@ -66,7 +124,7 @@ func GetLightClientFinalityUpdate(number uint8) (ForkedLightClientFinalityUpdate
|
|||
if err != nil {
|
||||
return ForkedLightClientFinalityUpdate{}, err
|
||||
}
|
||||
update := &capella.LightClientFinalityUpdate{}
|
||||
update := &deneb.LightClientFinalityUpdate{}
|
||||
err = update.Deserialize(configs.Mainnet, codec.NewDecodingReader(bytes.NewReader(data), uint64(len(data))))
|
||||
if err != nil {
|
||||
return ForkedLightClientFinalityUpdate{}, err
|
||||
|
|
@ -80,7 +138,7 @@ func GetLightClientFinalityUpdate(number uint8) (ForkedLightClientFinalityUpdate
|
|||
}
|
||||
|
||||
func GetLightClientOptimisticUpdate(number uint8) (ForkedLightClientOptimisticUpdate, error) {
|
||||
file, err := os.ReadFile(fmt.Sprintf("testdata/beacon/LightClientOptimisticUpdate/ssz_random/case_%d/serialized.ssz_snappy", number))
|
||||
file, err := os.ReadFile(fmt.Sprintf("testdata/beacon/deneb/LightClientOptimisticUpdate/ssz_random/case_%d/serialized.ssz_snappy", number))
|
||||
if err != nil {
|
||||
return ForkedLightClientOptimisticUpdate{}, err
|
||||
}
|
||||
|
|
@ -91,7 +149,7 @@ func GetLightClientOptimisticUpdate(number uint8) (ForkedLightClientOptimisticUp
|
|||
bootstrap := &ForkedLightClientOptimisticUpdate{}
|
||||
|
||||
forkData := make([]byte, 0)
|
||||
forkData = append(forkData, Capella[:]...)
|
||||
forkData = append(forkData, Deneb[:]...)
|
||||
forkData = append(forkData, data...)
|
||||
err = bootstrap.Deserialize(configs.Mainnet, codec.NewDecodingReader(bytes.NewReader(forkData), uint64(len(forkData))))
|
||||
if err != nil {
|
||||
|
|
@ -166,14 +224,16 @@ func BuildHistoricalSummariesProof(beaconState deneb.BeaconState) ([][]byte, err
|
|||
|
||||
leavesBytes := make([][]byte, 0)
|
||||
for _, item := range leaves {
|
||||
leavesBytes = append(leavesBytes, item[:])
|
||||
dest := make([]byte, len(item))
|
||||
copy(dest, item[:])
|
||||
leavesBytes = append(leavesBytes, dest)
|
||||
}
|
||||
|
||||
tree, err := ssz.TreeFromChunks(leavesBytes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
proof, err := tree.Prove(27)
|
||||
proof, err := tree.Prove(59)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,42 +0,0 @@
|
|||
attested_header:
|
||||
beacon: {slot: 12138415186633287343, proposer_index: 4346961866364617981, parent_root: '0x6f5a62d2eea42df77e8063c35ebb20071a754fe0e10f44718c59bba100456265',
|
||||
state_root: '0xd510b554c7e5cc2be6136be9902a7d49e6cb21c36cd12c942cc77ee6491211a1',
|
||||
body_root: '0xcc67d01f9d529e16333170f366defcc0bb8fbd0a9b84bd13d787bbcf86fe3cc5'}
|
||||
execution: {parent_hash: '0x8bd05b2ccf65dd63fadb4c27e4a180658ca6213fcd80bedd8f76f717270ac57e',
|
||||
fee_recipient: '0xa996599dd9c8cac57eb93431aa4623d766ed22bd', state_root: '0x7dc815c2ef07c31fdaf6c6201ec4f833da452878a63cdf92e6bd2c86eaf2f101',
|
||||
receipts_root: '0x46657042310a3e281e9426637ab018f47484fe810dc44f22012a171b232c6ec5',
|
||||
logs_bloom: '0x2557849c05dde99482e398870cd773807c2e03b45adb4409d37fc62264842b925bfac2b450ea0bdc8411eddcd95bb63cb345584b17a2a03da1750499e986f42d9c143b995398d3b3629faddbc0e4db259a71d6f4aea3065bdaed970dc209d2a44c7e76d6a58d89dc9166e57e1e8ed731a59aa3463d578ade0ad164679c2646898a2ebf11aa4810fbb7ddc36972520c116d2057c201f6dcd0ebcb0b8aea607783f485169b430985a24176362c32d35285e4f44664061ee9a67d4ebf26a77025d3da79e11807fc12a2f45d636b64658f6491c6ca4a9583c1ce86461eb9c05111a4e834272e1be4e6f1f0457e97afc14373ba94d0445ddcff72dd2b4edc5db62d7a',
|
||||
prev_randao: '0xbcd6a8ad279ada054a4160f4c30804c5e458592f5db9dffe068769a7798d7b98',
|
||||
block_number: 5359070834881498959, gas_limit: 2166440953794352110, gas_used: 14011377641386848351,
|
||||
timestamp: 4541459778656419002, extra_data: '0x83b692c9', base_fee_per_gas: '105178620911152626980637974773510527294596551980439981596687191320690568730935',
|
||||
block_hash: '0xc0d38bf9e14cf2d3d0b58a243f6de27198dbcff33e36966012dfd3b4199b0ceb',
|
||||
transactions_root: '0xe0edba542743dac6ec17e462de5d7f12ede7349dd12095682b6d9dcc3f3bee5a',
|
||||
withdrawals_root: '0x28ce6c427881a19a7aaf0d2f8255e30376ee19193cd0278244141e1a66f3c45b'}
|
||||
execution_branch: ['0x3e85d631970da85df7a6dab6c62c198d0a291e891d5a897bafc87bcfd2312cf6',
|
||||
'0x0ef5010e5167424e0edf2d34f45dc762f83bce87334de079068eeb897d0812b0', '0x321b2c03c34c81c141f66ec6764865ff81932f666cb7f0ef1d382fe67f9bca9b',
|
||||
'0x6b8579a5c7904fd8a945d67876a2e680d181324291933c2b9be159127dff377e']
|
||||
finalized_header:
|
||||
beacon: {slot: 17748599031001599584, proposer_index: 1108820797834974242, parent_root: '0x95924f09be19073df3f7eda9ca3d7824dc4cf6b86877b96391a420364487c4b6',
|
||||
state_root: '0x4ad4a151a7a8d49ead00bd82a2864e3231582e5aa2cdb9e8ddc041c42ebdf617',
|
||||
body_root: '0xbaa18d70c7a36d7e3af79bf0874b902a173d83daad5c56f83ede72788abda4e8'}
|
||||
execution: {parent_hash: '0x89a08ee8f477012d63d16896bf5b788396610c4f7725a1f9c06566e1422e0bf6',
|
||||
fee_recipient: '0x108d662743c033fa17c505e938784f2c8d0616f7', state_root: '0xe0671e87309b33005c672f330694fb579f4c6e60015f265c5180fd1c2b8b13b5',
|
||||
receipts_root: '0x7165bc2be0455938b0b41d95e2743075d71d6ecb996bc380a79c66988d28223e',
|
||||
logs_bloom: '0x7f551c8ff137943f2cc589d4cb353afc2c70826c204a578fbc18c4d15c9961eb16a9ac0ede9b26d76ece811a154017c158ef00d815e87dd5fdba32369f80a9d959a21ce67f9f30106a1fef4ce5245926c79a0bfee5b1c707b0fd90d293219dfc946b1e9b599e8fcff4b077c68ed0d280955069835e490333349b18fdff67cb865ccede638f2056acfa7012661d70b60b0a9e01c9abab2cf240d12eb17866bced86979f1d2655dd465ebd81b9bc61174785026766cb5e6e651cdcf79509e09dfcaa2d59f7d34018b7f5be236262592d746f9cd189db3380db0f841df26e3b3feb4312c44f4f239f7012676ce5fa2886727681e0c25d696ca32e698481162472a4',
|
||||
prev_randao: '0x4a917295c40134b68b53481c95b394ca63a5affab7611c822f81158c6a5b51cd',
|
||||
block_number: 4122197744761408790, gas_limit: 11571895162938180945, gas_used: 7213953539706484726,
|
||||
timestamp: 4811869494528087678, extra_data: '0x68c187ab50f3f0052977b445047cd3ef5fd564a907446819574a90d79c7b',
|
||||
base_fee_per_gas: '110687534270674137293033921319617316007221272750733285397296945145497217436323',
|
||||
block_hash: '0x0ab5dd6cbb5d76813131be4d147081f639dc5fc9163b58bcce421f6b8aa49cc5',
|
||||
transactions_root: '0xc28b49d502f559e9ede0c8800d173a3ca373e2cc7965ea6115f9818edead9332',
|
||||
withdrawals_root: '0x778c759c4dc95d80121cc56338c0e8fa657d3a39b6cfa67eec5ec471de48fa7e'}
|
||||
execution_branch: ['0x103bab66f63d57f6158eef6f18c9ffcc6e9b2e2593731a58001fc991c39ac618',
|
||||
'0x90f38c883735e867260f8ac840c01cc1b6165bfc64d9605dff5a3d60b9d575be', '0x63da59bae4b737090510c8c9c894637bb1fd69d9a5e334b2a4aa3374927c9cf8',
|
||||
'0x65de14fcb49204658459a5c08213db247659ab29c41f2cada68d466857481fd3']
|
||||
finality_branch: ['0x838ab6e8d817f3d454a69e79a435cca780df0e5b1e62971df7fec176e57f7f37',
|
||||
'0x7a6ce91bbc95dd1721876d6cce5b900dd971f4508044dd3658d457d612660731', '0x51e50ccd38f16f05fe061b2cd92af04d0bbc05a80b46df103ff0abe3e86003bc',
|
||||
'0x05e5d6924c603ffdd7b3057ac555dfcc134209a00696cc3f491f2fbd1d1732b1', '0xbf6a03d2afe69a52fd75343888feba4eb3009a291a3b6df57f34b91715e5cc9d',
|
||||
'0x4062e70d3df5e98c523a4c8af701e68357e9d239fcef778b94c7862a889e846d']
|
||||
sync_aggregate: {sync_committee_bits: '0xdb81d9900c4c938d4f891903aa078859534bdb4c4f3ca63f29ea097dec215d3071fce763085bb11491364ffc2934d72f3e0aba09b90844266bc0dd38330e57cc',
|
||||
sync_committee_signature: '0x8eb0eb4c085e840235f15086287f62815607f2aac486f07b78a8b41ec6d0baee8b34f664b8efdee877080b44e3104792fe90dce4a211e9e58abeeefcb67b4918c61e01950b927ad25a988ebf52761c6c1d26eae4f501238359aac17361d6c3ae'}
|
||||
signature_slot: 9588297899091073326
|
||||
Binary file not shown.
|
|
@ -1,42 +0,0 @@
|
|||
attested_header:
|
||||
beacon: {slot: 578398239126748623, proposer_index: 17656090351597428288, parent_root: '0xd3bcc97f2c8650c0b23771681dd7ddaf5b4a7dbe59fcb9b0c7e4545ef9380c95',
|
||||
state_root: '0x92b144d38a5984b5f085a233f8b63dc342f3e388ffa6353baaf2744f39f79859',
|
||||
body_root: '0x487ed6e6a1dc44910e1a4ba1db23465f24f35dbd136757611e04163a0ce45c6a'}
|
||||
execution: {parent_hash: '0xe8346c5c1df5a99c2a85789b958a7e1c76f14f45d8ccbde857a3854fe0427ae6',
|
||||
fee_recipient: '0x299719070a921a03e150b9c4ed8bcfa39d6c96af', state_root: '0x549deb2e10f9a257d48846196af922fa3dac6abf804aa8a7d23979be53edf497',
|
||||
receipts_root: '0x4ec3e7f2b66c0fc0c0a6f5b58934e013de62de8d18fdcdcf22924f83e7715417',
|
||||
logs_bloom: '0xca22af55f891312e2a0f81f00c0ad25996d552620ff236a224224fb2bb54366aef07195ef73cc06d50ff2482ffcbf46cfe8e93ecf91878806b66416898eb3effa7d8f1b702ffe24578bdb854dc899ca94ddbc31b62874285ae9b38608e50d27c8513f9b0f6712f9c59f255333198ac146f74141275a60ac8b884f4d8a68f4995ccda401755df1699efb60b7294a8f2b8d1d070e649e906e369a7e2f29cd7d76154d29f71a33d4fab0282f490d7e917f42b4dabf223a463a5f8c4558b976ca606cdab406292655b5abe7707526b547583b10af8411815c7178d8115e5ecc566dde33729fe4b9fbee5c97059798d73da67264cc179e88905bf0c05ad7c2045d7e3',
|
||||
prev_randao: '0x1913adef7fbb49708625617b17c4d86afa497cd328550de4a7879cd727474bc7',
|
||||
block_number: 74474685657083782, gas_limit: 11911662355412091758, gas_used: 15612402861688722599,
|
||||
timestamp: 3509704894287860522, extra_data: '0xce4d90ea276ff4734f240e287d4fe4af123369161ed9f8f23b3c',
|
||||
base_fee_per_gas: '38121163894277529972193618303336712242218113412467880154690153955981755417665',
|
||||
block_hash: '0x8604ef6200f3c31437fbdfeadc4cbb09d40cdc7b8d996c432d5bee4cedd96f49',
|
||||
transactions_root: '0x9c98cc567606dca0ec933b5368690895e89f9a52663172fee219d67607abbf46',
|
||||
withdrawals_root: '0x021886ddc9d050775c41aa59e9015f9c485ff12c1cae964e91e05d6a48689ea5'}
|
||||
execution_branch: ['0x49faded922dc00d282be6e4e77594801f0103374171abdbb07b974d39aebfe14',
|
||||
'0x23b9cb2d4ecc9153f5cd180d2a733a82169fb2885dd7542c150b2d5742749220', '0x820ae7cc350280b36c16dbe7f68e8b3098d32f9856b3b96dff0e8c4e23024896',
|
||||
'0xb6455606f3be32d00fe94c5d0d8e74cbed7608e8bb5ead640846842c8a2c9b91']
|
||||
finalized_header:
|
||||
beacon: {slot: 12040812221209879771, proposer_index: 981909359441471275, parent_root: '0x0a03f9c08ff6b1524ea1864b967efaa386a067aa7358aa7761f885366137b411',
|
||||
state_root: '0x1f15d22f600bbd7738e1f23d4945a55d128249a9675dc4531bf8c8639f059eaa',
|
||||
body_root: '0x11ce4c4acffd93c64a21d2455dcb02ab98dfbb45f14ed2f44dac3bd2acf21081'}
|
||||
execution: {parent_hash: '0x95b2633d68b50b8791b9585b287331a7245926b385dace69d01dc92259de9eac',
|
||||
fee_recipient: '0xfcc68c0b3472f09c72256aa18a78d8e31ad0de8e', state_root: '0x6fd645fdba2bc59c7b5b80fc43273c00115edbad6ec94a9e2d06de3e6a5e9548',
|
||||
receipts_root: '0x6f7402219827da2f1e94e4d185bb817dfe9291f9133621345b6970eb0f0179f1',
|
||||
logs_bloom: '0xbb7a0da5163493243751492e6c3a9b5686515a4cc1b54aff803d6a5fd636ce7e1e7d4765096cff2eed0649b2229cc9a34eddc74c5687e31e87734e9146354330d58cce833c7ce86df70888a3a36f759168a134d012bbbfd04bc5e3058040e893c523a3a579fa9bfc0873a7770200b87fba8535ec75bf38a4bdac08337c4e64586ce7fae5245b302b46c51982f6194a87801aa4e26e193916496b646b4082a9f7d891e102e3bc39465f4a652d70650e61f77c205843f21f4d5448658f6e3dab3f5992c67548d8416584410be8def43e5429ed25192fe112131fc5208469bf9822ce3d015df209fb16bf3bf31fa33c8ae8cdb1daafe9ba433e1b4b918c057db833',
|
||||
prev_randao: '0x5ed13ee68f85d92967b68cfbb46bd880f699c9033035923afa700e4abf97434a',
|
||||
block_number: 5680676822894807504, gas_limit: 4428185676233279181, gas_used: 12594933642164540035,
|
||||
timestamp: 3105216646278890328, extra_data: '0xe6123ab25538', base_fee_per_gas: '60700485327192912382836387376035621476488933509060866064673701882442789204260',
|
||||
block_hash: '0x32d7048d20a24231880f741ec463ec2e278f3856a11e0b1101a38be9ce9f990b',
|
||||
transactions_root: '0x8cd88a90fa64328cc7eee0e93d2255d6e5f8ca01583897df551370af32a12b90',
|
||||
withdrawals_root: '0xcc6afc83207fcb075c01fac7d0804963e36a047f3d8559a3d5f54e607d18525f'}
|
||||
execution_branch: ['0x66c9c20b9823606435148ba4a872bc25d949c51a9c1cf585d826debfb94ecc81',
|
||||
'0xeb3c19d6f92566acc96b5342a90e7bf648867f8c9c6b82383ae27f0ce3dfc637', '0x880b4b937345c6577ab226f5b13e682292a4d3dbef66cb9c9ccef079fe39b8dc',
|
||||
'0xbdd504a4e2be794bfa7482bab347d0c90ce389cad17b0364ece2d98241e6eec4']
|
||||
finality_branch: ['0xd71bf3e7880f969a27cfca37d55fb22c481d15812e7604df42ead92af35cfa1b',
|
||||
'0xf1674c49096cab36dd91402b3a37f1c98eb209e776d64628bf5611f8dff1c29d', '0xffb751538ac60ff6d43a22ec50a66d0bec701833a41e17a6b3b6ee8a11f85db3',
|
||||
'0x75abb0e5af4403c5ed39a6ce14552efdb8c79993d201b4e4decaf89a41ecf992', '0x353da8f9aa2420be02534bed4b8b809b8fd3f1523b7e05bd15152fc706d0ec8b',
|
||||
'0xb6fc033d2c20a8ac9c194d1f8a785f5b3a4500e3019ebd0ea0be5419992aea65']
|
||||
sync_aggregate: {sync_committee_bits: '0xe9c3d79519464c8ff57b75fee230d576f5333cae8fda81c75d3407a2848187a8ea6d15d0ee1122a295f31a9aaa9e29dbd9141ee05eaf50c31268b64d19e7d078',
|
||||
sync_committee_signature: '0xdec707d9292a3487637b9a30e48d5a5ecf0c03649541e32a9f5734d9383a5176985e25c91a6ed4efc3cd6d8682e6db9579f146165003dbbe970889b48a55c81b90b17b68e6fa7d268eda812c521cb23900ff83fb9bb94d310c145cfe227c3971'}
|
||||
signature_slot: 11369714071014983440
|
||||
Binary file not shown.
|
|
@ -1,41 +0,0 @@
|
|||
attested_header:
|
||||
beacon: {slot: 11586680548218888199, proposer_index: 3035281723257012708, parent_root: '0xa265c9da572498297d9a840d201be2219e92585345bf95fb26f0fae447d24405',
|
||||
state_root: '0xbcc1dd106d6a40532c788767baf9536e5724361ffaccf9956f4256d8f9ff3659',
|
||||
body_root: '0x3fef6c03fdd20751b9f74570ba0fddaaf86329a0d740eb470e641e25049eaa50'}
|
||||
execution: {parent_hash: '0xafcbb0d65544c192d8681708c24c338d494ff351035feb00895359c46105ff8a',
|
||||
fee_recipient: '0x078a4d94c6fbcb9c08918ddff7b1a906b83e73e3', state_root: '0x3898e6a60e3d477ebabb13d289b70a4f75211451985775d6861880b23068b27e',
|
||||
receipts_root: '0xca6b98fa229422bc7a0aba2b28c58391d58198e7b79e8ffb03763932e28d9a10',
|
||||
logs_bloom: '0x2561bd480d9046988bc2e4b6226dd8f4d548dcf2fc355e1249bffe6d67f57eb10876e0b824bd8e84428968df2aea599dd80f7686038f5a1218dab180075e50a91ede336a870a2142531174ab1c433f640a1c30521ac465fc4577fec98ce058e2857313dab681e0dcb70b543d7560647baf19d863623495d82baea688482d48ff9abb722f700d646bf4e15302cc312c9a8ed1ec4e5a6a3c8a2db5919d4fff5baaccbf87732197c819d3e43bc049146df76978a0a5289883b1ca7500c3cc59c06315b1ebf89c3a46ed0f9a68bca0cf8b8d73034b1e3bd171a5bc41e40eaa363d65f46e4a2b904b621b81f1defa7383f9bfe759d28fedcdd28b0569130f29be0a16',
|
||||
prev_randao: '0xa126780c5a2ca4710042e648a822b860915e5623c81c8c27a381d3ca8aaccabe',
|
||||
block_number: 2909941475134901392, gas_limit: 1552337101541032130, gas_used: 13626319263591971458,
|
||||
timestamp: 7818328593908802536, extra_data: '0x4a66', base_fee_per_gas: '33794197073615648621942317936722183947049508592117680856827153005931341644170',
|
||||
block_hash: '0x5c2f3a4587d34cb01ab30af574bc1f4ad34758d939dce54fb9b2800474d6b0be',
|
||||
transactions_root: '0x999ce52d3e7bbcb5fb3bea9ee7534c68079b63b83b147b11bb620366cdf067e0',
|
||||
withdrawals_root: '0x4d16397ba45636010a65549959545cbe0021f22e75e85b05f6fdb18694f85c4b'}
|
||||
execution_branch: ['0xf16037bdb528a63dea856d43e41808a6ac3ef358e3f944f961136573831be03b',
|
||||
'0x6e13e44a3f95658bfd6e15f2c6d1c3437153417ae288fe6d4f835f86629acb72', '0x8b0a63043d48e842820035bce4893c95a723da09d0c823cd490fa21c0b4456ac',
|
||||
'0xea1937bafa0ee20282871c125ec05327b3ad57ca981c293fb145988b8266e3ce']
|
||||
finalized_header:
|
||||
beacon: {slot: 8201161866244383816, proposer_index: 9923943779926590549, parent_root: '0x0b4ab155239f9202da23b6cd80abed8592768652112922cb5789f0aa752078cd',
|
||||
state_root: '0xa3d6b62c239f5f429f600a831e03878aed04b1dcc4d3486476e8d017c196cd2c',
|
||||
body_root: '0x1680ece16108174b8c4a8ae29d1a0ccdda77f32153d3f5911486f52a80b49054'}
|
||||
execution: {parent_hash: '0xba0d901b929d65f6867ab18cef75e66af9945db781d9ad2b26fcb349e2ad597b',
|
||||
fee_recipient: '0x58e004edc602ae744873dd8c3026592fb8fee39f', state_root: '0x61255bb5e74379947e4200613207f59c501d3ab7fc8d58229540a7a029442ba2',
|
||||
receipts_root: '0x69814aad7cbd503dd136884fbac1e788d2d35cde551145cef358c07d54dee547',
|
||||
logs_bloom: '0x3f0410e27390b77290e2a2d33441d60902c9a7a82e09ddb98b69ed93cf0929edee48358b24dabe1badef50a7df654a25106152de1efc3f964bfc9d48ffd0818bfb7d52a8bd74c7f5cd6cb3d4faa3d6f8332a558a8914a74bcc120071983fa270e03867d90ac66774416785d07f4348bcce0d2b0cbd44320117eee8c3250f15a4ea0bd9824834e2006a04b66d0c723cef287859be771b74b28e54d3c2d140b462e9b6e5b1a92459c9e439ceeba9ef2fe1df1a5c5c0677d069a256d4d64e446bbdb4298b5698d2d17f8e69d81869d325248397dcd3f876c3fca21899a276e8b2749d28db9a089b8e29b96f1efa405de02b41879a3ce1b29134c2b00117921fbdc8',
|
||||
prev_randao: '0x42f7ebae8de83065156a362924975643f75aa4b8ebbae9f6a25c0a2f77ef19c1',
|
||||
block_number: 15762090173068719210, gas_limit: 13785975286223361056, gas_used: 362859317200656346,
|
||||
timestamp: 10218235896672591688, extra_data: '0x17e258e1e0f7', base_fee_per_gas: '69496641463934280887958500312789566444126965505496424123741984715981847815750',
|
||||
block_hash: '0xa9e56905895dbf0b058ece35fe63d2fb59306a8bb245cb64a0222aca13dd11b0',
|
||||
transactions_root: '0xf6b01365f0c9b8b8a07dfc6ff57129da5185011b816c21dc8fab24e6ed593d8d',
|
||||
withdrawals_root: '0x99fad7e88e56c23daec4d601edcff83081e542fb0f027102b4c3091d3d299f1a'}
|
||||
execution_branch: ['0x0352832658f895fff145692fc51e67346d834457310f431e7c8ec8aeefffbb1e',
|
||||
'0x3a5144df0b978de55c67d9881f3156e84bef3c09b557c93195db049e82d2de05', '0xc5a7cb79177be15d3281ed4e863ac2fc5082af9cb7a9ac3008591999e3b4eb75',
|
||||
'0x4b8db592ab85b72fe074efbecc127525a5753fdd2d5432d93193b92e2faf71ca']
|
||||
finality_branch: ['0x53dd069f9548af7f0d88eea404b38437e232e28a423909f4d843aef6729a63f8',
|
||||
'0x85ed2d045f51a96c1325643c5415368d2165741ce170eb0f6aab7a9089d09a13', '0x8918f7be26d5540539c14e6e42f8792d59dd67e3bf4dec36418614ecd0a28535',
|
||||
'0xd4b38eba587de9579ec7a43dfac13b9ad5344022329fb78947012b44eb528189', '0x1ccc7ffd3d7f9e55171bd80988b782419bbb2fc2362596bf726a7f2bc82b5984',
|
||||
'0xe3c4d91834fc7491e2e92e824065362b641340f1e009b50df93e4be3faf198a9']
|
||||
sync_aggregate: {sync_committee_bits: '0xd73d1fd80bc15b25366673b65ee75a7ad76d0a876f9750b69265aa97022fb2ffc4f9f3706c44058e61ceb248d368e9a4134b3a9f5d6157ff78133e7b6c643054',
|
||||
sync_committee_signature: '0xd00ab98f089fb25f097db3803545ad24c7a9fbaa8d17504103124c6a5253416aaf995c12de16adfc50525e8d194ba5fc06bede7bdbd969af8e2909a9b120464f86a3fcdb327c0abebb71850ac36fa998f2f3a2ea0a9dda2491a873ad9ddf21bb'}
|
||||
signature_slot: 16180277927352316950
|
||||
Binary file not shown.
|
|
@ -1,41 +0,0 @@
|
|||
attested_header:
|
||||
beacon: {slot: 4800461898160467140, proposer_index: 608078366663164655, parent_root: '0x9b995e7c5a80d32084b4aea3f55cd72d262f1f3e4cef1c861c88a9374b316cac',
|
||||
state_root: '0x04dcbe1c3ff220a27eaa2a62b43a3a77edff9cfa1d696ae37f31712a77d68de6',
|
||||
body_root: '0xf4dc6027ab7a90c4f7ef5712135efaf9d5a01e074d8635321450f4422dea323d'}
|
||||
execution: {parent_hash: '0x0c52db95bb27718223eac31bc2da140e0e9393e95c864ccca2836d4df2b600dc',
|
||||
fee_recipient: '0xea60e66a09c7f57a5948d7238ad256b8b35c2802', state_root: '0xdcaf97f69c1f174993b331a03816b4a2a9bdc837768541d0c9936db53b23b310',
|
||||
receipts_root: '0x67d66a8a7a230b9e9af8d32e8231a9b0004dc175b17ee0dc463f12b82f8d4a8e',
|
||||
logs_bloom: '0x43f024d5ba32a0948fb71d5803b9700e525d9c5cc9bbd694400c373932dafd50bb00eb29a47947794b392e8686853417aac07c0965eda2d66192b537878bb24e7a7b855b7233fb77538e9b744e49a77b8416d908c77ba7018e3ac7dae0c4d73a3f40cdcb773dd28688b0f2d569a71680b2478d1c4374dc58ce9c09944403631f89a05eec4eaa0acca2924db12355d38a6d1cd4fd4f1aa5b381a11d7274dd1a2b9afda2e1479e15b3b60b1b9f1ee2e145972e811fad5302e4429839f7d1bab659e1a190989910511fa5bc961b25ab92bc88fe9aaaa22d67f9c9c6d0b6b09a74094d7bbaae91536b38109c18179627773cbca28ce269cb65adf7169abfe758267b',
|
||||
prev_randao: '0x03bdd9a406d59ee62f3b6b56b702bcd5d85e107313afa7156a539006acbfd9e9',
|
||||
block_number: 17554181732439327329, gas_limit: 4325140685971495588, gas_used: 5504555712930789536,
|
||||
timestamp: 3677009336474615739, extra_data: '0x149b', base_fee_per_gas: '39050248685056929330346399726477836108115494455187731719729414321405411550153',
|
||||
block_hash: '0xb3e92b415891bfd34251ce3ecf531dc8904ad2a9f937d0073fc51790ef5dc4b6',
|
||||
transactions_root: '0xac1df2212eaa393c8267c47019e034bb6dfaf245882a20096b58437b8d8e5e9a',
|
||||
withdrawals_root: '0xafba524d66eb823d3f89c48b1943e2da6cf4326b412d3cf0216c9e3d1cc3af48'}
|
||||
execution_branch: ['0x82af59ca3a55fb8322ce54aea062274554135f5e9cfe4bdc26c5e374da03af4c',
|
||||
'0x6d4412973a65921100ea9a1474de35dfdce27c0190540fd4cd0286db42b244d8', '0x17593a367e40d1865caa11750672a67e5db9eb2a8cc81922b9f6adf54ede056a',
|
||||
'0x9a835cb8a80c18112177bff42bb090053e959150d015da6195433f08bddadc24']
|
||||
finalized_header:
|
||||
beacon: {slot: 9382905756507147762, proposer_index: 10978642941817983352, parent_root: '0x341648bc3a29491d47131d223598b5b6890ed28b6dbee4cf4925716782595634',
|
||||
state_root: '0x10fa52a9b958b96d0f274d7e89373057c80a184da9596f6c75e425ea0bf06ce5',
|
||||
body_root: '0x90edbe90dbbaea49c9971b537a55e4bb7f8eb39a56df08f662800ed6c67c3299'}
|
||||
execution: {parent_hash: '0x400429a01733b7e42363d767d83986f248294c16379642fae80337937837131a',
|
||||
fee_recipient: '0x9603a154f9c92a47651bdc8a62726165dda5e759', state_root: '0x5da0d0375ad987b31c42993893462724d7f3d5ab113f8afff3bc53099383a9b3',
|
||||
receipts_root: '0x48f0a472cf92061ba92435bfe8a1b57e6158b763457ca7d6b07faee3b253b448',
|
||||
logs_bloom: '0x13e3f2d0b88837fe66eee53140b3954402db90cfdd236dfb91ec251a9b0b1cbcdb9e9821417ac1117e68b14d84b006f9eee09041e29fcc4cfd22b7fcd3e04b35db32cb4b82c931e2d706807f9183f01454750a5084968eba8814c589df0581fd3258fff2a8826ad6f359e25586a07bc9b4eee7f75d1f11a9022d0c1d54255e4e361e43d1bc9d70fc08c1e45357eccce04d818972659ed3b8e7cc20ca3be2904c879fdb6d69b59fe4bdde7f0fc0dc8c288781236cc9f55817c1881160d7456b7d743e2763cd5d6adcd6fc6597f85fec6c3e5ee9141ca3d3c0b1c98056afb9c1515ddfb6b891db816b6b45028e6a2eda5761b6820e4bf8b067383ca7ab424d7e1e',
|
||||
prev_randao: '0xd6b7069b29d62b7b302272b7690673457170060ed386624571ba990a9ff31afa',
|
||||
block_number: 12778770532615035408, gas_limit: 8612778301401668745, gas_used: 17565008279023152496,
|
||||
timestamp: 16263764680946526106, extra_data: '0xfc64b92e', base_fee_per_gas: '99392818945543042386748081875237877118459807181310288854357749587003285352954',
|
||||
block_hash: '0x291b8e263c5f1794dfcec44d7c17390640a6da4da418b63c9927969fa3dff35b',
|
||||
transactions_root: '0xfadb119b10fc9bdcdb1d506e0a52e47056b0889026f8e128a1e55c5f6c836f0a',
|
||||
withdrawals_root: '0x3aff0138f2bd65430e4d154577c8cc872fc52bfcc92f07236fe216b1eec8b5b0'}
|
||||
execution_branch: ['0x191a53e98e0fa0d61473b3cfb91f5eecc8436b1385a9f09ef35a466eafc744ff',
|
||||
'0x874b462c3b40564bc1ce8351cf1cdd25f337c6e52d7f8de8abb8989cba924ff9', '0x6cc5091bd44a3d1ca115ed8564fce11a9fc8eea344d78b7d69ac7d770ecdea4d',
|
||||
'0x9e1645061b94be6289249f24a68613fc7b1083e7410bac5b976e155f1bbb6bcb']
|
||||
finality_branch: ['0x038ab63dff1d405782b99ad4d9c9f85477d7025193629d214df5b743d56aa45e',
|
||||
'0xb2f9868697f6123d2ac34f05e3c847c2ec2b683aefe18e03bfc085aa8995c15c', '0xa4187a74048e0f201584e01ee32c0c12b2ec88768e55709a74bd7456e8be4274',
|
||||
'0x4d4927e08f8ec5511bc3752efac82d8184723d81cc41c912c2a8485715862344', '0x002f563803824d4c10eeeaf168d3ac8ccccaa704daaa39e0970f40de6cdaf6b7',
|
||||
'0x0a740c11696a1744bb56dd66aec103b4c1ca0eb0b8d53d1a55599a8d0b63a5b5']
|
||||
sync_aggregate: {sync_committee_bits: '0xf701e901e9ddb2db96974d333785bef49514d1cce3965b2c6f434c40b4a929c4b7194aa8068d258bc92e533e692abf51846dc9e15d5e883d50f31a00438aa419',
|
||||
sync_committee_signature: '0x8027ed36912454961bbff25064da7a9974ee901b508436931f1db0f8f5d26fd3771e7504dbc7051c90eb73bf7c9125eb16bcd1e88b358954dfc5daf8c19c6eccb540859dd62f71e7180113faba495043bf04e17cd9bda92252aadb6259e7b72c'}
|
||||
signature_slot: 8045002698518436880
|
||||
Binary file not shown.
|
|
@ -1,42 +0,0 @@
|
|||
attested_header:
|
||||
beacon: {slot: 6443502081786180689, proposer_index: 15274267430729839067, parent_root: '0x5b5a08727c5e61ee783ebbbf943e23618ae0cc139422fdffcb526e667ea41ecb',
|
||||
state_root: '0xecaecb7824f552fc9756715cc133ff96b8d5cbc3919ca298d51a4dab0d46c0d2',
|
||||
body_root: '0x195fad454be56b66bca99b3457bc7b4c6be5c75e6e522f1ad6527d8e970bd45c'}
|
||||
execution: {parent_hash: '0x48291ad10ebaee750bc087ab19a1017325bfc57b60e987272d803c8b226674db',
|
||||
fee_recipient: '0x95cedcf56b737704275d10b2ff001f6bad1ce8a1', state_root: '0xb5e2749e32bd002a601de2c0283018578b331cc12d9b6b909ea0efc4ee889784',
|
||||
receipts_root: '0x0154659e0d28095c58925bec1a4453aaa2b825868fb036dd2d2aecdc57345d8e',
|
||||
logs_bloom: '0x4517c0f8ed1c88c51461d2a0ac35ccbdffa0bc29fbd7b1269ff09bf66d15098af3ad7494a46e4ce19cd936980237c56625bca989b8b5f2d23988df53a4ef958d521dd92d2bcae78325186c101278acde9a9cdfa0172aea4ca12bdb205e1e98042e0f210f19ca7160b78cadf402ee049beeb724984c02d594e38ffb68cdc62395db690118cc75d2cad29a8eb568026fca4c972065edd2069a9c42f5102399e48b78417b23cfbbf2a1d9de6bd3d21d372b3e81ee54790e16e8b795d519bce5445d042d4ff8537b65c79b8f1300a686f25bbc36743b93ab7ce6c0f4f3c1f08fac3ed98548a4ce15240da0debbb4be870b43aecd569400a95253ac6f7028e1f544b4',
|
||||
prev_randao: '0x927f265657910b3f75ac1ca9c4396802c7259d1f333ca2d06cc602ddee75e454',
|
||||
block_number: 1221078100414885734, gas_limit: 3705380839975603096, gas_used: 12974818748153372394,
|
||||
timestamp: 5408423708860218715, extra_data: '0xbd22ff409b2cf3', base_fee_per_gas: '984018119266506808842267990090810570605636832351093237890397706907951534492',
|
||||
block_hash: '0x63b2af8f5dc05a729799ea5ed236ce948563ec44054c49b2e354d8f7754fd36d',
|
||||
transactions_root: '0x6f41d1966b28d3f9c90ba4e3e94413c25b68c7acfd96ef67a0a75d3878494135',
|
||||
withdrawals_root: '0x3c5d24abe0bd4354669f09d92f7cd01a245216256c234576e395ddc8a9ad4d80'}
|
||||
execution_branch: ['0xdcd537ea7d9d4e80204705872ba48c0ffb263698186d5c2ca3ba68b657201bd1',
|
||||
'0x2b277c989fb273e48ab09ff2b8d49d01e5bf71e66a496a954d34afe75bed9c7d', '0x0f63162317a26bc519a13a49b3ce9d077f665fd9e95faf578db77bf9d83a3621',
|
||||
'0x750a68664f8ab89d389dfff641c5b412048b4d5ed67dc0eea67a4cc07925089a']
|
||||
finalized_header:
|
||||
beacon: {slot: 13394875727323759142, proposer_index: 13027152818956514220, parent_root: '0x78e3ba6760cf728a3c58f85f3b7a42087c1d3f6a624746017e4dbc418921c95d',
|
||||
state_root: '0xd9e4e3a426f78e0035041fa727c1a31d4ae63e5e5cac6e610f99b9fef92094e3',
|
||||
body_root: '0x948bd3c906be4705aed9ae4015fe8ce8cc9d89517ffda88adbbab915f5e2da2b'}
|
||||
execution: {parent_hash: '0xaa359713663efdca7ded7875c9835977cbc9617c282319e8beccbc35f0e39f6c',
|
||||
fee_recipient: '0xdc7f5b4d93789e18f78ea888a93973d0bf088a0d', state_root: '0xcb078cac83a9b4e6c3ca266116eb6d6263c2ef08773237ad42b5d0099b1c7413',
|
||||
receipts_root: '0x95c38ee6067db84645258a808e96a61b75d2ad72b371961d2f3190dfc07b6c27',
|
||||
logs_bloom: '0x8179a9b425f2c9cc5539ea68df91bcecef0767a9d2a61853e75b67478b5675ba693aef846904f80753c6f0ced972fac3f7e4faa54ef88be6a072d4fb95c8d22c708f831999e0432e8f1976b1f63d009c0ef49a6b91ea87eada78410f9c9b729a243796d1ad34608d2810097da4db3a6c870be53878e4d8309be6ef57bb1e62fdb452583a8ed88c674d43116813b3b5e27fd561ca83c1a9f12d343ffc1f5a8d7c9fbf63d49d7380019f584520498256ef239de176f9232fab3d86c5937e67a0fd9bbe1e291cbdd65d8e3e7765f50e50de706e67284365616cf4b839af60b3acd1c63585679378d7241cbd92ae45ae4c370be36dae96b3db2154f434dfcb3f8e64',
|
||||
prev_randao: '0x0427278f8a4c48bbe6922828227f91d329a5e3af692a899960c4992ec5713508',
|
||||
block_number: 11832103276096519446, gas_limit: 18037812622138073854, gas_used: 8551965943489062040,
|
||||
timestamp: 9967397038375353248, extra_data: '0xb7ca3b58492e73aab9201dcd9f16',
|
||||
base_fee_per_gas: '74586254357597706500206053896682589971211756853881216697294274820672225630162',
|
||||
block_hash: '0x2c91b47c95b877ebaa6e8d430e02018a54d817e3110bd0cb3a7c7592f5a87789',
|
||||
transactions_root: '0x22ac3fc49c6c969a54c7aca604f4f11417efd206aa36fe3632585ef1882f2d0d',
|
||||
withdrawals_root: '0xbad50fc18ee2c785cd6e818c6a216d67fed1b51ce6d60372fcce06ba8cf457d8'}
|
||||
execution_branch: ['0x0489f12d8a1809e4fe07b762540a901dd45c7a5928aebf058027d11caf6049d0',
|
||||
'0x106a6607c883a6c1e83cf6278a26dd3fe30eec98e37906c9258c94cf59d164af', '0xa882d5126647f65d9f5a334a27ade7d4f2c834989aa8f7a2c99d37dd6533c9f0',
|
||||
'0xbf86b7579729e22fd2ba73ad7dbfff9df55fdc4fe673770a6fd707a1714242e0']
|
||||
finality_branch: ['0x5c6a0d5bf7dde56794204600c990c9cbafc65979ec3c0b36d60540ea154a00c5',
|
||||
'0x041f06bd6530d6c1302e1d6bc8d556d7fe3873a1b4f859894ce9f3b855b27fdc', '0xfddc85d6d53e33aa97130d5b5672622a1572d7250a9133a5422829732450e827',
|
||||
'0x80c350a675470dffcf52e0aee0c28d31828994b66641e896334a590f05273467', '0x73ec4a1bdc9fbe2994a96d3b11a51c5827f95021dc06327ee8a8933e1b047620',
|
||||
'0x97e4038e641697d3547e4c57d45240d727ceea4f745d4d61e66cae84df978506']
|
||||
sync_aggregate: {sync_committee_bits: '0x4f2b8c9b6a58bcc9016862ce137cc4986dc8a5b88736b5eb57feda4a9ed8ad4f8ff1cbb44efac7d9255545953621bfb42e054d7f1e494e8fcc2e9e1dd1eee245',
|
||||
sync_committee_signature: '0xd3d84f24a44f4e0323afec838135b34f61b510cb12172abd317493e1ddb4b0bb5f069e17d6d40137910d328143cf8c3e1ac3abaa8f6774d7a0fc016bfbd3e2875fb6d88a26f96b43f3ec4b7e7b267765493a68695554213de6b2741e8fb13c9a'}
|
||||
signature_slot: 11101657469062839404
|
||||
Binary file not shown.
Binary file not shown.
18
portalnetwork/beacon/testdata/hive/gossip.yaml
vendored
18
portalnetwork/beacon/testdata/hive/gossip.yaml
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"6718463": {
|
||||
"content_key": "0x12a083660000000000",
|
||||
"content_value": "0xbba4da9670010000b30400001d34030000000000000000000000000000000000000000000000000000000000a4f8b2415bbca66d73597343afead504bd8282523df27153543b2de8973b7474ace652bb73991c3b63f7185a17333c8aea619a69b69863a5d79810dad6c363d3df460765de20d3c8f56bcd9490f15e2d9e122b3f6173cea76f6d0d16074ce0f0ecde5df1b81f36c08e91ce803c25add312bfd8cb759a81b7cfd158d724959cf22e83908e043f77bdc5992806617ef1fa0a4f1985d9aa1b67371d3580be8c2c64ffffffffffffffffffffffffffffbfffff7fffffffffffffffffffffffffffffffffffffffffffffffffffdefffffffffffffffffffeffffffffffffffffefffa480f81d481c5aa8439f8c65f86c69d3b1570cfd95b61300f7e29c5b0954c0c0fb080bba0e8ba60dead40c45355332ed06982fcaf53ad1ad4a7e6e39091ee7e5602d4a30b6d46e12047c31451f246bf43c4a3fbdb1d1de2f2180a776ef71fc3d0084660000000000ff83660000000000e5f4020000000000007b8211614b9c5331a1de2691ad7cdde1ca113b4e51b9f2757a4b502833f9234a06eb807d82b9175dd085748ade76aaa86fb4eca48bc8deb01b9c56a267a896d98469820ef7d34f8610e134c6eaf8d379e83cf6c3ab0663fba828edab344dc5f40000008e2a532cfdfdce86b27b26f611f1df0e2b00a54d18c6980e69ad28a4b70bf480336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0edb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71b4c4e01065cd22a0d2f27a544ff8315b9e28f6270a63f543831778f32648ac3a15ecbea44f91b9b4a28ec8308a30a4b6252f554a2088bb1c73ea01013ba4963dfeebabe6b0418ec13b30aadf129f5dcdd4f70ceaa56499df0b3ba9d8fe6ca410132a29cf387371294137003adb139ce9f06b6f7dbf32ee01da91016a485a8aab5669168efc3d3a200b2ee0f25d937a413dfc38e44e211f02432a01a83088e700808c302002139aad8496010300cd220b14288429d8a6049945000a3b60f00f00109019341a0129a08906314848650817002cb98894a328084521a87e6d0a64e8080004ac0805000800e29808294016508a2004001304002a02320c4705501ac008a62848701040012a08e5c8b69010f1009f80408894857053e1b940e2c9004912860e26112080610d002098242000ca001420209a42c141d0c86087509344ced8a32e0204410a0196025a12106104e20008ad4449d5043208090008810201820209108607a0fa1004aa323410050222867024e0d172a82821b02c00020513152006484c800b10f0420802c0244d0850288c6541dc34cabc32f5d355aef4017425cab95c1de0474d483623e23c9bf13d9a18f1597e930b010000000080c3c901000000000ca88800000000004b6094640000000038020000ab9bf66d04000000000000000000000000000000000000000000000000000000797be971185ac699fa7288c87457c3611b443fb98483fddf282dfa7c5b4b27058eddbcd8b5de9b747c57c827ceba820d19e987ff6740eed38ccbc947696d71e3e2c3b96c9200d7d5c66fb4e8458067d6420e64647682ca2f0798ae817d2bc19468747470733a2f2f6574682d6275696c6465722e636f6da08366000000000037b10700000000002a7315c8ddfc25dc2266a6b221cb8f9fdf641970ab1f65a2754df4e14c432b9c446c604131913bed45976c4a8ea27df843a72d622f80ef15da622f0d56ec1ffe3021190177b0405c4fa1a0311a493c4dd095f24d386be6a03f5838a6b1008665f4000000f5c98fc152bf40e1ce216c8839b8ddd42ea5b355f0b5c700fc9b2cb7c802e1c8336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0edb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71a533e05d648cb9635382f38b778dc3c76b18e4eab2d017fdb24c1c0e32d2991707a45ce3f26e443dafa697a76bf24122c9b19b57eebe798668dbd1a0da7c900795222290dd7278aa3ddd389cc1e1d165cc4bafe5c658153cdef5850f97c4d4fb6706b82310414a00fe7dc34b3043e0c7a8a24e810e3cec9de3e1dd7ce06bc191efd2273a357da4436fc4bf82069f6cb87d3d605aeda1336ac513f358b4296b8da51232896ad271063d93404eaa6b80960fa2d4b41d74a544eef94731f0b83ba2701e33b49e3191098c3369bc4658d82f536cb9d38285c51c7844292ced06dd2e8148f0bcd585dc1104e64aa930045e83d828ab436a0e587637e5ef83044d1c2918da284d7072847132885d443640979907485847368e32501345b0dc24c904c06732cc17d944b26181b0c05c6461bccbe4f7b2180a282b6871aa6472fa36cdc49ec50cf69d3eee4b26fe02bf48f39efb549d3963d19e4112c7250c580543516204ff1b0675680cfea02ac09f0b23d6e28c14b08421b3a10a9788442457d732b120c5c466c54ad938dedd3cd3701d9b32fa15dc8db3d6b1ea5d8495732477a72b34efcaf8c349aa40d8e1f21f226ca11182cff00921930b010000000080c3c901000000009104e90000000000d75b9464000000003802000076ab1c8604000000000000000000000000000000000000000000000000000000844f7a7e7585362114fc88a70654146215ab4eaad65ad54b64975840b78d365e8b75e78616a92294e747589c3ee4a845c2962e1cf6cd7fe8bfbd09439e5e6d5e4d4efdf181473803e734d97891388e1b50628658ac818599cf2cb069c8e6b38b6265617665726275696c642e6f7267"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"6718463": {
|
||||
"content_key": "0x130084660000000000",
|
||||
"content_value": "0xbba4da96ac000000ffffffffffffffffffffffffffffbfffff7fffffffffffffffffffffffffffffffffffffffffffffffffffdefffffffffffffffffffeffffffffffffffffefffa480f81d481c5aa8439f8c65f86c69d3b1570cfd95b61300f7e29c5b0954c0c0fb080bba0e8ba60dead40c45355332ed06982fcaf53ad1ad4a7e6e39091ee7e5602d4a30b6d46e12047c31451f246bf43c4a3fbdb1d1de2f2180a776ef71fc3d0084660000000000ff83660000000000e5f4020000000000007b8211614b9c5331a1de2691ad7cdde1ca113b4e51b9f2757a4b502833f9234a06eb807d82b9175dd085748ade76aaa86fb4eca48bc8deb01b9c56a267a896d98469820ef7d34f8610e134c6eaf8d379e83cf6c3ab0663fba828edab344dc5f40000008e2a532cfdfdce86b27b26f611f1df0e2b00a54d18c6980e69ad28a4b70bf480336488033fe5f3ef4ccc12af07b9370b92e553e35ecb4a337a1b1c0e4afe1e0edb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71b4c4e01065cd22a0d2f27a544ff8315b9e28f6270a63f543831778f32648ac3a15ecbea44f91b9b4a28ec8308a30a4b6252f554a2088bb1c73ea01013ba4963dfeebabe6b0418ec13b30aadf129f5dcdd4f70ceaa56499df0b3ba9d8fe6ca410132a29cf387371294137003adb139ce9f06b6f7dbf32ee01da91016a485a8aab5669168efc3d3a200b2ee0f25d937a413dfc38e44e211f02432a01a83088e700808c302002139aad8496010300cd220b14288429d8a6049945000a3b60f00f00109019341a0129a08906314848650817002cb98894a328084521a87e6d0a64e8080004ac0805000800e29808294016508a2004001304002a02320c4705501ac008a62848701040012a08e5c8b69010f1009f80408894857053e1b940e2c9004912860e26112080610d002098242000ca001420209a42c141d0c86087509344ced8a32e0204410a0196025a12106104e20008ad4449d5043208090008810201820209108607a0fa1004aa323410050222867024e0d172a82821b02c00020513152006484c800b10f0420802c0244d0850288c6541dc34cabc32f5d355aef4017425cab95c1de0474d483623e23c9bf13d9a18f1597e930b010000000080c3c901000000000ca88800000000004b6094640000000038020000ab9bf66d04000000000000000000000000000000000000000000000000000000797be971185ac699fa7288c87457c3611b443fb98483fddf282dfa7c5b4b27058eddbcd8b5de9b747c57c827ceba820d19e987ff6740eed38ccbc947696d71e3e2c3b96c9200d7d5c66fb4e8458067d6420e64647682ca2f0798ae817d2bc19468747470733a2f2f6574682d6275696c6465722e636f6d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue