diff --git a/gointerfaces/remote/ethbackend.pb.go b/gointerfaces/remote/ethbackend.pb.go index d7fed5cfb..1eea8b868 100644 --- a/gointerfaces/remote/ethbackend.pb.go +++ b/gointerfaces/remote/ethbackend.pb.go @@ -71,6 +71,64 @@ func (Event) EnumDescriptor() ([]byte, []int) { return file_remote_ethbackend_proto_rawDescGZIP(), []int{0} } +type EngineStatus int32 + +const ( + EngineStatus_VALID EngineStatus = 0 + EngineStatus_INVALID EngineStatus = 1 + EngineStatus_SYNCING EngineStatus = 2 + EngineStatus_ACCEPTED EngineStatus = 3 + EngineStatus_INVALID_BLOCK_HASH EngineStatus = 4 + EngineStatus_INVALID_TERMINAL_BLOCK EngineStatus = 5 +) + +// Enum value maps for EngineStatus. +var ( + EngineStatus_name = map[int32]string{ + 0: "VALID", + 1: "INVALID", + 2: "SYNCING", + 3: "ACCEPTED", + 4: "INVALID_BLOCK_HASH", + 5: "INVALID_TERMINAL_BLOCK", + } + EngineStatus_value = map[string]int32{ + "VALID": 0, + "INVALID": 1, + "SYNCING": 2, + "ACCEPTED": 3, + "INVALID_BLOCK_HASH": 4, + "INVALID_TERMINAL_BLOCK": 5, + } +) + +func (x EngineStatus) Enum() *EngineStatus { + p := new(EngineStatus) + *p = x + return p +} + +func (x EngineStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EngineStatus) Descriptor() protoreflect.EnumDescriptor { + return file_remote_ethbackend_proto_enumTypes[1].Descriptor() +} + +func (EngineStatus) Type() protoreflect.EnumType { + return &file_remote_ethbackend_proto_enumTypes[1] +} + +func (x EngineStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EngineStatus.Descriptor instead. +func (EngineStatus) EnumDescriptor() ([]byte, []int) { + return file_remote_ethbackend_proto_rawDescGZIP(), []int{1} +} + type EtherbaseRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -373,17 +431,18 @@ func (x *EngineGetPayloadRequest) GetPayloadId() uint64 { return 0 } -type EngineExecutePayloadReply struct { +type EnginePayloadStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - LatestValidHash *types.H256 `protobuf:"bytes,2,opt,name=latestValidHash,proto3" json:"latestValidHash,omitempty"` + Status EngineStatus `protobuf:"varint,1,opt,name=status,proto3,enum=remote.EngineStatus" json:"status,omitempty"` + LatestValidHash *types.H256 `protobuf:"bytes,2,opt,name=latestValidHash,proto3" json:"latestValidHash,omitempty"` + ValidationError string `protobuf:"bytes,3,opt,name=validationError,proto3" json:"validationError,omitempty"` } -func (x *EngineExecutePayloadReply) Reset() { - *x = EngineExecutePayloadReply{} +func (x *EnginePayloadStatus) Reset() { + *x = EnginePayloadStatus{} if protoimpl.UnsafeEnabled { mi := &file_remote_ethbackend_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -391,13 +450,13 @@ func (x *EngineExecutePayloadReply) Reset() { } } -func (x *EngineExecutePayloadReply) String() string { +func (x *EnginePayloadStatus) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EngineExecutePayloadReply) ProtoMessage() {} +func (*EnginePayloadStatus) ProtoMessage() {} -func (x *EngineExecutePayloadReply) ProtoReflect() protoreflect.Message { +func (x *EnginePayloadStatus) ProtoReflect() protoreflect.Message { mi := &file_remote_ethbackend_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -409,37 +468,44 @@ func (x *EngineExecutePayloadReply) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EngineExecutePayloadReply.ProtoReflect.Descriptor instead. -func (*EngineExecutePayloadReply) Descriptor() ([]byte, []int) { +// Deprecated: Use EnginePayloadStatus.ProtoReflect.Descriptor instead. +func (*EnginePayloadStatus) Descriptor() ([]byte, []int) { return file_remote_ethbackend_proto_rawDescGZIP(), []int{7} } -func (x *EngineExecutePayloadReply) GetStatus() string { +func (x *EnginePayloadStatus) GetStatus() EngineStatus { if x != nil { return x.Status } - return "" + return EngineStatus_VALID } -func (x *EngineExecutePayloadReply) GetLatestValidHash() *types.H256 { +func (x *EnginePayloadStatus) GetLatestValidHash() *types.H256 { if x != nil { return x.LatestValidHash } return nil } -type EnginePreparePayload struct { +func (x *EnginePayloadStatus) GetValidationError() string { + if x != nil { + return x.ValidationError + } + return "" +} + +type EnginePayloadAttributes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Random *types.H256 `protobuf:"bytes,2,opt,name=random,proto3" json:"random,omitempty"` - FeeRecipient *types.H160 `protobuf:"bytes,3,opt,name=feeRecipient,proto3" json:"feeRecipient,omitempty"` + Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Random *types.H256 `protobuf:"bytes,2,opt,name=random,proto3" json:"random,omitempty"` + SuggestedFeeRecipient *types.H160 `protobuf:"bytes,3,opt,name=suggestedFeeRecipient,proto3" json:"suggestedFeeRecipient,omitempty"` } -func (x *EnginePreparePayload) Reset() { - *x = EnginePreparePayload{} +func (x *EnginePayloadAttributes) Reset() { + *x = EnginePayloadAttributes{} if protoimpl.UnsafeEnabled { mi := &file_remote_ethbackend_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -447,13 +513,13 @@ func (x *EnginePreparePayload) Reset() { } } -func (x *EnginePreparePayload) String() string { +func (x *EnginePayloadAttributes) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EnginePreparePayload) ProtoMessage() {} +func (*EnginePayloadAttributes) ProtoMessage() {} -func (x *EnginePreparePayload) ProtoReflect() protoreflect.Message { +func (x *EnginePayloadAttributes) ProtoReflect() protoreflect.Message { mi := &file_remote_ethbackend_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -465,33 +531,33 @@ func (x *EnginePreparePayload) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EnginePreparePayload.ProtoReflect.Descriptor instead. -func (*EnginePreparePayload) Descriptor() ([]byte, []int) { +// Deprecated: Use EnginePayloadAttributes.ProtoReflect.Descriptor instead. +func (*EnginePayloadAttributes) Descriptor() ([]byte, []int) { return file_remote_ethbackend_proto_rawDescGZIP(), []int{8} } -func (x *EnginePreparePayload) GetTimestamp() uint64 { +func (x *EnginePayloadAttributes) GetTimestamp() uint64 { if x != nil { return x.Timestamp } return 0 } -func (x *EnginePreparePayload) GetRandom() *types.H256 { +func (x *EnginePayloadAttributes) GetRandom() *types.H256 { if x != nil { return x.Random } return nil } -func (x *EnginePreparePayload) GetFeeRecipient() *types.H160 { +func (x *EnginePayloadAttributes) GetSuggestedFeeRecipient() *types.H160 { if x != nil { - return x.FeeRecipient + return x.SuggestedFeeRecipient } return nil } -type EngineForkChoiceUpdated struct { +type EngineForkChoiceState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -501,8 +567,8 @@ type EngineForkChoiceUpdated struct { FinalizedBlockHash *types.H256 `protobuf:"bytes,3,opt,name=finalizedBlockHash,proto3" json:"finalizedBlockHash,omitempty"` } -func (x *EngineForkChoiceUpdated) Reset() { - *x = EngineForkChoiceUpdated{} +func (x *EngineForkChoiceState) Reset() { + *x = EngineForkChoiceState{} if protoimpl.UnsafeEnabled { mi := &file_remote_ethbackend_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -510,13 +576,13 @@ func (x *EngineForkChoiceUpdated) Reset() { } } -func (x *EngineForkChoiceUpdated) String() string { +func (x *EngineForkChoiceState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EngineForkChoiceUpdated) ProtoMessage() {} +func (*EngineForkChoiceState) ProtoMessage() {} -func (x *EngineForkChoiceUpdated) ProtoReflect() protoreflect.Message { +func (x *EngineForkChoiceState) ProtoReflect() protoreflect.Message { mi := &file_remote_ethbackend_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -528,26 +594,26 @@ func (x *EngineForkChoiceUpdated) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EngineForkChoiceUpdated.ProtoReflect.Descriptor instead. -func (*EngineForkChoiceUpdated) Descriptor() ([]byte, []int) { +// Deprecated: Use EngineForkChoiceState.ProtoReflect.Descriptor instead. +func (*EngineForkChoiceState) Descriptor() ([]byte, []int) { return file_remote_ethbackend_proto_rawDescGZIP(), []int{9} } -func (x *EngineForkChoiceUpdated) GetHeadBlockHash() *types.H256 { +func (x *EngineForkChoiceState) GetHeadBlockHash() *types.H256 { if x != nil { return x.HeadBlockHash } return nil } -func (x *EngineForkChoiceUpdated) GetSafeBlockHash() *types.H256 { +func (x *EngineForkChoiceState) GetSafeBlockHash() *types.H256 { if x != nil { return x.SafeBlockHash } return nil } -func (x *EngineForkChoiceUpdated) GetFinalizedBlockHash() *types.H256 { +func (x *EngineForkChoiceState) GetFinalizedBlockHash() *types.H256 { if x != nil { return x.FinalizedBlockHash } @@ -559,8 +625,8 @@ type EngineForkChoiceUpdatedRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Forkchoice *EngineForkChoiceUpdated `protobuf:"bytes,1,opt,name=forkchoice,proto3" json:"forkchoice,omitempty"` - Prepare *EnginePreparePayload `protobuf:"bytes,2,opt,name=prepare,proto3" json:"prepare,omitempty"` + ForkchoiceState *EngineForkChoiceState `protobuf:"bytes,1,opt,name=forkchoiceState,proto3" json:"forkchoiceState,omitempty"` + PayloadAttributes *EnginePayloadAttributes `protobuf:"bytes,2,opt,name=payloadAttributes,proto3" json:"payloadAttributes,omitempty"` } func (x *EngineForkChoiceUpdatedRequest) Reset() { @@ -595,16 +661,16 @@ func (*EngineForkChoiceUpdatedRequest) Descriptor() ([]byte, []int) { return file_remote_ethbackend_proto_rawDescGZIP(), []int{10} } -func (x *EngineForkChoiceUpdatedRequest) GetForkchoice() *EngineForkChoiceUpdated { +func (x *EngineForkChoiceUpdatedRequest) GetForkchoiceState() *EngineForkChoiceState { if x != nil { - return x.Forkchoice + return x.ForkchoiceState } return nil } -func (x *EngineForkChoiceUpdatedRequest) GetPrepare() *EnginePreparePayload { +func (x *EngineForkChoiceUpdatedRequest) GetPayloadAttributes() *EnginePayloadAttributes { if x != nil { - return x.Prepare + return x.PayloadAttributes } return nil } @@ -614,8 +680,8 @@ type EngineForkChoiceUpdatedReply struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - PayloadId uint64 `protobuf:"varint,2,opt,name=payloadId,proto3" json:"payloadId,omitempty"` + PayloadStatus *EnginePayloadStatus `protobuf:"bytes,1,opt,name=payloadStatus,proto3" json:"payloadStatus,omitempty"` + PayloadId uint64 `protobuf:"varint,2,opt,name=payloadId,proto3" json:"payloadId,omitempty"` } func (x *EngineForkChoiceUpdatedReply) Reset() { @@ -650,11 +716,11 @@ func (*EngineForkChoiceUpdatedReply) Descriptor() ([]byte, []int) { return file_remote_ethbackend_proto_rawDescGZIP(), []int{11} } -func (x *EngineForkChoiceUpdatedReply) GetStatus() string { +func (x *EngineForkChoiceUpdatedReply) GetPayloadStatus() *EnginePayloadStatus { if x != nil { - return x.Status + return x.PayloadStatus } - return "" + return nil } func (x *EngineForkChoiceUpdatedReply) GetPayloadId() uint64 { @@ -1258,154 +1324,170 @@ var file_remote_ethbackend_proto_rawDesc = []byte{ 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, - 0x64, 0x22, 0x6a, 0x0a, 0x19, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0f, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x61, 0x73, 0x68, 0x22, 0x8a, 0x01, - 0x0a, 0x14, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, + 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0f, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, + 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, + 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x41, 0x0a, 0x15, 0x73, 0x75, 0x67, 0x67, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x46, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, + 0x31, 0x36, 0x30, 0x52, 0x15, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x65, + 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x15, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x31, 0x0a, 0x0d, 0x73, 0x61, 0x66, 0x65, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0d, 0x73, 0x61, 0x66, + 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x12, 0x66, 0x69, + 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, + 0x32, 0x35, 0x36, 0x52, 0x12, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x66, 0x6f, + 0x72, 0x6b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x6b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, + 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x1c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x26, 0x0a, + 0x14, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x30, 0x0a, + 0x12, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x35, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0d, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x5b, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x29, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, - 0x36, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x2f, 0x0a, 0x0c, 0x66, 0x65, 0x65, - 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, 0x0c, 0x66, 0x65, - 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x17, 0x45, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x31, 0x0a, 0x0d, 0x73, 0x61, 0x66, - 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0d, 0x73, - 0x61, 0x66, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x12, - 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, - 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x12, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x99, 0x01, 0x0a, 0x1e, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a, - 0x66, 0x6f, 0x72, 0x6b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, - 0x07, 0x70, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, - 0x65, 0x70, 0x61, 0x72, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x72, - 0x65, 0x70, 0x61, 0x72, 0x65, 0x22, 0x54, 0x0a, 0x1c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, - 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x16, 0x0a, - 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x30, 0x0a, 0x12, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, - 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x47, - 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x5b, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x29, 0x0a, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x61, 0x73, 0x68, 0x22, 0x42, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x54, 0x78, 0x6e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x07, - 0x74, 0x78, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x07, 0x74, 0x78, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x22, 0x32, 0x0a, 0x0e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x22, 0x44, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, - 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x09, 0x6e, 0x6f, - 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0x38, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, - 0x02, 0x32, 0xab, 0x07, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, - 0x12, 0x3d, 0x0a, 0x09, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x40, 0x0a, 0x0a, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, - 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4e, 0x0a, 0x12, 0x45, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x31, 0x12, - 0x1f, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, - 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x54, 0x0a, 0x16, 0x45, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x56, 0x31, 0x12, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x21, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x69, 0x0a, 0x19, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x56, 0x31, 0x12, 0x26, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, - 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x30, 0x01, 0x12, - 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, - 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, - 0x11, 0x5a, 0x0f, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x36, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x42, 0x0a, 0x0a, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, + 0x22, 0x39, 0x0a, 0x10, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x74, 0x78, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, + 0x35, 0x36, 0x52, 0x07, 0x74, 0x78, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x32, 0x0a, 0x0e, 0x54, + 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a, + 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, + 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x44, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x32, 0x0a, 0x09, 0x6e, + 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x2a, + 0x38, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x45, 0x41, 0x44, + 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, + 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x2a, 0x75, 0x0a, 0x0c, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, + 0x49, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, + 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x59, 0x4e, 0x43, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, + 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, + 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x05, + 0x32, 0xa1, 0x07, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x12, + 0x3d, 0x0a, 0x09, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x40, + 0x0a, 0x0a, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x46, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, + 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4e, 0x0a, 0x12, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x31, 0x12, 0x1f, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, + 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4a, 0x0a, 0x12, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x4e, 0x65, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x56, 0x31, 0x12, 0x17, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x69, 0x0a, 0x19, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, + 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x56, + 0x31, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, + 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x42, 0x11, 0x5a, 0x0f, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1420,87 +1502,90 @@ func file_remote_ethbackend_proto_rawDescGZIP() []byte { return file_remote_ethbackend_proto_rawDescData } -var file_remote_ethbackend_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_remote_ethbackend_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_remote_ethbackend_proto_goTypes = []interface{}{ (Event)(0), // 0: remote.Event - (*EtherbaseRequest)(nil), // 1: remote.EtherbaseRequest - (*EtherbaseReply)(nil), // 2: remote.EtherbaseReply - (*NetVersionRequest)(nil), // 3: remote.NetVersionRequest - (*NetVersionReply)(nil), // 4: remote.NetVersionReply - (*NetPeerCountRequest)(nil), // 5: remote.NetPeerCountRequest - (*NetPeerCountReply)(nil), // 6: remote.NetPeerCountReply - (*EngineGetPayloadRequest)(nil), // 7: remote.EngineGetPayloadRequest - (*EngineExecutePayloadReply)(nil), // 8: remote.EngineExecutePayloadReply - (*EnginePreparePayload)(nil), // 9: remote.EnginePreparePayload - (*EngineForkChoiceUpdated)(nil), // 10: remote.EngineForkChoiceUpdated - (*EngineForkChoiceUpdatedRequest)(nil), // 11: remote.EngineForkChoiceUpdatedRequest - (*EngineForkChoiceUpdatedReply)(nil), // 12: remote.EngineForkChoiceUpdatedReply - (*ProtocolVersionRequest)(nil), // 13: remote.ProtocolVersionRequest - (*ProtocolVersionReply)(nil), // 14: remote.ProtocolVersionReply - (*ClientVersionRequest)(nil), // 15: remote.ClientVersionRequest - (*ClientVersionReply)(nil), // 16: remote.ClientVersionReply - (*SubscribeRequest)(nil), // 17: remote.SubscribeRequest - (*SubscribeReply)(nil), // 18: remote.SubscribeReply - (*BlockRequest)(nil), // 19: remote.BlockRequest - (*BlockReply)(nil), // 20: remote.BlockReply - (*TxnLookupRequest)(nil), // 21: remote.TxnLookupRequest - (*TxnLookupReply)(nil), // 22: remote.TxnLookupReply - (*NodesInfoRequest)(nil), // 23: remote.NodesInfoRequest - (*NodesInfoReply)(nil), // 24: remote.NodesInfoReply - (*types.H160)(nil), // 25: types.H160 - (*types.H256)(nil), // 26: types.H256 - (*types.NodeInfoReply)(nil), // 27: types.NodeInfoReply - (*types.ExecutionPayload)(nil), // 28: types.ExecutionPayload - (*emptypb.Empty)(nil), // 29: google.protobuf.Empty - (*types.VersionReply)(nil), // 30: types.VersionReply + (EngineStatus)(0), // 1: remote.EngineStatus + (*EtherbaseRequest)(nil), // 2: remote.EtherbaseRequest + (*EtherbaseReply)(nil), // 3: remote.EtherbaseReply + (*NetVersionRequest)(nil), // 4: remote.NetVersionRequest + (*NetVersionReply)(nil), // 5: remote.NetVersionReply + (*NetPeerCountRequest)(nil), // 6: remote.NetPeerCountRequest + (*NetPeerCountReply)(nil), // 7: remote.NetPeerCountReply + (*EngineGetPayloadRequest)(nil), // 8: remote.EngineGetPayloadRequest + (*EnginePayloadStatus)(nil), // 9: remote.EnginePayloadStatus + (*EnginePayloadAttributes)(nil), // 10: remote.EnginePayloadAttributes + (*EngineForkChoiceState)(nil), // 11: remote.EngineForkChoiceState + (*EngineForkChoiceUpdatedRequest)(nil), // 12: remote.EngineForkChoiceUpdatedRequest + (*EngineForkChoiceUpdatedReply)(nil), // 13: remote.EngineForkChoiceUpdatedReply + (*ProtocolVersionRequest)(nil), // 14: remote.ProtocolVersionRequest + (*ProtocolVersionReply)(nil), // 15: remote.ProtocolVersionReply + (*ClientVersionRequest)(nil), // 16: remote.ClientVersionRequest + (*ClientVersionReply)(nil), // 17: remote.ClientVersionReply + (*SubscribeRequest)(nil), // 18: remote.SubscribeRequest + (*SubscribeReply)(nil), // 19: remote.SubscribeReply + (*BlockRequest)(nil), // 20: remote.BlockRequest + (*BlockReply)(nil), // 21: remote.BlockReply + (*TxnLookupRequest)(nil), // 22: remote.TxnLookupRequest + (*TxnLookupReply)(nil), // 23: remote.TxnLookupReply + (*NodesInfoRequest)(nil), // 24: remote.NodesInfoRequest + (*NodesInfoReply)(nil), // 25: remote.NodesInfoReply + (*types.H160)(nil), // 26: types.H160 + (*types.H256)(nil), // 27: types.H256 + (*types.NodeInfoReply)(nil), // 28: types.NodeInfoReply + (*types.ExecutionPayload)(nil), // 29: types.ExecutionPayload + (*emptypb.Empty)(nil), // 30: google.protobuf.Empty + (*types.VersionReply)(nil), // 31: types.VersionReply } var file_remote_ethbackend_proto_depIdxs = []int32{ - 25, // 0: remote.EtherbaseReply.address:type_name -> types.H160 - 26, // 1: remote.EngineExecutePayloadReply.latestValidHash:type_name -> types.H256 - 26, // 2: remote.EnginePreparePayload.random:type_name -> types.H256 - 25, // 3: remote.EnginePreparePayload.feeRecipient:type_name -> types.H160 - 26, // 4: remote.EngineForkChoiceUpdated.headBlockHash:type_name -> types.H256 - 26, // 5: remote.EngineForkChoiceUpdated.safeBlockHash:type_name -> types.H256 - 26, // 6: remote.EngineForkChoiceUpdated.finalizedBlockHash:type_name -> types.H256 - 10, // 7: remote.EngineForkChoiceUpdatedRequest.forkchoice:type_name -> remote.EngineForkChoiceUpdated - 9, // 8: remote.EngineForkChoiceUpdatedRequest.prepare:type_name -> remote.EnginePreparePayload - 0, // 9: remote.SubscribeRequest.type:type_name -> remote.Event - 0, // 10: remote.SubscribeReply.type:type_name -> remote.Event - 26, // 11: remote.BlockRequest.blockHash:type_name -> types.H256 - 26, // 12: remote.TxnLookupRequest.txnHash:type_name -> types.H256 - 27, // 13: remote.NodesInfoReply.nodesInfo:type_name -> types.NodeInfoReply - 1, // 14: remote.ETHBACKEND.Etherbase:input_type -> remote.EtherbaseRequest - 3, // 15: remote.ETHBACKEND.NetVersion:input_type -> remote.NetVersionRequest - 5, // 16: remote.ETHBACKEND.NetPeerCount:input_type -> remote.NetPeerCountRequest - 7, // 17: remote.ETHBACKEND.EngineGetPayloadV1:input_type -> remote.EngineGetPayloadRequest - 28, // 18: remote.ETHBACKEND.EngineExecutePayloadV1:input_type -> types.ExecutionPayload - 11, // 19: remote.ETHBACKEND.EngineForkChoiceUpdatedV1:input_type -> remote.EngineForkChoiceUpdatedRequest - 29, // 20: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty - 13, // 21: remote.ETHBACKEND.ProtocolVersion:input_type -> remote.ProtocolVersionRequest - 15, // 22: remote.ETHBACKEND.ClientVersion:input_type -> remote.ClientVersionRequest - 17, // 23: remote.ETHBACKEND.Subscribe:input_type -> remote.SubscribeRequest - 19, // 24: remote.ETHBACKEND.Block:input_type -> remote.BlockRequest - 21, // 25: remote.ETHBACKEND.TxnLookup:input_type -> remote.TxnLookupRequest - 23, // 26: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest - 2, // 27: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply - 4, // 28: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply - 6, // 29: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply - 28, // 30: remote.ETHBACKEND.EngineGetPayloadV1:output_type -> types.ExecutionPayload - 8, // 31: remote.ETHBACKEND.EngineExecutePayloadV1:output_type -> remote.EngineExecutePayloadReply - 12, // 32: remote.ETHBACKEND.EngineForkChoiceUpdatedV1:output_type -> remote.EngineForkChoiceUpdatedReply - 30, // 33: remote.ETHBACKEND.Version:output_type -> types.VersionReply - 14, // 34: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply - 16, // 35: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply - 18, // 36: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply - 20, // 37: remote.ETHBACKEND.Block:output_type -> remote.BlockReply - 22, // 38: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply - 24, // 39: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply - 27, // [27:40] is the sub-list for method output_type - 14, // [14:27] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 26, // 0: remote.EtherbaseReply.address:type_name -> types.H160 + 1, // 1: remote.EnginePayloadStatus.status:type_name -> remote.EngineStatus + 27, // 2: remote.EnginePayloadStatus.latestValidHash:type_name -> types.H256 + 27, // 3: remote.EnginePayloadAttributes.random:type_name -> types.H256 + 26, // 4: remote.EnginePayloadAttributes.suggestedFeeRecipient:type_name -> types.H160 + 27, // 5: remote.EngineForkChoiceState.headBlockHash:type_name -> types.H256 + 27, // 6: remote.EngineForkChoiceState.safeBlockHash:type_name -> types.H256 + 27, // 7: remote.EngineForkChoiceState.finalizedBlockHash:type_name -> types.H256 + 11, // 8: remote.EngineForkChoiceUpdatedRequest.forkchoiceState:type_name -> remote.EngineForkChoiceState + 10, // 9: remote.EngineForkChoiceUpdatedRequest.payloadAttributes:type_name -> remote.EnginePayloadAttributes + 9, // 10: remote.EngineForkChoiceUpdatedReply.payloadStatus:type_name -> remote.EnginePayloadStatus + 0, // 11: remote.SubscribeRequest.type:type_name -> remote.Event + 0, // 12: remote.SubscribeReply.type:type_name -> remote.Event + 27, // 13: remote.BlockRequest.blockHash:type_name -> types.H256 + 27, // 14: remote.TxnLookupRequest.txnHash:type_name -> types.H256 + 28, // 15: remote.NodesInfoReply.nodesInfo:type_name -> types.NodeInfoReply + 2, // 16: remote.ETHBACKEND.Etherbase:input_type -> remote.EtherbaseRequest + 4, // 17: remote.ETHBACKEND.NetVersion:input_type -> remote.NetVersionRequest + 6, // 18: remote.ETHBACKEND.NetPeerCount:input_type -> remote.NetPeerCountRequest + 8, // 19: remote.ETHBACKEND.EngineGetPayloadV1:input_type -> remote.EngineGetPayloadRequest + 29, // 20: remote.ETHBACKEND.EngineNewPayloadV1:input_type -> types.ExecutionPayload + 12, // 21: remote.ETHBACKEND.EngineForkChoiceUpdatedV1:input_type -> remote.EngineForkChoiceUpdatedRequest + 30, // 22: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty + 14, // 23: remote.ETHBACKEND.ProtocolVersion:input_type -> remote.ProtocolVersionRequest + 16, // 24: remote.ETHBACKEND.ClientVersion:input_type -> remote.ClientVersionRequest + 18, // 25: remote.ETHBACKEND.Subscribe:input_type -> remote.SubscribeRequest + 20, // 26: remote.ETHBACKEND.Block:input_type -> remote.BlockRequest + 22, // 27: remote.ETHBACKEND.TxnLookup:input_type -> remote.TxnLookupRequest + 24, // 28: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest + 3, // 29: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply + 5, // 30: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply + 7, // 31: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply + 29, // 32: remote.ETHBACKEND.EngineGetPayloadV1:output_type -> types.ExecutionPayload + 9, // 33: remote.ETHBACKEND.EngineNewPayloadV1:output_type -> remote.EnginePayloadStatus + 13, // 34: remote.ETHBACKEND.EngineForkChoiceUpdatedV1:output_type -> remote.EngineForkChoiceUpdatedReply + 31, // 35: remote.ETHBACKEND.Version:output_type -> types.VersionReply + 15, // 36: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply + 17, // 37: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply + 19, // 38: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply + 21, // 39: remote.ETHBACKEND.Block:output_type -> remote.BlockReply + 23, // 40: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply + 25, // 41: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply + 29, // [29:42] is the sub-list for method output_type + 16, // [16:29] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_remote_ethbackend_proto_init() } @@ -1594,7 +1679,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EngineExecutePayloadReply); i { + switch v := v.(*EnginePayloadStatus); i { case 0: return &v.state case 1: @@ -1606,7 +1691,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnginePreparePayload); i { + switch v := v.(*EnginePayloadAttributes); i { case 0: return &v.state case 1: @@ -1618,7 +1703,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EngineForkChoiceUpdated); i { + switch v := v.(*EngineForkChoiceState); i { case 0: return &v.state case 1: @@ -1803,7 +1888,7 @@ func file_remote_ethbackend_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_remote_ethbackend_proto_rawDesc, - NumEnums: 1, + NumEnums: 2, NumMessages: 24, NumExtensions: 0, NumServices: 1, diff --git a/gointerfaces/remote/ethbackend_grpc.pb.go b/gointerfaces/remote/ethbackend_grpc.pb.go index ad5cbea78..51debbffe 100644 --- a/gointerfaces/remote/ethbackend_grpc.pb.go +++ b/gointerfaces/remote/ethbackend_grpc.pb.go @@ -23,10 +23,10 @@ type ETHBACKENDClient interface { Etherbase(ctx context.Context, in *EtherbaseRequest, opts ...grpc.CallOption) (*EtherbaseReply, error) NetVersion(ctx context.Context, in *NetVersionRequest, opts ...grpc.CallOption) (*NetVersionReply, error) NetPeerCount(ctx context.Context, in *NetPeerCountRequest, opts ...grpc.CallOption) (*NetPeerCountReply, error) - // Fetch Execution Payload using its id. + // Fetch Execution Payload using its ID. EngineGetPayloadV1(ctx context.Context, in *EngineGetPayloadRequest, opts ...grpc.CallOption) (*types.ExecutionPayload, error) - // Execute the payload. - EngineExecutePayloadV1(ctx context.Context, in *types.ExecutionPayload, opts ...grpc.CallOption) (*EngineExecutePayloadReply, error) + // Validate and possibly execute the payload. + EngineNewPayloadV1(ctx context.Context, in *types.ExecutionPayload, opts ...grpc.CallOption) (*EnginePayloadStatus, error) // Update fork choice EngineForkChoiceUpdatedV1(ctx context.Context, in *EngineForkChoiceUpdatedRequest, opts ...grpc.CallOption) (*EngineForkChoiceUpdatedReply, error) // Version returns the service version number @@ -91,9 +91,9 @@ func (c *eTHBACKENDClient) EngineGetPayloadV1(ctx context.Context, in *EngineGet return out, nil } -func (c *eTHBACKENDClient) EngineExecutePayloadV1(ctx context.Context, in *types.ExecutionPayload, opts ...grpc.CallOption) (*EngineExecutePayloadReply, error) { - out := new(EngineExecutePayloadReply) - err := c.cc.Invoke(ctx, "/remote.ETHBACKEND/EngineExecutePayloadV1", in, out, opts...) +func (c *eTHBACKENDClient) EngineNewPayloadV1(ctx context.Context, in *types.ExecutionPayload, opts ...grpc.CallOption) (*EnginePayloadStatus, error) { + out := new(EnginePayloadStatus) + err := c.cc.Invoke(ctx, "/remote.ETHBACKEND/EngineNewPayloadV1", in, out, opts...) if err != nil { return nil, err } @@ -202,10 +202,10 @@ type ETHBACKENDServer interface { Etherbase(context.Context, *EtherbaseRequest) (*EtherbaseReply, error) NetVersion(context.Context, *NetVersionRequest) (*NetVersionReply, error) NetPeerCount(context.Context, *NetPeerCountRequest) (*NetPeerCountReply, error) - // Fetch Execution Payload using its id. + // Fetch Execution Payload using its ID. EngineGetPayloadV1(context.Context, *EngineGetPayloadRequest) (*types.ExecutionPayload, error) - // Execute the payload. - EngineExecutePayloadV1(context.Context, *types.ExecutionPayload) (*EngineExecutePayloadReply, error) + // Validate and possibly execute the payload. + EngineNewPayloadV1(context.Context, *types.ExecutionPayload) (*EnginePayloadStatus, error) // Update fork choice EngineForkChoiceUpdatedV1(context.Context, *EngineForkChoiceUpdatedRequest) (*EngineForkChoiceUpdatedReply, error) // Version returns the service version number @@ -243,8 +243,8 @@ func (UnimplementedETHBACKENDServer) NetPeerCount(context.Context, *NetPeerCount func (UnimplementedETHBACKENDServer) EngineGetPayloadV1(context.Context, *EngineGetPayloadRequest) (*types.ExecutionPayload, error) { return nil, status.Errorf(codes.Unimplemented, "method EngineGetPayloadV1 not implemented") } -func (UnimplementedETHBACKENDServer) EngineExecutePayloadV1(context.Context, *types.ExecutionPayload) (*EngineExecutePayloadReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method EngineExecutePayloadV1 not implemented") +func (UnimplementedETHBACKENDServer) EngineNewPayloadV1(context.Context, *types.ExecutionPayload) (*EnginePayloadStatus, error) { + return nil, status.Errorf(codes.Unimplemented, "method EngineNewPayloadV1 not implemented") } func (UnimplementedETHBACKENDServer) EngineForkChoiceUpdatedV1(context.Context, *EngineForkChoiceUpdatedRequest) (*EngineForkChoiceUpdatedReply, error) { return nil, status.Errorf(codes.Unimplemented, "method EngineForkChoiceUpdatedV1 not implemented") @@ -355,20 +355,20 @@ func _ETHBACKEND_EngineGetPayloadV1_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } -func _ETHBACKEND_EngineExecutePayloadV1_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _ETHBACKEND_EngineNewPayloadV1_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(types.ExecutionPayload) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ETHBACKENDServer).EngineExecutePayloadV1(ctx, in) + return srv.(ETHBACKENDServer).EngineNewPayloadV1(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/remote.ETHBACKEND/EngineExecutePayloadV1", + FullMethod: "/remote.ETHBACKEND/EngineNewPayloadV1", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ETHBACKENDServer).EngineExecutePayloadV1(ctx, req.(*types.ExecutionPayload)) + return srv.(ETHBACKENDServer).EngineNewPayloadV1(ctx, req.(*types.ExecutionPayload)) } return interceptor(ctx, in, info, handler) } @@ -544,8 +544,8 @@ var ETHBACKEND_ServiceDesc = grpc.ServiceDesc{ Handler: _ETHBACKEND_EngineGetPayloadV1_Handler, }, { - MethodName: "EngineExecutePayloadV1", - Handler: _ETHBACKEND_EngineExecutePayloadV1_Handler, + MethodName: "EngineNewPayloadV1", + Handler: _ETHBACKEND_EngineNewPayloadV1_Handler, }, { MethodName: "EngineForkChoiceUpdatedV1", diff --git a/interfaces/Cargo.toml b/interfaces/Cargo.toml index b85385c3f..00483b70c 100644 --- a/interfaces/Cargo.toml +++ b/interfaces/Cargo.toml @@ -16,7 +16,8 @@ web3 = [] [dependencies] arrayref = "0.3" -ethereum-types = { version = "0.12", default-features = false } +ethereum-types = { version = "0.13", default-features = false } +ethnum = { version = "1", default-features = false } once_cell = { version = "1", optional = true } prost = "0.9" serde = { version = "1", features = ["derive"], optional = true } diff --git a/interfaces/remote/ethbackend.proto b/interfaces/remote/ethbackend.proto index 22884380e..9787770bb 100644 --- a/interfaces/remote/ethbackend.proto +++ b/interfaces/remote/ethbackend.proto @@ -13,17 +13,22 @@ service ETHBACKEND { rpc NetVersion(NetVersionRequest) returns (NetVersionReply); rpc NetPeerCount(NetPeerCountRequest) returns (NetPeerCountReply); - // "The Merge" RPC Requests to be netively implemented in the Erigon Node Backend - // Fetch Execution Payload using its id. + // ------------------------------------------------------------------------ + // "The Merge" RPC requests natively implemented in the Erigon node backend + + // Fetch Execution Payload using its ID. rpc EngineGetPayloadV1(EngineGetPayloadRequest) returns (types.ExecutionPayload); - // Execute the payload. - rpc EngineExecutePayloadV1(types.ExecutionPayload) returns (EngineExecutePayloadReply); + // Validate and possibly execute the payload. + rpc EngineNewPayloadV1(types.ExecutionPayload) returns (EnginePayloadStatus); // Update fork choice rpc EngineForkChoiceUpdatedV1(EngineForkChoiceUpdatedRequest) returns (EngineForkChoiceUpdatedReply); + // End of the Merge requests + // ------------------------------------------------------------------------ + // Version returns the service version number rpc Version(google.protobuf.Empty) returns (types.VersionReply); @@ -68,30 +73,41 @@ message NetPeerCountReply { uint64 count = 1; } message EngineGetPayloadRequest { uint64 payloadId = 1; } -message EngineExecutePayloadReply { - string status = 1; + +enum EngineStatus { + VALID = 0; + INVALID = 1; + SYNCING = 2; + ACCEPTED = 3; + INVALID_BLOCK_HASH = 4; + INVALID_TERMINAL_BLOCK = 5; +} + +message EnginePayloadStatus { + EngineStatus status = 1; types.H256 latestValidHash = 2; + string validationError = 3; } -message EnginePreparePayload { +message EnginePayloadAttributes { uint64 timestamp = 1; types.H256 random = 2; - types.H160 feeRecipient = 3; + types.H160 suggestedFeeRecipient = 3; } -message EngineForkChoiceUpdated { +message EngineForkChoiceState { types.H256 headBlockHash = 1; types.H256 safeBlockHash = 2; types.H256 finalizedBlockHash = 3; } message EngineForkChoiceUpdatedRequest { - EngineForkChoiceUpdated forkchoice = 1; - EnginePreparePayload prepare = 2; + EngineForkChoiceState forkchoiceState = 1; + EnginePayloadAttributes payloadAttributes = 2; } message EngineForkChoiceUpdatedReply { - string status = 1; + EnginePayloadStatus payloadStatus = 1; uint64 payloadId = 2; } diff --git a/interfaces/src/lib.rs b/interfaces/src/lib.rs index 987ab6490..7d7c7a643 100644 --- a/interfaces/src/lib.rs +++ b/interfaces/src/lib.rs @@ -111,6 +111,18 @@ pub mod types { U!(H128, ethereum_types::H128, ethereum_types::U128); U!(H256, ethereum_types::H256, ethereum_types::U256); U!(H512, ethereum_types::H512, ethereum_types::U512); + + impl From for H256 { + fn from(v: ethnum::U256) -> Self { + ethereum_types::H256(v.to_be_bytes()).into() + } + } + + impl From for ethnum::U256 { + fn from(v: H256) -> Self { + ethnum::U256::from_be_bytes(ethereum_types::H256::from(v).0) + } + } } #[cfg(feature = "consensus")]