diff --git a/domain/consensus/database/serialization/messages.pb.go b/domain/consensus/database/serialization/messages.pb.go index c3bbab9c4..e0e1c1b3f 100644 --- a/domain/consensus/database/serialization/messages.pb.go +++ b/domain/consensus/database/serialization/messages.pb.go @@ -85,14 +85,14 @@ type DbBlockHeader struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - ParentHashes [][]byte `protobuf:"bytes,2,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` - HashMerkleRoot []byte `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` - AcceptedIDMerkleRoot []byte `protobuf:"bytes,4,opt,name=acceptedIDMerkleRoot,proto3" json:"acceptedIDMerkleRoot,omitempty"` - UtxoCommitment []byte `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` - TimeInMilliseconds int64 `protobuf:"varint,6,opt,name=timeInMilliseconds,proto3" json:"timeInMilliseconds,omitempty"` - Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` - Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + ParentHashes []*DbHash `protobuf:"bytes,2,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` + HashMerkleRoot *DbHash `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` + AcceptedIDMerkleRoot *DbHash `protobuf:"bytes,4,opt,name=acceptedIDMerkleRoot,proto3" json:"acceptedIDMerkleRoot,omitempty"` + UtxoCommitment *DbHash `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` + TimeInMilliseconds int64 `protobuf:"varint,6,opt,name=timeInMilliseconds,proto3" json:"timeInMilliseconds,omitempty"` + Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` + Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` } func (x *DbBlockHeader) Reset() { @@ -134,28 +134,28 @@ func (x *DbBlockHeader) GetVersion() int32 { return 0 } -func (x *DbBlockHeader) GetParentHashes() [][]byte { +func (x *DbBlockHeader) GetParentHashes() []*DbHash { if x != nil { return x.ParentHashes } return nil } -func (x *DbBlockHeader) GetHashMerkleRoot() []byte { +func (x *DbBlockHeader) GetHashMerkleRoot() *DbHash { if x != nil { return x.HashMerkleRoot } return nil } -func (x *DbBlockHeader) GetAcceptedIDMerkleRoot() []byte { +func (x *DbBlockHeader) GetAcceptedIDMerkleRoot() *DbHash { if x != nil { return x.AcceptedIDMerkleRoot } return nil } -func (x *DbBlockHeader) GetUtxoCommitment() []byte { +func (x *DbBlockHeader) GetUtxoCommitment() *DbHash { if x != nil { return x.UtxoCommitment } @@ -183,25 +183,72 @@ func (x *DbBlockHeader) GetNonce() uint64 { return 0 } +type DbHash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` +} + +func (x *DbHash) Reset() { + *x = DbHash{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbHash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbHash) ProtoMessage() {} + +func (x *DbHash) ProtoReflect() protoreflect.Message { + mi := &file_messages_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 DbHash.ProtoReflect.Descriptor instead. +func (*DbHash) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{2} +} + +func (x *DbHash) GetHash() []byte { + if x != nil { + return x.Hash + } + return nil +} + type DbTransaction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version int32 `protobuf:"varint,1,opt,name=Version,proto3" json:"Version,omitempty"` - Inputs []*DbTransactionInput `protobuf:"bytes,2,rep,name=Inputs,proto3" json:"Inputs,omitempty"` - Outputs []*DbTransactionOutput `protobuf:"bytes,3,rep,name=Outputs,proto3" json:"Outputs,omitempty"` - LockTime uint64 `protobuf:"varint,4,opt,name=LockTime,proto3" json:"LockTime,omitempty"` - SubnetworkID []byte `protobuf:"bytes,5,opt,name=SubnetworkID,proto3" json:"SubnetworkID,omitempty"` - Gas uint64 `protobuf:"varint,6,opt,name=Gas,proto3" json:"Gas,omitempty"` - PayloadHash []byte `protobuf:"bytes,7,opt,name=PayloadHash,proto3" json:"PayloadHash,omitempty"` - Payload []byte `protobuf:"bytes,8,opt,name=Payload,proto3" json:"Payload,omitempty"` + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Inputs []*DbTransactionInput `protobuf:"bytes,2,rep,name=inputs,proto3" json:"inputs,omitempty"` + Outputs []*DbTransactionOutput `protobuf:"bytes,3,rep,name=outputs,proto3" json:"outputs,omitempty"` + LockTime uint64 `protobuf:"varint,4,opt,name=lockTime,proto3" json:"lockTime,omitempty"` + SubnetworkID *DbSubnetworkId `protobuf:"bytes,5,opt,name=subnetworkID,proto3" json:"subnetworkID,omitempty"` + Gas uint64 `protobuf:"varint,6,opt,name=gas,proto3" json:"gas,omitempty"` + PayloadHash *DbHash `protobuf:"bytes,7,opt,name=payloadHash,proto3" json:"payloadHash,omitempty"` + Payload *DbHash `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *DbTransaction) Reset() { *x = DbTransaction{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[2] + mi := &file_messages_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -214,7 +261,7 @@ func (x *DbTransaction) String() string { func (*DbTransaction) ProtoMessage() {} func (x *DbTransaction) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[2] + mi := &file_messages_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -227,7 +274,7 @@ func (x *DbTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransaction.ProtoReflect.Descriptor instead. func (*DbTransaction) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{2} + return file_messages_proto_rawDescGZIP(), []int{3} } func (x *DbTransaction) GetVersion() int32 { @@ -258,7 +305,7 @@ func (x *DbTransaction) GetLockTime() uint64 { return 0 } -func (x *DbTransaction) GetSubnetworkID() []byte { +func (x *DbTransaction) GetSubnetworkID() *DbSubnetworkId { if x != nil { return x.SubnetworkID } @@ -272,14 +319,14 @@ func (x *DbTransaction) GetGas() uint64 { return 0 } -func (x *DbTransaction) GetPayloadHash() []byte { +func (x *DbTransaction) GetPayloadHash() *DbHash { if x != nil { return x.PayloadHash } return nil } -func (x *DbTransaction) GetPayload() []byte { +func (x *DbTransaction) GetPayload() *DbHash { if x != nil { return x.Payload } @@ -291,15 +338,15 @@ type DbTransactionInput struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PreviousOutpoint *DbOutpoint `protobuf:"bytes,1,opt,name=PreviousOutpoint,proto3" json:"PreviousOutpoint,omitempty"` - SignatureScript []byte `protobuf:"bytes,2,opt,name=SignatureScript,proto3" json:"SignatureScript,omitempty"` - Sequence uint64 `protobuf:"varint,3,opt,name=Sequence,proto3" json:"Sequence,omitempty"` + PreviousOutpoint *DbOutpoint `protobuf:"bytes,1,opt,name=previousOutpoint,proto3" json:"previousOutpoint,omitempty"` + SignatureScript []byte `protobuf:"bytes,2,opt,name=signatureScript,proto3" json:"signatureScript,omitempty"` + Sequence uint64 `protobuf:"varint,3,opt,name=sequence,proto3" json:"sequence,omitempty"` } func (x *DbTransactionInput) Reset() { *x = DbTransactionInput{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[3] + mi := &file_messages_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -312,7 +359,7 @@ func (x *DbTransactionInput) String() string { func (*DbTransactionInput) ProtoMessage() {} func (x *DbTransactionInput) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[3] + mi := &file_messages_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -325,7 +372,7 @@ func (x *DbTransactionInput) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransactionInput.ProtoReflect.Descriptor instead. func (*DbTransactionInput) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{3} + return file_messages_proto_rawDescGZIP(), []int{4} } func (x *DbTransactionInput) GetPreviousOutpoint() *DbOutpoint { @@ -354,14 +401,14 @@ type DbOutpoint struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TransactionID []byte `protobuf:"bytes,1,opt,name=TransactionID,proto3" json:"TransactionID,omitempty"` - Index uint32 `protobuf:"varint,2,opt,name=Index,proto3" json:"Index,omitempty"` + TransactionID *DbTransactionId `protobuf:"bytes,1,opt,name=transactionID,proto3" json:"transactionID,omitempty"` + Index uint32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` } func (x *DbOutpoint) Reset() { *x = DbOutpoint{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -374,7 +421,7 @@ func (x *DbOutpoint) String() string { func (*DbOutpoint) ProtoMessage() {} func (x *DbOutpoint) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[4] + mi := &file_messages_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -387,10 +434,10 @@ func (x *DbOutpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use DbOutpoint.ProtoReflect.Descriptor instead. func (*DbOutpoint) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{4} + return file_messages_proto_rawDescGZIP(), []int{5} } -func (x *DbOutpoint) GetTransactionID() []byte { +func (x *DbOutpoint) GetTransactionID() *DbTransactionId { if x != nil { return x.TransactionID } @@ -404,19 +451,66 @@ func (x *DbOutpoint) GetIndex() uint32 { return 0 } +type DbTransactionId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TransactionId []byte `protobuf:"bytes,1,opt,name=transactionId,proto3" json:"transactionId,omitempty"` +} + +func (x *DbTransactionId) Reset() { + *x = DbTransactionId{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbTransactionId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbTransactionId) ProtoMessage() {} + +func (x *DbTransactionId) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[6] + 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 DbTransactionId.ProtoReflect.Descriptor instead. +func (*DbTransactionId) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{6} +} + +func (x *DbTransactionId) GetTransactionId() []byte { + if x != nil { + return x.TransactionId + } + return nil +} + type DbTransactionOutput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Value uint64 `protobuf:"varint,1,opt,name=Value,proto3" json:"Value,omitempty"` - ScriptPublicKey []byte `protobuf:"bytes,2,opt,name=ScriptPublicKey,proto3" json:"ScriptPublicKey,omitempty"` + Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` + ScriptPublicKey []byte `protobuf:"bytes,2,opt,name=scriptPublicKey,proto3" json:"scriptPublicKey,omitempty"` } func (x *DbTransactionOutput) Reset() { *x = DbTransactionOutput{} if protoimpl.UnsafeEnabled { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -429,7 +523,7 @@ func (x *DbTransactionOutput) String() string { func (*DbTransactionOutput) ProtoMessage() {} func (x *DbTransactionOutput) ProtoReflect() protoreflect.Message { - mi := &file_messages_proto_msgTypes[5] + mi := &file_messages_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -442,7 +536,7 @@ func (x *DbTransactionOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransactionOutput.ProtoReflect.Descriptor instead. func (*DbTransactionOutput) Descriptor() ([]byte, []int) { - return file_messages_proto_rawDescGZIP(), []int{5} + return file_messages_proto_rawDescGZIP(), []int{7} } func (x *DbTransactionOutput) GetValue() uint64 { @@ -459,6 +553,894 @@ func (x *DbTransactionOutput) GetScriptPublicKey() []byte { return nil } +type DbSubnetworkId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubnetworkId []byte `protobuf:"bytes,1,opt,name=subnetworkId,proto3" json:"subnetworkId,omitempty"` +} + +func (x *DbSubnetworkId) Reset() { + *x = DbSubnetworkId{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbSubnetworkId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbSubnetworkId) ProtoMessage() {} + +func (x *DbSubnetworkId) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[8] + 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 DbSubnetworkId.ProtoReflect.Descriptor instead. +func (*DbSubnetworkId) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{8} +} + +func (x *DbSubnetworkId) GetSubnetworkId() []byte { + if x != nil { + return x.SubnetworkId + } + return nil +} + +type DbAcceptanceData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockAcceptanceData []*DbBlockAcceptanceData `protobuf:"bytes,1,rep,name=blockAcceptanceData,proto3" json:"blockAcceptanceData,omitempty"` +} + +func (x *DbAcceptanceData) Reset() { + *x = DbAcceptanceData{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbAcceptanceData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbAcceptanceData) ProtoMessage() {} + +func (x *DbAcceptanceData) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[9] + 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 DbAcceptanceData.ProtoReflect.Descriptor instead. +func (*DbAcceptanceData) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{9} +} + +func (x *DbAcceptanceData) GetBlockAcceptanceData() []*DbBlockAcceptanceData { + if x != nil { + return x.BlockAcceptanceData + } + return nil +} + +type DbBlockAcceptanceData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TransactionAcceptanceData []*DbTransactionAcceptanceData `protobuf:"bytes,1,rep,name=transactionAcceptanceData,proto3" json:"transactionAcceptanceData,omitempty"` +} + +func (x *DbBlockAcceptanceData) Reset() { + *x = DbBlockAcceptanceData{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbBlockAcceptanceData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbBlockAcceptanceData) ProtoMessage() {} + +func (x *DbBlockAcceptanceData) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[10] + 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 DbBlockAcceptanceData.ProtoReflect.Descriptor instead. +func (*DbBlockAcceptanceData) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{10} +} + +func (x *DbBlockAcceptanceData) GetTransactionAcceptanceData() []*DbTransactionAcceptanceData { + if x != nil { + return x.TransactionAcceptanceData + } + return nil +} + +type DbTransactionAcceptanceData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *DbTransaction `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` + Fee uint64 `protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"` + IsAccepted bool `protobuf:"varint,3,opt,name=isAccepted,proto3" json:"isAccepted,omitempty"` +} + +func (x *DbTransactionAcceptanceData) Reset() { + *x = DbTransactionAcceptanceData{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbTransactionAcceptanceData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbTransactionAcceptanceData) ProtoMessage() {} + +func (x *DbTransactionAcceptanceData) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[11] + 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 DbTransactionAcceptanceData.ProtoReflect.Descriptor instead. +func (*DbTransactionAcceptanceData) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{11} +} + +func (x *DbTransactionAcceptanceData) GetTransaction() *DbTransaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *DbTransactionAcceptanceData) GetFee() uint64 { + if x != nil { + return x.Fee + } + return 0 +} + +func (x *DbTransactionAcceptanceData) GetIsAccepted() bool { + if x != nil { + return x.IsAccepted + } + return false +} + +type DbBlockRelations struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Parents []*DbHash `protobuf:"bytes,1,rep,name=parents,proto3" json:"parents,omitempty"` + Children []*DbHash `protobuf:"bytes,2,rep,name=children,proto3" json:"children,omitempty"` +} + +func (x *DbBlockRelations) Reset() { + *x = DbBlockRelations{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbBlockRelations) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbBlockRelations) ProtoMessage() {} + +func (x *DbBlockRelations) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[12] + 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 DbBlockRelations.ProtoReflect.Descriptor instead. +func (*DbBlockRelations) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{12} +} + +func (x *DbBlockRelations) GetParents() []*DbHash { + if x != nil { + return x.Parents + } + return nil +} + +func (x *DbBlockRelations) GetChildren() []*DbHash { + if x != nil { + return x.Children + } + return nil +} + +type DbBlockStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *DbBlockStatus) Reset() { + *x = DbBlockStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbBlockStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbBlockStatus) ProtoMessage() {} + +func (x *DbBlockStatus) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[13] + 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 DbBlockStatus.ProtoReflect.Descriptor instead. +func (*DbBlockStatus) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{13} +} + +func (x *DbBlockStatus) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +type DbBlockGhostdagData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlueScore uint64 `protobuf:"varint,1,opt,name=blueScore,proto3" json:"blueScore,omitempty"` + SelectedParent *DbHash `protobuf:"bytes,2,opt,name=selectedParent,proto3" json:"selectedParent,omitempty"` + MergeSetBlues []*DbHash `protobuf:"bytes,3,rep,name=mergeSetBlues,proto3" json:"mergeSetBlues,omitempty"` + MergeSetReds []*DbHash `protobuf:"bytes,4,rep,name=mergeSetReds,proto3" json:"mergeSetReds,omitempty"` + BluesAnticoneSizes []*DbBluesAnticoneSizes `protobuf:"bytes,5,rep,name=bluesAnticoneSizes,proto3" json:"bluesAnticoneSizes,omitempty"` +} + +func (x *DbBlockGhostdagData) Reset() { + *x = DbBlockGhostdagData{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbBlockGhostdagData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbBlockGhostdagData) ProtoMessage() {} + +func (x *DbBlockGhostdagData) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[14] + 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 DbBlockGhostdagData.ProtoReflect.Descriptor instead. +func (*DbBlockGhostdagData) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{14} +} + +func (x *DbBlockGhostdagData) GetBlueScore() uint64 { + if x != nil { + return x.BlueScore + } + return 0 +} + +func (x *DbBlockGhostdagData) GetSelectedParent() *DbHash { + if x != nil { + return x.SelectedParent + } + return nil +} + +func (x *DbBlockGhostdagData) GetMergeSetBlues() []*DbHash { + if x != nil { + return x.MergeSetBlues + } + return nil +} + +func (x *DbBlockGhostdagData) GetMergeSetReds() []*DbHash { + if x != nil { + return x.MergeSetReds + } + return nil +} + +func (x *DbBlockGhostdagData) GetBluesAnticoneSizes() []*DbBluesAnticoneSizes { + if x != nil { + return x.BluesAnticoneSizes + } + return nil +} + +type DbBluesAnticoneSizes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlueHash *DbHash `protobuf:"bytes,1,opt,name=blueHash,proto3" json:"blueHash,omitempty"` + AnticoneSize uint32 `protobuf:"varint,2,opt,name=anticoneSize,proto3" json:"anticoneSize,omitempty"` +} + +func (x *DbBluesAnticoneSizes) Reset() { + *x = DbBluesAnticoneSizes{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbBluesAnticoneSizes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbBluesAnticoneSizes) ProtoMessage() {} + +func (x *DbBluesAnticoneSizes) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[15] + 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 DbBluesAnticoneSizes.ProtoReflect.Descriptor instead. +func (*DbBluesAnticoneSizes) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{15} +} + +func (x *DbBluesAnticoneSizes) GetBlueHash() *DbHash { + if x != nil { + return x.BlueHash + } + return nil +} + +func (x *DbBluesAnticoneSizes) GetAnticoneSize() uint32 { + if x != nil { + return x.AnticoneSize + } + return 0 +} + +type DbMultiset struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Multiset []byte `protobuf:"bytes,1,opt,name=multiset,proto3" json:"multiset,omitempty"` +} + +func (x *DbMultiset) Reset() { + *x = DbMultiset{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbMultiset) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbMultiset) ProtoMessage() {} + +func (x *DbMultiset) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[16] + 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 DbMultiset.ProtoReflect.Descriptor instead. +func (*DbMultiset) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{16} +} + +func (x *DbMultiset) GetMultiset() []byte { + if x != nil { + return x.Multiset + } + return nil +} + +type DbUtxoSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*DbUtxoCollectionItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *DbUtxoSet) Reset() { + *x = DbUtxoSet{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbUtxoSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbUtxoSet) ProtoMessage() {} + +func (x *DbUtxoSet) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[17] + 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 DbUtxoSet.ProtoReflect.Descriptor instead. +func (*DbUtxoSet) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{17} +} + +func (x *DbUtxoSet) GetItems() []*DbUtxoCollectionItem { + if x != nil { + return x.Items + } + return nil +} + +type DbUtxoCollectionItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Outpoint *DbOutpoint `protobuf:"bytes,1,opt,name=outpoint,proto3" json:"outpoint,omitempty"` + UtxoEntry *DbUtxoEntry `protobuf:"bytes,2,opt,name=utxoEntry,proto3" json:"utxoEntry,omitempty"` +} + +func (x *DbUtxoCollectionItem) Reset() { + *x = DbUtxoCollectionItem{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbUtxoCollectionItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbUtxoCollectionItem) ProtoMessage() {} + +func (x *DbUtxoCollectionItem) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[18] + 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 DbUtxoCollectionItem.ProtoReflect.Descriptor instead. +func (*DbUtxoCollectionItem) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{18} +} + +func (x *DbUtxoCollectionItem) GetOutpoint() *DbOutpoint { + if x != nil { + return x.Outpoint + } + return nil +} + +func (x *DbUtxoCollectionItem) GetUtxoEntry() *DbUtxoEntry { + if x != nil { + return x.UtxoEntry + } + return nil +} + +type DbUtxoEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Amount uint64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"` + ScriptPublicKey []byte `protobuf:"bytes,2,opt,name=scriptPublicKey,proto3" json:"scriptPublicKey,omitempty"` + BlockBlueScore uint64 `protobuf:"varint,3,opt,name=blockBlueScore,proto3" json:"blockBlueScore,omitempty"` + IsCoinbase bool `protobuf:"varint,4,opt,name=isCoinbase,proto3" json:"isCoinbase,omitempty"` +} + +func (x *DbUtxoEntry) Reset() { + *x = DbUtxoEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbUtxoEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbUtxoEntry) ProtoMessage() {} + +func (x *DbUtxoEntry) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[19] + 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 DbUtxoEntry.ProtoReflect.Descriptor instead. +func (*DbUtxoEntry) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{19} +} + +func (x *DbUtxoEntry) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +func (x *DbUtxoEntry) GetScriptPublicKey() []byte { + if x != nil { + return x.ScriptPublicKey + } + return nil +} + +func (x *DbUtxoEntry) GetBlockBlueScore() uint64 { + if x != nil { + return x.BlockBlueScore + } + return 0 +} + +func (x *DbUtxoEntry) GetIsCoinbase() bool { + if x != nil { + return x.IsCoinbase + } + return false +} + +type DbReachabilityData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TreeNode *DbReachabilityTreeNode `protobuf:"bytes,1,opt,name=treeNode,proto3" json:"treeNode,omitempty"` + FutureCoveringSet []*DbHash `protobuf:"bytes,2,rep,name=futureCoveringSet,proto3" json:"futureCoveringSet,omitempty"` +} + +func (x *DbReachabilityData) Reset() { + *x = DbReachabilityData{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbReachabilityData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbReachabilityData) ProtoMessage() {} + +func (x *DbReachabilityData) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[20] + 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 DbReachabilityData.ProtoReflect.Descriptor instead. +func (*DbReachabilityData) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{20} +} + +func (x *DbReachabilityData) GetTreeNode() *DbReachabilityTreeNode { + if x != nil { + return x.TreeNode + } + return nil +} + +func (x *DbReachabilityData) GetFutureCoveringSet() []*DbHash { + if x != nil { + return x.FutureCoveringSet + } + return nil +} + +type DbReachabilityTreeNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Children []*DbHash `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty"` + Parent *DbHash `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"` + Interval *DbReachabilityInterval `protobuf:"bytes,3,opt,name=interval,proto3" json:"interval,omitempty"` +} + +func (x *DbReachabilityTreeNode) Reset() { + *x = DbReachabilityTreeNode{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbReachabilityTreeNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbReachabilityTreeNode) ProtoMessage() {} + +func (x *DbReachabilityTreeNode) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[21] + 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 DbReachabilityTreeNode.ProtoReflect.Descriptor instead. +func (*DbReachabilityTreeNode) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{21} +} + +func (x *DbReachabilityTreeNode) GetChildren() []*DbHash { + if x != nil { + return x.Children + } + return nil +} + +func (x *DbReachabilityTreeNode) GetParent() *DbHash { + if x != nil { + return x.Parent + } + return nil +} + +func (x *DbReachabilityTreeNode) GetInterval() *DbReachabilityInterval { + if x != nil { + return x.Interval + } + return nil +} + +type DbReachabilityInterval struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start uint64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End uint64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` +} + +func (x *DbReachabilityInterval) Reset() { + *x = DbReachabilityInterval{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbReachabilityInterval) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbReachabilityInterval) ProtoMessage() {} + +func (x *DbReachabilityInterval) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[22] + 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 DbReachabilityInterval.ProtoReflect.Descriptor instead. +func (*DbReachabilityInterval) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{22} +} + +func (x *DbReachabilityInterval) GetStart() uint64 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *DbReachabilityInterval) GetEnd() uint64 { + if x != nil { + return x.End + } + return 0 +} + +type DbUtxoDiff struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ToAdd []*DbUtxoCollectionItem `protobuf:"bytes,1,rep,name=toAdd,proto3" json:"toAdd,omitempty"` + ToRemove []*DbUtxoCollectionItem `protobuf:"bytes,2,rep,name=toRemove,proto3" json:"toRemove,omitempty"` +} + +func (x *DbUtxoDiff) Reset() { + *x = DbUtxoDiff{} + if protoimpl.UnsafeEnabled { + mi := &file_messages_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbUtxoDiff) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbUtxoDiff) ProtoMessage() {} + +func (x *DbUtxoDiff) ProtoReflect() protoreflect.Message { + mi := &file_messages_proto_msgTypes[23] + 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 DbUtxoDiff.ProtoReflect.Descriptor instead. +func (*DbUtxoDiff) Descriptor() ([]byte, []int) { + return file_messages_proto_rawDescGZIP(), []int{23} +} + +func (x *DbUtxoDiff) GetToAdd() []*DbUtxoCollectionItem { + if x != nil { + return x.ToAdd + } + return nil +} + +func (x *DbUtxoDiff) GetToRemove() []*DbUtxoCollectionItem { + if x != nil { + return x.ToRemove + } + return nil +} + var File_messages_proto protoreflect.FileDescriptor var file_messages_proto_rawDesc = []byte{ @@ -472,68 +1454,211 @@ var file_messages_proto_rawDesc = []byte{ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0xab, 0x02, 0x0a, 0x0d, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x6f, 0x6e, 0x73, 0x22, 0x87, 0x03, 0x0a, 0x0d, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, - 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x68, 0x61, 0x73, - 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x61, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, - 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, - 0x26, 0x0a, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, - 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, - 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, - 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x22, 0xb0, 0x02, 0x0a, 0x0d, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, - 0x06, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x52, 0x06, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x61, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x47, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x12, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x10, 0x50, - 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x10, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x48, 0x0a, 0x0a, 0x44, 0x62, 0x4f, 0x75, - 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x22, 0x55, 0x0a, 0x13, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x28, 0x0a, 0x0f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, - 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x39, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0e, 0x68, 0x61, + 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, + 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x49, 0x0a, 0x14, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x14, + 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, + 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x4d, 0x69, 0x6c, + 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x1c, 0x0a, + 0x06, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0xfd, 0x02, 0x0a, 0x0d, + 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0c, + 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x64, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, + 0x10, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x67, 0x61, + 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x61, 0x73, 0x68, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0b, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x12, + 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x45, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, + 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x4f, + 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, + 0x68, 0x0a, 0x0a, 0x44, 0x62, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x44, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x62, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x22, 0x55, 0x0a, 0x13, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x34, 0x0a, 0x0e, 0x44, 0x62, 0x53, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, + 0x6a, 0x0a, 0x10, 0x44, 0x62, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x81, 0x01, 0x0a, 0x15, + 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x68, 0x0a, 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, + 0x8f, 0x01, 0x0a, 0x1b, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x3e, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x65, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x64, 0x22, 0x76, 0x0a, 0x10, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x27, 0x0a, 0x0d, 0x44, 0x62, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x13, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, + 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, + 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, + 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, + 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, + 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, 0x12, + 0x53, 0x0a, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x42, 0x6c, + 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, + 0x52, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x73, 0x22, 0x6d, 0x0a, 0x14, 0x44, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, + 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x08, + 0x62, 0x6c, 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, + 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, + 0x22, 0x0a, 0x0c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x22, 0x28, 0x0a, 0x0a, 0x44, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, 0x74, 0x22, 0x46, 0x0a, + 0x09, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x53, 0x65, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x14, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x35, + 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x62, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, + 0x97, 0x01, 0x0a, 0x0b, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x43, + 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, + 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x12, 0x44, 0x62, + 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x41, 0x0a, 0x08, 0x74, 0x72, 0x65, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x54, 0x72, 0x65, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x74, 0x72, 0x65, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x76, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, + 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x11, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x76, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x22, 0xbd, 0x01, 0x0a, 0x16, 0x44, 0x62, 0x52, + 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x72, 0x65, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x40, 0x0a, 0x16, 0x44, 0x62, 0x52, 0x65, + 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0a, 0x44, + 0x62, 0x55, 0x74, 0x78, 0x6f, 0x44, 0x69, 0x66, 0x66, 0x12, 0x39, 0x0a, 0x05, 0x74, 0x6f, 0x41, + 0x64, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x74, + 0x6f, 0x41, 0x64, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x74, 0x6f, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, + 0x70, 0x61, 0x64, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -548,26 +1673,72 @@ func file_messages_proto_rawDescGZIP() []byte { return file_messages_proto_rawDescData } -var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_messages_proto_goTypes = []interface{}{ - (*DbBlock)(nil), // 0: serialization.DbBlock - (*DbBlockHeader)(nil), // 1: serialization.DbBlockHeader - (*DbTransaction)(nil), // 2: serialization.DbTransaction - (*DbTransactionInput)(nil), // 3: serialization.DbTransactionInput - (*DbOutpoint)(nil), // 4: serialization.DbOutpoint - (*DbTransactionOutput)(nil), // 5: serialization.DbTransactionOutput + (*DbBlock)(nil), // 0: serialization.DbBlock + (*DbBlockHeader)(nil), // 1: serialization.DbBlockHeader + (*DbHash)(nil), // 2: serialization.DbHash + (*DbTransaction)(nil), // 3: serialization.DbTransaction + (*DbTransactionInput)(nil), // 4: serialization.DbTransactionInput + (*DbOutpoint)(nil), // 5: serialization.DbOutpoint + (*DbTransactionId)(nil), // 6: serialization.DbTransactionId + (*DbTransactionOutput)(nil), // 7: serialization.DbTransactionOutput + (*DbSubnetworkId)(nil), // 8: serialization.DbSubnetworkId + (*DbAcceptanceData)(nil), // 9: serialization.DbAcceptanceData + (*DbBlockAcceptanceData)(nil), // 10: serialization.DbBlockAcceptanceData + (*DbTransactionAcceptanceData)(nil), // 11: serialization.DbTransactionAcceptanceData + (*DbBlockRelations)(nil), // 12: serialization.DbBlockRelations + (*DbBlockStatus)(nil), // 13: serialization.DbBlockStatus + (*DbBlockGhostdagData)(nil), // 14: serialization.DbBlockGhostdagData + (*DbBluesAnticoneSizes)(nil), // 15: serialization.DbBluesAnticoneSizes + (*DbMultiset)(nil), // 16: serialization.DbMultiset + (*DbUtxoSet)(nil), // 17: serialization.DbUtxoSet + (*DbUtxoCollectionItem)(nil), // 18: serialization.DbUtxoCollectionItem + (*DbUtxoEntry)(nil), // 19: serialization.DbUtxoEntry + (*DbReachabilityData)(nil), // 20: serialization.DbReachabilityData + (*DbReachabilityTreeNode)(nil), // 21: serialization.DbReachabilityTreeNode + (*DbReachabilityInterval)(nil), // 22: serialization.DbReachabilityInterval + (*DbUtxoDiff)(nil), // 23: serialization.DbUtxoDiff } var file_messages_proto_depIdxs = []int32{ - 1, // 0: serialization.DbBlock.header:type_name -> serialization.DbBlockHeader - 2, // 1: serialization.DbBlock.transactions:type_name -> serialization.DbTransaction - 3, // 2: serialization.DbTransaction.Inputs:type_name -> serialization.DbTransactionInput - 5, // 3: serialization.DbTransaction.Outputs:type_name -> serialization.DbTransactionOutput - 4, // 4: serialization.DbTransactionInput.PreviousOutpoint:type_name -> serialization.DbOutpoint - 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 + 1, // 0: serialization.DbBlock.header:type_name -> serialization.DbBlockHeader + 3, // 1: serialization.DbBlock.transactions:type_name -> serialization.DbTransaction + 2, // 2: serialization.DbBlockHeader.parentHashes:type_name -> serialization.DbHash + 2, // 3: serialization.DbBlockHeader.hashMerkleRoot:type_name -> serialization.DbHash + 2, // 4: serialization.DbBlockHeader.acceptedIDMerkleRoot:type_name -> serialization.DbHash + 2, // 5: serialization.DbBlockHeader.utxoCommitment:type_name -> serialization.DbHash + 4, // 6: serialization.DbTransaction.inputs:type_name -> serialization.DbTransactionInput + 7, // 7: serialization.DbTransaction.outputs:type_name -> serialization.DbTransactionOutput + 8, // 8: serialization.DbTransaction.subnetworkID:type_name -> serialization.DbSubnetworkId + 2, // 9: serialization.DbTransaction.payloadHash:type_name -> serialization.DbHash + 2, // 10: serialization.DbTransaction.payload:type_name -> serialization.DbHash + 5, // 11: serialization.DbTransactionInput.previousOutpoint:type_name -> serialization.DbOutpoint + 6, // 12: serialization.DbOutpoint.transactionID:type_name -> serialization.DbTransactionId + 10, // 13: serialization.DbAcceptanceData.blockAcceptanceData:type_name -> serialization.DbBlockAcceptanceData + 11, // 14: serialization.DbBlockAcceptanceData.transactionAcceptanceData:type_name -> serialization.DbTransactionAcceptanceData + 3, // 15: serialization.DbTransactionAcceptanceData.transaction:type_name -> serialization.DbTransaction + 2, // 16: serialization.DbBlockRelations.parents:type_name -> serialization.DbHash + 2, // 17: serialization.DbBlockRelations.children:type_name -> serialization.DbHash + 2, // 18: serialization.DbBlockGhostdagData.selectedParent:type_name -> serialization.DbHash + 2, // 19: serialization.DbBlockGhostdagData.mergeSetBlues:type_name -> serialization.DbHash + 2, // 20: serialization.DbBlockGhostdagData.mergeSetReds:type_name -> serialization.DbHash + 15, // 21: serialization.DbBlockGhostdagData.bluesAnticoneSizes:type_name -> serialization.DbBluesAnticoneSizes + 2, // 22: serialization.DbBluesAnticoneSizes.blueHash:type_name -> serialization.DbHash + 18, // 23: serialization.DbUtxoSet.items:type_name -> serialization.DbUtxoCollectionItem + 5, // 24: serialization.DbUtxoCollectionItem.outpoint:type_name -> serialization.DbOutpoint + 19, // 25: serialization.DbUtxoCollectionItem.utxoEntry:type_name -> serialization.DbUtxoEntry + 21, // 26: serialization.DbReachabilityData.treeNode:type_name -> serialization.DbReachabilityTreeNode + 2, // 27: serialization.DbReachabilityData.futureCoveringSet:type_name -> serialization.DbHash + 2, // 28: serialization.DbReachabilityTreeNode.children:type_name -> serialization.DbHash + 2, // 29: serialization.DbReachabilityTreeNode.parent:type_name -> serialization.DbHash + 22, // 30: serialization.DbReachabilityTreeNode.interval:type_name -> serialization.DbReachabilityInterval + 18, // 31: serialization.DbUtxoDiff.toAdd:type_name -> serialization.DbUtxoCollectionItem + 18, // 32: serialization.DbUtxoDiff.toRemove:type_name -> serialization.DbUtxoCollectionItem + 33, // [33:33] is the sub-list for method output_type + 33, // [33:33] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_messages_proto_init() } @@ -601,7 +1772,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransaction); i { + switch v := v.(*DbHash); i { case 0: return &v.state case 1: @@ -613,7 +1784,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransactionInput); i { + switch v := v.(*DbTransaction); i { case 0: return &v.state case 1: @@ -625,7 +1796,7 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbOutpoint); i { + switch v := v.(*DbTransactionInput); i { case 0: return &v.state case 1: @@ -637,6 +1808,30 @@ func file_messages_proto_init() { } } file_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbOutpoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbTransactionId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DbTransactionOutput); i { case 0: return &v.state @@ -648,6 +1843,198 @@ func file_messages_proto_init() { return nil } } + file_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbSubnetworkId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbAcceptanceData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbBlockAcceptanceData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbTransactionAcceptanceData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbBlockRelations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbBlockStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbBlockGhostdagData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbBluesAnticoneSizes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbMultiset); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbUtxoSet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbUtxoCollectionItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbUtxoEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbReachabilityData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbReachabilityTreeNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbReachabilityInterval); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_messages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbUtxoDiff); 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{ @@ -655,7 +2042,7 @@ func file_messages_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_messages_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/domain/consensus/database/serialization/messages.proto b/domain/consensus/database/serialization/messages.proto index 88c1cde41..edef53493 100644 --- a/domain/consensus/database/serialization/messages.proto +++ b/domain/consensus/database/serialization/messages.proto @@ -10,38 +10,127 @@ message DbBlock { message DbBlockHeader { int32 version = 1; - repeated bytes parentHashes = 2; - bytes hashMerkleRoot = 3; - bytes acceptedIDMerkleRoot = 4; - bytes utxoCommitment = 5; + repeated DbHash parentHashes = 2; + DbHash hashMerkleRoot = 3; + DbHash acceptedIDMerkleRoot = 4; + DbHash utxoCommitment = 5; int64 timeInMilliseconds = 6; uint32 bits = 7; uint64 nonce = 8; } +message DbHash { + bytes hash = 1; +} + message DbTransaction { - int32 Version = 1; - repeated DbTransactionInput Inputs = 2; - repeated DbTransactionOutput Outputs = 3; - uint64 LockTime = 4; - bytes SubnetworkID = 5; - uint64 Gas = 6; - bytes PayloadHash = 7; - bytes Payload = 8; + int32 version = 1; + repeated DbTransactionInput inputs = 2; + repeated DbTransactionOutput outputs = 3; + uint64 lockTime = 4; + DbSubnetworkId subnetworkID = 5; + uint64 gas = 6; + DbHash payloadHash = 7; + DbHash payload = 8; } message DbTransactionInput { - DbOutpoint PreviousOutpoint = 1; - bytes SignatureScript = 2; - uint64 Sequence = 3; + DbOutpoint previousOutpoint = 1; + bytes signatureScript = 2; + uint64 sequence = 3; } message DbOutpoint { - bytes TransactionID = 1; - uint32 Index = 2; + DbTransactionId transactionID = 1; + uint32 index = 2; +} + +message DbTransactionId { + bytes transactionId = 1; } message DbTransactionOutput { - uint64 Value = 1; - bytes ScriptPublicKey = 2; + uint64 value = 1; + bytes scriptPublicKey = 2; +} + +message DbSubnetworkId { + bytes subnetworkId = 1; +} + +message DbAcceptanceData { + repeated DbBlockAcceptanceData blockAcceptanceData = 1; +} + +message DbBlockAcceptanceData { + repeated DbTransactionAcceptanceData transactionAcceptanceData = 1; +} + +message DbTransactionAcceptanceData { + DbTransaction transaction = 1; + uint64 fee = 2; + bool isAccepted = 3; +} + +message DbBlockRelations { + repeated DbHash parents = 1; + repeated DbHash children = 2; +} + +message DbBlockStatus { + uint32 status = 1; +} + +message DbBlockGhostdagData { + uint64 blueScore = 1; + DbHash selectedParent = 2; + repeated DbHash mergeSetBlues = 3; + repeated DbHash mergeSetReds = 4; + repeated DbBluesAnticoneSizes bluesAnticoneSizes = 5; +} + +message DbBluesAnticoneSizes { + DbHash blueHash = 1; + uint32 anticoneSize = 2; +} + +message DbMultiset { + bytes multiset = 1; +} + +message DbUtxoSet { + repeated DbUtxoCollectionItem items = 1; +} + +message DbUtxoCollectionItem { + DbOutpoint outpoint = 1; + DbUtxoEntry utxoEntry = 2; +} + +message DbUtxoEntry { + uint64 amount = 1; + bytes scriptPublicKey = 2; + uint64 blockBlueScore = 3; + bool isCoinbase = 4; +} + +message DbReachabilityData { + DbReachabilityTreeNode treeNode = 1; + repeated DbHash futureCoveringSet = 2; +} + +message DbReachabilityTreeNode { + repeated DbHash children = 1; + DbHash parent = 2; + DbReachabilityInterval interval = 3; +} + +message DbReachabilityInterval { + uint64 start = 1; + uint64 end = 2; +} + +message DbUtxoDiff { + repeated DbUtxoCollectionItem toAdd = 1; + repeated DbUtxoCollectionItem toRemove = 2; } diff --git a/domain/consensus/datastructures/blockheaderstore/blockheaderstore.go b/domain/consensus/datastructures/blockheaderstore/blockheaderstore.go index 139d6ce79..42ffe2b50 100644 --- a/domain/consensus/datastructures/blockheaderstore/blockheaderstore.go +++ b/domain/consensus/datastructures/blockheaderstore/blockheaderstore.go @@ -107,17 +107,17 @@ func (bms *blockHeaderStore) hashAsKey(hash *externalapi.DomainHash) model.DBKey } func (bms *blockHeaderStore) serializeHeader(header *externalapi.DomainBlockHeader) ([]byte, error) { - dbParentHashes := make([][]byte, len(header.ParentHashes)) + dbParentHashes := make([]*serialization.DbHash, len(header.ParentHashes)) for i, parentHash := range header.ParentHashes { - dbParentHashes[i] = parentHash[:] + dbParentHashes[i] = &serialization.DbHash{Hash: parentHash[:]} } dbBlockHeader := &serialization.DbBlockHeader{ Version: header.Version, ParentHashes: dbParentHashes, - HashMerkleRoot: header.HashMerkleRoot[:], - AcceptedIDMerkleRoot: header.AcceptedIDMerkleRoot[:], - UtxoCommitment: header.UTXOCommitment[:], + HashMerkleRoot: &serialization.DbHash{Hash: header.HashMerkleRoot[:]}, + AcceptedIDMerkleRoot: &serialization.DbHash{Hash: header.AcceptedIDMerkleRoot[:]}, + UtxoCommitment: &serialization.DbHash{Hash: header.UTXOCommitment[:]}, TimeInMilliseconds: header.TimeInMilliseconds, Bits: header.Bits, Nonce: header.Nonce, @@ -135,20 +135,20 @@ func (bms *blockHeaderStore) deserializeHeader(headerBytes []byte) (*externalapi parentHashes := make([]*externalapi.DomainHash, len(dbBlockHeader.ParentHashes)) for i, dbParentHash := range dbBlockHeader.ParentHashes { - parentHashes[i], err = hashes.FromBytes(dbParentHash) + parentHashes[i], err = hashes.FromBytes(dbParentHash.Hash) if err != nil { return nil, err } } - hashMerkleRoot, err := hashes.FromBytes(dbBlockHeader.HashMerkleRoot) + hashMerkleRoot, err := hashes.FromBytes(dbBlockHeader.HashMerkleRoot.Hash) if err != nil { return nil, err } - acceptedIDMerkleRoot, err := hashes.FromBytes(dbBlockHeader.AcceptedIDMerkleRoot) + acceptedIDMerkleRoot, err := hashes.FromBytes(dbBlockHeader.AcceptedIDMerkleRoot.Hash) if err != nil { return nil, err } - utxoCommitment, err := hashes.FromBytes(dbBlockHeader.UtxoCommitment) + utxoCommitment, err := hashes.FromBytes(dbBlockHeader.UtxoCommitment.Hash) if err != nil { return nil, err }