Validator: performing for multiple keys - update rpc proto (#2040)

* first version - broken

* Scripts to update mockgen

* working proto changes

* resolve review remarks

* fix goimport issues
This commit is contained in:
shayzluf
2019-03-24 06:16:25 +05:30
committed by Preston Van Loon
parent aa4f95d818
commit 6335833c94
17 changed files with 677 additions and 254 deletions

3
.gitignore vendored
View File

@@ -19,3 +19,6 @@ profile.out
node_modules
yarn-error.log
.vscode/
# Ignore password file
password.txt

View File

@@ -1,6 +1,7 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: BeaconServiceServer,BeaconService_LatestAttestationServer,BeaconService_WaitForChainStartServer)
// Package internal is a generated GoMock package.
package internal
import (
@@ -39,6 +40,7 @@ func (m *MockBeaconServiceServer) EXPECT() *MockBeaconServiceServerMockRecorder
// CanonicalHead mocks base method
func (m *MockBeaconServiceServer) CanonicalHead(arg0 context.Context, arg1 *types.Empty) (*v1.BeaconBlock, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CanonicalHead", arg0, arg1)
ret0, _ := ret[0].(*v1.BeaconBlock)
ret1, _ := ret[1].(error)
@@ -47,11 +49,43 @@ func (m *MockBeaconServiceServer) CanonicalHead(arg0 context.Context, arg1 *type
// CanonicalHead indicates an expected call of CanonicalHead
func (mr *MockBeaconServiceServerMockRecorder) CanonicalHead(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CanonicalHead", reflect.TypeOf((*MockBeaconServiceServer)(nil).CanonicalHead), arg0, arg1)
}
// Eth1Data mocks base method
func (m *MockBeaconServiceServer) Eth1Data(arg0 context.Context, arg1 *types.Empty) (*v10.Eth1DataResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Eth1Data", arg0, arg1)
ret0, _ := ret[0].(*v10.Eth1DataResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// Eth1Data indicates an expected call of Eth1Data
func (mr *MockBeaconServiceServerMockRecorder) Eth1Data(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Eth1Data", reflect.TypeOf((*MockBeaconServiceServer)(nil).Eth1Data), arg0, arg1)
}
// ForkData mocks base method
func (m *MockBeaconServiceServer) ForkData(arg0 context.Context, arg1 *types.Empty) (*v1.Fork, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ForkData", arg0, arg1)
ret0, _ := ret[0].(*v1.Fork)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ForkData indicates an expected call of ForkData
func (mr *MockBeaconServiceServerMockRecorder) ForkData(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForkData", reflect.TypeOf((*MockBeaconServiceServer)(nil).ForkData), arg0, arg1)
}
// LatestAttestation mocks base method
func (m *MockBeaconServiceServer) LatestAttestation(arg0 *types.Empty, arg1 v10.BeaconService_LatestAttestationServer) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "LatestAttestation", arg0, arg1)
ret0, _ := ret[0].(error)
return ret0
@@ -59,11 +93,28 @@ func (m *MockBeaconServiceServer) LatestAttestation(arg0 *types.Empty, arg1 v10.
// LatestAttestation indicates an expected call of LatestAttestation
func (mr *MockBeaconServiceServerMockRecorder) LatestAttestation(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LatestAttestation", reflect.TypeOf((*MockBeaconServiceServer)(nil).LatestAttestation), arg0, arg1)
}
// PendingDeposits mocks base method
func (m *MockBeaconServiceServer) PendingDeposits(arg0 context.Context, arg1 *types.Empty) (*v10.PendingDepositsResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "PendingDeposits", arg0, arg1)
ret0, _ := ret[0].(*v10.PendingDepositsResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// PendingDeposits indicates an expected call of PendingDeposits
func (mr *MockBeaconServiceServerMockRecorder) PendingDeposits(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingDeposits", reflect.TypeOf((*MockBeaconServiceServer)(nil).PendingDeposits), arg0, arg1)
}
// WaitForChainStart mocks base method
func (m *MockBeaconServiceServer) WaitForChainStart(arg0 *types.Empty, arg1 v10.BeaconService_WaitForChainStartServer) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "WaitForChainStart", arg0, arg1)
ret0, _ := ret[0].(error)
return ret0
@@ -71,6 +122,7 @@ func (m *MockBeaconServiceServer) WaitForChainStart(arg0 *types.Empty, arg1 v10.
// WaitForChainStart indicates an expected call of WaitForChainStart
func (mr *MockBeaconServiceServerMockRecorder) WaitForChainStart(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForChainStart", reflect.TypeOf((*MockBeaconServiceServer)(nil).WaitForChainStart), arg0, arg1)
}
@@ -99,6 +151,7 @@ func (m *MockBeaconService_LatestAttestationServer) EXPECT() *MockBeaconService_
// Context mocks base method
func (m *MockBeaconService_LatestAttestationServer) Context() context.Context {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Context")
ret0, _ := ret[0].(context.Context)
return ret0
@@ -106,11 +159,13 @@ func (m *MockBeaconService_LatestAttestationServer) Context() context.Context {
// Context indicates an expected call of Context
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) Context() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).Context))
}
// RecvMsg mocks base method
func (m *MockBeaconService_LatestAttestationServer) RecvMsg(arg0 interface{}) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RecvMsg", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -118,11 +173,13 @@ func (m *MockBeaconService_LatestAttestationServer) RecvMsg(arg0 interface{}) er
// RecvMsg indicates an expected call of RecvMsg
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).RecvMsg), arg0)
}
// Send mocks base method
func (m *MockBeaconService_LatestAttestationServer) Send(arg0 *v1.Attestation) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Send", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -130,11 +187,13 @@ func (m *MockBeaconService_LatestAttestationServer) Send(arg0 *v1.Attestation) e
// Send indicates an expected call of Send
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) Send(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).Send), arg0)
}
// SendHeader mocks base method
func (m *MockBeaconService_LatestAttestationServer) SendHeader(arg0 metadata.MD) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SendHeader", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -142,11 +201,13 @@ func (m *MockBeaconService_LatestAttestationServer) SendHeader(arg0 metadata.MD)
// SendHeader indicates an expected call of SendHeader
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SendHeader(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SendHeader), arg0)
}
// SendMsg mocks base method
func (m *MockBeaconService_LatestAttestationServer) SendMsg(arg0 interface{}) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SendMsg", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -154,11 +215,13 @@ func (m *MockBeaconService_LatestAttestationServer) SendMsg(arg0 interface{}) er
// SendMsg indicates an expected call of SendMsg
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SendMsg(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SendMsg), arg0)
}
// SetHeader mocks base method
func (m *MockBeaconService_LatestAttestationServer) SetHeader(arg0 metadata.MD) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SetHeader", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -166,16 +229,19 @@ func (m *MockBeaconService_LatestAttestationServer) SetHeader(arg0 metadata.MD)
// SetHeader indicates an expected call of SetHeader
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SetHeader(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SetHeader), arg0)
}
// SetTrailer mocks base method
func (m *MockBeaconService_LatestAttestationServer) SetTrailer(arg0 metadata.MD) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "SetTrailer", arg0)
}
// SetTrailer indicates an expected call of SetTrailer
func (mr *MockBeaconService_LatestAttestationServerMockRecorder) SetTrailer(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockBeaconService_LatestAttestationServer)(nil).SetTrailer), arg0)
}
@@ -204,6 +270,7 @@ func (m *MockBeaconService_WaitForChainStartServer) EXPECT() *MockBeaconService_
// Context mocks base method
func (m *MockBeaconService_WaitForChainStartServer) Context() context.Context {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Context")
ret0, _ := ret[0].(context.Context)
return ret0
@@ -211,11 +278,13 @@ func (m *MockBeaconService_WaitForChainStartServer) Context() context.Context {
// Context indicates an expected call of Context
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) Context() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).Context))
}
// RecvMsg mocks base method
func (m *MockBeaconService_WaitForChainStartServer) RecvMsg(arg0 interface{}) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "RecvMsg", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -223,11 +292,13 @@ func (m *MockBeaconService_WaitForChainStartServer) RecvMsg(arg0 interface{}) er
// RecvMsg indicates an expected call of RecvMsg
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).RecvMsg), arg0)
}
// Send mocks base method
func (m *MockBeaconService_WaitForChainStartServer) Send(arg0 *v10.ChainStartResponse) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Send", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -235,11 +306,13 @@ func (m *MockBeaconService_WaitForChainStartServer) Send(arg0 *v10.ChainStartRes
// Send indicates an expected call of Send
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) Send(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).Send), arg0)
}
// SendHeader mocks base method
func (m *MockBeaconService_WaitForChainStartServer) SendHeader(arg0 metadata.MD) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SendHeader", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -247,11 +320,13 @@ func (m *MockBeaconService_WaitForChainStartServer) SendHeader(arg0 metadata.MD)
// SendHeader indicates an expected call of SendHeader
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SendHeader(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SendHeader), arg0)
}
// SendMsg mocks base method
func (m *MockBeaconService_WaitForChainStartServer) SendMsg(arg0 interface{}) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SendMsg", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -259,11 +334,13 @@ func (m *MockBeaconService_WaitForChainStartServer) SendMsg(arg0 interface{}) er
// SendMsg indicates an expected call of SendMsg
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SendMsg(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SendMsg), arg0)
}
// SetHeader mocks base method
func (m *MockBeaconService_WaitForChainStartServer) SetHeader(arg0 metadata.MD) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SetHeader", arg0)
ret0, _ := ret[0].(error)
return ret0
@@ -271,15 +348,18 @@ func (m *MockBeaconService_WaitForChainStartServer) SetHeader(arg0 metadata.MD)
// SetHeader indicates an expected call of SetHeader
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SetHeader(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SetHeader), arg0)
}
// SetTrailer mocks base method
func (m *MockBeaconService_WaitForChainStartServer) SetTrailer(arg0 metadata.MD) {
m.ctrl.T.Helper()
m.ctrl.Call(m, "SetTrailer", arg0)
}
// SetTrailer indicates an expected call of SetTrailer
func (mr *MockBeaconService_WaitForChainStartServerMockRecorder) SetTrailer(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockBeaconService_WaitForChainStartServer)(nil).SetTrailer), arg0)
}

View File

