Implement checkpt info cache (#7070)

This commit is contained in:
terence tsao
2020-08-21 08:50:21 -07:00
committed by GitHub
parent 05d6dc7a10
commit 8686a81304
5 changed files with 688 additions and 78 deletions

View File

@@ -5,6 +5,7 @@ go_library(
name = "go_default_library",
srcs = [
"chain_info.go",
"checkpoint_info_cache.go",
"head.go",
"info.go",
"init_sync_process_block.go",
@@ -46,11 +47,13 @@ go_library(
"//shared/bls:go_default_library",
"//shared/bytesutil:go_default_library",
"//shared/featureconfig:go_default_library",
"//shared/hashutil:go_default_library",
"//shared/params:go_default_library",
"//shared/roughtime:go_default_library",
"//shared/slotutil:go_default_library",
"//shared/traceutil:go_default_library",
"@com_github_emicklei_dot//:go_default_library",
"@com_github_hashicorp_golang_lru//:go_default_library",
"@com_github_pkg_errors//:go_default_library",
"@com_github_prometheus_client_golang//prometheus:go_default_library",
"@com_github_prometheus_client_golang//prometheus/promauto:go_default_library",
@@ -73,6 +76,7 @@ go_test(
size = "medium",
srcs = [
"chain_info_test.go",
"checkpoint_info_cache_test.go",
"head_test.go",
"info_test.go",
"process_attestation_test.go",

View File

@@ -0,0 +1,83 @@
package blockchain
import (
"sync"
lru "github.com/hashicorp/golang-lru"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/hashutil"
)
var (
// This defines the max number of checkpoint info this cache can store.
// Each cache is calculated at 3MB(30K validators), the total cache size is around 100MB.
// Due to reorgs and long finality, it's good to keep the old cache around for quickly switch over.
maxInfoSize = 32
// This tracks the number of check point info requests that aren't present in the cache.
infoMiss = promauto.NewCounter(prometheus.CounterOpts{
Name: "check_point_info_cache_miss",
Help: "The number of check point info requests that aren't present in the cache.",
})
// This tracks the number of check point info requests that are in the cache.
infoHit = promauto.NewCounter(prometheus.CounterOpts{
Name: "check_point_info_cache_hit",
Help: "The number of check point info requests that are present in the cache.",
})
)
// checkPtInfoCache is a struct with 1 LRU cache for looking up check point info by checkpoint.
type checkPtInfoCache struct {
cache *lru.Cache
lock sync.RWMutex
}
// newCheckPointInfoCache creates a new checkpoint info cache for storing/accessing processed check point info object.
func newCheckPointInfoCache() *checkPtInfoCache {
cache, err := lru.New(maxInfoSize)
if err != nil {
panic(err)
}
return &checkPtInfoCache{
cache: cache,
}
}
// get fetches check point info by check point. Returns the reference of the CheckPtInfo, nil if doesn't exist.
func (c *checkPtInfoCache) get(cp *ethpb.Checkpoint) (*pb.CheckPtInfo, error) {
c.lock.RLock()
defer c.lock.RUnlock()
h, err := hashutil.HashProto(cp)
if err != nil {
return nil, err
}
item, exists := c.cache.Get(h)
if exists && item != nil {
infoHit.Inc()
// Copy here is unnecessary since the returned check point info object
// will only be used to verify attestation signature.
return item.(*pb.CheckPtInfo), nil
}
infoMiss.Inc()
return nil, nil
}
// put adds CheckPtInfo object to the cache. This method also trims the least
// recently added CheckPtInfo object if the cache size has ready the max cache size limit.
func (c *checkPtInfoCache) put(cp *ethpb.Checkpoint, info *pb.CheckPtInfo) error {
c.lock.Lock()
defer c.lock.Unlock()
h, err := hashutil.HashProto(cp)
if err != nil {
return err
}
c.cache.Add(h, info)
return nil
}

View File

@@ -0,0 +1,41 @@
package blockchain
import (
"testing"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/testutil/require"
)
func TestHotStateCache_RoundTrip(t *testing.T) {
c := newCheckPointInfoCache()
cp := &ethpb.Checkpoint{
Epoch: 1,
Root: bytesutil.PadTo([]byte{'a'}, 32),
}
info, err := c.get(cp)
require.NoError(t, err)
require.Equal(t, (*pb.CheckPtInfo)(nil), info)
i := &pb.CheckPtInfo{
Seed: bytesutil.PadTo([]byte{'c'}, 32),
GenesisRoot: bytesutil.PadTo([]byte{'d'}, 32),
ActiveIndices: []uint64{0, 1, 2, 3},
}
require.NoError(t, c.put(cp, i))
info, err = c.get(cp)
require.NoError(t, err)
require.DeepEqual(t, info, i)
}
func TestHotStateCache_CanPrune(t *testing.T) {
c := newCheckPointInfoCache()
for i := 0; i < maxInfoSize+1; i++ {
cp := &ethpb.Checkpoint{Epoch: uint64(i)}
require.NoError(t, c.put(cp, &pb.CheckPtInfo{}))
}
require.Equal(t, len(c.cache.Keys()), maxInfoSize)
}

View File

@@ -641,6 +641,85 @@ func (m *SignedAggregateAndProof) GetSignature() []byte {
return nil
}
type CheckPtInfo struct {
Seed []byte `protobuf:"bytes,1,opt,name=seed,proto3" json:"seed,omitempty"`
GenesisRoot []byte `protobuf:"bytes,2,opt,name=genesis_root,json=genesisRoot,proto3" json:"genesis_root,omitempty"`
ActiveIndices []uint64 `protobuf:"varint,3,rep,packed,name=active_indices,json=activeIndices,proto3" json:"active_indices,omitempty"`
PubKeys [][]byte `protobuf:"bytes,4,rep,name=pub_keys,json=pubKeys,proto3" json:"pub_keys,omitempty"`
Fork *Fork `protobuf:"bytes,5,opt,name=fork,proto3" json:"fork,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CheckPtInfo) Reset() { *m = CheckPtInfo{} }
func (m *CheckPtInfo) String() string { return proto.CompactTextString(m) }
func (*CheckPtInfo) ProtoMessage() {}
func (*CheckPtInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_e719e7d82cfa7b0d, []int{8}
}
func (m *CheckPtInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *CheckPtInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_CheckPtInfo.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *CheckPtInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_CheckPtInfo.Merge(m, src)
}
func (m *CheckPtInfo) XXX_Size() int {
return m.Size()
}
func (m *CheckPtInfo) XXX_DiscardUnknown() {
xxx_messageInfo_CheckPtInfo.DiscardUnknown(m)
}
var xxx_messageInfo_CheckPtInfo proto.InternalMessageInfo
func (m *CheckPtInfo) GetSeed() []byte {
if m != nil {
return m.Seed
}
return nil
}
func (m *CheckPtInfo) GetGenesisRoot() []byte {
if m != nil {
return m.GenesisRoot
}
return nil
}
func (m *CheckPtInfo) GetActiveIndices() []uint64 {
if m != nil {
return m.ActiveIndices
}
return nil
}
func (m *CheckPtInfo) GetPubKeys() [][]byte {
if m != nil {
return m.PubKeys
}
return nil
}
func (m *CheckPtInfo) GetFork() *Fork {
if m != nil {
return m.Fork
}
return nil
}
func init() {
proto.RegisterType((*BeaconState)(nil), "ethereum.beacon.p2p.v1.BeaconState")
proto.RegisterType((*Fork)(nil), "ethereum.beacon.p2p.v1.Fork")
@@ -650,89 +729,95 @@ func init() {
proto.RegisterType((*SigningData)(nil), "ethereum.beacon.p2p.v1.SigningData")
proto.RegisterType((*ForkData)(nil), "ethereum.beacon.p2p.v1.ForkData")
proto.RegisterType((*SignedAggregateAndProof)(nil), "ethereum.beacon.p2p.v1.SignedAggregateAndProof")
proto.RegisterType((*CheckPtInfo)(nil), "ethereum.beacon.p2p.v1.CheckPtInfo")
}
func init() { proto.RegisterFile("proto/beacon/p2p/v1/types.proto", fileDescriptor_e719e7d82cfa7b0d) }
var fileDescriptor_e719e7d82cfa7b0d = []byte{
// 1223 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x8f, 0xdb, 0xc4,
0x1b, 0x96, 0xb7, 0xf9, 0xf5, 0x63, 0x92, 0x6e, 0xb6, 0xb3, 0xfd, 0x35, 0xa6, 0x2d, 0xeb, 0xc5,
0x12, 0x6d, 0x41, 0xdd, 0xa4, 0xf6, 0x6e, 0x93, 0xdd, 0x56, 0x14, 0x35, 0x6d, 0x51, 0x5b, 0xa9,
0x52, 0xe5, 0x42, 0x25, 0x24, 0x84, 0x35, 0xb1, 0x27, 0xf6, 0x74, 0x6d, 0x8f, 0xe5, 0x99, 0x44,
0xdd, 0x95, 0x10, 0x07, 0x4e, 0x9c, 0xe0, 0xc0, 0x85, 0x23, 0xfc, 0x17, 0xc0, 0x89, 0x8f, 0x03,
0x47, 0xbe, 0x2e, 0xe5, 0x10, 0xa1, 0xbd, 0xf1, 0x71, 0x21, 0x47, 0x4e, 0x68, 0xc6, 0x5f, 0x09,
0x4d, 0x20, 0x48, 0xdc, 0xe2, 0x99, 0xe7, 0x79, 0xde, 0x99, 0xf7, 0x7d, 0xf2, 0xce, 0x0b, 0xb4,
0x38, 0xa1, 0x9c, 0xb6, 0x7a, 0x18, 0x39, 0x34, 0x6a, 0xc5, 0x66, 0xdc, 0x1a, 0x1a, 0x2d, 0xbe,
0x17, 0x63, 0xd6, 0x94, 0x3b, 0xf0, 0x14, 0xe6, 0x3e, 0x4e, 0xf0, 0x20, 0x6c, 0xa6, 0x98, 0x66,
0x6c, 0xc6, 0xcd, 0xa1, 0x71, 0x7a, 0x0d, 0x73, 0xbf, 0x35, 0x34, 0x50, 0x10, 0xfb, 0xc8, 0x68,
0x21, 0xce, 0x31, 0xe3, 0x88, 0x13, 0x01, 0x10, 0xbc, 0xd3, 0xda, 0xd4, 0x7e, 0xca, 0xb5, 0x7b,
0x01, 0x75, 0x76, 0x33, 0xc0, 0xd9, 0x29, 0xc0, 0x10, 0x05, 0xc4, 0x45, 0x9c, 0x26, 0xd9, 0xee,
0x86, 0x47, 0xb8, 0x3f, 0xe8, 0x35, 0x1d, 0x1a, 0xb6, 0x3c, 0xea, 0xd1, 0x96, 0x5c, 0xee, 0x0d,
0xfa, 0xf2, 0x2b, 0x3d, 0xb4, 0xf8, 0x95, 0xc2, 0xf5, 0x27, 0x35, 0x50, 0xed, 0xca, 0x18, 0x0f,
0x38, 0xe2, 0x18, 0xea, 0xa0, 0xe6, 0xe1, 0x08, 0x33, 0xc2, 0x6c, 0x4e, 0x42, 0xac, 0xfe, 0x7c,
0x64, 0x5d, 0xb9, 0x50, 0xb1, 0xaa, 0xd9, 0xe2, 0xab, 0x24, 0xc4, 0xf0, 0x2e, 0x68, 0xe4, 0x98,
0x22, 0x3a, 0xb3, 0x13, 0x4a, 0xb9, 0xfa, 0x8b, 0x80, 0xd7, 0xba, 0x27, 0xc6, 0x23, 0xed, 0x38,
0x63, 0xfb, 0x1b, 0x8c, 0xec, 0xe3, 0x2b, 0xfa, 0xa6, 0xa9, 0x5b, 0xff, 0xcf, 0x28, 0x0f, 0x0b,
0x86, 0x45, 0x29, 0x87, 0xab, 0xa0, 0xc2, 0x02, 0xca, 0xd5, 0x5f, 0xd3, 0x38, 0xf2, 0x03, 0x1a,
0xa0, 0xd2, 0xa7, 0xc9, 0xae, 0xfa, 0x9b, 0x58, 0xac, 0x9a, 0x67, 0x9b, 0xb3, 0x53, 0xd9, 0x7c,
0x85, 0x26, 0xbb, 0x96, 0x84, 0xc2, 0xd7, 0xc1, 0x6a, 0x80, 0x44, 0x2a, 0xd3, 0x54, 0xd9, 0x3e,
0x46, 0x2e, 0x4e, 0xd4, 0x6f, 0xeb, 0x52, 0xe1, 0x42, 0xa9, 0x80, 0xb9, 0xdf, 0xcc, 0x93, 0xd7,
0x4c, 0x6f, 0xde, 0x15, 0x8c, 0xdb, 0x92, 0x60, 0x9d, 0x48, 0x55, 0x26, 0x96, 0xe0, 0x36, 0xa8,
0xa6, 0x9a, 0xe2, 0x86, 0x4c, 0xfd, 0xae, 0xbe, 0x7e, 0xe8, 0x42, 0xad, 0x7b, 0x6a, 0x3c, 0xd2,
0x60, 0x79, 0xc5, 0x6d, 0x63, 0xc7, 0xbc, 0x28, 0xee, 0x09, 0x24, 0x56, 0xdc, 0x8d, 0x09, 0xa6,
0xa8, 0x2d, 0xce, 0x98, 0xdf, 0xff, 0x03, 0x53, 0x62, 0x53, 0xa6, 0x05, 0x56, 0x7c, 0xc2, 0x38,
0x4d, 0x88, 0x83, 0x82, 0x8c, 0xfe, 0x43, 0x4a, 0x3f, 0x37, 0x1e, 0x69, 0x7a, 0x49, 0x7f, 0x59,
0x70, 0xd7, 0xc5, 0x77, 0x88, 0x1e, 0x5f, 0xd1, 0x8d, 0x76, 0xa7, 0xd3, 0x31, 0x8d, 0xb6, 0x6e,
0xd5, 0x4b, 0x81, 0x54, 0xf3, 0x25, 0x70, 0x0c, 0x73, 0xdf, 0xb0, 0x5d, 0xc4, 0x91, 0xfa, 0x49,
0x43, 0x26, 0x46, 0x9b, 0x93, 0x98, 0x5b, 0xdc, 0x37, 0x6e, 0x22, 0x8e, 0xac, 0xa3, 0x38, 0xfb,
0x05, 0xdf, 0x00, 0xf5, 0x82, 0x6e, 0x0f, 0x29, 0xc7, 0x4c, 0xfd, 0xb4, 0xb1, 0x7e, 0x68, 0x01,
0x91, 0x2e, 0x1c, 0x8f, 0xb4, 0xe5, 0xf2, 0x88, 0x97, 0xcc, 0x2d, 0xdd, 0x3a, 0x9e, 0x0b, 0x3f,
0x14, 0x52, 0x70, 0x03, 0xc0, 0x54, 0x1d, 0xc7, 0x94, 0x11, 0x6e, 0x93, 0xc8, 0xc5, 0x8f, 0xd5,
0xcf, 0x1a, 0xd2, 0x15, 0x2b, 0x12, 0x9b, 0xee, 0xdc, 0x11, 0x1b, 0xf0, 0x4d, 0x00, 0x4a, 0xeb,
0xa9, 0x1f, 0x69, 0xf2, 0x1c, 0xeb, 0x73, 0xce, 0x51, 0x58, 0xae, 0x7b, 0x66, 0x3c, 0xd2, 0x1a,
0x13, 0x07, 0xd9, 0xd9, 0xb9, 0x6c, 0x18, 0x6d, 0xb3, 0xd3, 0xe9, 0xb4, 0x75, 0x6b, 0x42, 0x11,
0x6e, 0x83, 0xa3, 0x3d, 0x14, 0xa0, 0xc8, 0xc1, 0x4c, 0xfd, 0x58, 0xa8, 0x57, 0xfe, 0x9e, 0x5b,
0xa0, 0xe1, 0x55, 0x50, 0x4b, 0x50, 0xe4, 0x22, 0x6a, 0x87, 0xe4, 0x31, 0x66, 0xea, 0xbb, 0xe7,
0x65, 0xd5, 0x1a, 0xe3, 0x91, 0xb6, 0x5a, 0x56, 0xad, 0x7d, 0xf9, 0xf2, 0x66, 0x5b, 0x56, 0xbd,
0x9a, 0xa2, 0xef, 0x09, 0x30, 0x34, 0xc1, 0x31, 0x16, 0x20, 0xe6, 0x93, 0xc8, 0x63, 0xea, 0xef,
0x4d, 0x19, 0x77, 0x75, 0x3c, 0xd2, 0xea, 0xd3, 0x76, 0xd1, 0xad, 0x12, 0x06, 0xdf, 0x06, 0x67,
0xe2, 0x04, 0x0f, 0x09, 0x1d, 0x30, 0x1b, 0xc7, 0xd4, 0xf1, 0xed, 0x89, 0x9e, 0xc2, 0xd4, 0x27,
0x6d, 0x99, 0x9b, 0x17, 0xe7, 0xfd, 0x87, 0xee, 0xe3, 0xc8, 0x25, 0x91, 0x77, 0xbd, 0xe4, 0xfc,
0xa5, 0x5c, 0x5b, 0x97, 0x76, 0xda, 0xba, 0xf5, 0x4c, 0x1e, 0xe3, 0x96, 0x08, 0x31, 0x81, 0x66,
0xf0, 0x2d, 0x70, 0xda, 0x19, 0x24, 0x09, 0x8e, 0xf8, 0xac, 0xf8, 0x3f, 0xfe, 0x37, 0xf1, 0xd5,
0x2c, 0xc4, 0xd3, 0xe1, 0x19, 0x80, 0x8f, 0x06, 0x8c, 0x93, 0x3e, 0x71, 0xe4, 0x8a, 0xdd, 0x23,
0x9c, 0xa9, 0x9f, 0x5f, 0x93, 0x8d, 0xe8, 0xc6, 0x78, 0xa4, 0xd5, 0xca, 0xe4, 0x19, 0xfa, 0x1f,
0x23, 0xad, 0x35, 0xd1, 0x21, 0xe3, 0x64, 0x8f, 0x85, 0x88, 0x13, 0x27, 0x40, 0x3d, 0xd6, 0xf2,
0xe8, 0x46, 0x8f, 0xf0, 0x3e, 0xc1, 0x81, 0xdb, 0xec, 0x12, 0x3e, 0xc4, 0x0e, 0xa7, 0xc9, 0x96,
0x75, 0x62, 0x4a, 0xbf, 0x4b, 0x38, 0x83, 0x7d, 0xf0, 0x6c, 0x91, 0xf4, 0x6c, 0x17, 0xbb, 0xb6,
0xe3, 0x63, 0x67, 0x37, 0xa6, 0x24, 0xe2, 0xea, 0x17, 0xd7, 0xe4, 0xff, 0xeb, 0xb9, 0x39, 0x96,
0xbc, 0x51, 0x20, 0xad, 0xa2, 0x7a, 0x77, 0x73, 0x9d, 0x72, 0x13, 0xba, 0xe0, 0x6c, 0x9e, 0xdb,
0x99, 0x61, 0xbe, 0x5c, 0x38, 0x4c, 0x5e, 0xa3, 0x59, 0x51, 0x5e, 0x03, 0x27, 0xfb, 0x24, 0x42,
0x01, 0xd9, 0x9f, 0x56, 0xff, 0x6a, 0x61, 0xf5, 0xd5, 0x82, 0x5f, 0x2e, 0xea, 0x1f, 0x28, 0xa0,
0x22, 0x5a, 0x34, 0xbc, 0x0a, 0x56, 0x8a, 0x6c, 0x0d, 0x71, 0xc2, 0x08, 0x8d, 0x54, 0x45, 0xd6,
0x67, 0x65, 0xba, 0x3e, 0x5b, 0xba, 0x55, 0xcf, 0x91, 0x0f, 0x53, 0x20, 0xdc, 0x01, 0xf5, 0x3c,
0x05, 0x39, 0x77, 0x69, 0x0e, 0x77, 0x39, 0x03, 0xe6, 0xd4, 0x93, 0xe0, 0x7f, 0xd2, 0x91, 0xea,
0x21, 0xd9, 0x46, 0xd2, 0x0f, 0xfd, 0xbd, 0x25, 0x00, 0x9f, 0x76, 0x1d, 0x0c, 0xc1, 0x0a, 0xf2,
0xbc, 0x04, 0x7b, 0x13, 0x2e, 0x4a, 0x0f, 0xd9, 0x9d, 0xf2, 0xa3, 0x79, 0x69, 0x6b, 0x5b, 0xd8,
0xe8, 0xe2, 0xa2, 0x36, 0x0a, 0x08, 0xe3, 0x56, 0x7d, 0x42, 0x5b, 0x3a, 0xe8, 0x0a, 0xa8, 0xc8,
0x46, 0xbc, 0x24, 0x53, 0x7c, 0x6e, 0x4e, 0x8a, 0x27, 0x0e, 0x28, 0xdb, 0xb1, 0xe4, 0xc0, 0xf3,
0xa0, 0x4e, 0x22, 0x27, 0x18, 0x88, 0x4b, 0xda, 0x2e, 0x0e, 0xd0, 0x5e, 0x76, 0xc3, 0xe5, 0x62,
0xf9, 0xa6, 0x58, 0x85, 0xcf, 0x83, 0xe5, 0x38, 0xa1, 0x31, 0x65, 0x38, 0xc9, 0x3a, 0x6a, 0x45,
0xe2, 0x8e, 0xe7, 0xab, 0xb2, 0x9b, 0xea, 0xef, 0x28, 0xa0, 0x7e, 0xbb, 0x78, 0x2d, 0xba, 0x88,
0x3b, 0x3e, 0xec, 0x4c, 0xbf, 0x7a, 0xca, 0xc2, 0x8f, 0x5e, 0x67, 0xfa, 0xd1, 0x5b, 0x5a, 0xf4,
0xcd, 0xd3, 0xdb, 0xa0, 0x26, 0x67, 0x90, 0x07, 0x83, 0x30, 0x44, 0xc9, 0x1e, 0x84, 0xd9, 0x68,
0xa0, 0x4c, 0x4c, 0x06, 0x10, 0x54, 0xe4, 0x9c, 0x21, 0x1d, 0x60, 0xc9, 0xdf, 0x7a, 0x00, 0xaa,
0x0f, 0x88, 0x17, 0x91, 0xc8, 0x93, 0xef, 0x94, 0x09, 0xaa, 0xb4, 0xf7, 0x08, 0x3b, 0x3c, 0x9d,
0x48, 0x94, 0x79, 0x03, 0x09, 0x48, 0x51, 0x72, 0x0a, 0x79, 0x01, 0x1c, 0x76, 0x69, 0x88, 0x48,
0x6e, 0xad, 0x19, 0xf0, 0x0c, 0xa0, 0xbf, 0xaf, 0x80, 0xa3, 0xc2, 0xd4, 0x32, 0xd6, 0x0c, 0x6f,
0x56, 0x16, 0xf4, 0xe6, 0x9d, 0xf9, 0x43, 0xd4, 0xd2, 0xbf, 0x9b, 0xa1, 0xf4, 0x0f, 0x15, 0xd0,
0x10, 0x19, 0xc0, 0xee, 0xf5, 0xcc, 0x64, 0xf8, 0x7a, 0xe4, 0xde, 0x4f, 0x28, 0xed, 0xc3, 0x7b,
0xe0, 0x48, 0x88, 0x19, 0x43, 0x1e, 0x96, 0x99, 0xa8, 0x9a, 0x9b, 0xf3, 0x9c, 0x56, 0x50, 0x4b,
0xcb, 0xe5, 0x2a, 0x56, 0xae, 0x01, 0x5b, 0xe0, 0x18, 0x23, 0x5e, 0x84, 0xf8, 0x20, 0xc1, 0xb3,
0xcf, 0x29, 0x9a, 0x75, 0x89, 0xe9, 0xd6, 0xbe, 0x3e, 0x58, 0x53, 0xbe, 0x39, 0x58, 0x53, 0x7e,
0x3a, 0x58, 0x53, 0x7a, 0x87, 0xe5, 0xd0, 0xb9, 0xf9, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xac,
0x86, 0x1c, 0xa3, 0x3d, 0x0b, 0x00, 0x00,
// 1306 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc9, 0x8f, 0x1b, 0xc5,
0x17, 0x56, 0xcf, 0x38, 0xc9, 0xa4, 0xec, 0x19, 0x4f, 0x6a, 0xf2, 0x8b, 0x3b, 0xcb, 0x6f, 0x7a,
0xd2, 0x52, 0x16, 0x50, 0xc6, 0x9e, 0xf6, 0x4c, 0xec, 0x99, 0x44, 0x04, 0xc5, 0x49, 0x50, 0x26,
0x28, 0x52, 0xd4, 0x81, 0x48, 0x48, 0x88, 0x56, 0xb9, 0xbb, 0xdc, 0x5d, 0x99, 0x76, 0x57, 0xab,
0xab, 0x6c, 0xc5, 0x91, 0x10, 0x07, 0x4e, 0x9c, 0xe0, 0xc0, 0x85, 0x23, 0xfc, 0x15, 0x2c, 0x27,
0x96, 0x03, 0x47, 0xb6, 0x4b, 0x38, 0x58, 0x28, 0x37, 0x96, 0x0b, 0x3e, 0x72, 0x42, 0x55, 0xbd,
0xd9, 0xc4, 0x06, 0x23, 0x71, 0xeb, 0x7a, 0xf5, 0x7d, 0xef, 0x55, 0xbd, 0xf7, 0xf5, 0xab, 0x07,
0xb4, 0x30, 0xa2, 0x9c, 0xd6, 0xda, 0x18, 0xd9, 0x34, 0xa8, 0x85, 0xf5, 0xb0, 0xd6, 0x37, 0x6a,
0x7c, 0x10, 0x62, 0x56, 0x95, 0x3b, 0xf0, 0x04, 0xe6, 0x1e, 0x8e, 0x70, 0xaf, 0x5b, 0x8d, 0x31,
0xd5, 0xb0, 0x1e, 0x56, 0xfb, 0xc6, 0xa9, 0x75, 0xcc, 0xbd, 0x5a, 0xdf, 0x40, 0x7e, 0xe8, 0x21,
0xa3, 0x86, 0x38, 0xc7, 0x8c, 0x23, 0x4e, 0x04, 0x40, 0xf0, 0x4e, 0x69, 0x13, 0xfb, 0x31, 0xd7,
0x6a, 0xfb, 0xd4, 0x3e, 0x48, 0x00, 0x67, 0x26, 0x00, 0x7d, 0xe4, 0x13, 0x07, 0x71, 0x1a, 0x25,
0xbb, 0x9b, 0x2e, 0xe1, 0x5e, 0xaf, 0x5d, 0xb5, 0x69, 0xb7, 0xe6, 0x52, 0x97, 0xd6, 0xa4, 0xb9,
0xdd, 0xeb, 0xc8, 0x55, 0x7c, 0x68, 0xf1, 0x15, 0xc3, 0xf5, 0x27, 0x25, 0x50, 0x6c, 0xc9, 0x18,
0xf7, 0x39, 0xe2, 0x18, 0xea, 0xa0, 0xe4, 0xe2, 0x00, 0x33, 0xc2, 0x2c, 0x4e, 0xba, 0x58, 0xfd,
0xf9, 0xc8, 0x86, 0x72, 0xb1, 0x60, 0x16, 0x13, 0xe3, 0x2b, 0xa4, 0x8b, 0xe1, 0x1d, 0x50, 0x49,
0x31, 0x59, 0x74, 0x66, 0x45, 0x94, 0x72, 0xf5, 0x17, 0x01, 0x2f, 0xb5, 0x8e, 0x8d, 0x86, 0xda,
0x32, 0x63, 0x8f, 0x37, 0x19, 0x79, 0x8c, 0xaf, 0xe8, 0xdb, 0x75, 0xdd, 0xfc, 0x5f, 0x42, 0x79,
0x90, 0x31, 0x4c, 0x4a, 0x39, 0x5c, 0x03, 0x05, 0xe6, 0x53, 0xae, 0xfe, 0x1a, 0xc7, 0x91, 0x0b,
0x68, 0x80, 0x42, 0x87, 0x46, 0x07, 0xea, 0x6f, 0xc2, 0x58, 0xac, 0x9f, 0xa9, 0x4e, 0x4f, 0x65,
0xf5, 0x25, 0x1a, 0x1d, 0x98, 0x12, 0x0a, 0x5f, 0x03, 0x6b, 0x3e, 0x12, 0xa9, 0x8c, 0x53, 0x65,
0x79, 0x18, 0x39, 0x38, 0x52, 0xbf, 0x2d, 0x4b, 0x0f, 0x17, 0x73, 0x0f, 0x98, 0x7b, 0xd5, 0x34,
0x79, 0xd5, 0xf8, 0xe6, 0x2d, 0xc1, 0xb8, 0x2d, 0x09, 0xe6, 0xb1, 0xd8, 0xcb, 0x98, 0x09, 0xee,
0x82, 0x62, 0xec, 0x53, 0xdc, 0x90, 0xa9, 0xdf, 0x95, 0x37, 0x16, 0x2f, 0x96, 0x5a, 0x27, 0x46,
0x43, 0x0d, 0xe6, 0x57, 0xdc, 0x35, 0xf6, 0xea, 0x97, 0xc4, 0x3d, 0x81, 0xc4, 0x8a, 0xbb, 0x31,
0xc1, 0x14, 0xb5, 0xc5, 0x09, 0xf3, 0xfb, 0x7f, 0x60, 0x4a, 0x6c, 0xcc, 0x34, 0xc1, 0xaa, 0x47,
0x18, 0xa7, 0x11, 0xb1, 0x91, 0x9f, 0xd0, 0x7f, 0x88, 0xe9, 0xe7, 0x47, 0x43, 0x4d, 0xcf, 0xe9,
0x2f, 0x0a, 0xee, 0x86, 0x58, 0x77, 0xd1, 0xa3, 0x2b, 0xba, 0xd1, 0x68, 0x36, 0x9b, 0x75, 0xa3,
0xa1, 0x9b, 0xe5, 0xdc, 0x41, 0xec, 0xf3, 0x05, 0x70, 0x14, 0x73, 0xcf, 0xb0, 0x1c, 0xc4, 0x91,
0xfa, 0x49, 0x45, 0x26, 0x46, 0x9b, 0x91, 0x98, 0x5b, 0xdc, 0x33, 0x6e, 0x22, 0x8e, 0xcc, 0x25,
0x9c, 0x7c, 0xc1, 0xd7, 0x41, 0x39, 0xa3, 0x5b, 0x7d, 0xca, 0x31, 0x53, 0x3f, 0xad, 0x6c, 0x2c,
0xce, 0xe1, 0xa4, 0x05, 0x47, 0x43, 0x6d, 0x25, 0x3f, 0xe2, 0x56, 0x7d, 0x47, 0x37, 0x97, 0x53,
0xc7, 0x0f, 0x84, 0x2b, 0xb8, 0x09, 0x60, 0xec, 0x1d, 0x87, 0x94, 0x11, 0x6e, 0x91, 0xc0, 0xc1,
0x8f, 0xd4, 0xcf, 0x2a, 0x52, 0x15, 0xab, 0x12, 0x1b, 0xef, 0xec, 0x8b, 0x0d, 0xf8, 0x06, 0x00,
0xb9, 0xf4, 0xd4, 0x0f, 0x35, 0x79, 0x8e, 0x8d, 0x19, 0xe7, 0xc8, 0x24, 0xd7, 0x3a, 0x3d, 0x1a,
0x6a, 0x95, 0xb1, 0x83, 0xec, 0xed, 0x5d, 0x36, 0x8c, 0x46, 0xbd, 0xd9, 0x6c, 0x36, 0x74, 0x73,
0xcc, 0x23, 0xdc, 0x05, 0x4b, 0x6d, 0xe4, 0xa3, 0xc0, 0xc6, 0x4c, 0xfd, 0x48, 0x78, 0x2f, 0xfc,
0x3d, 0x37, 0x43, 0xc3, 0xab, 0xa0, 0x14, 0xa1, 0xc0, 0x41, 0xd4, 0xea, 0x92, 0x47, 0x98, 0xa9,
0xef, 0x5c, 0x90, 0x55, 0xab, 0x8c, 0x86, 0xda, 0x5a, 0x5e, 0xb5, 0xc6, 0xe5, 0xcb, 0xdb, 0x0d,
0x59, 0xf5, 0x62, 0x8c, 0xbe, 0x2b, 0xc0, 0xb0, 0x0e, 0x8e, 0x32, 0x1f, 0x31, 0x8f, 0x04, 0x2e,
0x53, 0x7f, 0xaf, 0xca, 0xb8, 0x6b, 0xa3, 0xa1, 0x56, 0x9e, 0x94, 0x8b, 0x6e, 0xe6, 0x30, 0xf8,
0x16, 0x38, 0x1d, 0x46, 0xb8, 0x4f, 0x68, 0x8f, 0x59, 0x38, 0xa4, 0xb6, 0x67, 0x8d, 0xf5, 0x14,
0xa6, 0x3e, 0x69, 0xc8, 0xdc, 0x3c, 0x3f, 0xeb, 0x1f, 0xba, 0x87, 0x03, 0x87, 0x04, 0xee, 0xf5,
0x9c, 0xf3, 0x97, 0x72, 0xed, 0x6c, 0xed, 0x35, 0x74, 0xf3, 0x64, 0x1a, 0xe3, 0x96, 0x08, 0x31,
0x86, 0x66, 0xf0, 0x4d, 0x70, 0xca, 0xee, 0x45, 0x11, 0x0e, 0xf8, 0xb4, 0xf8, 0x3f, 0xfe, 0x37,
0xf1, 0xd5, 0x24, 0xc4, 0xb3, 0xe1, 0x19, 0x80, 0x0f, 0x7b, 0x8c, 0x93, 0x0e, 0xb1, 0xa5, 0xc5,
0x6a, 0x13, 0xce, 0xd4, 0xcf, 0xaf, 0xc9, 0x46, 0x74, 0x63, 0x34, 0xd4, 0x4a, 0x79, 0xf2, 0x0c,
0xfd, 0x8f, 0xa1, 0x56, 0x1b, 0xeb, 0x90, 0x61, 0x34, 0x60, 0x5d, 0xc4, 0x89, 0xed, 0xa3, 0x36,
0xab, 0xb9, 0x74, 0xb3, 0x4d, 0x78, 0x87, 0x60, 0xdf, 0xa9, 0xb6, 0x08, 0xef, 0x63, 0x9b, 0xd3,
0x68, 0xc7, 0x3c, 0x36, 0xe1, 0xbf, 0x45, 0x38, 0x83, 0x1d, 0xf0, 0xff, 0x2c, 0xe9, 0xc9, 0x2e,
0x76, 0x2c, 0xdb, 0xc3, 0xf6, 0x41, 0x48, 0x49, 0xc0, 0xd5, 0x2f, 0xae, 0xc9, 0xff, 0xeb, 0xec,
0x0c, 0x49, 0xde, 0xc8, 0x90, 0x66, 0x56, 0xbd, 0x3b, 0xa9, 0x9f, 0x7c, 0x13, 0x3a, 0xe0, 0x4c,
0x9a, 0xdb, 0xa9, 0x61, 0xbe, 0x9c, 0x3b, 0x4c, 0x5a, 0xa3, 0x69, 0x51, 0x5e, 0x05, 0xc7, 0x3b,
0x24, 0x40, 0x3e, 0x79, 0x3c, 0xe9, 0xfd, 0xab, 0xb9, 0xbd, 0xaf, 0x65, 0xfc, 0xdc, 0xa8, 0xbf,
0xaf, 0x80, 0x82, 0x68, 0xd1, 0xf0, 0x2a, 0x58, 0xcd, 0xb2, 0xd5, 0xc7, 0x11, 0x23, 0x34, 0x50,
0x15, 0x59, 0x9f, 0xd5, 0xc9, 0xfa, 0xec, 0xe8, 0x66, 0x39, 0x45, 0x3e, 0x88, 0x81, 0x70, 0x0f,
0x94, 0xd3, 0x14, 0xa4, 0xdc, 0x85, 0x19, 0xdc, 0x95, 0x04, 0x98, 0x52, 0x8f, 0x83, 0x43, 0x52,
0x91, 0xea, 0xa2, 0x6c, 0x23, 0xf1, 0x42, 0x7f, 0x77, 0x01, 0xc0, 0x67, 0x55, 0x07, 0xbb, 0x60,
0x15, 0xb9, 0x6e, 0x84, 0xdd, 0x31, 0x15, 0xc5, 0x87, 0x6c, 0x4d, 0xe8, 0xb1, 0xbe, 0xb5, 0xb3,
0x2b, 0x64, 0x74, 0x69, 0x5e, 0x19, 0xf9, 0x84, 0x71, 0xb3, 0x3c, 0xe6, 0x5b, 0x2a, 0xe8, 0x0a,
0x28, 0xc8, 0x46, 0xbc, 0x20, 0x53, 0x7c, 0x7e, 0x46, 0x8a, 0xc7, 0x0e, 0x28, 0xdb, 0xb1, 0xe4,
0xc0, 0x0b, 0xa0, 0x4c, 0x02, 0xdb, 0xef, 0x89, 0x4b, 0x5a, 0x0e, 0xf6, 0xd1, 0x20, 0xb9, 0xe1,
0x4a, 0x66, 0xbe, 0x29, 0xac, 0xf0, 0x1c, 0x58, 0x09, 0x23, 0x1a, 0x52, 0x86, 0xa3, 0xa4, 0xa3,
0x16, 0x24, 0x6e, 0x39, 0xb5, 0xca, 0x6e, 0xaa, 0xbf, 0xad, 0x80, 0xf2, 0xed, 0xec, 0xb5, 0x68,
0x21, 0x6e, 0x7b, 0xb0, 0x39, 0xf9, 0xea, 0x29, 0x73, 0x3f, 0x7a, 0xcd, 0xc9, 0x47, 0x6f, 0x61,
0xde, 0x37, 0x4f, 0x6f, 0x80, 0x92, 0x9c, 0x41, 0xee, 0xf7, 0xba, 0x5d, 0x14, 0x0d, 0x20, 0x4c,
0x46, 0x03, 0x65, 0x6c, 0x32, 0x80, 0xa0, 0x20, 0xe7, 0x0c, 0xa9, 0x00, 0x53, 0x7e, 0xeb, 0x3e,
0x28, 0xde, 0x27, 0x6e, 0x40, 0x02, 0x57, 0xbe, 0x53, 0x75, 0x50, 0xa4, 0xed, 0x87, 0xd8, 0xe6,
0xf1, 0x44, 0xa2, 0xcc, 0x1a, 0x48, 0x40, 0x8c, 0x92, 0x53, 0xc8, 0x73, 0xe0, 0xb0, 0x43, 0xbb,
0x88, 0xa4, 0xd2, 0x9a, 0x02, 0x4f, 0x00, 0xfa, 0x7b, 0x0a, 0x58, 0x12, 0xa2, 0x96, 0xb1, 0xa6,
0x68, 0xb3, 0x30, 0xa7, 0x36, 0xf7, 0x67, 0x0f, 0x51, 0x0b, 0xff, 0x6e, 0x86, 0xd2, 0x3f, 0x50,
0x40, 0x45, 0x64, 0x00, 0x3b, 0xd7, 0x13, 0x91, 0xe1, 0xeb, 0x81, 0x73, 0x2f, 0xa2, 0xb4, 0x03,
0xef, 0x82, 0x23, 0x5d, 0xcc, 0x18, 0x72, 0xb1, 0xcc, 0x44, 0xb1, 0xbe, 0x3d, 0x4b, 0x69, 0x19,
0x35, 0x97, 0x5c, 0xea, 0xc5, 0x4c, 0x7d, 0xc0, 0x1a, 0x38, 0xca, 0x88, 0x1b, 0x20, 0xde, 0x8b,
0xf0, 0xf4, 0x73, 0x8a, 0x66, 0x9d, 0x63, 0xf4, 0x8f, 0x15, 0x50, 0x94, 0x2d, 0xe1, 0x1e, 0xdf,
0x0f, 0x3a, 0x54, 0x16, 0x15, 0x63, 0x27, 0x2e, 0x8b, 0x29, 0xbf, 0xe1, 0xd9, 0x7c, 0xe6, 0x1c,
0x2b, 0x6e, 0x3a, 0x72, 0xca, 0x02, 0x9d, 0x03, 0x2b, 0xc8, 0xe6, 0xa4, 0x8f, 0x85, 0x8c, 0x89,
0x78, 0x95, 0x17, 0xc5, 0xe3, 0x68, 0x2e, 0xc7, 0xd6, 0xfd, 0xd8, 0x08, 0x4f, 0x82, 0xa5, 0xb0,
0xd7, 0xb6, 0x0e, 0xf0, 0x80, 0xa9, 0x05, 0x21, 0x3c, 0xf3, 0x48, 0xd8, 0x6b, 0xbf, 0x8c, 0x07,
0x0c, 0x6e, 0x25, 0x33, 0xe5, 0xa1, 0x79, 0x47, 0xca, 0x56, 0xe9, 0xeb, 0xa7, 0xeb, 0xca, 0x37,
0x4f, 0xd7, 0x95, 0x9f, 0x9e, 0xae, 0x2b, 0xed, 0xc3, 0x72, 0x5e, 0xde, 0xfe, 0x33, 0x00, 0x00,
0xff, 0xff, 0xd4, 0x1c, 0xd6, 0x98, 0xf8, 0x0b, 0x00, 0x00,
}
func (m *BeaconState) Marshal() (dAtA []byte, err error) {
@@ -1373,6 +1458,86 @@ func (m *SignedAggregateAndProof) MarshalToSizedBuffer(dAtA []byte) (int, error)
return len(dAtA) - i, nil
}
func (m *CheckPtInfo) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *CheckPtInfo) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *CheckPtInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.XXX_unrecognized != nil {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
if m.Fork != nil {
{
size, err := m.Fork.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTypes(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x2a
}
if len(m.PubKeys) > 0 {
for iNdEx := len(m.PubKeys) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.PubKeys[iNdEx])
copy(dAtA[i:], m.PubKeys[iNdEx])
i = encodeVarintTypes(dAtA, i, uint64(len(m.PubKeys[iNdEx])))
i--
dAtA[i] = 0x22
}
}
if len(m.ActiveIndices) > 0 {
dAtA15 := make([]byte, len(m.ActiveIndices)*10)
var j14 int
for _, num := range m.ActiveIndices {
for num >= 1<<7 {
dAtA15[j14] = uint8(uint64(num)&0x7f | 0x80)
num >>= 7
j14++
}
dAtA15[j14] = uint8(num)
j14++
}
i -= j14
copy(dAtA[i:], dAtA15[:j14])
i = encodeVarintTypes(dAtA, i, uint64(j14))
i--
dAtA[i] = 0x1a
}
if len(m.GenesisRoot) > 0 {
i -= len(m.GenesisRoot)
copy(dAtA[i:], m.GenesisRoot)
i = encodeVarintTypes(dAtA, i, uint64(len(m.GenesisRoot)))
i--
dAtA[i] = 0x12
}
if len(m.Seed) > 0 {
i -= len(m.Seed)
copy(dAtA[i:], m.Seed)
i = encodeVarintTypes(dAtA, i, uint64(len(m.Seed)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func encodeVarintTypes(dAtA []byte, offset int, v uint64) int {
offset -= sovTypes(v)
base := offset
@@ -1651,6 +1816,43 @@ func (m *SignedAggregateAndProof) Size() (n int) {
return n
}
func (m *CheckPtInfo) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Seed)
if l > 0 {
n += 1 + l + sovTypes(uint64(l))
}
l = len(m.GenesisRoot)
if l > 0 {
n += 1 + l + sovTypes(uint64(l))
}
if len(m.ActiveIndices) > 0 {
l = 0
for _, e := range m.ActiveIndices {
l += sovTypes(uint64(e))
}
n += 1 + sovTypes(uint64(l)) + l
}
if len(m.PubKeys) > 0 {
for _, b := range m.PubKeys {
l = len(b)
n += 1 + l + sovTypes(uint64(l))
}
}
if m.Fork != nil {
l = m.Fork.Size()
n += 1 + l + sovTypes(uint64(l))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func sovTypes(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@@ -3364,6 +3566,272 @@ func (m *SignedAggregateAndProof) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *CheckPtInfo) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: CheckPtInfo: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: CheckPtInfo: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Seed", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Seed = append(m.Seed[:0], dAtA[iNdEx:postIndex]...)
if m.Seed == nil {
m.Seed = []byte{}
}
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field GenesisRoot", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.GenesisRoot = append(m.GenesisRoot[:0], dAtA[iNdEx:postIndex]...)
if m.GenesisRoot == nil {
m.GenesisRoot = []byte{}
}
iNdEx = postIndex
case 3:
if wireType == 0 {
var v uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.ActiveIndices = append(m.ActiveIndices, v)
} else if wireType == 2 {
var packedLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
packedLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if packedLen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + packedLen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
var elementCount int
var count int
for _, integer := range dAtA[iNdEx:postIndex] {
if integer < 128 {
count++
}
}
elementCount = count
if elementCount != 0 && len(m.ActiveIndices) == 0 {
m.ActiveIndices = make([]uint64, 0, elementCount)
}
for iNdEx < postIndex {
var v uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.ActiveIndices = append(m.ActiveIndices, v)
}
} else {
return fmt.Errorf("proto: wrong wireType = %d for field ActiveIndices", wireType)
}
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field PubKeys", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.PubKeys = append(m.PubKeys, make([]byte, postIndex-iNdEx))
copy(m.PubKeys[len(m.PubKeys)-1], dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Fork", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Fork == nil {
m.Fork = &Fork{}
}
if err := m.Fork.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthTypes
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthTypes
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipTypes(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0

View File

@@ -99,3 +99,17 @@ message SignedAggregateAndProof {
// The signature of the aggregator signing the aggregated and proof object.
bytes signature = 2 [(gogoproto.moretags) = "ssz-size:\"96\""];
}
message CheckPtInfo {
// The randao seed which the check point refers to, this will be used to retrieve shuffled indices.
bytes seed = 1;
// The genesis root which the check point refers to. This ensures same seed can't happen on different chain.
bytes genesis_root = 2;
// Validators that were active at that check point.
repeated uint64 active_indices = 3;
// Validators public keys at that check point.
repeated bytes pub_keys = 4;
// The fork data at that check point. This will be used to verify signatures.
Fork fork = 5;
}