diff --git a/api/grpc/common/v2/common.pb.go b/api/grpc/common/v2/common.pb.go index f6a35c66e3..3e268fa23b 100644 --- a/api/grpc/common/v2/common.pb.go +++ b/api/grpc/common/v2/common.pb.go @@ -108,9 +108,8 @@ type BlobCertificate struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BlobHeader *BlobHeader `protobuf:"bytes,1,opt,name=blob_header,json=blobHeader,proto3" json:"blob_header,omitempty"` - ReferenceBlockNumber uint32 `protobuf:"varint,2,opt,name=reference_block_number,json=referenceBlockNumber,proto3" json:"reference_block_number,omitempty"` - Relays []uint32 `protobuf:"varint,3,rep,packed,name=relays,proto3" json:"relays,omitempty"` + BlobHeader *BlobHeader `protobuf:"bytes,1,opt,name=blob_header,json=blobHeader,proto3" json:"blob_header,omitempty"` + Relays []uint32 `protobuf:"varint,3,rep,packed,name=relays,proto3" json:"relays,omitempty"` } func (x *BlobCertificate) Reset() { @@ -152,16 +151,125 @@ func (x *BlobCertificate) GetBlobHeader() *BlobHeader { return nil } -func (x *BlobCertificate) GetReferenceBlockNumber() uint32 { +func (x *BlobCertificate) GetRelays() []uint32 { + if x != nil { + return x.Relays + } + return nil +} + +// BatchHeader is the header of a batch of blobs +type BatchHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // batch_root is the root of the merkle tree of the hashes of blob certificates in the batch + BatchRoot []byte `protobuf:"bytes,1,opt,name=batch_root,json=batchRoot,proto3" json:"batch_root,omitempty"` + // reference_block_number is the block number that the state of the batch is based on for attestation + ReferenceBlockNumber uint64 `protobuf:"varint,2,opt,name=reference_block_number,json=referenceBlockNumber,proto3" json:"reference_block_number,omitempty"` +} + +func (x *BatchHeader) Reset() { + *x = BatchHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_common_v2_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchHeader) ProtoMessage() {} + +func (x *BatchHeader) ProtoReflect() protoreflect.Message { + mi := &file_common_v2_common_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchHeader.ProtoReflect.Descriptor instead. +func (*BatchHeader) Descriptor() ([]byte, []int) { + return file_common_v2_common_proto_rawDescGZIP(), []int{2} +} + +func (x *BatchHeader) GetBatchRoot() []byte { + if x != nil { + return x.BatchRoot + } + return nil +} + +func (x *BatchHeader) GetReferenceBlockNumber() uint64 { if x != nil { return x.ReferenceBlockNumber } return 0 } -func (x *BlobCertificate) GetRelays() []uint32 { +// Batch is a batch of blob certificates +type Batch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // header contains metadata about the batch + Header *BatchHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + // blob_certificates is the list of blob certificates in the batch + BlobCertificates []*BlobCertificate `protobuf:"bytes,2,rep,name=blob_certificates,json=blobCertificates,proto3" json:"blob_certificates,omitempty"` +} + +func (x *Batch) Reset() { + *x = Batch{} + if protoimpl.UnsafeEnabled { + mi := &file_common_v2_common_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Batch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Batch) ProtoMessage() {} + +func (x *Batch) ProtoReflect() protoreflect.Message { + mi := &file_common_v2_common_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Batch.ProtoReflect.Descriptor instead. +func (*Batch) Descriptor() ([]byte, []int) { + return file_common_v2_common_proto_rawDescGZIP(), []int{3} +} + +func (x *Batch) GetHeader() *BatchHeader { if x != nil { - return x.Relays + return x.Header + } + return nil +} + +func (x *Batch) GetBlobCertificates() []*BlobCertificate { + if x != nil { + return x.BlobCertificates } return nil } @@ -186,17 +294,28 @@ var file_common_v2_common_proto_rawDesc = []byte{ 0x6e, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x97, 0x01, 0x0a, - 0x0f, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x12, 0x36, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0a, 0x62, 0x6c, - 0x6f, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x61, 0x0a, 0x0f, + 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, + 0x36, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0a, 0x62, 0x6c, 0x6f, + 0x62, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x22, + 0x62, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x34, 0x0a, + 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x05, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2e, 0x0a, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x47, 0x0a, + 0x11, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x61, 0x79, 0x72, 0x2d, 0x4c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, @@ -215,22 +334,26 @@ func file_common_v2_common_proto_rawDescGZIP() []byte { return file_common_v2_common_proto_rawDescData } -var file_common_v2_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_common_v2_common_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_common_v2_common_proto_goTypes = []interface{}{ (*BlobHeader)(nil), // 0: common.v2.BlobHeader (*BlobCertificate)(nil), // 1: common.v2.BlobCertificate - (*common.BlobCommitment)(nil), // 2: common.BlobCommitment - (*common.PaymentHeader)(nil), // 3: common.PaymentHeader + (*BatchHeader)(nil), // 2: common.v2.BatchHeader + (*Batch)(nil), // 3: common.v2.Batch + (*common.BlobCommitment)(nil), // 4: common.BlobCommitment + (*common.PaymentHeader)(nil), // 5: common.PaymentHeader } var file_common_v2_common_proto_depIdxs = []int32{ - 2, // 0: common.v2.BlobHeader.commitment:type_name -> common.BlobCommitment - 3, // 1: common.v2.BlobHeader.payment_header:type_name -> common.PaymentHeader + 4, // 0: common.v2.BlobHeader.commitment:type_name -> common.BlobCommitment + 5, // 1: common.v2.BlobHeader.payment_header:type_name -> common.PaymentHeader 0, // 2: common.v2.BlobCertificate.blob_header:type_name -> common.v2.BlobHeader - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 2, // 3: common.v2.Batch.header:type_name -> common.v2.BatchHeader + 1, // 4: common.v2.Batch.blob_certificates:type_name -> common.v2.BlobCertificate + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_common_v2_common_proto_init() } @@ -263,6 +386,30 @@ func file_common_v2_common_proto_init() { return nil } } + file_common_v2_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_v2_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Batch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -270,7 +417,7 @@ func file_common_v2_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_v2_common_proto_rawDesc, NumEnums: 0, - NumMessages: 2, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, diff --git a/api/grpc/disperser/v2/disperser_v2.pb.go b/api/grpc/disperser/v2/disperser_v2.pb.go index 7efc06dcc4..1ddcf05c56 100644 --- a/api/grpc/disperser/v2/disperser_v2.pb.go +++ b/api/grpc/disperser/v2/disperser_v2.pb.go @@ -269,8 +269,9 @@ type BlobStatusReply struct { // The status of the blob. Status BlobStatus `protobuf:"varint,1,opt,name=status,proto3,enum=disperser.v2.BlobStatus" json:"status,omitempty"` - // The signed blob certificate - SignedCertificate *SignedCertificate `protobuf:"bytes,2,opt,name=signed_certificate,json=signedCertificate,proto3" json:"signed_certificate,omitempty"` + // The signed batch + SignedBatch *SignedBatch `protobuf:"bytes,2,opt,name=signed_batch,json=signedBatch,proto3" json:"signed_batch,omitempty"` + BlobVerificationInfo *BlobVerificationInfo `protobuf:"bytes,3,opt,name=blob_verification_info,json=blobVerificationInfo,proto3" json:"blob_verification_info,omitempty"` } func (x *BlobStatusReply) Reset() { @@ -312,9 +313,16 @@ func (x *BlobStatusReply) GetStatus() BlobStatus { return BlobStatus_UNKNOWN } -func (x *BlobStatusReply) GetSignedCertificate() *SignedCertificate { +func (x *BlobStatusReply) GetSignedBatch() *SignedBatch { if x != nil { - return x.SignedCertificate + return x.SignedBatch + } + return nil +} + +func (x *BlobStatusReply) GetBlobVerificationInfo() *BlobVerificationInfo { + if x != nil { + return x.BlobVerificationInfo } return nil } @@ -415,17 +423,20 @@ func (x *BlobCommitmentReply) GetBlobCommitment() *common.BlobCommitment { return nil } -type SignedCertificate struct { +// SignedBatch is a batch of blobs with a signature. +type SignedBatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BlobCertificate *v2.BlobCertificate `protobuf:"bytes,1,opt,name=blob_certificate,json=blobCertificate,proto3" json:"blob_certificate,omitempty"` - NonSignerStakesAndSignature *Attestation `protobuf:"bytes,2,opt,name=non_signer_stakes_and_signature,json=nonSignerStakesAndSignature,proto3" json:"non_signer_stakes_and_signature,omitempty"` + // header contains metadata about the batch + Header *v2.BatchHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` + // attestation on the batch + NonSignerStakesAndSignature *Attestation `protobuf:"bytes,2,opt,name=non_signer_stakes_and_signature,json=nonSignerStakesAndSignature,proto3" json:"non_signer_stakes_and_signature,omitempty"` } -func (x *SignedCertificate) Reset() { - *x = SignedCertificate{} +func (x *SignedBatch) Reset() { + *x = SignedBatch{} if protoimpl.UnsafeEnabled { mi := &file_disperser_v2_disperser_v2_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -433,13 +444,13 @@ func (x *SignedCertificate) Reset() { } } -func (x *SignedCertificate) String() string { +func (x *SignedBatch) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SignedCertificate) ProtoMessage() {} +func (*SignedBatch) ProtoMessage() {} -func (x *SignedCertificate) ProtoReflect() protoreflect.Message { +func (x *SignedBatch) ProtoReflect() protoreflect.Message { mi := &file_disperser_v2_disperser_v2_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -451,25 +462,91 @@ func (x *SignedCertificate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SignedCertificate.ProtoReflect.Descriptor instead. -func (*SignedCertificate) Descriptor() ([]byte, []int) { +// Deprecated: Use SignedBatch.ProtoReflect.Descriptor instead. +func (*SignedBatch) Descriptor() ([]byte, []int) { return file_disperser_v2_disperser_v2_proto_rawDescGZIP(), []int{6} } -func (x *SignedCertificate) GetBlobCertificate() *v2.BlobCertificate { +func (x *SignedBatch) GetHeader() *v2.BatchHeader { if x != nil { - return x.BlobCertificate + return x.Header } return nil } -func (x *SignedCertificate) GetNonSignerStakesAndSignature() *Attestation { +func (x *SignedBatch) GetNonSignerStakesAndSignature() *Attestation { if x != nil { return x.NonSignerStakesAndSignature } return nil } +// BlobVerificationInfo is the information needed to verify the inclusion of a blob in a batch. +type BlobVerificationInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlobCertificate *v2.BlobCertificate `protobuf:"bytes,1,opt,name=blob_certificate,json=blobCertificate,proto3" json:"blob_certificate,omitempty"` + // blob_index is the index of the blob in the batch + BlobIndex uint32 `protobuf:"varint,2,opt,name=blob_index,json=blobIndex,proto3" json:"blob_index,omitempty"` + // inclusion_proof is the inclusion proof of the blob in the batch + InclusionProof []byte `protobuf:"bytes,3,opt,name=inclusion_proof,json=inclusionProof,proto3" json:"inclusion_proof,omitempty"` +} + +func (x *BlobVerificationInfo) Reset() { + *x = BlobVerificationInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_disperser_v2_disperser_v2_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlobVerificationInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlobVerificationInfo) ProtoMessage() {} + +func (x *BlobVerificationInfo) ProtoReflect() protoreflect.Message { + mi := &file_disperser_v2_disperser_v2_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlobVerificationInfo.ProtoReflect.Descriptor instead. +func (*BlobVerificationInfo) Descriptor() ([]byte, []int) { + return file_disperser_v2_disperser_v2_proto_rawDescGZIP(), []int{7} +} + +func (x *BlobVerificationInfo) GetBlobCertificate() *v2.BlobCertificate { + if x != nil { + return x.BlobCertificate + } + return nil +} + +func (x *BlobVerificationInfo) GetBlobIndex() uint32 { + if x != nil { + return x.BlobIndex + } + return 0 +} + +func (x *BlobVerificationInfo) GetInclusionProof() []byte { + if x != nil { + return x.InclusionProof + } + return nil +} + type Attestation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -488,7 +565,7 @@ type Attestation struct { func (x *Attestation) Reset() { *x = Attestation{} if protoimpl.UnsafeEnabled { - mi := &file_disperser_v2_disperser_v2_proto_msgTypes[7] + mi := &file_disperser_v2_disperser_v2_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -501,7 +578,7 @@ func (x *Attestation) String() string { func (*Attestation) ProtoMessage() {} func (x *Attestation) ProtoReflect() protoreflect.Message { - mi := &file_disperser_v2_disperser_v2_proto_msgTypes[7] + mi := &file_disperser_v2_disperser_v2_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -514,7 +591,7 @@ func (x *Attestation) ProtoReflect() protoreflect.Message { // Deprecated: Use Attestation.ProtoReflect.Descriptor instead. func (*Attestation) Descriptor() ([]byte, []int) { - return file_disperser_v2_disperser_v2_proto_rawDescGZIP(), []int{7} + return file_disperser_v2_disperser_v2_proto_rawDescGZIP(), []int{8} } func (x *Attestation) GetNonSignerQuorumBitmapIndices() []uint32 { @@ -584,7 +661,7 @@ type NonSignerStakeIndicesForQuorum struct { func (x *NonSignerStakeIndicesForQuorum) Reset() { *x = NonSignerStakeIndicesForQuorum{} if protoimpl.UnsafeEnabled { - mi := &file_disperser_v2_disperser_v2_proto_msgTypes[8] + mi := &file_disperser_v2_disperser_v2_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -597,7 +674,7 @@ func (x *NonSignerStakeIndicesForQuorum) String() string { func (*NonSignerStakeIndicesForQuorum) ProtoMessage() {} func (x *NonSignerStakeIndicesForQuorum) ProtoReflect() protoreflect.Message { - mi := &file_disperser_v2_disperser_v2_proto_msgTypes[8] + mi := &file_disperser_v2_disperser_v2_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -610,7 +687,7 @@ func (x *NonSignerStakeIndicesForQuorum) ProtoReflect() protoreflect.Message { // Deprecated: Use NonSignerStakeIndicesForQuorum.ProtoReflect.Descriptor instead. func (*NonSignerStakeIndicesForQuorum) Descriptor() ([]byte, []int) { - return file_disperser_v2_disperser_v2_proto_rawDescGZIP(), []int{8} + return file_disperser_v2_disperser_v2_proto_rawDescGZIP(), []int{9} } func (x *NonSignerStakeIndicesForQuorum) GetIndices() []uint32 { @@ -644,92 +721,106 @@ var file_disperser_v2_disperser_v2_proto_rawDesc = []byte{ 0x79, 0x22, 0x2e, 0x0a, 0x11, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, - 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x79, 0x22, 0xdb, 0x01, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4e, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x52, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x2b, 0x0a, 0x15, 0x42, 0x6c, 0x6f, 0x62, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x56, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x0f, 0x62, - 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, - 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x62, 0x6c, - 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xbb, 0x01, 0x0a, - 0x11, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x62, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x1f, 0x6e, 0x6f, 0x6e, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x5f, 0x61, - 0x6e, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x6e, - 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x41, 0x6e, - 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x87, 0x03, 0x0a, 0x0b, 0x41, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x1c, 0x6e, 0x6f, - 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x42, 0x69, 0x74, - 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x1c, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2a, - 0x0a, 0x10, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, - 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, - 0x6f, 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, - 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, - 0x6b, 0x47, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x61, 0x70, 0x6b, 0x47, 0x32, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x41, 0x70, 0x6b, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x49, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, - 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0x12, 0x62, 0x0a, 0x15, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4e, - 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, - 0x69, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x52, 0x15, 0x6e, - 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, - 0x69, 0x63, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x1e, 0x4e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, - 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, - 0x2a, 0x6a, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, - 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x51, - 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x43, 0x4f, 0x44, - 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, - 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x5f, - 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x53, 0x10, 0x05, 0x32, 0x93, 0x02, 0x0a, - 0x09, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x0c, 0x44, 0x69, - 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x21, 0x2e, 0x64, 0x69, 0x73, - 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, - 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x58, 0x0a, 0x16, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x62, 0x6c, 0x6f, 0x62, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x2b, 0x0a, 0x15, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x56, 0x0a, 0x13, + 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x2e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x1f, 0x6e, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x14, 0x42, 0x6c, 0x6f, 0x62, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x45, + 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x62, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x87, 0x03, + 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, + 0x1c, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x1c, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x51, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x6e, 0x6f, 0x6e, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x0a, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x70, 0x6b, 0x47, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x61, 0x70, + 0x6b, 0x47, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x71, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x41, 0x70, 0x6b, 0x49, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x15, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x4e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, + 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x52, 0x15, 0x6e, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, + 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x1e, 0x4e, 0x6f, 0x6e, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, + 0x46, 0x6f, 0x72, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x2a, 0x6a, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, + 0x43, 0x4f, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x45, 0x52, 0x54, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, + 0x4e, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x53, 0x10, 0x05, 0x32, + 0x93, 0x02, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x12, 0x54, 0x0a, + 0x0c, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x21, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x69, 0x73, - 0x70, 0x65, 0x72, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, - 0x12, 0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, - 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, - 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x61, 0x79, 0x72, 0x2d, 0x4c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x69, 0x67, 0x65, 0x6e, - 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x64, 0x69, 0x73, 0x70, - 0x65, 0x72, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x65, 0x72, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, + 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x64, 0x69, + 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x61, 0x79, 0x72, 0x2d, 0x4c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x69, + 0x67, 0x65, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x64, + 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -745,7 +836,7 @@ func file_disperser_v2_disperser_v2_proto_rawDescGZIP() []byte { } var file_disperser_v2_disperser_v2_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_disperser_v2_disperser_v2_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_disperser_v2_disperser_v2_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_disperser_v2_disperser_v2_proto_goTypes = []interface{}{ (BlobStatus)(0), // 0: disperser.v2.BlobStatus (*DisperseBlobRequest)(nil), // 1: disperser.v2.DisperseBlobRequest @@ -754,33 +845,37 @@ var file_disperser_v2_disperser_v2_proto_goTypes = []interface{}{ (*BlobStatusReply)(nil), // 4: disperser.v2.BlobStatusReply (*BlobCommitmentRequest)(nil), // 5: disperser.v2.BlobCommitmentRequest (*BlobCommitmentReply)(nil), // 6: disperser.v2.BlobCommitmentReply - (*SignedCertificate)(nil), // 7: disperser.v2.SignedCertificate - (*Attestation)(nil), // 8: disperser.v2.Attestation - (*NonSignerStakeIndicesForQuorum)(nil), // 9: disperser.v2.NonSignerStakeIndicesForQuorum - (*v2.BlobHeader)(nil), // 10: common.v2.BlobHeader - (*common.BlobCommitment)(nil), // 11: common.BlobCommitment - (*v2.BlobCertificate)(nil), // 12: common.v2.BlobCertificate + (*SignedBatch)(nil), // 7: disperser.v2.SignedBatch + (*BlobVerificationInfo)(nil), // 8: disperser.v2.BlobVerificationInfo + (*Attestation)(nil), // 9: disperser.v2.Attestation + (*NonSignerStakeIndicesForQuorum)(nil), // 10: disperser.v2.NonSignerStakeIndicesForQuorum + (*v2.BlobHeader)(nil), // 11: common.v2.BlobHeader + (*common.BlobCommitment)(nil), // 12: common.BlobCommitment + (*v2.BatchHeader)(nil), // 13: common.v2.BatchHeader + (*v2.BlobCertificate)(nil), // 14: common.v2.BlobCertificate } var file_disperser_v2_disperser_v2_proto_depIdxs = []int32{ - 10, // 0: disperser.v2.DisperseBlobRequest.blob_header:type_name -> common.v2.BlobHeader + 11, // 0: disperser.v2.DisperseBlobRequest.blob_header:type_name -> common.v2.BlobHeader 0, // 1: disperser.v2.DisperseBlobReply.result:type_name -> disperser.v2.BlobStatus 0, // 2: disperser.v2.BlobStatusReply.status:type_name -> disperser.v2.BlobStatus - 7, // 3: disperser.v2.BlobStatusReply.signed_certificate:type_name -> disperser.v2.SignedCertificate - 11, // 4: disperser.v2.BlobCommitmentReply.blob_commitment:type_name -> common.BlobCommitment - 12, // 5: disperser.v2.SignedCertificate.blob_certificate:type_name -> common.v2.BlobCertificate - 8, // 6: disperser.v2.SignedCertificate.non_signer_stakes_and_signature:type_name -> disperser.v2.Attestation - 9, // 7: disperser.v2.Attestation.nonSignerStakeIndices:type_name -> disperser.v2.NonSignerStakeIndicesForQuorum - 1, // 8: disperser.v2.Disperser.DisperseBlob:input_type -> disperser.v2.DisperseBlobRequest - 3, // 9: disperser.v2.Disperser.GetBlobStatus:input_type -> disperser.v2.BlobStatusRequest - 5, // 10: disperser.v2.Disperser.GetBlobCommitment:input_type -> disperser.v2.BlobCommitmentRequest - 2, // 11: disperser.v2.Disperser.DisperseBlob:output_type -> disperser.v2.DisperseBlobReply - 4, // 12: disperser.v2.Disperser.GetBlobStatus:output_type -> disperser.v2.BlobStatusReply - 6, // 13: disperser.v2.Disperser.GetBlobCommitment:output_type -> disperser.v2.BlobCommitmentReply - 11, // [11:14] is the sub-list for method output_type - 8, // [8:11] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 7, // 3: disperser.v2.BlobStatusReply.signed_batch:type_name -> disperser.v2.SignedBatch + 8, // 4: disperser.v2.BlobStatusReply.blob_verification_info:type_name -> disperser.v2.BlobVerificationInfo + 12, // 5: disperser.v2.BlobCommitmentReply.blob_commitment:type_name -> common.BlobCommitment + 13, // 6: disperser.v2.SignedBatch.header:type_name -> common.v2.BatchHeader + 9, // 7: disperser.v2.SignedBatch.non_signer_stakes_and_signature:type_name -> disperser.v2.Attestation + 14, // 8: disperser.v2.BlobVerificationInfo.blob_certificate:type_name -> common.v2.BlobCertificate + 10, // 9: disperser.v2.Attestation.nonSignerStakeIndices:type_name -> disperser.v2.NonSignerStakeIndicesForQuorum + 1, // 10: disperser.v2.Disperser.DisperseBlob:input_type -> disperser.v2.DisperseBlobRequest + 3, // 11: disperser.v2.Disperser.GetBlobStatus:input_type -> disperser.v2.BlobStatusRequest + 5, // 12: disperser.v2.Disperser.GetBlobCommitment:input_type -> disperser.v2.BlobCommitmentRequest + 2, // 13: disperser.v2.Disperser.DisperseBlob:output_type -> disperser.v2.DisperseBlobReply + 4, // 14: disperser.v2.Disperser.GetBlobStatus:output_type -> disperser.v2.BlobStatusReply + 6, // 15: disperser.v2.Disperser.GetBlobCommitment:output_type -> disperser.v2.BlobCommitmentReply + 13, // [13:16] is the sub-list for method output_type + 10, // [10:13] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_disperser_v2_disperser_v2_proto_init() } @@ -862,7 +957,7 @@ func file_disperser_v2_disperser_v2_proto_init() { } } file_disperser_v2_disperser_v2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignedCertificate); i { + switch v := v.(*SignedBatch); i { case 0: return &v.state case 1: @@ -874,7 +969,7 @@ func file_disperser_v2_disperser_v2_proto_init() { } } file_disperser_v2_disperser_v2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Attestation); i { + switch v := v.(*BlobVerificationInfo); i { case 0: return &v.state case 1: @@ -886,6 +981,18 @@ func file_disperser_v2_disperser_v2_proto_init() { } } file_disperser_v2_disperser_v2_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Attestation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_disperser_v2_disperser_v2_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NonSignerStakeIndicesForQuorum); i { case 0: return &v.state @@ -904,7 +1011,7 @@ func file_disperser_v2_disperser_v2_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_disperser_v2_disperser_v2_proto_rawDesc, NumEnums: 1, - NumMessages: 9, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/api/grpc/node/v2/node_v2.pb.go b/api/grpc/node/v2/node_v2.pb.go index 7dcd5ad931..98c98ee40c 100644 --- a/api/grpc/node/v2/node_v2.pb.go +++ b/api/grpc/node/v2/node_v2.pb.go @@ -10,7 +10,6 @@ import ( v2 "github.com/Layr-Labs/eigenda/api/grpc/common/v2" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -27,8 +26,8 @@ type StoreChunksRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // list of blob certificates to process - BlobCertificates []*v2.BlobCertificate `protobuf:"bytes,1,rep,name=blob_certificates,json=blobCertificates,proto3" json:"blob_certificates,omitempty"` + // batch of blobs to store + Batch *v2.Batch `protobuf:"bytes,1,opt,name=batch,proto3" json:"batch,omitempty"` } func (x *StoreChunksRequest) Reset() { @@ -63,9 +62,9 @@ func (*StoreChunksRequest) Descriptor() ([]byte, []int) { return file_node_v2_node_v2_proto_rawDescGZIP(), []int{0} } -func (x *StoreChunksRequest) GetBlobCertificates() []*v2.BlobCertificate { +func (x *StoreChunksRequest) GetBatch() *v2.Batch { if x != nil { - return x.BlobCertificates + return x.Batch } return nil } @@ -75,7 +74,7 @@ type StoreChunksReply struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Signatures []*wrapperspb.BytesValue `protobuf:"bytes,1,rep,name=signatures,proto3" json:"signatures,omitempty"` + Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` } func (x *StoreChunksReply) Reset() { @@ -110,9 +109,9 @@ func (*StoreChunksReply) Descriptor() ([]byte, []int) { return file_node_v2_node_v2_proto_rawDescGZIP(), []int{1} } -func (x *StoreChunksReply) GetSignatures() []*wrapperspb.BytesValue { +func (x *StoreChunksReply) GetSignature() []byte { if x != nil { - return x.Signatures + return x.Signature } return nil } @@ -223,100 +222,6 @@ func (x *GetChunksReply) GetChunks() [][]byte { return nil } -type GetBlobCertificateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BlobKey []byte `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"` -} - -func (x *GetBlobCertificateRequest) Reset() { - *x = GetBlobCertificateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v2_node_v2_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetBlobCertificateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBlobCertificateRequest) ProtoMessage() {} - -func (x *GetBlobCertificateRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v2_node_v2_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBlobCertificateRequest.ProtoReflect.Descriptor instead. -func (*GetBlobCertificateRequest) Descriptor() ([]byte, []int) { - return file_node_v2_node_v2_proto_rawDescGZIP(), []int{4} -} - -func (x *GetBlobCertificateRequest) GetBlobKey() []byte { - if x != nil { - return x.BlobKey - } - return nil -} - -type GetBlobCertificateReply struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BlobCertificate *v2.BlobCertificate `protobuf:"bytes,1,opt,name=blob_certificate,json=blobCertificate,proto3" json:"blob_certificate,omitempty"` -} - -func (x *GetBlobCertificateReply) Reset() { - *x = GetBlobCertificateReply{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v2_node_v2_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetBlobCertificateReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBlobCertificateReply) ProtoMessage() {} - -func (x *GetBlobCertificateReply) ProtoReflect() protoreflect.Message { - mi := &file_node_v2_node_v2_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetBlobCertificateReply.ProtoReflect.Descriptor instead. -func (*GetBlobCertificateReply) Descriptor() ([]byte, []int) { - return file_node_v2_node_v2_proto_rawDescGZIP(), []int{5} -} - -func (x *GetBlobCertificateReply) GetBlobCertificate() *v2.BlobCertificate { - if x != nil { - return x.BlobCertificate - } - return nil -} - // Node info request type NodeInfoRequest struct { state protoimpl.MessageState @@ -327,7 +232,7 @@ type NodeInfoRequest struct { func (x *NodeInfoRequest) Reset() { *x = NodeInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_node_v2_node_v2_proto_msgTypes[6] + mi := &file_node_v2_node_v2_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -340,7 +245,7 @@ func (x *NodeInfoRequest) String() string { func (*NodeInfoRequest) ProtoMessage() {} func (x *NodeInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v2_node_v2_proto_msgTypes[6] + mi := &file_node_v2_node_v2_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -353,7 +258,7 @@ func (x *NodeInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfoRequest.ProtoReflect.Descriptor instead. func (*NodeInfoRequest) Descriptor() ([]byte, []int) { - return file_node_v2_node_v2_proto_rawDescGZIP(), []int{6} + return file_node_v2_node_v2_proto_rawDescGZIP(), []int{4} } // Node info reply @@ -372,7 +277,7 @@ type NodeInfoReply struct { func (x *NodeInfoReply) Reset() { *x = NodeInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_node_v2_node_v2_proto_msgTypes[7] + mi := &file_node_v2_node_v2_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -385,7 +290,7 @@ func (x *NodeInfoReply) String() string { func (*NodeInfoReply) ProtoMessage() {} func (x *NodeInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_node_v2_node_v2_proto_msgTypes[7] + mi := &file_node_v2_node_v2_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -398,7 +303,7 @@ func (x *NodeInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfoReply.ProtoReflect.Descriptor instead. func (*NodeInfoReply) Descriptor() ([]byte, []int) { - return file_node_v2_node_v2_proto_rawDescGZIP(), []int{7} + return file_node_v2_node_v2_proto_rawDescGZIP(), []int{5} } func (x *NodeInfoReply) GetSemver() string { @@ -441,75 +346,54 @@ var File_node_v2_node_v2_proto protoreflect.FileDescriptor var file_node_v2_node_v2_proto_rawDesc = []byte{ 0x0a, 0x15, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, - 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5d, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, - 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3b, 0x0a, 0x0a, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3c, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, + 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x22, 0x30, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x4a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x49, 0x64, 0x22, 0x28, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x22, 0x36, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, - 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, - 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79, 0x22, 0x60, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x45, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x0d, - 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x6d, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x6d, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, 0x6d, - 0x5f, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x43, - 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x32, - 0x94, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x12, 0x47, 0x0a, - 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x1b, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x75, 0x6e, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x32, 0xec, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, - 0x73, 0x12, 0x19, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x6c, - 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x6c, 0x6f, 0x62, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x61, 0x79, 0x72, 0x2d, 0x4c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x69, - 0x67, 0x65, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6e, - 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x22, 0x11, + 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6d, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6d, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x61, + 0x72, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, + 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, + 0x17, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x43, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x32, 0x94, 0x01, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x70, 0x65, 0x72, + 0x73, 0x61, 0x6c, 0x12, 0x47, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x73, 0x12, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x08, + 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x32, 0x8e, 0x01, 0x0a, + 0x09, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, + 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x2f, 0x5a, + 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x61, 0x79, 0x72, + 0x2d, 0x4c, 0x61, 0x62, 0x73, 0x2f, 0x65, 0x69, 0x67, 0x65, 0x6e, 0x64, 0x61, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x32, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -524,38 +408,31 @@ func file_node_v2_node_v2_proto_rawDescGZIP() []byte { return file_node_v2_node_v2_proto_rawDescData } -var file_node_v2_node_v2_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_node_v2_node_v2_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_node_v2_node_v2_proto_goTypes = []interface{}{ - (*StoreChunksRequest)(nil), // 0: node.v2.StoreChunksRequest - (*StoreChunksReply)(nil), // 1: node.v2.StoreChunksReply - (*GetChunksRequest)(nil), // 2: node.v2.GetChunksRequest - (*GetChunksReply)(nil), // 3: node.v2.GetChunksReply - (*GetBlobCertificateRequest)(nil), // 4: node.v2.GetBlobCertificateRequest - (*GetBlobCertificateReply)(nil), // 5: node.v2.GetBlobCertificateReply - (*NodeInfoRequest)(nil), // 6: node.v2.NodeInfoRequest - (*NodeInfoReply)(nil), // 7: node.v2.NodeInfoReply - (*v2.BlobCertificate)(nil), // 8: common.v2.BlobCertificate - (*wrapperspb.BytesValue)(nil), // 9: google.protobuf.BytesValue + (*StoreChunksRequest)(nil), // 0: node.v2.StoreChunksRequest + (*StoreChunksReply)(nil), // 1: node.v2.StoreChunksReply + (*GetChunksRequest)(nil), // 2: node.v2.GetChunksRequest + (*GetChunksReply)(nil), // 3: node.v2.GetChunksReply + (*NodeInfoRequest)(nil), // 4: node.v2.NodeInfoRequest + (*NodeInfoReply)(nil), // 5: node.v2.NodeInfoReply + (*v2.Batch)(nil), // 6: common.v2.Batch } var file_node_v2_node_v2_proto_depIdxs = []int32{ - 8, // 0: node.v2.StoreChunksRequest.blob_certificates:type_name -> common.v2.BlobCertificate - 9, // 1: node.v2.StoreChunksReply.signatures:type_name -> google.protobuf.BytesValue - 8, // 2: node.v2.GetBlobCertificateReply.blob_certificate:type_name -> common.v2.BlobCertificate - 0, // 3: node.v2.Dispersal.StoreChunks:input_type -> node.v2.StoreChunksRequest - 6, // 4: node.v2.Dispersal.NodeInfo:input_type -> node.v2.NodeInfoRequest - 2, // 5: node.v2.Retrieval.GetChunks:input_type -> node.v2.GetChunksRequest - 4, // 6: node.v2.Retrieval.GetBlobCertificate:input_type -> node.v2.GetBlobCertificateRequest - 6, // 7: node.v2.Retrieval.NodeInfo:input_type -> node.v2.NodeInfoRequest - 1, // 8: node.v2.Dispersal.StoreChunks:output_type -> node.v2.StoreChunksReply - 7, // 9: node.v2.Dispersal.NodeInfo:output_type -> node.v2.NodeInfoReply - 3, // 10: node.v2.Retrieval.GetChunks:output_type -> node.v2.GetChunksReply - 5, // 11: node.v2.Retrieval.GetBlobCertificate:output_type -> node.v2.GetBlobCertificateReply - 7, // 12: node.v2.Retrieval.NodeInfo:output_type -> node.v2.NodeInfoReply - 8, // [8:13] is the sub-list for method output_type - 3, // [3:8] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 6, // 0: node.v2.StoreChunksRequest.batch:type_name -> common.v2.Batch + 0, // 1: node.v2.Dispersal.StoreChunks:input_type -> node.v2.StoreChunksRequest + 4, // 2: node.v2.Dispersal.NodeInfo:input_type -> node.v2.NodeInfoRequest + 2, // 3: node.v2.Retrieval.GetChunks:input_type -> node.v2.GetChunksRequest + 4, // 4: node.v2.Retrieval.NodeInfo:input_type -> node.v2.NodeInfoRequest + 1, // 5: node.v2.Dispersal.StoreChunks:output_type -> node.v2.StoreChunksReply + 5, // 6: node.v2.Dispersal.NodeInfo:output_type -> node.v2.NodeInfoReply + 3, // 7: node.v2.Retrieval.GetChunks:output_type -> node.v2.GetChunksReply + 5, // 8: node.v2.Retrieval.NodeInfo:output_type -> node.v2.NodeInfoReply + 5, // [5:9] is the sub-list for method output_type + 1, // [1:5] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_node_v2_node_v2_proto_init() } @@ -613,30 +490,6 @@ func file_node_v2_node_v2_proto_init() { } } file_node_v2_node_v2_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlobCertificateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v2_node_v2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlobCertificateReply); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v2_node_v2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeInfoRequest); i { case 0: return &v.state @@ -648,7 +501,7 @@ func file_node_v2_node_v2_proto_init() { return nil } } - file_node_v2_node_v2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_node_v2_node_v2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeInfoReply); i { case 0: return &v.state @@ -667,7 +520,7 @@ func file_node_v2_node_v2_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_node_v2_node_v2_proto_rawDesc, NumEnums: 0, - NumMessages: 8, + NumMessages: 6, NumExtensions: 0, NumServices: 2, }, diff --git a/api/grpc/node/v2/node_v2_grpc.pb.go b/api/grpc/node/v2/node_v2_grpc.pb.go index d356d3a0d8..3fbfba1869 100644 --- a/api/grpc/node/v2/node_v2_grpc.pb.go +++ b/api/grpc/node/v2/node_v2_grpc.pb.go @@ -146,9 +146,8 @@ var Dispersal_ServiceDesc = grpc.ServiceDesc{ } const ( - Retrieval_GetChunks_FullMethodName = "/node.v2.Retrieval/GetChunks" - Retrieval_GetBlobCertificate_FullMethodName = "/node.v2.Retrieval/GetBlobCertificate" - Retrieval_NodeInfo_FullMethodName = "/node.v2.Retrieval/NodeInfo" + Retrieval_GetChunks_FullMethodName = "/node.v2.Retrieval/GetChunks" + Retrieval_NodeInfo_FullMethodName = "/node.v2.Retrieval/NodeInfo" ) // RetrievalClient is the client API for Retrieval service. @@ -157,8 +156,6 @@ const ( type RetrievalClient interface { // GetChunks retrieves the chunks for a blob custodied at the Node. GetChunks(ctx context.Context, in *GetChunksRequest, opts ...grpc.CallOption) (*GetChunksReply, error) - // GetBlobHeader is similar to GetChunks, this just returns the header of the blob. - GetBlobCertificate(ctx context.Context, in *GetBlobCertificateRequest, opts ...grpc.CallOption) (*GetBlobCertificateReply, error) // Retrieve node info metadata NodeInfo(ctx context.Context, in *NodeInfoRequest, opts ...grpc.CallOption) (*NodeInfoReply, error) } @@ -180,15 +177,6 @@ func (c *retrievalClient) GetChunks(ctx context.Context, in *GetChunksRequest, o return out, nil } -func (c *retrievalClient) GetBlobCertificate(ctx context.Context, in *GetBlobCertificateRequest, opts ...grpc.CallOption) (*GetBlobCertificateReply, error) { - out := new(GetBlobCertificateReply) - err := c.cc.Invoke(ctx, Retrieval_GetBlobCertificate_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *retrievalClient) NodeInfo(ctx context.Context, in *NodeInfoRequest, opts ...grpc.CallOption) (*NodeInfoReply, error) { out := new(NodeInfoReply) err := c.cc.Invoke(ctx, Retrieval_NodeInfo_FullMethodName, in, out, opts...) @@ -204,8 +192,6 @@ func (c *retrievalClient) NodeInfo(ctx context.Context, in *NodeInfoRequest, opt type RetrievalServer interface { // GetChunks retrieves the chunks for a blob custodied at the Node. GetChunks(context.Context, *GetChunksRequest) (*GetChunksReply, error) - // GetBlobHeader is similar to GetChunks, this just returns the header of the blob. - GetBlobCertificate(context.Context, *GetBlobCertificateRequest) (*GetBlobCertificateReply, error) // Retrieve node info metadata NodeInfo(context.Context, *NodeInfoRequest) (*NodeInfoReply, error) mustEmbedUnimplementedRetrievalServer() @@ -218,9 +204,6 @@ type UnimplementedRetrievalServer struct { func (UnimplementedRetrievalServer) GetChunks(context.Context, *GetChunksRequest) (*GetChunksReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetChunks not implemented") } -func (UnimplementedRetrievalServer) GetBlobCertificate(context.Context, *GetBlobCertificateRequest) (*GetBlobCertificateReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetBlobCertificate not implemented") -} func (UnimplementedRetrievalServer) NodeInfo(context.Context, *NodeInfoRequest) (*NodeInfoReply, error) { return nil, status.Errorf(codes.Unimplemented, "method NodeInfo not implemented") } @@ -255,24 +238,6 @@ func _Retrieval_GetChunks_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Retrieval_GetBlobCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBlobCertificateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RetrievalServer).GetBlobCertificate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Retrieval_GetBlobCertificate_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RetrievalServer).GetBlobCertificate(ctx, req.(*GetBlobCertificateRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Retrieval_NodeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NodeInfoRequest) if err := dec(in); err != nil { @@ -302,10 +267,6 @@ var Retrieval_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetChunks", Handler: _Retrieval_GetChunks_Handler, }, - { - MethodName: "GetBlobCertificate", - Handler: _Retrieval_GetBlobCertificate_Handler, - }, { MethodName: "NodeInfo", Handler: _Retrieval_NodeInfo_Handler, diff --git a/api/proto/common/v2/common.proto b/api/proto/common/v2/common.proto index 42a7ed559b..7a2da669fc 100644 --- a/api/proto/common/v2/common.proto +++ b/api/proto/common/v2/common.proto @@ -5,19 +5,34 @@ option go_package = "github.com/Layr-Labs/eigenda/api/grpc/common/v2"; message BlobHeader { - // Blob version - uint32 version = 1; - repeated uint32 quorum_numbers = 2; - common.BlobCommitment commitment = 3; - common.PaymentHeader payment_header = 4; + // Blob version + uint32 version = 1; + repeated uint32 quorum_numbers = 2; + common.BlobCommitment commitment = 3; + common.PaymentHeader payment_header = 4; - // signature over keccak hash of the blob_header that can be verified by blob_header.account_id - bytes signature = 5; + // signature over keccak hash of the blob_header that can be verified by blob_header.account_id + bytes signature = 5; } // BlobCertificate is what gets attested by the network message BlobCertificate { - BlobHeader blob_header = 1; - uint32 reference_block_number = 2; - repeated uint32 relays = 3; + BlobHeader blob_header = 1; + repeated uint32 relays = 3; +} + +// BatchHeader is the header of a batch of blobs +message BatchHeader { + // batch_root is the root of the merkle tree of the hashes of blob certificates in the batch + bytes batch_root = 1; + // reference_block_number is the block number that the state of the batch is based on for attestation + uint64 reference_block_number = 2; +} + +// Batch is a batch of blob certificates +message Batch { + // header contains metadata about the batch + BatchHeader header = 1; + // blob_certificates is the list of blob certificates in the batch + repeated BlobCertificate blob_certificates = 2; } diff --git a/api/proto/disperser/v2/disperser_v2.proto b/api/proto/disperser/v2/disperser_v2.proto index 6bf0cf9b0c..900e49a417 100644 --- a/api/proto/disperser/v2/disperser_v2.proto +++ b/api/proto/disperser/v2/disperser_v2.proto @@ -8,58 +8,59 @@ option go_package = "github.com/Layr-Labs/eigenda/api/grpc/disperser/v2"; // Disperser defines the public APIs for dispersing blobs. service Disperser { - // DisperseBlob accepts blob to disperse from clients. - // This executes the dispersal asynchronously, i.e. it returns once the request - // is accepted. The client could use GetBlobStatus() API to poll the the - // processing status of the blob. - rpc DisperseBlob(DisperseBlobRequest) returns (DisperseBlobReply) {} - - // GetBlobStatus is meant to be polled for the blob status. - rpc GetBlobStatus(BlobStatusRequest) returns (BlobStatusReply) {} - - // GetBlobCommitment is a utility method that calculates commitment for a blob payload. - rpc GetBlobCommitment(BlobCommitmentRequest) returns (BlobCommitmentReply) {} + // DisperseBlob accepts blob to disperse from clients. + // This executes the dispersal asynchronously, i.e. it returns once the request + // is accepted. The client could use GetBlobStatus() API to poll the the + // processing status of the blob. + rpc DisperseBlob(DisperseBlobRequest) returns (DisperseBlobReply) {} + + // GetBlobStatus is meant to be polled for the blob status. + rpc GetBlobStatus(BlobStatusRequest) returns (BlobStatusReply) {} + + // GetBlobCommitment is a utility method that calculates commitment for a blob payload. + rpc GetBlobCommitment(BlobCommitmentRequest) returns (BlobCommitmentReply) {} } // Requests and Replys message DisperseBlobRequest { - // The data to be dispersed. - // The size of data must be <= 16MiB. Every 32 bytes of data is interpreted as an integer in big endian format - // where the lower address has more significant bits. The integer must stay in the valid range to be interpreted - // as a field element on the bn254 curve. The valid range is - // 0 <= x < 21888242871839275222246405745257275088548364400416034343698204186575808495617 - // If any one of the 32 bytes elements is outside the range, the whole request is deemed as invalid, and rejected. - bytes data = 1; - common.v2.BlobHeader blob_header = 2; + // The data to be dispersed. + // The size of data must be <= 16MiB. Every 32 bytes of data is interpreted as an integer in big endian format + // where the lower address has more significant bits. The integer must stay in the valid range to be interpreted + // as a field element on the bn254 curve. The valid range is + // 0 <= x < 21888242871839275222246405745257275088548364400416034343698204186575808495617 + // If any one of the 32 bytes elements is outside the range, the whole request is deemed as invalid, and rejected. + bytes data = 1; + common.v2.BlobHeader blob_header = 2; } message DisperseBlobReply { - // The status of the blob associated with the blob key. - BlobStatus result = 1; - bytes blob_key = 2; + // The status of the blob associated with the blob key. + BlobStatus result = 1; + bytes blob_key = 2; } // BlobStatusRequest is used to query the status of a blob. message BlobStatusRequest { - bytes blob_key = 1; + bytes blob_key = 1; } message BlobStatusReply { - // The status of the blob. - BlobStatus status = 1; - // The signed blob certificate - SignedCertificate signed_certificate = 2; + // The status of the blob. + BlobStatus status = 1; + // The signed batch + SignedBatch signed_batch = 2; + BlobVerificationInfo blob_verification_info = 3; } // Utility method used to generate the commitment of blob given its data. // This can be used to construct BlobHeader.commitment message BlobCommitmentRequest { - bytes data = 1; + bytes data = 1; } message BlobCommitmentReply { - common.BlobCommitment blob_commitment = 1; + common.BlobCommitment blob_commitment = 1; } // Data Types @@ -75,31 +76,43 @@ message BlobCommitmentReply { // - FAILED // - INSUFFICIENT_SIGNATURES enum BlobStatus { - UNKNOWN = 0; + UNKNOWN = 0; - // QUEUED means that the blob has been queued by the disperser for processing - QUEUED = 1; + // QUEUED means that the blob has been queued by the disperser for processing + QUEUED = 1; - // ENCODED means that the blob has been encoded and is ready to be dispersed to DA Nodes - ENCODED = 2; + // ENCODED means that the blob has been encoded and is ready to be dispersed to DA Nodes + ENCODED = 2; - // CERTIFIED means the blob has been dispersed and attested by the DA nodes - CERTIFIED = 3; + // CERTIFIED means the blob has been dispersed and attested by the DA nodes + CERTIFIED = 3; - // FAILED means that the blob has failed permanently (for reasons other than insufficient - // signatures, which is a separate state) - FAILED = 4; + // FAILED means that the blob has failed permanently (for reasons other than insufficient + // signatures, which is a separate state) + FAILED = 4; - // INSUFFICIENT_SIGNATURES means that the confirmation threshold for the blob was not met - // for at least one quorum. - INSUFFICIENT_SIGNATURES = 5; + // INSUFFICIENT_SIGNATURES means that the confirmation threshold for the blob was not met + // for at least one quorum. + INSUFFICIENT_SIGNATURES = 5; } -message SignedCertificate { - common.v2.BlobCertificate blob_certificate = 1; +// SignedBatch is a batch of blobs with a signature. +message SignedBatch { + // header contains metadata about the batch + common.v2.BatchHeader header = 1; + // attestation on the batch Attestation non_signer_stakes_and_signature = 2; } +// BlobVerificationInfo is the information needed to verify the inclusion of a blob in a batch. +message BlobVerificationInfo { + common.v2.BlobCertificate blob_certificate = 1; + // blob_index is the index of the blob in the batch + uint32 blob_index = 2; + // inclusion_proof is the inclusion proof of the blob in the batch + bytes inclusion_proof = 3; +} + message Attestation { repeated uint32 nonSignerQuorumBitmapIndices = 1; repeated bytes nonSignerPubkeys = 2; diff --git a/api/proto/node/v2/node_v2.proto b/api/proto/node/v2/node_v2.proto index 1e31acb9ee..7a13378be4 100644 --- a/api/proto/node/v2/node_v2.proto +++ b/api/proto/node/v2/node_v2.proto @@ -1,6 +1,5 @@ syntax = "proto3"; package node.v2; -import "google/protobuf/wrappers.proto"; import "common/v2/common.proto"; option go_package = "github.com/Layr-Labs/eigenda/api/grpc/node/v2"; @@ -9,49 +8,39 @@ option go_package = "github.com/Layr-Labs/eigenda/api/grpc/node/v2"; // WARNING: the following RPCs are experimental and subject to change. service Dispersal { - rpc StoreChunks(StoreChunksRequest) returns (StoreChunksReply) {} - rpc NodeInfo(NodeInfoRequest) returns (NodeInfoReply) {} + rpc StoreChunks(StoreChunksRequest) returns (StoreChunksReply) {} + rpc NodeInfo(NodeInfoRequest) returns (NodeInfoReply) {} } service Retrieval { - // GetChunks retrieves the chunks for a blob custodied at the Node. - rpc GetChunks(GetChunksRequest) returns (GetChunksReply) {} - // GetBlobHeader is similar to GetChunks, this just returns the header of the blob. - rpc GetBlobCertificate(GetBlobCertificateRequest) returns (GetBlobCertificateReply) {} - // Retrieve node info metadata - rpc NodeInfo(NodeInfoRequest) returns (NodeInfoReply) {} + // GetChunks retrieves the chunks for a blob custodied at the Node. + rpc GetChunks(GetChunksRequest) returns (GetChunksReply) {} + // Retrieve node info metadata + rpc NodeInfo(NodeInfoRequest) returns (NodeInfoReply) {} } // Requests and replies message StoreChunksRequest { - // list of blob certificates to process - repeated common.v2.BlobCertificate blob_certificates = 1; + // batch of blobs to store + common.v2.Batch batch = 1; } message StoreChunksReply { - repeated google.protobuf.BytesValue signatures = 1; + bytes signature = 1; } message GetChunksRequest { - bytes blob_key = 1; - // Which quorum of the blob to retrieve for (note: a blob can have multiple - // quorums and the chunks for different quorums at a Node can be different). - // The ID must be in range [0, 254]. - uint32 quorum_id = 2; + bytes blob_key = 1; + // Which quorum of the blob to retrieve for (note: a blob can have multiple + // quorums and the chunks for different quorums at a Node can be different). + // The ID must be in range [0, 254]. + uint32 quorum_id = 2; } message GetChunksReply { - // All chunks the Node is storing for the requested blob per RetrieveChunksRequest. - repeated bytes chunks = 1; -} - -message GetBlobCertificateRequest { - bytes blob_key = 1; -} - -message GetBlobCertificateReply { - common.v2.BlobCertificate blob_certificate = 1; + // All chunks the Node is storing for the requested blob per RetrieveChunksRequest. + repeated bytes chunks = 1; } // Node info request @@ -60,9 +49,9 @@ message NodeInfoRequest { // Node info reply message NodeInfoReply { - string semver = 1; - string arch = 2; - string os = 3; - uint32 num_cpu = 4; - uint64 mem_bytes = 5; + string semver = 1; + string arch = 2; + string os = 3; + uint32 num_cpu = 4; + uint64 mem_bytes = 5; } diff --git a/core/v2/core_test.go b/core/v2/core_test.go index d5b130b0cc..c119b30c75 100644 --- a/core/v2/core_test.go +++ b/core/v2/core_test.go @@ -84,7 +84,7 @@ func makeTestComponents() (encoding.Prover, encoding.Verifier, error) { return p, v, nil } -func makeTestBlob(t *testing.T, p encoding.Prover, version corev2.BlobVersion, refBlockNumber uint64, length int, quorums []core.QuorumID) (corev2.BlobCertificate, []byte) { +func makeTestBlob(t *testing.T, p encoding.Prover, version corev2.BlobVersion, length int, quorums []core.QuorumID) (corev2.BlobCertificate, []byte) { data := make([]byte, length*31) _, err := rand.Read(data) @@ -105,7 +105,6 @@ func makeTestBlob(t *testing.T, p encoding.Prover, version corev2.BlobVersion, r QuorumNumbers: quorums, BlobCommitments: commitments, }, - ReferenceBlockNumber: refBlockNumber, } return header, data @@ -114,7 +113,13 @@ func makeTestBlob(t *testing.T, p encoding.Prover, version corev2.BlobVersion, r // prepareBlobs takes in multiple blob, encodes them, generates the associated assignments, and the batch header. // These are the products that a disperser will need in order to disperse data to the DA nodes. -func prepareBlobs(t *testing.T, operatorCount uint, certs []corev2.BlobCertificate, blobs [][]byte) (map[core.OperatorID][]*corev2.BlobShard, core.IndexedChainState) { +func prepareBlobs( + t *testing.T, + operatorCount uint, + certs []corev2.BlobCertificate, + blobs [][]byte, + referenceBlockNumber uint64, +) (map[core.OperatorID][]*corev2.BlobShard, core.IndexedChainState) { cst, err := mock.MakeChainDataMock(map[uint8]int{ 0: int(operatorCount), @@ -139,7 +144,7 @@ func prepareBlobs(t *testing.T, operatorCount uint, certs []corev2.BlobCertifica t.Fatal(err) } - state, err := cst.GetOperatorState(context.Background(), uint(cert.ReferenceBlockNumber), header.QuorumNumbers) + state, err := cst.GetOperatorState(context.Background(), uint(referenceBlockNumber), header.QuorumNumbers) if err != nil { t.Fatal(err) } @@ -196,7 +201,12 @@ func prepareBlobs(t *testing.T, operatorCount uint, certs []corev2.BlobCertifica // checkBatchByUniversalVerifier runs the verification logic for each DA node in the current OperatorState, and returns an error if any of // the DA nodes' validation checks fails -func checkBatchByUniversalVerifier(cst core.IndexedChainState, packagedBlobs map[core.OperatorID][]*corev2.BlobShard, pool common.WorkerPool) error { +func checkBatchByUniversalVerifier( + cst core.IndexedChainState, + packagedBlobs map[core.OperatorID][]*corev2.BlobShard, + pool common.WorkerPool, + referenceBlockNumber uint64, +) error { ctx := context.Background() @@ -212,7 +222,7 @@ func checkBatchByUniversalVerifier(cst core.IndexedChainState, packagedBlobs map blobs := packagedBlobs[id] - err := val.ValidateBlobs(ctx, blobs, pool) + err := val.ValidateBlobs(ctx, blobs, pool, referenceBlockNumber) if err != nil { errList = multierror.Append(errList, err) } @@ -236,7 +246,7 @@ func TestValidationSucceeds(t *testing.T) { quorumNumbers := []core.QuorumID{0, 1} - bn := uint64(0) + bn := uint64(1000) version := corev2.BlobVersion(0) @@ -249,16 +259,16 @@ func TestValidationSucceeds(t *testing.T) { blobs := make([][]byte, 0) for _, blobLength := range blobLengths { for i := 0; i < numBlob; i++ { - header, data := makeTestBlob(t, p, version, bn, blobLength, quorumNumbers) + header, data := makeTestBlob(t, p, version, blobLength, quorumNumbers) headers = append(headers, header) blobs = append(blobs, data) } } - packagedBlobs, cst := prepareBlobs(t, operatorCount, headers, blobs) + packagedBlobs, cst := prepareBlobs(t, operatorCount, headers, blobs, bn) t.Run(fmt.Sprintf("universal verifier operatorCount=%v over %v blobs", operatorCount, len(blobs)), func(t *testing.T) { - err := checkBatchByUniversalVerifier(cst, packagedBlobs, pool) + err := checkBatchByUniversalVerifier(cst, packagedBlobs, pool, bn) assert.NoError(t, err) }) diff --git a/core/v2/types.go b/core/v2/types.go index efa50ddc60..b8e54bcd3a 100644 --- a/core/v2/types.go +++ b/core/v2/types.go @@ -292,13 +292,26 @@ type RelayKey uint16 type BlobCertificate struct { BlobHeader *BlobHeader - // ReferenceBlockNumber is the block number of the block at which the operator state will be referenced - ReferenceBlockNumber uint64 - // RelayKeys RelayKeys []RelayKey } +type BatchHeader struct { + BatchRoot [32]byte + ReferenceBlockNumber uint64 +} + +type Batch struct { + BatchHeader *BatchHeader + BlobCertificates []*BlobCertificate +} + +type BlobVerificationInfo struct { + BlobCertificate *BlobCertificate + BlobIndex uint32 + InclusionProof []byte +} + type BlobVersionParameters struct { CodingRate uint32 ReconstructionThreshold float64 diff --git a/core/v2/validator.go b/core/v2/validator.go index 9b96f04c57..de0eab7de5 100644 --- a/core/v2/validator.go +++ b/core/v2/validator.go @@ -73,7 +73,7 @@ func (v *ShardValidator) validateBlobQuorum(quorum core.QuorumID, blob *BlobShar return chunks, &assignment, nil } -func (v *ShardValidator) ValidateBlobs(ctx context.Context, blobs []*BlobShard, pool common.WorkerPool) error { +func (v *ShardValidator) ValidateBlobs(ctx context.Context, blobs []*BlobShard, pool common.WorkerPool, referenceBlockNumber uint64) error { var err error subBatchMap := make(map[encoding.EncodingParams]*encoding.SubBatch) blobCommitmentList := make([]encoding.BlobCommitments, len(blobs)) @@ -83,7 +83,7 @@ func (v *ShardValidator) ValidateBlobs(ctx context.Context, blobs []*BlobShard, return fmt.Errorf("number of bundles (%d) does not match number of quorums (%d)", len(blob.Chunks), len(blob.BlobHeader.QuorumNumbers)) } - state, err := v.chainState.GetOperatorState(ctx, uint(blob.ReferenceBlockNumber), blob.BlobHeader.QuorumNumbers) + state, err := v.chainState.GetOperatorState(ctx, uint(referenceBlockNumber), blob.BlobHeader.QuorumNumbers) if err != nil { return err } diff --git a/disperser/common/v2/blobstore/dynamo_metadata_store_test.go b/disperser/common/v2/blobstore/dynamo_metadata_store_test.go index 25741d7d64..9440050402 100644 --- a/disperser/common/v2/blobstore/dynamo_metadata_store_test.go +++ b/disperser/common/v2/blobstore/dynamo_metadata_store_test.go @@ -114,8 +114,7 @@ func TestBlobMetadataStoreCerts(t *testing.T) { }, Signature: []byte("signature"), }, - ReferenceBlockNumber: uint64(100), - RelayKeys: []corev2.RelayKey{0, 2, 4}, + RelayKeys: []corev2.RelayKey{0, 2, 4}, } fragmentInfo := &encoding.FragmentInfo{ TotalChunkSizeBytes: 100, @@ -144,8 +143,7 @@ func TestBlobMetadataStoreCerts(t *testing.T) { }, Signature: []byte("signature"), }, - ReferenceBlockNumber: uint64(1234), - RelayKeys: []corev2.RelayKey{0}, + RelayKeys: []corev2.RelayKey{0}, } err = blobMetadataStore.PutBlobCertificate(ctx, blobCert1, fragmentInfo) assert.ErrorIs(t, err, common.ErrAlreadyExists) diff --git a/disperser/controller/encoding_manager.go b/disperser/controller/encoding_manager.go index 3527033671..7ee6c72dea 100644 --- a/disperser/controller/encoding_manager.go +++ b/disperser/controller/encoding_manager.go @@ -109,11 +109,6 @@ func (e *EncodingManager) HandleBatch(ctx context.Context) error { return errNoBlobsToEncode } - currentBlockNumber, err := e.chainReader.GetCurrentBlockNumber(ctx) - if err != nil { - return fmt.Errorf("failed to get current block number: %w", err) - } - for _, blob := range blobMetadatas { blobKey, err := blob.BlobHeader.BlobKey() if err != nil { @@ -139,9 +134,8 @@ func (e *EncodingManager) HandleBatch(ctx context.Context) error { break } cert := &corev2.BlobCertificate{ - BlobHeader: blob.BlobHeader, - ReferenceBlockNumber: uint64(currentBlockNumber), - RelayKeys: relayKeys, + BlobHeader: blob.BlobHeader, + RelayKeys: relayKeys, } storeCtx, cancel := context.WithTimeout(ctx, e.StoreTimeout) diff --git a/disperser/controller/encoding_manager_test.go b/disperser/controller/encoding_manager_test.go index cf4c063877..725ad8d5a4 100644 --- a/disperser/controller/encoding_manager_test.go +++ b/disperser/controller/encoding_manager_test.go @@ -134,7 +134,6 @@ func TestHandleBatch(t *testing.T) { fetchedCert, fetchedFragmentInfo, err := blobMetadataStore.GetBlobCertificate(ctx, blobKey1) assert.NoError(t, err) assert.Equal(t, fetchedCert.BlobHeader, blobHeader1) - assert.Equal(t, uint32(fetchedCert.ReferenceBlockNumber), blockNumber) for _, relayKey := range fetchedCert.RelayKeys { assert.Contains(t, c.EncodingManager.AvailableRelays, relayKey) } @@ -193,7 +192,6 @@ func TestHandleBatchRetrySuccess(t *testing.T) { fetchedCert, fetchedFragmentInfo, err := blobMetadataStore.GetBlobCertificate(ctx, blobKey1) assert.NoError(t, err) assert.Equal(t, fetchedCert.BlobHeader, blobHeader1) - assert.Equal(t, uint32(fetchedCert.ReferenceBlockNumber), blockNumber) for _, relayKey := range fetchedCert.RelayKeys { assert.Contains(t, c.EncodingManager.AvailableRelays, relayKey) } diff --git a/node/grpc/server_v2_test.go b/node/grpc/server_v2_test.go index ecae922ade..e3d125fb88 100644 --- a/node/grpc/server_v2_test.go +++ b/node/grpc/server_v2_test.go @@ -104,7 +104,7 @@ func TestV2NodeInfoRequest(t *testing.T) { func TestV2StoreChunks(t *testing.T) { server := newTestServerV2(t, true) _, err := server.StoreChunks(context.Background(), &pbv2.StoreChunksRequest{ - BlobCertificates: []*commonpb.BlobCertificate{}, + Batch: &commonpb.Batch{}, }) assert.ErrorContains(t, err, "not implemented") } @@ -117,12 +117,3 @@ func TestV2GetChunks(t *testing.T) { }) assert.ErrorContains(t, err, "not implemented") } - -func GetV2BlobCertificate(t *testing.T) { - server := newTestServerV2(t, true) - - _, err := server.GetBlobCertificate(context.Background(), &pbv2.GetBlobCertificateRequest{ - BlobKey: []byte{0}, - }) - assert.ErrorContains(t, err, "not implemented") -}