@@ -1,6 +1,7 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: ValidatorServiceServer,ValidatorService_WaitForActivationServer)
// Package internal is a generated GoMock package.
package internal
import (
@@ -36,7 +37,7 @@ func (m *MockValidatorServiceServer) EXPECT() *MockValidatorServiceServerMockRec
}
// CommitteeAssignment mocks base method
func (m *MockValidatorServiceServer) CommitteeAssignment(arg0 context.Context, arg1 *v1.ValidatorEpochAssignmentsRequest) (*v1.CommitteeAssignmentResponse, error) {
func (m *MockValidatorServiceServer) CommitteeAssignment(arg0 context.Context, arg1 *v1.CommitteeAssignmentsRequest) (*v1.CommitteeAssignmentResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CommitteeAssignment", arg0, arg1)
ret0, _ := ret[0].(*v1.CommitteeAssignmentResponse)
@@ -65,6 +66,21 @@ func (mr *MockValidatorServiceServerMockRecorder) ValidatorIndex(arg0, arg1 inte
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorIndex", reflect.TypeOf((*MockValidatorServiceServer)(nil).ValidatorIndex), arg0, arg1)
}
// ValidatorPerformance mocks base method
func (m *MockValidatorServiceServer) ValidatorPerformance(arg0 context.Context, arg1 *v1.ValidatorPerformanceRequest) (*v1.ValidatorPerformanceResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ValidatorPerformance", arg0, arg1)
ret0, _ := ret[0].(*v1.ValidatorPerformanceResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ValidatorPerformance indicates an expected call of ValidatorPerformance
func (mr *MockValidatorServiceServerMockRecorder) ValidatorPerformance(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorPerformance", reflect.TypeOf((*MockValidatorServiceServer)(nil).ValidatorPerformance), arg0, arg1)
}
// ValidatorStatus mocks base method
func (m *MockValidatorServiceServer) ValidatorStatus(arg0 context.Context, arg1 *v1.ValidatorIndexRequest) (*v1.ValidatorStatusResponse, error) {
m.ctrl.T.Helper()

View File

@@ -148,11 +148,11 @@ func TestPendingAttestations_FiltersWithinInclusionDelay(t *testing.T) {
}
if err := db.SaveBlock(blk); err != nil {
t.Fatalf("failed to save block %v")
t.Fatalf("failed to save block %v", err)
}
if err := db.UpdateChainHead(blk, beaconState); err != nil {
t.Fatalf("couldnt update chainhead: %v")
t.Fatalf("couldnt update chainhead: %v", err)
}
res, err := proposerServer.PendingAttestations(context.Background(), &pb.PendingAttestationsRequest{
@@ -213,11 +213,11 @@ func TestPendingAttestations_FiltersExpiredAttestations(t *testing.T) {
}
if err := db.SaveBlock(blk); err != nil {
t.Fatalf("failed to save block %v")
t.Fatalf("failed to save block %v", err)
}
if err := db.UpdateChainHead(blk, beaconState); err != nil {
t.Fatalf("couldnt update chainhead: %v")
t.Fatalf("couldnt update chainhead: %v", err)
}
res, err := proposerServer.PendingAttestations(
@@ -257,11 +257,11 @@ func TestPendingAttestations_OK(t *testing.T) {
}
if err := db.SaveBlock(blk); err != nil {
t.Fatalf("failed to save block %v")
t.Fatalf("failed to save block %v", err)
}
if err := db.UpdateChainHead(blk, beaconState); err != nil {
t.Fatalf("couldnt update chainhead: %v")
t.Fatalf("couldnt update chainhead: %v", err)
}
res, err := proposerServer.PendingAttestations(context.Background(), &pb.PendingAttestationsRequest{})

View File

@@ -113,13 +113,13 @@ func (vs *ValidatorServer) ValidatorPerformance(
// 4.) The bool signalling if the validator is expected to propose a block at the assigned slot.
func (vs *ValidatorServer) CommitteeAssignment(
ctx context.Context,
req *pb.ValidatorEpochAssignmentsRequest) (*pb.CommitteeAssignmentResponse, error) {
req *pb.CommitteeAssignmentsRequest) (*pb.CommitteeAssignmentResponse, error) {
if len(req.PublicKey) != params.BeaconConfig().BLSPubkeyLength {
if len(req.PublicKey[0]) != params.BeaconConfig().BLSPubkeyLength {
return nil, fmt.Errorf(
"expected public key to have length %d, received %d",
params.BeaconConfig().BLSPubkeyLength,
len(req.PublicKey),
len(req.PublicKey[0]),
)
}
@@ -127,7 +127,7 @@ func (vs *ValidatorServer) CommitteeAssignment(
if err != nil {
return nil, fmt.Errorf("could not fetch beacon state: %v", err)
}
idx, err := vs.beaconDB.ValidatorIndex(req.PublicKey)
idx, err := vs.beaconDB.ValidatorIndex(req.PublicKey[0])
if err != nil {
return nil, fmt.Errorf("could not get active validator index: %v", err)
}
@@ -137,12 +137,20 @@ func (vs *ValidatorServer) CommitteeAssignment(
if err != nil {
return nil, err
}
return &pb.CommitteeAssignmentResponse{
Committee: committee,
Shard: shard,
Slot: slot,
IsProposer: isProposer,
vsr, err := vs.ValidatorStatus(ctx, &pb.ValidatorIndexRequest{PublicKey: req.PublicKey[0]})
if err != nil {
return nil, err
}
return &pb.CommitteeAssignmentResponse{Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Committee: committee,
Shard: shard,
Slot: slot,
IsProposer: isProposer,
PublicKey: req.PublicKey[0],
Status: vsr.Status,
},
},
}, nil
}

View File

@@ -70,8 +70,8 @@ func TestNextEpochCommitteeAssignment_WrongPubkeyLength(t *testing.T) {
validatorServer := &ValidatorServer{
beaconDB: db,
}
req := &pb.ValidatorEpochAssignmentsRequest{
PublicKey: []byte{},
req := &pb.CommitteeAssignmentsRequest{
PublicKey: [][]byte{[]byte{1}},
EpochStart: params.BeaconConfig().GenesisEpoch,
}
want := fmt.Sprintf("expected public key to have length %d", params.BeaconConfig().BLSPubkeyLength)
@@ -92,11 +92,11 @@ func TestNextEpochCommitteeAssignment_CantFindValidatorIdx(t *testing.T) {
}
pubKey := make([]byte, 96)
req := &pb.ValidatorEpochAssignmentsRequest{
PublicKey: pubKey,
req := &pb.CommitteeAssignmentsRequest{
PublicKey: [][]byte{pubKey},
EpochStart: params.BeaconConfig().GenesisEpoch,
}
want := fmt.Sprintf("validator %#x does not exist", req.PublicKey)
want := fmt.Sprintf("validator %#x does not exist", req.PublicKey[0])
if _, err := vs.CommitteeAssignment(context.Background(), req); !strings.Contains(err.Error(), want) {
t.Errorf("Expected %v, received %v", want, err)
}
@@ -143,42 +143,42 @@ func TestCommitteeAssignment_OK(t *testing.T) {
pubKeyBuf := make([]byte, params.BeaconConfig().BLSPubkeyLength)
binary.PutUvarint(pubKeyBuf, 0)
// Test the first validator in registry.
req := &pb.ValidatorEpochAssignmentsRequest{
PublicKey: pubKeyBuf,
req := &pb.CommitteeAssignmentsRequest{
PublicKey: [][]byte{pubKeyBuf},
EpochStart: params.BeaconConfig().GenesisSlot,
}
res, err := vs.CommitteeAssignment(context.Background(), req)
if err != nil {
t.Fatalf("Could not call epoch committee assignment %v", err)
}
if res.Shard >= params.BeaconConfig().ShardCount {
if res.Assignment[0].Shard >= params.BeaconConfig().ShardCount {
t.Errorf("Assigned shard %d can't be higher than %d",
res.Shard, params.BeaconConfig().ShardCount)
res.Assignment[0].Shard, params.BeaconConfig().ShardCount)
}
if res.Slot > state.Slot+params.BeaconConfig().SlotsPerEpoch {
if res.Assignment[0].Slot > state.Slot+params.BeaconConfig().SlotsPerEpoch {
t.Errorf("Assigned slot %d can't be higher than %d",
res.Slot, state.Slot+params.BeaconConfig().SlotsPerEpoch)
res.Assignment[0].Slot, state.Slot+params.BeaconConfig().SlotsPerEpoch)
}
// Test the last validator in registry.
lastValidatorIndex := params.BeaconConfig().DepositsForChainStart - 1
pubKeyBuf = make([]byte, params.BeaconConfig().BLSPubkeyLength)
binary.PutUvarint(pubKeyBuf, lastValidatorIndex)
req = &pb.ValidatorEpochAssignmentsRequest{
PublicKey: pubKeyBuf,
req = &pb.CommitteeAssignmentsRequest{
PublicKey: [][]byte{pubKeyBuf},
EpochStart: params.BeaconConfig().GenesisSlot,
}
res, err = vs.CommitteeAssignment(context.Background(), req)
if err != nil {
t.Fatalf("Could not call epoch committee assignment %v", err)
}
if res.Shard >= params.BeaconConfig().ShardCount {
if res.Assignment[0].Shard >= params.BeaconConfig().ShardCount {
t.Errorf("Assigned shard %d can't be higher than %d",
res.Shard, params.BeaconConfig().ShardCount)
res.Assignment[0].Shard, params.BeaconConfig().ShardCount)
}
if res.Slot > state.Slot+params.BeaconConfig().SlotsPerEpoch {
if res.Assignment[0].Slot > state.Slot+params.BeaconConfig().SlotsPerEpoch {
t.Errorf("Assigned slot %d can't be higher than %d",
res.Slot, state.Slot+params.BeaconConfig().SlotsPerEpoch)
res.Assignment[0].Slot, state.Slot+params.BeaconConfig().SlotsPerEpoch)
}
}

View File

@@ -5,9 +5,10 @@ package ethereum_beacon_p2p_v1
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
io "io"
math "math"
proto "github.com/gogo/protobuf/proto"
)
// Reference imports to suppress errors if they are not otherwise used.

View File

@@ -5,10 +5,11 @@ package ethereum_beacon_p2p_v1
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
_ "github.com/prysmaticlabs/prysm/proto/common"
io "io"
math "math"
proto "github.com/gogo/protobuf/proto"
_ "github.com/prysmaticlabs/prysm/proto/common"
)
// Reference imports to suppress errors if they are not otherwise used.

View File

@@ -7,12 +7,13 @@ import (
context "context"
encoding_binary "encoding/binary"
fmt "fmt"
io "io"
math "math"
proto "github.com/gogo/protobuf/proto"
types "github.com/gogo/protobuf/types"
v1 "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
grpc "google.golang.org/grpc"
io "io"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
@@ -1024,26 +1025,26 @@ func (m *ValidatorIndexResponse) GetIndex() uint64 {
return 0
}
type ValidatorEpochAssignmentsRequest struct {
type CommitteeAssignmentsRequest struct {
EpochStart uint64 `protobuf:"varint,1,opt,name=epoch_start,json=epochStart,proto3" json:"epoch_start,omitempty"`
PublicKey []byte `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
PublicKey [][]byte `protobuf:"bytes,2,rep,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ValidatorEpochAssignmentsRequest) Reset() { *m = ValidatorEpochAssignmentsRequest{} }
func (m *ValidatorEpochAssignmentsRequest) String() string { return proto.CompactTextString(m) }
func (*ValidatorEpochAssignmentsRequest) ProtoMessage() {}
func (*ValidatorEpochAssignmentsRequest) Descriptor() ([]byte, []int) {
func (m *CommitteeAssignmentsRequest) Reset() { *m = CommitteeAssignmentsRequest{} }
func (m *CommitteeAssignmentsRequest) String() string { return proto.CompactTextString(m) }
func (*CommitteeAssignmentsRequest) ProtoMessage() {}
func (*CommitteeAssignmentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9eb4e94b85965285, []int{17}
}
func (m *ValidatorEpochAssignmentsRequest) XXX_Unmarshal(b []byte) error {
func (m *CommitteeAssignmentsRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *ValidatorEpochAssignmentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
func (m *CommitteeAssignmentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_ValidatorEpochAssignmentsRequest.Marshal(b, m, deterministic)
return xxx_messageInfo_CommitteeAssignmentsRequest.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalTo(b)
@@ -1053,26 +1054,26 @@ func (m *ValidatorEpochAssignmentsRequest) XXX_Marshal(b []byte, deterministic b
return b[:n], nil
}
}
func (m *ValidatorEpochAssignmentsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ValidatorEpochAssignmentsRequest.Merge(m, src)
func (m *CommitteeAssignmentsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommitteeAssignmentsRequest.Merge(m, src)
}
func (m *ValidatorEpochAssignmentsRequest) XXX_Size() int {
func (m *CommitteeAssignmentsRequest) XXX_Size() int {
return m.Size()
}
func (m *ValidatorEpochAssignmentsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ValidatorEpochAssignmentsRequest.DiscardUnknown(m)
func (m *CommitteeAssignmentsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_CommitteeAssignmentsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ValidatorEpochAssignmentsRequest proto.InternalMessageInfo
var xxx_messageInfo_CommitteeAssignmentsRequest proto.InternalMessageInfo
func (m *ValidatorEpochAssignmentsRequest) GetEpochStart() uint64 {
func (m *CommitteeAssignmentsRequest) GetEpochStart() uint64 {
if m != nil {
return m.EpochStart
}
return 0
}
func (m *ValidatorEpochAssignmentsRequest) GetPublicKey() []byte {
func (m *CommitteeAssignmentsRequest) GetPublicKey() [][]byte {
if m != nil {
return m.PublicKey
}
@@ -1127,13 +1128,10 @@ func (m *PendingDepositsResponse) GetPendingDeposits() []*v1.Deposit {
}
type CommitteeAssignmentResponse struct {
Committee []uint64 `protobuf:"varint,1,rep,packed,name=committee,proto3" json:"committee,omitempty"`
Shard uint64 `protobuf:"varint,2,opt,name=shard,proto3" json:"shard,omitempty"`
Slot uint64 `protobuf:"varint,3,opt,name=slot,proto3" json:"slot,omitempty"`
IsProposer bool `protobuf:"varint,4,opt,name=is_proposer,json=isProposer,proto3" json:"is_proposer,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Assignment []*CommitteeAssignmentResponse_CommitteeAssignment `protobuf:"bytes,1,rep,name=assignment,proto3" json:"assignment,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommitteeAssignmentResponse) Reset() { *m = CommitteeAssignmentResponse{} }
@@ -1169,34 +1167,104 @@ func (m *CommitteeAssignmentResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_CommitteeAssignmentResponse proto.InternalMessageInfo
func (m *CommitteeAssignmentResponse) GetCommittee() []uint64 {
func (m *CommitteeAssignmentResponse) GetAssignment() []*CommitteeAssignmentResponse_CommitteeAssignment {
if m != nil {
return m.Assignment
}
return nil
}
type CommitteeAssignmentResponse_CommitteeAssignment struct {
Committee []uint64 `protobuf:"varint,1,rep,packed,name=committee,proto3" json:"committee,omitempty"`
Shard uint64 `protobuf:"varint,2,opt,name=shard,proto3" json:"shard,omitempty"`
Slot uint64 `protobuf:"varint,3,opt,name=slot,proto3" json:"slot,omitempty"`
IsProposer bool `protobuf:"varint,4,opt,name=is_proposer,json=isProposer,proto3" json:"is_proposer,omitempty"`
PublicKey []byte `protobuf:"bytes,5,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
Status ValidatorStatus `protobuf:"varint,6,opt,name=status,proto3,enum=ethereum.beacon.rpc.v1.ValidatorStatus" json:"status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) Reset() {
*m = CommitteeAssignmentResponse_CommitteeAssignment{}
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) String() string {
return proto.CompactTextString(m)
}
func (*CommitteeAssignmentResponse_CommitteeAssignment) ProtoMessage() {}
func (*CommitteeAssignmentResponse_CommitteeAssignment) Descriptor() ([]byte, []int) {
return fileDescriptor_9eb4e94b85965285, []int{19, 0}
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_CommitteeAssignmentResponse_CommitteeAssignment.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalTo(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommitteeAssignmentResponse_CommitteeAssignment.Merge(m, src)
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) XXX_Size() int {
return m.Size()
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) XXX_DiscardUnknown() {
xxx_messageInfo_CommitteeAssignmentResponse_CommitteeAssignment.DiscardUnknown(m)
}
var xxx_messageInfo_CommitteeAssignmentResponse_CommitteeAssignment proto.InternalMessageInfo
func (m *CommitteeAssignmentResponse_CommitteeAssignment) GetCommittee() []uint64 {
if m != nil {
return m.Committee
}
return nil
}
func (m *CommitteeAssignmentResponse) GetShard() uint64 {
func (m *CommitteeAssignmentResponse_CommitteeAssignment) GetShard() uint64 {
if m != nil {
return m.Shard
}
return 0
}
func (m *CommitteeAssignmentResponse) GetSlot() uint64 {
func (m *CommitteeAssignmentResponse_CommitteeAssignment) GetSlot() uint64 {
if m != nil {
return m.Slot
}
return 0
}
func (m *CommitteeAssignmentResponse) GetIsProposer() bool {
func (m *CommitteeAssignmentResponse_CommitteeAssignment) GetIsProposer() bool {
if m != nil {
return m.IsProposer
}
return false
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) GetPublicKey() []byte {
if m != nil {
return m.PublicKey
}
return nil
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) GetStatus() ValidatorStatus {
if m != nil {
return m.Status
}
return ValidatorStatus_UNKNOWN_STATUS
}
type ValidatorStatusResponse struct {
Status ValidatorStatus `protobuf:"varint,1,opt,name=status,proto3,enum=ethereum.beacon.rpc.v1.ValidatorStatus" json:"status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1311,9 +1379,10 @@ func init() {
proto.RegisterType((*AttestResponse)(nil), "ethereum.beacon.rpc.v1.AttestResponse")
proto.RegisterType((*ValidatorIndexRequest)(nil), "ethereum.beacon.rpc.v1.ValidatorIndexRequest")
proto.RegisterType((*ValidatorIndexResponse)(nil), "ethereum.beacon.rpc.v1.ValidatorIndexResponse")
proto.RegisterType((*ValidatorEpochAssignmentsRequest)(nil), "ethereum.beacon.rpc.v1.ValidatorEpochAssignmentsRequest")
proto.RegisterType((*CommitteeAssignmentsRequest)(nil), "ethereum.beacon.rpc.v1.CommitteeAssignmentsRequest")
proto.RegisterType((*PendingDepositsResponse)(nil), "ethereum.beacon.rpc.v1.PendingDepositsResponse")
proto.RegisterType((*CommitteeAssignmentResponse)(nil), "ethereum.beacon.rpc.v1.CommitteeAssignmentResponse")
proto.RegisterType((*CommitteeAssignmentResponse_CommitteeAssignment)(nil), "ethereum.beacon.rpc.v1.CommitteeAssignmentResponse.CommitteeAssignment")
proto.RegisterType((*ValidatorStatusResponse)(nil), "ethereum.beacon.rpc.v1.ValidatorStatusResponse")
proto.RegisterType((*Eth1DataResponse)(nil), "ethereum.beacon.rpc.v1.Eth1DataResponse")
}
@@ -1321,107 +1390,110 @@ func init() {
func init() { proto.RegisterFile("proto/beacon/rpc/v1/services.proto", fileDescriptor_9eb4e94b85965285) }
var fileDescriptor_9eb4e94b85965285 = []byte{
// 1595 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x4b, 0x6f, 0xdb, 0xc6,
0x13, 0x0f, 0x25, 0xd9, 0xb1, 0xc7, 0xb2, 0x45, 0xaf, 0x1f, 0xd2, 0x5f, 0x4e, 0x62, 0x87, 0x01,
0xfe, 0x71, 0x8c, 0x86, 0x8a, 0x95, 0x20, 0x09, 0x1a, 0x04, 0xad, 0x64, 0x2b, 0xb5, 0x1a, 0xc3,
0x76, 0x28, 0x25, 0x6e, 0x83, 0xa2, 0xc4, 0x4a, 0x5a, 0x4b, 0xac, 0x29, 0x2e, 0x43, 0xae, 0x84,
0xf8, 0x12, 0x20, 0x40, 0x51, 0xa0, 0xe8, 0x77, 0xe8, 0x77, 0xe9, 0xa1, 0x40, 0x8f, 0xbd, 0xf5,
0x5a, 0xe4, 0xd0, 0xcf, 0xd0, 0x63, 0xc1, 0xe5, 0x92, 0xa2, 0x1e, 0xf4, 0xe3, 0xc6, 0x9d, 0x99,
0xdf, 0xec, 0xce, 0x7b, 0x24, 0x50, 0x6c, 0x87, 0x32, 0x5a, 0x68, 0x10, 0xdc, 0xa4, 0x56, 0xc1,
0xb1, 0x9b, 0x85, 0xfe, 0x76, 0xc1, 0x25, 0x4e, 0xdf, 0x68, 0x12, 0x57, 0xe5, 0x4c, 0xb4, 0x4a,
0x58, 0x87, 0x38, 0xa4, 0xd7, 0x55, 0x7d, 0x31, 0xd5, 0xb1, 0x9b, 0x6a, 0x7f, 0x3b, 0xbf, 0x3e,
0x84, 0xb5, 0x8b, 0xb6, 0x87, 0x65, 0x67, 0x76, 0x00, 0xcc, 0xaf, 0xb5, 0x29, 0x6d, 0x9b, 0xa4,
0xc0, 0x4f, 0x8d, 0xde, 0x49, 0x81, 0x74, 0x6d, 0x76, 0x26, 0x98, 0xeb, 0xa3, 0x4c, 0x66, 0x74,
0x89, 0xcb, 0x70, 0xd7, 0xf6, 0x05, 0x94, 0x23, 0x58, 0x7b, 0x83, 0x4d, 0xa3, 0x85, 0x19, 0x75,
0x8e, 0x88, 0x73, 0x42, 0x9d, 0x2e, 0xb6, 0x9a, 0x44, 0x23, 0xef, 0x7a, 0xc4, 0x65, 0x08, 0x41,
0xca, 0x35, 0x29, 0xcb, 0x49, 0x1b, 0xd2, 0x66, 0x4a, 0xe3, 0xdf, 0xe8, 0x26, 0x80, 0xdd, 0x6b,
0x98, 0x46, 0x53, 0x3f, 0x25, 0x67, 0xb9, 0xc4, 0x86, 0xb4, 0x99, 0xd6, 0x66, 0x7d, 0xca, 0x4b,
0x72, 0xa6, 0xfc, 0x25, 0xc1, 0x8d, 0xc9, 0x2a, 0x5d, 0x9b, 0x5a, 0x2e, 0x41, 0x39, 0xb8, 0xde,
0xc0, 0xa6, 0x47, 0x12, 0x6a, 0x83, 0x23, 0xba, 0x07, 0x32, 0xa3, 0x0c, 0x9b, 0x7a, 0x3f, 0xc0,
0xbb, 0x5c, 0x7f, 0x4a, 0xcb, 0x70, 0x7a, 0xa8, 0xd6, 0x45, 0x8f, 0x21, 0xeb, 0x8b, 0xe2, 0x26,
0x33, 0xfa, 0x24, 0x8a, 0x48, 0x72, 0xc4, 0x0a, 0x67, 0x97, 0x38, 0x37, 0x82, 0xfb, 0x1c, 0xfe,
0x87, 0xfb, 0xc4, 0xc1, 0xed, 0x08, 0x44, 0x0f, 0x9e, 0x93, 0xda, 0x90, 0x36, 0x13, 0x5a, 0x56,
0x08, 0x84, 0xa8, 0xb2, 0xcf, 0x56, 0x1e, 0x41, 0x3e, 0xa4, 0x71, 0xc5, 0x98, 0x19, 0xd4, 0x0a,
0x5c, 0xb5, 0x0a, 0xd3, 0x76, 0xaf, 0xe1, 0xb9, 0x44, 0xe2, 0x2e, 0x11, 0x27, 0xe5, 0xfb, 0x88,
0x87, 0xa3, 0x28, 0xe1, 0x8d, 0x2f, 0x60, 0x36, 0x7c, 0x08, 0x47, 0xce, 0x15, 0x6f, 0xab, 0xa3,
0xb9, 0x60, 0x17, 0x6d, 0xb5, 0xbf, 0xad, 0x86, 0x7a, 0xb4, 0x01, 0x46, 0x29, 0xc3, 0x6a, 0x89,
0x31, 0x2f, 0xa8, 0x9e, 0xde, 0x5d, 0xcc, 0x70, 0xf0, 0xa2, 0x65, 0x98, 0x72, 0x3b, 0xd8, 0x69,
0x09, 0x37, 0xfb, 0x87, 0x30, 0xa4, 0x89, 0x41, 0x48, 0x95, 0xdf, 0x13, 0x90, 0x1d, 0x53, 0x22,
0x1e, 0xf8, 0x04, 0x72, 0xfe, 0x2b, 0xf4, 0x86, 0x49, 0x9b, 0xa7, 0xba, 0x43, 0x29, 0xd3, 0x3b,
0xd8, 0xed, 0x3c, 0x2c, 0x0a, 0x4b, 0x57, 0x7c, 0x7e, 0xd9, 0x63, 0x6b, 0x94, 0xb2, 0x3d, 0xce,
0x44, 0xcf, 0x20, 0x4f, 0x6c, 0xda, 0xec, 0xe8, 0x0d, 0xda, 0xb3, 0x5a, 0xd8, 0x39, 0x1b, 0x82,
0xfa, 0x79, 0x93, 0xe5, 0x12, 0x65, 0x21, 0x10, 0x01, 0xdf, 0x85, 0xcc, 0x0f, 0x3d, 0x97, 0x19,
0x27, 0x06, 0x69, 0xe9, 0x5c, 0x48, 0xc4, 0x75, 0x21, 0x24, 0x57, 0x3c, 0x2a, 0x7a, 0x0e, 0x6b,
0x03, 0xc1, 0xf1, 0x17, 0xa6, 0xf8, 0x35, 0xb9, 0x50, 0x64, 0xf4, 0x91, 0xfb, 0x20, 0x9b, 0xd8,
0x33, 0x5c, 0x6f, 0x3a, 0xd4, 0x75, 0x4d, 0xc3, 0x3a, 0xcd, 0x4d, 0x9d, 0x1f, 0x85, 0x9d, 0x40,
0x50, 0xcb, 0xf8, 0xd0, 0x90, 0xa0, 0xfc, 0x2c, 0x41, 0xfe, 0x88, 0x58, 0x2d, 0xc3, 0x6a, 0x47,
0xdc, 0xe9, 0x06, 0x01, 0x79, 0x06, 0xf9, 0x13, 0xc3, 0x64, 0xc4, 0xd1, 0x1d, 0x82, 0x5b, 0x67,
0xfa, 0x09, 0x75, 0x74, 0xc3, 0x6a, 0x9a, 0x3d, 0xd7, 0xa0, 0x16, 0x77, 0xe6, 0x8c, 0x96, 0xf5,
0x25, 0x34, 0x4f, 0xe0, 0x05, 0x75, 0xaa, 0x01, 0x1b, 0xa9, 0xb0, 0x64, 0x3b, 0xd4, 0xa6, 0x2e,
0x36, 0x85, 0x9d, 0x91, 0x30, 0x2e, 0x06, 0x2c, 0x6e, 0x5f, 0xcd, 0x8b, 0x69, 0x0f, 0xd6, 0x26,
0x3e, 0x45, 0x84, 0xf5, 0x0d, 0x2c, 0xdb, 0x3e, 0x5b, 0xc7, 0x11, 0x7e, 0x4e, 0xda, 0x48, 0x6e,
0xce, 0x15, 0xef, 0xc4, 0x19, 0x1f, 0xd1, 0xa5, 0x2d, 0xd9, 0xe3, 0xfa, 0x95, 0x57, 0x80, 0x76,
0x3a, 0xd8, 0xb0, 0x6a, 0x0c, 0x3b, 0x2c, 0x5a, 0xf3, 0xae, 0x47, 0x20, 0x2d, 0x61, 0x66, 0x70,
0x44, 0xb7, 0x21, 0xdd, 0x26, 0x16, 0x71, 0x0d, 0x57, 0xf7, 0x7a, 0x93, 0xb0, 0x67, 0x4e, 0xd0,
0xea, 0x46, 0x97, 0x28, 0xbf, 0x26, 0x60, 0xe1, 0x88, 0xdb, 0x17, 0xf6, 0xa5, 0x75, 0x98, 0xb3,
0xb1, 0x43, 0x2c, 0x3f, 0xce, 0x22, 0x0f, 0xc1, 0x27, 0x79, 0x91, 0xf5, 0x04, 0x3c, 0xf7, 0xe8,
0x56, 0xaf, 0xdb, 0x20, 0x8e, 0xd0, 0x0a, 0x1e, 0xe9, 0x80, 0x53, 0xd0, 0x1d, 0x98, 0x77, 0xb0,
0xd5, 0xc2, 0x54, 0x77, 0x48, 0x9f, 0x60, 0x93, 0xa7, 0x57, 0x5a, 0x4b, 0xfb, 0x44, 0x8d, 0xd3,
0x50, 0x01, 0x96, 0x22, 0xce, 0xd1, 0x1b, 0x06, 0xeb, 0x62, 0xf7, 0x54, 0x24, 0x15, 0x8a, 0xb0,
0xca, 0x3e, 0x87, 0xb7, 0x97, 0x08, 0x00, 0xb7, 0xdb, 0x0e, 0x69, 0x63, 0x46, 0x74, 0xd7, 0x68,
0xe7, 0xa6, 0x36, 0x92, 0x9b, 0x29, 0x2d, 0x1b, 0x11, 0x28, 0x05, 0xfc, 0x9a, 0xd1, 0x46, 0x4f,
0x61, 0x36, 0xec, 0xce, 0xb9, 0x69, 0x9e, 0x83, 0x79, 0xd5, 0xef, 0xdf, 0x6a, 0xd0, 0xbf, 0xd5,
0x7a, 0x20, 0xa1, 0x0d, 0x84, 0x95, 0xe7, 0x90, 0x09, 0xfd, 0x23, 0x1c, 0xbe, 0x05, 0x8b, 0x71,
0xe5, 0x9a, 0x69, 0x0c, 0xd7, 0x80, 0xf2, 0x04, 0x96, 0x05, 0xdc, 0xa9, 0x5a, 0x2d, 0xf2, 0x3e,
0xe2, 0xe4, 0xa8, 0x0f, 0xa5, 0x51, 0x1f, 0x2a, 0xf7, 0x61, 0x65, 0x04, 0x28, 0x6e, 0x5f, 0x86,
0x29, 0xc3, 0x23, 0x04, 0x9d, 0x87, 0x1f, 0x94, 0x22, 0x2c, 0xd6, 0x18, 0x66, 0xc4, 0xbb, 0x3a,
0x14, 0xbd, 0x09, 0xe0, 0x39, 0x83, 0xf0, 0x87, 0x8a, 0x17, 0xce, 0xba, 0x81, 0x98, 0xf2, 0x0c,
0x16, 0xfc, 0xf4, 0x0a, 0x01, 0xf7, 0x40, 0x8e, 0xba, 0x38, 0x12, 0xff, 0x4c, 0x84, 0xee, 0x99,
0xa6, 0x3c, 0x86, 0x95, 0xb0, 0x65, 0x0e, 0x59, 0x36, 0x3c, 0xc2, 0xa4, 0xd1, 0x11, 0xa6, 0xc2,
0xea, 0x28, 0xee, 0x5c, 0xc3, 0x1a, 0xb0, 0x11, 0xca, 0xf3, 0xae, 0x54, 0x72, 0x5d, 0xa3, 0x6d,
0x75, 0x89, 0xc5, 0xdc, 0x88, 0x33, 0xfd, 0x6e, 0xc8, 0x13, 0x3f, 0x70, 0x26, 0x27, 0xf1, 0x52,
0xb9, 0x68, 0xac, 0x12, 0xc8, 0x8a, 0x72, 0xde, 0x25, 0x36, 0x75, 0x0d, 0x36, 0x28, 0xe5, 0xaf,
0x41, 0x0e, 0x4a, 0xb9, 0x25, 0x78, 0xa2, 0x8c, 0xd7, 0xe3, 0xca, 0x58, 0xe8, 0xd0, 0x32, 0xf6,
0xb0, 0x4e, 0xe5, 0x27, 0x09, 0xd6, 0x76, 0x68, 0xb7, 0x6b, 0x30, 0x46, 0xc8, 0xc0, 0x8c, 0xf0,
0xae, 0x1b, 0x30, 0xdb, 0x0c, 0xd8, 0xfc, 0x92, 0x94, 0x36, 0x20, 0x0c, 0x26, 0x4e, 0x62, 0xd2,
0xc4, 0x49, 0x46, 0x96, 0x88, 0x75, 0x98, 0x33, 0x5c, 0xdd, 0x16, 0xd9, 0xc3, 0x2b, 0x6a, 0x46,
0x03, 0xc3, 0x0d, 0xf2, 0x49, 0x79, 0x0b, 0xd9, 0xd0, 0xa7, 0x5e, 0xd6, 0xf4, 0xdc, 0xc8, 0xc8,
0x9c, 0x76, 0x39, 0x85, 0x7b, 0x71, 0xa1, 0x78, 0x57, 0x9d, 0xbc, 0x3b, 0xa9, 0xa3, 0x0a, 0x04,
0x4c, 0x79, 0x05, 0x72, 0x85, 0x75, 0xb6, 0x87, 0xc6, 0xdc, 0x73, 0x98, 0x25, 0xac, 0xb3, 0xad,
0xb7, 0x30, 0xc3, 0x62, 0x0e, 0x6f, 0xc4, 0x79, 0x2f, 0x04, 0xcf, 0x10, 0xf1, 0xb5, 0x55, 0x86,
0xf9, 0xc1, 0x74, 0xa6, 0x26, 0x41, 0x73, 0x70, 0xfd, 0xf5, 0xc1, 0xcb, 0x83, 0xc3, 0xe3, 0x03,
0xf9, 0x1a, 0x4a, 0xc3, 0x4c, 0xa9, 0x5e, 0xaf, 0xd4, 0xea, 0x15, 0x4d, 0x96, 0xbc, 0xd3, 0x91,
0x76, 0x78, 0x74, 0x58, 0xab, 0x68, 0x72, 0x02, 0xcd, 0x40, 0xaa, 0x7c, 0x58, 0xdf, 0x93, 0x93,
0x5b, 0xbf, 0x48, 0x90, 0x19, 0x79, 0x32, 0x42, 0xb0, 0x20, 0xd4, 0xe8, 0xb5, 0x7a, 0xa9, 0xfe,
0xba, 0x26, 0x5f, 0xf3, 0x68, 0x47, 0x95, 0x83, 0xdd, 0xea, 0xc1, 0x57, 0x7a, 0x69, 0xa7, 0x5e,
0x7d, 0x53, 0x91, 0x25, 0x04, 0x30, 0x2d, 0xbe, 0x13, 0x1e, 0xbf, 0x7a, 0x50, 0xad, 0x57, 0x4b,
0xf5, 0xca, 0xae, 0x5e, 0xf9, 0xa6, 0x5a, 0x97, 0x93, 0x48, 0x86, 0xf4, 0x71, 0xb5, 0xbe, 0xb7,
0xab, 0x95, 0x8e, 0x4b, 0xe5, 0xfd, 0x8a, 0x9c, 0xf2, 0x10, 0x1e, 0xaf, 0xb2, 0x2b, 0x4f, 0x79,
0x08, 0xff, 0x5b, 0xaf, 0xed, 0x97, 0x6a, 0x7b, 0x95, 0x5d, 0x79, 0xba, 0xf8, 0x6f, 0x12, 0xe6,
0xcb, 0xdc, 0xec, 0x9a, 0xbf, 0xa9, 0xa2, 0x6f, 0x61, 0xf1, 0x18, 0x1b, 0xec, 0x05, 0x75, 0x06,
0x1d, 0x1e, 0xad, 0x8e, 0xb5, 0xa8, 0x8a, 0xb7, 0x7f, 0xe6, 0xb7, 0xe2, 0x82, 0x32, 0x3e, 0x1d,
0x1e, 0x48, 0x68, 0x1f, 0xe6, 0x77, 0xb0, 0x45, 0x2d, 0xa3, 0x89, 0xcd, 0x3d, 0x82, 0x5b, 0xb1,
0x6a, 0x63, 0x07, 0x53, 0x79, 0xb0, 0x83, 0x20, 0x0d, 0x16, 0xf7, 0xf9, 0x64, 0x8e, 0x4c, 0xa6,
0xab, 0x6b, 0x8c, 0x80, 0x1f, 0x48, 0xe8, 0x2d, 0x64, 0x46, 0xea, 0x2f, 0x56, 0x63, 0x21, 0xce,
0xf4, 0xb8, 0x02, 0xde, 0x87, 0x99, 0x20, 0xa5, 0x62, 0x95, 0x6e, 0xc6, 0x29, 0x1d, 0xcb, 0xe4,
0x2f, 0x61, 0xe6, 0x05, 0x75, 0x4e, 0xcf, 0xd5, 0x76, 0x23, 0xce, 0x68, 0x0f, 0x59, 0xfc, 0x47,
0x82, 0x8c, 0x6f, 0x3d, 0x71, 0x06, 0xc1, 0x07, 0x9f, 0xc4, 0xc3, 0x73, 0x19, 0xa7, 0xe5, 0xff,
0x1f, 0xf7, 0xe4, 0x91, 0x8e, 0xfe, 0x1e, 0x56, 0x46, 0x96, 0xcf, 0x12, 0xf3, 0x56, 0x18, 0xa4,
0x9e, 0xaf, 0x60, 0x74, 0xe1, 0x8d, 0x77, 0x7c, 0xcc, 0x6e, 0x5b, 0xfc, 0x2d, 0x19, 0x4e, 0xce,
0xd0, 0x50, 0x13, 0xe6, 0x87, 0x86, 0x1a, 0xfa, 0x2c, 0x36, 0x9c, 0x13, 0x86, 0x66, 0xfe, 0xfe,
0x25, 0xa5, 0x85, 0xed, 0x1f, 0x60, 0x69, 0xc2, 0x96, 0x86, 0x8a, 0x17, 0xa4, 0xd0, 0x84, 0xed,
0x32, 0xff, 0xf0, 0x4a, 0x18, 0x71, 0xff, 0x77, 0x90, 0x16, 0x0f, 0xf3, 0x4b, 0xe7, 0x32, 0xf5,
0x95, 0xbf, 0x7b, 0x81, 0x8d, 0xa1, 0xf6, 0x06, 0xc8, 0x3b, 0xb4, 0x6b, 0xf7, 0x18, 0x09, 0x07,
0xff, 0xe5, 0x6e, 0xb8, 0x17, 0x77, 0xc3, 0xd8, 0x02, 0x51, 0xfc, 0x38, 0x05, 0xf2, 0xa0, 0x6b,
0x8a, 0x20, 0x7e, 0x08, 0x5b, 0xd5, 0xe0, 0x27, 0x57, 0xbc, 0x53, 0xe3, 0x7f, 0xd5, 0xc5, 0x3b,
0xf5, 0x9c, 0xdf, 0x74, 0x0f, 0x24, 0x44, 0x61, 0x61, 0x78, 0x83, 0x40, 0xf7, 0x2f, 0x54, 0x34,
0x94, 0x46, 0xea, 0x65, 0xc5, 0x85, 0xa7, 0x7f, 0x94, 0x60, 0x69, 0xc2, 0xdc, 0x46, 0x4f, 0x2f,
0xd4, 0x13, 0xb3, 0xb0, 0xc4, 0x5b, 0x7e, 0xde, 0x7a, 0xf0, 0x6e, 0x7c, 0x82, 0x5d, 0xd1, 0xf0,
0xc2, 0x65, 0x87, 0x79, 0x70, 0xe5, 0x47, 0x09, 0x96, 0x27, 0xfd, 0xdf, 0x80, 0x2e, 0x0e, 0xdd,
0xf8, 0x1f, 0x1e, 0xf9, 0x47, 0x57, 0x03, 0xf9, 0x6f, 0x28, 0xa7, 0xff, 0xf8, 0x74, 0x4b, 0xfa,
0xf3, 0xd3, 0x2d, 0xe9, 0xef, 0x4f, 0xb7, 0xa4, 0xc6, 0x34, 0x6f, 0xb6, 0x0f, 0xff, 0x0b, 0x00,
0x00, 0xff, 0xff, 0x34, 0x40, 0x18, 0x8d, 0xf7, 0x11, 0x00, 0x00,
// 1633 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xcd, 0x6f, 0xdb, 0x46,
0x16, 0x0f, 0x25, 0xd9, 0xb1, 0x9f, 0x65, 0x8b, 0x1e, 0x7f, 0x48, 0x2b, 0x27, 0xb1, 0xc3, 0x00,
0x1b, 0xc7, 0xd8, 0x50, 0xb1, 0x1c, 0x24, 0x8b, 0x0d, 0x82, 0xac, 0x64, 0x2b, 0xb1, 0x36, 0x86,
0xed, 0x50, 0x4a, 0xbc, 0x1b, 0xec, 0x2e, 0x31, 0x92, 0xc6, 0x12, 0xd7, 0x14, 0x87, 0x21, 0x47,
0x42, 0x7c, 0xc9, 0xa2, 0xc7, 0xa2, 0xff, 0x43, 0xff, 0x97, 0x1e, 0x0a, 0xf4, 0xd8, 0x5b, 0x6f,
0x45, 0x91, 0x43, 0xfb, 0x2f, 0x14, 0xe8, 0xa5, 0xe0, 0x70, 0x48, 0x51, 0x1f, 0xf4, 0x47, 0x6f,
0x9c, 0xf7, 0xde, 0xef, 0xcd, 0xfb, 0x9a, 0xf7, 0x9e, 0x04, 0x8a, 0xed, 0x50, 0x46, 0x0b, 0x0d,
0x82, 0x9b, 0xd4, 0x2a, 0x38, 0x76, 0xb3, 0xd0, 0xdf, 0x2e, 0xb8, 0xc4, 0xe9, 0x1b, 0x4d, 0xe2,
0xaa, 0x9c, 0x89, 0x56, 0x09, 0xeb, 0x10, 0x87, 0xf4, 0xba, 0xaa, 0x2f, 0xa6, 0x3a, 0x76, 0x53,
0xed, 0x6f, 0xe7, 0xd7, 0x87, 0xb0, 0x76, 0xd1, 0xf6, 0xb0, 0xec, 0xdc, 0x0e, 0x80, 0xf9, 0xb5,
0x36, 0xa5, 0x6d, 0x93, 0x14, 0xf8, 0xa9, 0xd1, 0x3b, 0x2d, 0x90, 0xae, 0xcd, 0xce, 0x05, 0x73,
0x7d, 0x94, 0xc9, 0x8c, 0x2e, 0x71, 0x19, 0xee, 0xda, 0xbe, 0x80, 0x72, 0x0c, 0x6b, 0xef, 0xb0,
0x69, 0xb4, 0x30, 0xa3, 0xce, 0x31, 0x71, 0x4e, 0xa9, 0xd3, 0xc5, 0x56, 0x93, 0x68, 0xe4, 0x43,
0x8f, 0xb8, 0x0c, 0x21, 0x48, 0xb9, 0x26, 0x65, 0x39, 0x69, 0x43, 0xda, 0x4c, 0x69, 0xfc, 0x1b,
0xdd, 0x06, 0xb0, 0x7b, 0x0d, 0xd3, 0x68, 0xea, 0x67, 0xe4, 0x3c, 0x97, 0xd8, 0x90, 0x36, 0xd3,
0xda, 0xac, 0x4f, 0x79, 0x4d, 0xce, 0x95, 0x1f, 0x24, 0xb8, 0x35, 0x59, 0xa5, 0x6b, 0x53, 0xcb,
0x25, 0x28, 0x07, 0x37, 0x1b, 0xd8, 0xf4, 0x48, 0x42, 0x6d, 0x70, 0x44, 0x0f, 0x40, 0x66, 0x94,
0x61, 0x53, 0xef, 0x07, 0x78, 0x97, 0xeb, 0x4f, 0x69, 0x19, 0x4e, 0x0f, 0xd5, 0xba, 0xe8, 0x09,
0x64, 0x7d, 0x51, 0xdc, 0x64, 0x46, 0x9f, 0x44, 0x11, 0x49, 0x8e, 0x58, 0xe1, 0xec, 0x12, 0xe7,
0x46, 0x70, 0x7f, 0x83, 0x3f, 0xe1, 0x3e, 0x71, 0x70, 0x3b, 0x02, 0xd1, 0x03, 0x73, 0x52, 0x1b,
0xd2, 0x66, 0x42, 0xcb, 0x0a, 0x81, 0x10, 0x55, 0xf6, 0xd9, 0xca, 0x63, 0xc8, 0x87, 0x34, 0xae,
0x18, 0x33, 0x83, 0x5a, 0x41, 0xa8, 0x56, 0x61, 0xda, 0xee, 0x35, 0xbc, 0x90, 0x48, 0x3c, 0x24,
0xe2, 0xa4, 0xfc, 0x37, 0x12, 0xe1, 0x28, 0x4a, 0x44, 0xe3, 0x05, 0xcc, 0x86, 0x86, 0x70, 0xe4,
0x5c, 0xf1, 0xae, 0x3a, 0x5a, 0x0b, 0x76, 0xd1, 0x56, 0xfb, 0xdb, 0x6a, 0xa8, 0x47, 0x1b, 0x60,
0x94, 0x32, 0xac, 0x96, 0x18, 0xf3, 0x92, 0xea, 0xe9, 0xdd, 0xc3, 0x0c, 0x07, 0x16, 0x2d, 0xc3,
0x94, 0xdb, 0xc1, 0x4e, 0x4b, 0x84, 0xd9, 0x3f, 0x84, 0x29, 0x4d, 0x0c, 0x52, 0xaa, 0x7c, 0x9b,
0x80, 0xec, 0x98, 0x12, 0x61, 0xe0, 0x53, 0xc8, 0xf9, 0x56, 0xe8, 0x0d, 0x93, 0x36, 0xcf, 0x74,
0x87, 0x52, 0xa6, 0x77, 0xb0, 0xdb, 0xd9, 0x29, 0x0a, 0x4f, 0x57, 0x7c, 0x7e, 0xd9, 0x63, 0x6b,
0x94, 0xb2, 0x7d, 0xce, 0x44, 0xcf, 0x20, 0x4f, 0x6c, 0xda, 0xec, 0xe8, 0x0d, 0xda, 0xb3, 0x5a,
0xd8, 0x39, 0x1f, 0x82, 0xfa, 0x75, 0x93, 0xe5, 0x12, 0x65, 0x21, 0x10, 0x01, 0xdf, 0x87, 0xcc,
0xff, 0x7a, 0x2e, 0x33, 0x4e, 0x0d, 0xd2, 0xd2, 0xb9, 0x90, 0xc8, 0xeb, 0x42, 0x48, 0xae, 0x78,
0x54, 0xf4, 0x1c, 0xd6, 0x06, 0x82, 0xe3, 0x16, 0xa6, 0xf8, 0x35, 0xb9, 0x50, 0x64, 0xd4, 0xc8,
0x03, 0x90, 0x4d, 0xec, 0x39, 0xae, 0x37, 0x1d, 0xea, 0xba, 0xa6, 0x61, 0x9d, 0xe5, 0xa6, 0x2e,
0xce, 0xc2, 0x6e, 0x20, 0xa8, 0x65, 0x7c, 0x68, 0x48, 0x50, 0xbe, 0x94, 0x20, 0x7f, 0x4c, 0xac,
0x96, 0x61, 0xb5, 0x23, 0xe1, 0x74, 0x83, 0x84, 0x3c, 0x83, 0xfc, 0xa9, 0x61, 0x32, 0xe2, 0xe8,
0x0e, 0xc1, 0xad, 0x73, 0xfd, 0x94, 0x3a, 0xba, 0x61, 0x35, 0xcd, 0x9e, 0x6b, 0x50, 0x8b, 0x07,
0x73, 0x46, 0xcb, 0xfa, 0x12, 0x9a, 0x27, 0xf0, 0x92, 0x3a, 0xd5, 0x80, 0x8d, 0x54, 0x58, 0xb2,
0x1d, 0x6a, 0x53, 0x17, 0x9b, 0xc2, 0xcf, 0x48, 0x1a, 0x17, 0x03, 0x16, 0xf7, 0xaf, 0xe6, 0xe5,
0xb4, 0x07, 0x6b, 0x13, 0x4d, 0x11, 0x69, 0x7d, 0x07, 0xcb, 0xb6, 0xcf, 0xd6, 0x71, 0x84, 0x9f,
0x93, 0x36, 0x92, 0x9b, 0x73, 0xc5, 0x7b, 0x71, 0xce, 0x47, 0x74, 0x69, 0x4b, 0xf6, 0xb8, 0x7e,
0xe5, 0x0d, 0xa0, 0xdd, 0x0e, 0x36, 0xac, 0x1a, 0xc3, 0x0e, 0x8b, 0xbe, 0x79, 0xd7, 0x23, 0x90,
0x96, 0x70, 0x33, 0x38, 0xa2, 0xbb, 0x90, 0x6e, 0x13, 0x8b, 0xb8, 0x86, 0xab, 0x7b, 0xbd, 0x49,
0xf8, 0x33, 0x27, 0x68, 0x75, 0xa3, 0x4b, 0x94, 0xaf, 0x13, 0xb0, 0x70, 0xcc, 0xfd, 0x0b, 0xfb,
0xd2, 0x3a, 0xcc, 0xd9, 0xd8, 0x21, 0x96, 0x9f, 0x67, 0x51, 0x87, 0xe0, 0x93, 0xbc, 0xcc, 0x7a,
0x02, 0x5e, 0x78, 0x74, 0xab, 0xd7, 0x6d, 0x10, 0x47, 0x68, 0x05, 0x8f, 0x74, 0xc8, 0x29, 0xe8,
0x1e, 0xcc, 0x3b, 0xd8, 0x6a, 0x61, 0xaa, 0x3b, 0xa4, 0x4f, 0xb0, 0xc9, 0xcb, 0x2b, 0xad, 0xa5,
0x7d, 0xa2, 0xc6, 0x69, 0xa8, 0x00, 0x4b, 0x91, 0xe0, 0xe8, 0x0d, 0x83, 0x75, 0xb1, 0x7b, 0x26,
0x8a, 0x0a, 0x45, 0x58, 0x65, 0x9f, 0xc3, 0xdb, 0x4b, 0x04, 0x80, 0xdb, 0x6d, 0x87, 0xb4, 0x31,
0x23, 0xba, 0x6b, 0xb4, 0x73, 0x53, 0x1b, 0xc9, 0xcd, 0x94, 0x96, 0x8d, 0x08, 0x94, 0x02, 0x7e,
0xcd, 0x68, 0xa3, 0xbf, 0xc2, 0x6c, 0xd8, 0x9d, 0x73, 0xd3, 0xbc, 0x06, 0xf3, 0xaa, 0xdf, 0xbf,
0xd5, 0xa0, 0x7f, 0xab, 0xf5, 0x40, 0x42, 0x1b, 0x08, 0x2b, 0xcf, 0x21, 0x13, 0xc6, 0x47, 0x04,
0x7c, 0x0b, 0x16, 0xe3, 0x9e, 0x6b, 0xa6, 0x31, 0xfc, 0x06, 0x94, 0xa7, 0xb0, 0x2c, 0xe0, 0x4e,
0xd5, 0x6a, 0x91, 0x8f, 0x91, 0x20, 0x47, 0x63, 0x28, 0x8d, 0xc6, 0x50, 0x79, 0x08, 0x2b, 0x23,
0x40, 0x71, 0xfb, 0x32, 0x4c, 0x19, 0x1e, 0x21, 0xe8, 0x3c, 0xfc, 0xa0, 0x14, 0x61, 0xb1, 0xc6,
0x30, 0x23, 0xde, 0xd5, 0xa1, 0xe8, 0x6d, 0x00, 0x2f, 0x18, 0x84, 0x1b, 0x2a, 0x2c, 0x9c, 0x75,
0x03, 0x31, 0xe5, 0x19, 0x2c, 0xf8, 0xe5, 0x15, 0x02, 0x1e, 0x80, 0x1c, 0x0d, 0x71, 0x24, 0xff,
0x99, 0x08, 0xdd, 0x73, 0x4d, 0x79, 0x02, 0x2b, 0x61, 0xcb, 0x1c, 0xf2, 0x6c, 0x78, 0x84, 0x49,
0xa3, 0x23, 0x4c, 0x85, 0xd5, 0x51, 0xdc, 0x85, 0x8e, 0xfd, 0x07, 0xd6, 0x76, 0x69, 0xb7, 0x6b,
0x30, 0x46, 0x48, 0xc9, 0x75, 0x8d, 0xb6, 0xd5, 0x25, 0x16, 0x73, 0x23, 0x71, 0xf4, 0x1b, 0x21,
0xaf, 0xf9, 0x20, 0x8e, 0x9c, 0xc4, 0x5f, 0xc9, 0xd8, 0x44, 0x4d, 0x0e, 0x9b, 0x43, 0x20, 0x2b,
0x5e, 0xf2, 0x1e, 0xb1, 0xa9, 0x6b, 0xb0, 0xc1, 0x2b, 0xfe, 0x07, 0xc8, 0xc1, 0x2b, 0x6e, 0x09,
0x9e, 0x78, 0xc1, 0xeb, 0x71, 0x2f, 0x58, 0xe8, 0xd0, 0x32, 0xf6, 0xb0, 0x4e, 0xe5, 0x97, 0xc4,
0x44, 0x37, 0xc2, 0xbb, 0xda, 0x00, 0x38, 0xa4, 0x8a, 0x5b, 0x5e, 0xa9, 0x93, 0xd7, 0x16, 0xf5,
0x02, 0x45, 0x13, 0x79, 0x11, 0xd5, 0xf9, 0x1f, 0x25, 0x58, 0x9a, 0x20, 0x83, 0x6e, 0xc1, 0x6c,
0x33, 0x20, 0xf3, 0xfb, 0x53, 0xda, 0x80, 0x30, 0x98, 0x76, 0x89, 0x49, 0xd3, 0x2e, 0x19, 0x59,
0x60, 0xd6, 0x61, 0xce, 0x70, 0x75, 0x5b, 0x54, 0x2e, 0x7f, 0xcd, 0x33, 0x1a, 0x18, 0x6e, 0x50,
0xcb, 0x23, 0xf9, 0x98, 0x1a, 0x29, 0x0f, 0xf4, 0x02, 0xa6, 0xbd, 0x2a, 0xeb, 0xb9, 0xfc, 0x95,
0x2e, 0x14, 0xef, 0xc7, 0x05, 0x21, 0x2c, 0xa2, 0x1a, 0x17, 0xd7, 0x04, 0x4c, 0x79, 0x0f, 0xd9,
0x51, 0xd6, 0x60, 0x1d, 0x08, 0x74, 0x4b, 0x7f, 0x4c, 0xf7, 0x1b, 0x90, 0x2b, 0xac, 0xb3, 0x3d,
0x34, 0xc2, 0x9f, 0xc3, 0x2c, 0x61, 0x9d, 0x6d, 0xbd, 0x85, 0x19, 0x16, 0x3b, 0xc6, 0x46, 0x5c,
0x79, 0x84, 0xe0, 0x19, 0x22, 0xbe, 0xb6, 0xca, 0x30, 0x3f, 0xd8, 0x3c, 0xa8, 0x49, 0xd0, 0x1c,
0xdc, 0x7c, 0x7b, 0xf8, 0xfa, 0xf0, 0xe8, 0xe4, 0x50, 0xbe, 0x81, 0xd2, 0x30, 0x53, 0xaa, 0xd7,
0x2b, 0xb5, 0x7a, 0x45, 0x93, 0x25, 0xef, 0x74, 0xac, 0x1d, 0x1d, 0x1f, 0xd5, 0x2a, 0x9a, 0x9c,
0x40, 0x33, 0x90, 0x2a, 0x1f, 0xd5, 0xf7, 0xe5, 0xe4, 0xd6, 0x57, 0x12, 0x64, 0x46, 0x4c, 0x46,
0x08, 0x16, 0x84, 0x1a, 0xbd, 0x56, 0x2f, 0xd5, 0xdf, 0xd6, 0xe4, 0x1b, 0x1e, 0xed, 0xb8, 0x72,
0xb8, 0x57, 0x3d, 0x7c, 0xa5, 0x97, 0x76, 0xeb, 0xd5, 0x77, 0x15, 0x59, 0x42, 0x00, 0xd3, 0xe2,
0x3b, 0xe1, 0xf1, 0xab, 0x87, 0xd5, 0x7a, 0xb5, 0x54, 0xaf, 0xec, 0xe9, 0x95, 0x7f, 0x56, 0xeb,
0x72, 0x12, 0xc9, 0x90, 0x3e, 0xa9, 0xd6, 0xf7, 0xf7, 0xb4, 0xd2, 0x49, 0xa9, 0x7c, 0x50, 0x91,
0x53, 0x1e, 0xc2, 0xe3, 0x55, 0xf6, 0xe4, 0x29, 0x0f, 0xe1, 0x7f, 0xeb, 0xb5, 0x83, 0x52, 0x6d,
0xbf, 0xb2, 0x27, 0x4f, 0x17, 0x7f, 0x4d, 0xc2, 0x7c, 0x99, 0xbb, 0x5d, 0xf3, 0xb7, 0x70, 0xf4,
0x2f, 0x58, 0x3c, 0xc1, 0x06, 0x7b, 0x49, 0x9d, 0xc1, 0xf4, 0x42, 0xab, 0x63, 0xed, 0xb7, 0xe2,
0xed, 0xd6, 0xf9, 0xad, 0xd8, 0xaa, 0x1f, 0x9b, 0x7c, 0x8f, 0x24, 0x74, 0x00, 0xf3, 0xbb, 0xd8,
0xa2, 0x96, 0xd1, 0xc4, 0xe6, 0x3e, 0xc1, 0xad, 0x58, 0xb5, 0xb1, 0x43, 0xb7, 0x3c, 0xd8, 0xaf,
0x90, 0x06, 0x8b, 0x07, 0x7c, 0xeb, 0x88, 0x4c, 0xdd, 0xeb, 0x6b, 0x8c, 0x80, 0x1f, 0x49, 0xe8,
0x3d, 0x64, 0x46, 0x1a, 0x4c, 0xac, 0xc6, 0x42, 0x9c, 0xeb, 0x71, 0x1d, 0xea, 0x00, 0x66, 0x82,
0x92, 0x8a, 0x55, 0xba, 0x19, 0xa7, 0x74, 0xac, 0x92, 0xff, 0x0e, 0x33, 0x2f, 0xa9, 0x73, 0x76,
0xa1, 0xb6, 0x5b, 0x71, 0x4e, 0x7b, 0xc8, 0xe2, 0xcf, 0x12, 0x64, 0x7c, 0xef, 0x89, 0x33, 0x48,
0x3e, 0xf8, 0x24, 0x9e, 0x9e, 0xab, 0x04, 0x2d, 0xff, 0xe7, 0x38, 0x93, 0x47, 0xa6, 0xd5, 0x47,
0x58, 0x19, 0x59, 0xac, 0x4b, 0xcc, 0x5b, 0xcf, 0x90, 0x7a, 0xb1, 0x82, 0xd1, 0x65, 0x3e, 0x3e,
0xf0, 0x31, 0x7b, 0x7b, 0xf1, 0x9b, 0x64, 0xb8, 0x15, 0x84, 0x8e, 0x9a, 0x30, 0x3f, 0x34, 0xb0,
0xd1, 0x5f, 0x62, 0xd3, 0x39, 0x61, 0x21, 0xc8, 0x3f, 0xbc, 0xa2, 0xb4, 0xf0, 0xfd, 0x13, 0x2c,
0x4d, 0xd8, 0x40, 0x51, 0xf1, 0x92, 0x12, 0x9a, 0xb0, 0x39, 0xe7, 0x77, 0xae, 0x85, 0x11, 0xf7,
0xff, 0x1b, 0xd2, 0xc2, 0x30, 0xff, 0xe9, 0x5c, 0xe5, 0x7d, 0xe5, 0xef, 0x5f, 0xe2, 0x63, 0xa8,
0xbd, 0x01, 0xf2, 0x2e, 0xed, 0xda, 0x3d, 0x46, 0xc2, 0xa5, 0xe6, 0x6a, 0x37, 0x3c, 0x88, 0xbb,
0x61, 0x6c, 0x39, 0x2a, 0xfe, 0x96, 0x02, 0x79, 0xd0, 0x35, 0x45, 0x12, 0x3f, 0x85, 0xad, 0x6a,
0xf0, 0x73, 0x32, 0x3e, 0xa8, 0xf1, 0xbf, 0x58, 0xe3, 0x83, 0x7a, 0xc1, 0xef, 0xd5, 0x47, 0x12,
0xa2, 0xb0, 0x30, 0xbc, 0x1d, 0xa1, 0x87, 0x97, 0x2a, 0x1a, 0x2a, 0x23, 0xf5, 0xaa, 0xe2, 0x22,
0xd2, 0xff, 0x9f, 0xbc, 0x0e, 0xec, 0x5c, 0x63, 0xf7, 0xb8, 0xbc, 0x90, 0x2e, 0xda, 0x7c, 0x3e,
0x8c, 0xcf, 0xae, 0x6b, 0xba, 0x5c, 0xb8, 0xea, 0x18, 0x0f, 0xae, 0xfc, 0x42, 0x82, 0xe5, 0x49,
0xff, 0xa2, 0xa0, 0xcb, 0x93, 0x36, 0xfe, 0x37, 0x4e, 0xfe, 0xf1, 0xf5, 0x40, 0xbe, 0x0d, 0xe5,
0xf4, 0x77, 0x9f, 0xef, 0x48, 0xdf, 0x7f, 0xbe, 0x23, 0xfd, 0xf4, 0xf9, 0x8e, 0xd4, 0x98, 0xe6,
0x6d, 0x76, 0xe7, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x67, 0x07, 0xfd, 0xa2, 0xcd, 0x12, 0x00,
0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -1982,7 +2054,7 @@ var _ProposerService_serviceDesc = grpc.ServiceDesc{
type ValidatorServiceClient interface {
WaitForActivation(ctx context.Context, in *ValidatorActivationRequest, opts ...grpc.CallOption) (ValidatorService_WaitForActivationClient, error)
ValidatorIndex(ctx context.Context, in *ValidatorIndexRequest, opts ...grpc.CallOption) (*ValidatorIndexResponse, error)
CommitteeAssignment(ctx context.Context, in *ValidatorEpochAssignmentsRequest, opts ...grpc.CallOption) (*CommitteeAssignmentResponse, error)
CommitteeAssignment(ctx context.Context, in *CommitteeAssignmentsRequest, opts ...grpc.CallOption) (*CommitteeAssignmentResponse, error)
ValidatorStatus(ctx context.Context, in *ValidatorIndexRequest, opts ...grpc.CallOption) (*ValidatorStatusResponse, error)
ValidatorPerformance(ctx context.Context, in *ValidatorPerformanceRequest, opts ...grpc.CallOption) (*ValidatorPerformanceResponse, error)
}
@@ -2036,7 +2108,7 @@ func (c *validatorServiceClient) ValidatorIndex(ctx context.Context, in *Validat
return out, nil
}
func (c *validatorServiceClient) CommitteeAssignment(ctx context.Context, in *ValidatorEpochAssignmentsRequest, opts ...grpc.CallOption) (*CommitteeAssignmentResponse, error) {
func (c *validatorServiceClient) CommitteeAssignment(ctx context.Context, in *CommitteeAssignmentsRequest, opts ...grpc.CallOption) (*CommitteeAssignmentResponse, error) {
out := new(CommitteeAssignmentResponse)
err := c.cc.Invoke(ctx, "/ethereum.beacon.rpc.v1.ValidatorService/CommitteeAssignment", in, out, opts...)
if err != nil {
@@ -2067,7 +2139,7 @@ func (c *validatorServiceClient) ValidatorPerformance(ctx context.Context, in *V
type ValidatorServiceServer interface {
WaitForActivation(*ValidatorActivationRequest, ValidatorService_WaitForActivationServer) error
ValidatorIndex(context.Context, *ValidatorIndexRequest) (*ValidatorIndexResponse, error)
CommitteeAssignment(context.Context, *ValidatorEpochAssignmentsRequest) (*CommitteeAssignmentResponse, error)
CommitteeAssignment(context.Context, *CommitteeAssignmentsRequest) (*CommitteeAssignmentResponse, error)
ValidatorStatus(context.Context, *ValidatorIndexRequest) (*ValidatorStatusResponse, error)
ValidatorPerformance(context.Context, *ValidatorPerformanceRequest) (*ValidatorPerformanceResponse, error)
}
@@ -2116,7 +2188,7 @@ func _ValidatorService_ValidatorIndex_Handler(srv interface{}, ctx context.Conte
}
func _ValidatorService_CommitteeAssignment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ValidatorEpochAssignmentsRequest)
in := new(CommitteeAssignmentsRequest)
if err := dec(in); err != nil {
return nil, err
}
@@ -2128,7 +2200,7 @@ func _ValidatorService_CommitteeAssignment_Handler(srv interface{}, ctx context.
FullMethod: "/ethereum.beacon.rpc.v1.ValidatorService/CommitteeAssignment",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ValidatorServiceServer).CommitteeAssignment(ctx, req.(*ValidatorEpochAssignmentsRequest))
return srv.(ValidatorServiceServer).CommitteeAssignment(ctx, req.(*CommitteeAssignmentsRequest))
}
return interceptor(ctx, in, info, handler)
}
@@ -2779,7 +2851,7 @@ func (m *ValidatorIndexResponse) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
func (m *ValidatorEpochAssignmentsRequest) Marshal() (dAtA []byte, err error) {
func (m *CommitteeAssignmentsRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
@@ -2789,7 +2861,7 @@ func (m *ValidatorEpochAssignmentsRequest) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
func (m *ValidatorEpochAssignmentsRequest) MarshalTo(dAtA []byte) (int, error) {
func (m *CommitteeAssignmentsRequest) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
@@ -2800,10 +2872,12 @@ func (m *ValidatorEpochAssignmentsRequest) MarshalTo(dAtA []byte) (int, error) {
i = encodeVarintServices(dAtA, i, uint64(m.EpochStart))
}
if len(m.PublicKey) > 0 {
dAtA[i] = 0x12
i++
i = encodeVarintServices(dAtA, i, uint64(len(m.PublicKey)))
i += copy(dAtA[i:], m.PublicKey)
for _, b := range m.PublicKey {
dAtA[i] = 0x12
i++
i = encodeVarintServices(dAtA, i, uint64(len(b)))
i += copy(dAtA[i:], b)
}
}
if m.XXX_unrecognized != nil {
i += copy(dAtA[i:], m.XXX_unrecognized)
@@ -2855,6 +2929,39 @@ func (m *CommitteeAssignmentResponse) Marshal() (dAtA []byte, err error) {
}
func (m *CommitteeAssignmentResponse) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
if len(m.Assignment) > 0 {
for _, msg := range m.Assignment {
dAtA[i] = 0xa
i++
i = encodeVarintServices(dAtA, i, uint64(msg.Size()))
n, err := msg.MarshalTo(dAtA[i:])
if err != nil {
return 0, err
}
i += n
}
}
if m.XXX_unrecognized != nil {
i += copy(dAtA[i:], m.XXX_unrecognized)
}
return i, nil
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
@@ -2896,6 +3003,17 @@ func (m *CommitteeAssignmentResponse) MarshalTo(dAtA []byte) (int, error) {
}
i++
}
if len(m.PublicKey) > 0 {
dAtA[i] = 0x2a
i++
i = encodeVarintServices(dAtA, i, uint64(len(m.PublicKey)))
i += copy(dAtA[i:], m.PublicKey)
}
if m.Status != 0 {
dAtA[i] = 0x30
i++
i = encodeVarintServices(dAtA, i, uint64(m.Status))
}
if m.XXX_unrecognized != nil {
i += copy(dAtA[i:], m.XXX_unrecognized)
}
@@ -3293,7 +3411,7 @@ func (m *ValidatorIndexResponse) Size() (n int) {
return n
}
func (m *ValidatorEpochAssignmentsRequest) Size() (n int) {
func (m *CommitteeAssignmentsRequest) Size() (n int) {
if m == nil {
return 0
}
@@ -3302,9 +3420,11 @@ func (m *ValidatorEpochAssignmentsRequest) Size() (n int) {
if m.EpochStart != 0 {
n += 1 + sovServices(uint64(m.EpochStart))
}
l = len(m.PublicKey)
if l > 0 {
n += 1 + l + sovServices(uint64(l))
if len(m.PublicKey) > 0 {
for _, b := range m.PublicKey {
l = len(b)
n += 1 + l + sovServices(uint64(l))
}
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
@@ -3331,6 +3451,24 @@ func (m *PendingDepositsResponse) Size() (n int) {
}
func (m *CommitteeAssignmentResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Assignment) > 0 {
for _, e := range m.Assignment {
l = e.Size()
n += 1 + l + sovServices(uint64(l))
}
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func (m *CommitteeAssignmentResponse_CommitteeAssignment) Size() (n int) {
if m == nil {
return 0
}
@@ -3352,6 +3490,13 @@ func (m *CommitteeAssignmentResponse) Size() (n int) {
if m.IsProposer {
n += 2
}
l = len(m.PublicKey)
if l > 0 {
n += 1 + l + sovServices(uint64(l))
}
if m.Status != 0 {
n += 1 + sovServices(uint64(m.Status))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
@@ -5244,7 +5389,7 @@ func (m *ValidatorIndexResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *ValidatorEpochAssignmentsRequest) Unmarshal(dAtA []byte) error {
func (m *CommitteeAssignmentsRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -5267,10 +5412,10 @@ func (m *ValidatorEpochAssignmentsRequest) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: ValidatorEpochAssignmentsRequest: wiretype end group for non-group")
return fmt.Errorf("proto: CommitteeAssignmentsRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: ValidatorEpochAssignmentsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
return fmt.Errorf("proto: CommitteeAssignmentsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
@@ -5321,10 +5466,8 @@ func (m *ValidatorEpochAssignmentsRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.PublicKey = append(m.PublicKey[:0], dAtA[iNdEx:postIndex]...)
if m.PublicKey == nil {
m.PublicKey = []byte{}
}
m.PublicKey = append(m.PublicKey, make([]byte, postIndex-iNdEx))
copy(m.PublicKey[len(m.PublicKey)-1], dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
@@ -5468,6 +5611,94 @@ func (m *CommitteeAssignmentResponse) Unmarshal(dAtA []byte) error {
return fmt.Errorf("proto: CommitteeAssignmentResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Assignment", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowServices
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthServices
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthServices
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Assignment = append(m.Assignment, &CommitteeAssignmentResponse_CommitteeAssignment{})
if err := m.Assignment[len(m.Assignment)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipServices(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthServices
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthServices
}
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 (m *CommitteeAssignmentResponse_CommitteeAssignment) 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 ErrIntOverflowServices
}
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: CommitteeAssignment: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: CommitteeAssignment: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType == 0 {
var v uint64
@@ -5602,6 +5833,59 @@ func (m *CommitteeAssignmentResponse) Unmarshal(dAtA []byte) error {
}
}
m.IsProposer = bool(v != 0)
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowServices
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return ErrInvalidLengthServices
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return ErrInvalidLengthServices
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.PublicKey = append(m.PublicKey[:0], dAtA[iNdEx:postIndex]...)
if m.PublicKey == nil {
m.PublicKey = []byte{}
}
iNdEx = postIndex
case 6:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
}
m.Status = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowServices
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.Status |= ValidatorStatus(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipServices(dAtA[iNdEx:])

View File

@@ -32,7 +32,7 @@ service ProposerService {
service ValidatorService {
rpc WaitForActivation(ValidatorActivationRequest) returns (stream ValidatorActivationResponse);
rpc ValidatorIndex(ValidatorIndexRequest) returns (ValidatorIndexResponse);
rpc CommitteeAssignment(ValidatorEpochAssignmentsRequest) returns (CommitteeAssignmentResponse);
rpc CommitteeAssignment(CommitteeAssignmentsRequest) returns (CommitteeAssignmentResponse);
rpc ValidatorStatus(ValidatorIndexRequest) returns (ValidatorStatusResponse);
rpc ValidatorPerformance(ValidatorPerformanceRequest) returns (ValidatorPerformanceResponse);
}
@@ -128,9 +128,9 @@ message ValidatorIndexResponse {
uint64 index = 1;
}
message ValidatorEpochAssignmentsRequest {
message CommitteeAssignmentsRequest {
uint64 epoch_start = 1;
bytes public_key = 2;
repeated bytes public_key = 2;
}
message PendingDepositsResponse {
@@ -138,10 +138,16 @@ message PendingDepositsResponse {
}
message CommitteeAssignmentResponse {
repeated uint64 committee = 1;
uint64 shard = 2;
uint64 slot = 3;
bool is_proposer = 4;
repeated CommitteeAssignment assignment = 1;
message CommitteeAssignment {
repeated uint64 committee = 1;
uint64 shard = 2;
uint64 slot = 3;
bool is_proposer = 4;
bytes public_key = 5;
ValidatorStatus status = 6;
}
}
message ValidatorStatusResponse {

View File

@@ -5,9 +5,10 @@ package ethereum_sharding_p2p_v1
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
io "io"
math "math"
proto "github.com/gogo/protobuf/proto"
)
// Reference imports to suppress errors if they are not otherwise used.

View File

@@ -3,14 +3,17 @@
# Script to update mock files after proto/beacon/rpc/v1/services.proto changes.
# Use a space to separate mock destination from its interfaces.
mocks=("./validator/internal/attester_service_mock.go AttesterServiceClient"
mocks=(
"./beacon-chain/internal/beacon_service_mock.go BeaconServiceServer,BeaconService_LatestAttestationServer,BeaconService_WaitForChainStartServer"
"./beacon-chain/internal/validator_service_mock.go ValidatorServiceServer,ValidatorService_WaitForActivationServer"
"./validator/internal/attester_service_mock.go AttesterServiceClient"
"./validator/internal/beacon_service_mock.go BeaconServiceClient,BeaconService_LatestAttestationClient,BeaconService_WaitForChainStartClient"
"./validator/internal/proposer_service_mock.go ProposerServiceClient"
"./validator/internal/validator_service_mock.go ValidatorServiceClient")
"./validator/internal/validator_service_mock.go ValidatorServiceClient,ValidatorService_WaitForActivationClient")
for ((i = 0; i < ${#mocks[@]}; i++)); do
file=${mocks[i]% *};
interfaces=${mocks[i]#* };
echo "generating $file for interfaces: $interfaces";
mockgen -package=internal -destination=$file github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 $interfaces
done
done

View File

@@ -124,9 +124,9 @@ func (v *validator) UpdateAssignments(ctx context.Context, slot uint64) error {
ctx, span := trace.StartSpan(ctx, "validator.UpdateAssignments")
defer span.End()
req := &pb.ValidatorEpochAssignmentsRequest{
req := &pb.CommitteeAssignmentsRequest{
EpochStart: slot,
PublicKey: v.key.PublicKey.Marshal(),
PublicKey: [][]byte{v.key.PublicKey.Marshal()},
}
resp, err := v.validatorClient.CommitteeAssignment(ctx, req)
@@ -139,19 +139,19 @@ func (v *validator) UpdateAssignments(ctx context.Context, slot uint64) error {
var proposerSlot uint64
var attesterSlot uint64
if v.assignment.IsProposer && len(v.assignment.Committee) == 1 {
proposerSlot = resp.Slot
attesterSlot = resp.Slot
} else if v.assignment.IsProposer {
proposerSlot = resp.Slot
if v.assignment.Assignment[0].IsProposer && len(v.assignment.Assignment[0].Committee) == 1 {
proposerSlot = resp.Assignment[0].Slot
attesterSlot = resp.Assignment[0].Slot
} else if v.assignment.Assignment[0].IsProposer {
proposerSlot = resp.Assignment[0].Slot
} else {
attesterSlot = resp.Slot
attesterSlot = resp.Assignment[0].Slot
}
log.WithFields(logrus.Fields{
"proposerSlot": proposerSlot - params.BeaconConfig().GenesisSlot,
"attesterSlot": attesterSlot - params.BeaconConfig().GenesisSlot,
"shard": resp.Shard,
"shard": resp.Assignment[0].Shard,
}).Info("Updated validator assignments")
return nil
}
@@ -163,12 +163,12 @@ func (v *validator) RoleAt(slot uint64) pb.ValidatorRole {
if v.assignment == nil {
return pb.ValidatorRole_UNKNOWN
}
if v.assignment.Slot == slot {
if v.assignment.Assignment[0].Slot == slot {
// if the committee length is 1, that means validator has to perform both
// proposer and validator roles.
if len(v.assignment.Committee) == 1 {
if len(v.assignment.Assignment[0].Committee) == 1 {
return pb.ValidatorRole_BOTH
} else if v.assignment.IsProposer {
} else if v.assignment.Assignment[0].IsProposer {
return pb.ValidatorRole_PROPOSER
} else {
return pb.ValidatorRole_ATTESTER

View File

@@ -42,9 +42,9 @@ func (v *validator) AttestToBlockHead(ctx context.Context, slot uint64) {
log.Errorf("Could not fetch validator index: %v", err)
return
}
req := &pb.ValidatorEpochAssignmentsRequest{
req := &pb.CommitteeAssignmentsRequest{
EpochStart: slot,
PublicKey: pubKey,
PublicKey: [][]byte{pubKey},
}
resp, err := v.validatorClient.CommitteeAssignment(ctx, req)
if err != nil {
@@ -54,13 +54,13 @@ func (v *validator) AttestToBlockHead(ctx context.Context, slot uint64) {
}
// Set the attestation data's shard as the shard associated with the validator's
// committee as retrieved by CrosslinkCommitteesAtSlot.
attData.Shard = resp.Shard
attData.Shard = resp.Assignment[0].Shard
// Fetch other necessary information from the beacon node in order to attest
// including the justified epoch, epoch boundary information, and more.
infoReq := &pb.AttestationDataRequest{
Slot: slot,
Shard: resp.Shard,
Shard: resp.Assignment[0].Shard,
}
infoRes, err := v.attesterClient.AttestationDataAtSlot(ctx, infoReq)
if err != nil {
@@ -94,12 +94,12 @@ func (v *validator) AttestToBlockHead(ctx context.Context, slot uint64) {
// We set the custody bitfield to an slice of zero values as a stub for phase 0
// of length len(committee)+7 // 8.
attestation.CustodyBitfield = make([]byte, (len(resp.Committee)+7)/8)
attestation.CustodyBitfield = make([]byte, (len(resp.Assignment[0].Committee)+7)/8)
// Find the index in committee to be used for
// the aggregation bitfield
var indexInCommittee int
for i, vIndex := range resp.Committee {
for i, vIndex := range resp.Assignment[0].Committee {
if vIndex == validatorIndexRes.Index {
indexInCommittee = i
break

View File

@@ -60,10 +60,12 @@ func TestAttestToBlockHead_AttestationDataAtSlotFailure(t *testing.T) {
).Return(&pb.ValidatorIndexResponse{Index: 5}, nil)
m.validatorClient.EXPECT().CommitteeAssignment(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.ValidatorEpochAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{
Shard: 5,
}, nil)
gomock.AssignableToTypeOf(&pb.CommitteeAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Shard: 5,
},
}}, nil)
m.attesterClient.EXPECT().AttestationDataAtSlot(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.AttestationDataRequest{}),
@@ -86,11 +88,12 @@ func TestAttestToBlockHead_AttestHeadRequestFailure(t *testing.T) {
}, nil)
m.validatorClient.EXPECT().CommitteeAssignment(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.ValidatorEpochAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{
Shard: 5,
Committee: make([]uint64, 111),
}, nil)
gomock.AssignableToTypeOf(&pb.CommitteeAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Shard: 5,
Committee: make([]uint64, 111),
}}}, nil)
m.attesterClient.EXPECT().AttestationDataAtSlot(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.AttestationDataRequest{}),
@@ -125,11 +128,12 @@ func TestAttestToBlockHead_AttestsCorrectly(t *testing.T) {
}, nil)
m.validatorClient.EXPECT().CommitteeAssignment(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.ValidatorEpochAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{
Shard: 5,
Committee: committee,
}, nil)
gomock.AssignableToTypeOf(&pb.CommitteeAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Shard: 5,
Committee: committee,
}}}, nil)
m.attesterClient.EXPECT().AttestationDataAtSlot(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.AttestationDataRequest{}),
@@ -181,7 +185,7 @@ func TestAttestToBlockHead_DoesNotAttestBeforeDelay(t *testing.T) {
validator.genesisTime = uint64(time.Now().Unix())
m.validatorClient.EXPECT().CommitteeAssignment(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.ValidatorEpochAssignmentsRequest{}),
gomock.AssignableToTypeOf(&pb.CommitteeAssignmentsRequest{}),
gomock.Any(),
).Times(0)
@@ -217,11 +221,12 @@ func TestAttestToBlockHead_DoesAttestAfterDelay(t *testing.T) {
committee := []uint64{0, 3, 4, 2, validatorIndex, 6, 8, 9, 10}
m.validatorClient.EXPECT().CommitteeAssignment(
gomock.Any(), // ctx
gomock.AssignableToTypeOf(&pb.ValidatorEpochAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{
Shard: 5,
Committee: committee,
}, nil).Do(func(arg0, arg1 interface{}) {
gomock.AssignableToTypeOf(&pb.CommitteeAssignmentsRequest{}),
).Return(&pb.CommitteeAssignmentResponse{Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Shard: 5,
Committee: committee,
}}}, nil).Do(func(arg0, arg1 interface{}) {
wg.Done()
})

View File

@@ -260,9 +260,13 @@ func TestUpdateAssignments_DoesNothingWhenNotEpochStartAndAlreadyExistingAssignm
key: validatorKey,
validatorClient: client,
assignment: &pb.CommitteeAssignmentResponse{
Committee: []uint64{},
Slot: 10,
Shard: 20,
Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Committee: []uint64{},
Slot: 10,
Shard: 20,
},
},
},
}
client.EXPECT().CommitteeAssignment(
@@ -283,7 +287,13 @@ func TestUpdateAssignments_ReturnsError(t *testing.T) {
v := validator{
key: validatorKey,
validatorClient: client,
assignment: &pb.CommitteeAssignmentResponse{Shard: 1},
assignment: &pb.CommitteeAssignmentResponse{
Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Shard: 1,
},
},
},
}
expected := errors.New("bad")
@@ -308,10 +318,14 @@ func TestUpdateAssignments_OK(t *testing.T) {
slot := params.BeaconConfig().SlotsPerEpoch
resp := &pb.CommitteeAssignmentResponse{
Slot: params.BeaconConfig().SlotsPerEpoch,
Shard: 100,
Committee: []uint64{0, 1, 2, 3},
IsProposer: true,
Assignment: []*pb.CommitteeAssignmentResponse_CommitteeAssignment{
&pb.CommitteeAssignmentResponse_CommitteeAssignment{
Slot: params.BeaconConfig().SlotsPerEpoch,
Shard: 100,
Committee: []uint64{0, 1, 2, 3},
IsProposer: true,
},
},
}
v := validator{
key: validatorKey,
@@ -326,13 +340,13 @@ func TestUpdateAssignments_OK(t *testing.T) {
t.Fatalf("Could not update assignments: %v", err)
}
if v.assignment.Slot != params.BeaconConfig().SlotsPerEpoch {
t.Errorf("Unexpected validator assignments. want=%v got=%v", params.BeaconConfig().SlotsPerEpoch, v.assignment.Slot)
if v.assignment.Assignment[0].Slot != params.BeaconConfig().SlotsPerEpoch {
t.Errorf("Unexpected validator assignments. want=%v got=%v", params.BeaconConfig().SlotsPerEpoch, v.assignment.Assignment[0].Slot)
}
if v.assignment.Shard != resp.Shard {
t.Errorf("Unexpected validator assignments. want=%v got=%v", resp.Shard, v.assignment.Slot)
if v.assignment.Assignment[0].Shard != resp.Assignment[0].Shard {
t.Errorf("Unexpected validator assignments. want=%v got=%v", resp.Assignment[0].Shard, v.assignment.Assignment[0].Slot)
}
if !v.assignment.IsProposer {
if !v.assignment.Assignment[0].IsProposer {
t.Errorf("Unexpected validator assignments. want: proposer=true")
}
}

View File

@@ -1,6 +1,7 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1 (interfaces: ValidatorServiceClient,ValidatorService_WaitForActivationClient)
// Package internal is a generated GoMock package.
package internal
import (
@@ -37,7 +38,7 @@ func (m *MockValidatorServiceClient) EXPECT() *MockValidatorServiceClientMockRec
}
// CommitteeAssignment mocks base method
func (m *MockValidatorServiceClient) CommitteeAssignment(arg0 context.Context, arg1 *v1.ValidatorEpochAssignmentsRequest, arg2 ...grpc.CallOption) (*v1.CommitteeAssignmentResponse, error) {
func (m *MockValidatorServiceClient) CommitteeAssignment(arg0 context.Context, arg1 *v1.CommitteeAssignmentsRequest, arg2 ...grpc.CallOption) (*v1.CommitteeAssignmentResponse, error) {
m.ctrl.T.Helper()
varargs := []interface{}{arg0, arg1}
for _, a := range arg2 {