diff --git a/dev.docker-compose.yml b/dev.docker-compose.yml index 50f0e1e..e047a71 100644 --- a/dev.docker-compose.yml +++ b/dev.docker-compose.yml @@ -92,7 +92,7 @@ services: - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" ports: - - "80:80" + - "8009:80" - "127.0.0.1:8081:8080" depends_on: - "qubic-archiver" diff --git a/protobuff/archive.pb.go b/protobuff/archive.pb.go index 33aa8d1..80ca5da 100644 --- a/protobuff/archive.pb.go +++ b/protobuff/archive.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v4.25.3 +// protoc v5.27.1 // source: archive.proto package protobuff @@ -1744,53 +1744,6 @@ func (x *GetHealthCheckResponse) GetStatus() bool { return false } -type GetLatestTickResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LatestTick uint32 `protobuf:"varint,1,opt,name=latest_tick,json=latestTick,proto3" json:"latest_tick,omitempty"` -} - -func (x *GetLatestTickResponse) Reset() { - *x = GetLatestTickResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetLatestTickResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetLatestTickResponse) ProtoMessage() {} - -func (x *GetLatestTickResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[30] - 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 GetLatestTickResponse.ProtoReflect.Descriptor instead. -func (*GetLatestTickResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{30} -} - -func (x *GetLatestTickResponse) GetLatestTick() uint32 { - if x != nil { - return x.LatestTick - } - return 0 -} - type GetTransferTransactionsPerTickRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1804,7 +1757,7 @@ type GetTransferTransactionsPerTickRequest struct { func (x *GetTransferTransactionsPerTickRequest) Reset() { *x = GetTransferTransactionsPerTickRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[31] + mi := &file_archive_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1817,7 +1770,7 @@ func (x *GetTransferTransactionsPerTickRequest) String() string { func (*GetTransferTransactionsPerTickRequest) ProtoMessage() {} func (x *GetTransferTransactionsPerTickRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[31] + mi := &file_archive_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1830,7 +1783,7 @@ func (x *GetTransferTransactionsPerTickRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use GetTransferTransactionsPerTickRequest.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{31} + return file_archive_proto_rawDescGZIP(), []int{30} } func (x *GetTransferTransactionsPerTickRequest) GetIdentity() string { @@ -1865,7 +1818,7 @@ type GetTransferTransactionsPerTickResponse struct { func (x *GetTransferTransactionsPerTickResponse) Reset() { *x = GetTransferTransactionsPerTickResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[32] + mi := &file_archive_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1878,7 +1831,7 @@ func (x *GetTransferTransactionsPerTickResponse) String() string { func (*GetTransferTransactionsPerTickResponse) ProtoMessage() {} func (x *GetTransferTransactionsPerTickResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[32] + mi := &file_archive_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1891,7 +1844,7 @@ func (x *GetTransferTransactionsPerTickResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use GetTransferTransactionsPerTickResponse.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{32} + return file_archive_proto_rawDescGZIP(), []int{31} } func (x *GetTransferTransactionsPerTickResponse) GetTransferTransactionsPerTick() []*TransferTransactionsPerTick { @@ -1912,7 +1865,7 @@ type GetChainHashRequest struct { func (x *GetChainHashRequest) Reset() { *x = GetChainHashRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[33] + mi := &file_archive_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1925,7 +1878,7 @@ func (x *GetChainHashRequest) String() string { func (*GetChainHashRequest) ProtoMessage() {} func (x *GetChainHashRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[33] + mi := &file_archive_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1938,7 +1891,7 @@ func (x *GetChainHashRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChainHashRequest.ProtoReflect.Descriptor instead. func (*GetChainHashRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{33} + return file_archive_proto_rawDescGZIP(), []int{32} } func (x *GetChainHashRequest) GetTickNumber() uint32 { @@ -1959,7 +1912,7 @@ type GetChainHashResponse struct { func (x *GetChainHashResponse) Reset() { *x = GetChainHashResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[34] + mi := &file_archive_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1972,7 +1925,7 @@ func (x *GetChainHashResponse) String() string { func (*GetChainHashResponse) ProtoMessage() {} func (x *GetChainHashResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[34] + mi := &file_archive_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1985,7 +1938,7 @@ func (x *GetChainHashResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChainHashResponse.ProtoReflect.Descriptor instead. func (*GetChainHashResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{34} + return file_archive_proto_rawDescGZIP(), []int{33} } func (x *GetChainHashResponse) GetHexDigest() string { @@ -2007,7 +1960,7 @@ type ProcessedTickInterval struct { func (x *ProcessedTickInterval) Reset() { *x = ProcessedTickInterval{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[35] + mi := &file_archive_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2020,7 +1973,7 @@ func (x *ProcessedTickInterval) String() string { func (*ProcessedTickInterval) ProtoMessage() {} func (x *ProcessedTickInterval) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[35] + mi := &file_archive_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2033,7 +1986,7 @@ func (x *ProcessedTickInterval) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTickInterval.ProtoReflect.Descriptor instead. func (*ProcessedTickInterval) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{35} + return file_archive_proto_rawDescGZIP(), []int{34} } func (x *ProcessedTickInterval) GetInitialProcessedTick() uint32 { @@ -2062,7 +2015,7 @@ type ProcessedTickIntervalsPerEpoch struct { func (x *ProcessedTickIntervalsPerEpoch) Reset() { *x = ProcessedTickIntervalsPerEpoch{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[36] + mi := &file_archive_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2028,7 @@ func (x *ProcessedTickIntervalsPerEpoch) String() string { func (*ProcessedTickIntervalsPerEpoch) ProtoMessage() {} func (x *ProcessedTickIntervalsPerEpoch) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[36] + mi := &file_archive_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,21 +2041,606 @@ func (x *ProcessedTickIntervalsPerEpoch) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTickIntervalsPerEpoch.ProtoReflect.Descriptor instead. func (*ProcessedTickIntervalsPerEpoch) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{36} + return file_archive_proto_rawDescGZIP(), []int{35} } func (x *ProcessedTickIntervalsPerEpoch) GetEpoch() uint32 { if x != nil { - return x.Epoch + return x.Epoch + } + return 0 +} + +func (x *ProcessedTickIntervalsPerEpoch) GetIntervals() []*ProcessedTickInterval { + if x != nil { + return x.Intervals + } + return nil +} + +type Tick struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ComputorIndex uint32 `protobuf:"varint,1,opt,name=computor_index,json=computorIndex,proto3" json:"computor_index,omitempty"` + Epoch uint32 `protobuf:"varint,2,opt,name=epoch,proto3" json:"epoch,omitempty"` + TickNumber uint32 `protobuf:"varint,3,opt,name=tick_number,json=tickNumber,proto3" json:"tick_number,omitempty"` + Timestamp uint64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + VarStruct []byte `protobuf:"bytes,5,opt,name=var_struct,json=varStruct,proto3" json:"var_struct,omitempty"` //Will change to return with unmarshalled info + TimeLock []byte `protobuf:"bytes,6,opt,name=time_lock,json=timeLock,proto3" json:"time_lock,omitempty"` + TransactionIds []string `protobuf:"bytes,7,rep,name=transaction_ids,json=transactionIds,proto3" json:"transaction_ids,omitempty"` + ContractFees []int64 `protobuf:"varint,8,rep,packed,name=contract_fees,json=contractFees,proto3" json:"contract_fees,omitempty"` + SignatureHex string `protobuf:"bytes,9,opt,name=signature_hex,json=signatureHex,proto3" json:"signature_hex,omitempty"` +} + +func (x *Tick) Reset() { + *x = Tick{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tick) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tick) ProtoMessage() {} + +func (x *Tick) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[36] + 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 Tick.ProtoReflect.Descriptor instead. +func (*Tick) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{36} +} + +func (x *Tick) GetComputorIndex() uint32 { + if x != nil { + return x.ComputorIndex + } + return 0 +} + +func (x *Tick) GetEpoch() uint32 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *Tick) GetTickNumber() uint32 { + if x != nil { + return x.TickNumber + } + return 0 +} + +func (x *Tick) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *Tick) GetVarStruct() []byte { + if x != nil { + return x.VarStruct + } + return nil +} + +func (x *Tick) GetTimeLock() []byte { + if x != nil { + return x.TimeLock + } + return nil +} + +func (x *Tick) GetTransactionIds() []string { + if x != nil { + return x.TransactionIds + } + return nil +} + +func (x *Tick) GetContractFees() []int64 { + if x != nil { + return x.ContractFees + } + return nil +} + +func (x *Tick) GetSignatureHex() string { + if x != nil { + return x.SignatureHex + } + return "" +} + +type GetTickResponseV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tick_Data *Tick `protobuf:"bytes,1,opt,name=tick_Data,json=tickData,proto3" json:"tick_Data,omitempty"` +} + +func (x *GetTickResponseV2) Reset() { + *x = GetTickResponseV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickResponseV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickResponseV2) ProtoMessage() {} + +func (x *GetTickResponseV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[37] + 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 GetTickResponseV2.ProtoReflect.Descriptor instead. +func (*GetTickResponseV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{37} +} + +func (x *GetTickResponseV2) GetTick_Data() *Tick { + if x != nil { + return x.Tick_Data + } + return nil +} + +type PerTickIdentityTransfers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TickNumber uint32 `protobuf:"varint,1,opt,name=tick_number,json=tickNumber,proto3" json:"tick_number,omitempty"` + Identity string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"` + Transactions []*TransactionData `protobuf:"bytes,3,rep,name=transactions,proto3" json:"transactions,omitempty"` +} + +func (x *PerTickIdentityTransfers) Reset() { + *x = PerTickIdentityTransfers{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PerTickIdentityTransfers) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PerTickIdentityTransfers) ProtoMessage() {} + +func (x *PerTickIdentityTransfers) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[38] + 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 PerTickIdentityTransfers.ProtoReflect.Descriptor instead. +func (*PerTickIdentityTransfers) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{38} +} + +func (x *PerTickIdentityTransfers) GetTickNumber() uint32 { + if x != nil { + return x.TickNumber + } + return 0 +} + +func (x *PerTickIdentityTransfers) GetIdentity() string { + if x != nil { + return x.Identity + } + return "" +} + +func (x *PerTickIdentityTransfers) GetTransactions() []*TransactionData { + if x != nil { + return x.Transactions + } + return nil +} + +type GetIdentityTransfersInTickRangeResponseV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transactions []*PerTickIdentityTransfers `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` +} + +func (x *GetIdentityTransfersInTickRangeResponseV2) Reset() { + *x = GetIdentityTransfersInTickRangeResponseV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetIdentityTransfersInTickRangeResponseV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetIdentityTransfersInTickRangeResponseV2) ProtoMessage() {} + +func (x *GetIdentityTransfersInTickRangeResponseV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[39] + 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 GetIdentityTransfersInTickRangeResponseV2.ProtoReflect.Descriptor instead. +func (*GetIdentityTransfersInTickRangeResponseV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{39} +} + +func (x *GetIdentityTransfersInTickRangeResponseV2) GetTransactions() []*PerTickIdentityTransfers { + if x != nil { + return x.Transactions + } + return nil +} + +// SendMany Transaction +type SendManyTransfer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DestId string `protobuf:"bytes,1,opt,name=dest_id,json=destId,proto3" json:"dest_id,omitempty"` + Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *SendManyTransfer) Reset() { + *x = SendManyTransfer{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendManyTransfer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendManyTransfer) ProtoMessage() {} + +func (x *SendManyTransfer) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[40] + 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 SendManyTransfer.ProtoReflect.Descriptor instead. +func (*SendManyTransfer) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{40} +} + +func (x *SendManyTransfer) GetDestId() string { + if x != nil { + return x.DestId + } + return "" +} + +func (x *SendManyTransfer) GetAmount() int64 { + if x != nil { + return x.Amount + } + return 0 +} + +type SendManyTransaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SourceId string `protobuf:"bytes,1,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` + TickNumber uint32 `protobuf:"varint,2,opt,name=tick_number,json=tickNumber,proto3" json:"tick_number,omitempty"` + Transfers []*SendManyTransfer `protobuf:"bytes,3,rep,name=transfers,proto3" json:"transfers,omitempty"` + TotalAmount int64 `protobuf:"varint,4,opt,name=total_amount,json=totalAmount,proto3" json:"total_amount,omitempty"` + SignatureHex string `protobuf:"bytes,5,opt,name=signature_hex,json=signatureHex,proto3" json:"signature_hex,omitempty"` + TxId string `protobuf:"bytes,6,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` +} + +func (x *SendManyTransaction) Reset() { + *x = SendManyTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendManyTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendManyTransaction) ProtoMessage() {} + +func (x *SendManyTransaction) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[41] + 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 SendManyTransaction.ProtoReflect.Descriptor instead. +func (*SendManyTransaction) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{41} +} + +func (x *SendManyTransaction) GetSourceId() string { + if x != nil { + return x.SourceId + } + return "" +} + +func (x *SendManyTransaction) GetTickNumber() uint32 { + if x != nil { + return x.TickNumber + } + return 0 +} + +func (x *SendManyTransaction) GetTransfers() []*SendManyTransfer { + if x != nil { + return x.Transfers + } + return nil +} + +func (x *SendManyTransaction) GetTotalAmount() int64 { + if x != nil { + return x.TotalAmount + } + return 0 +} + +func (x *SendManyTransaction) GetSignatureHex() string { + if x != nil { + return x.SignatureHex + } + return "" +} + +func (x *SendManyTransaction) GetTxId() string { + if x != nil { + return x.TxId + } + return "" +} + +// Wrapper around send many transaction and additional data +type SendManyTransactionData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *SendManyTransaction `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"` + Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + MoneyFlew bool `protobuf:"varint,4,opt,name=money_flew,json=moneyFlew,proto3" json:"money_flew,omitempty"` +} + +func (x *SendManyTransactionData) Reset() { + *x = SendManyTransactionData{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendManyTransactionData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendManyTransactionData) ProtoMessage() {} + +func (x *SendManyTransactionData) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[42] + 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 SendManyTransactionData.ProtoReflect.Descriptor instead. +func (*SendManyTransactionData) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{42} +} + +func (x *SendManyTransactionData) GetTransaction() *SendManyTransaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *SendManyTransactionData) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *SendManyTransactionData) GetMoneyFlew() bool { + if x != nil { + return x.MoneyFlew + } + return false +} + +type GetSendManyTransactionRequestV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TxId string `protobuf:"bytes,1,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` +} + +func (x *GetSendManyTransactionRequestV2) Reset() { + *x = GetSendManyTransactionRequestV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSendManyTransactionRequestV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSendManyTransactionRequestV2) ProtoMessage() {} + +func (x *GetSendManyTransactionRequestV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[43] + 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 GetSendManyTransactionRequestV2.ProtoReflect.Descriptor instead. +func (*GetSendManyTransactionRequestV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{43} +} + +func (x *GetSendManyTransactionRequestV2) GetTxId() string { + if x != nil { + return x.TxId + } + return "" +} + +type GetSendManyTransactionResponseV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *SendManyTransaction `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"` + Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + MoneyFlew bool `protobuf:"varint,4,opt,name=money_flew,json=moneyFlew,proto3" json:"money_flew,omitempty"` +} + +func (x *GetSendManyTransactionResponseV2) Reset() { + *x = GetSendManyTransactionResponseV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSendManyTransactionResponseV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSendManyTransactionResponseV2) ProtoMessage() {} + +func (x *GetSendManyTransactionResponseV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[44] + 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 GetSendManyTransactionResponseV2.ProtoReflect.Descriptor instead. +func (*GetSendManyTransactionResponseV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{44} +} + +func (x *GetSendManyTransactionResponseV2) GetTransaction() *SendManyTransaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *GetSendManyTransactionResponseV2) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (x *ProcessedTickIntervalsPerEpoch) GetIntervals() []*ProcessedTickInterval { +func (x *GetSendManyTransactionResponseV2) GetMoneyFlew() bool { if x != nil { - return x.Intervals + return x.MoneyFlew } - return nil + return false } // Wrapper around transaction and additional data @@ -2119,7 +2657,7 @@ type TransactionData struct { func (x *TransactionData) Reset() { *x = TransactionData{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[37] + mi := &file_archive_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2132,7 +2670,7 @@ func (x *TransactionData) String() string { func (*TransactionData) ProtoMessage() {} func (x *TransactionData) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[37] + mi := &file_archive_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2145,7 +2683,7 @@ func (x *TransactionData) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionData.ProtoReflect.Descriptor instead. func (*TransactionData) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{37} + return file_archive_proto_rawDescGZIP(), []int{45} } func (x *TransactionData) GetTransaction() *Transaction { @@ -2169,8 +2707,55 @@ func (x *TransactionData) GetMoneyFlew() bool { return false } +type GetLatestTickResponseV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LatestTick uint32 `protobuf:"varint,1,opt,name=latest_tick,json=latestTick,proto3" json:"latest_tick,omitempty"` +} + +func (x *GetLatestTickResponseV2) Reset() { + *x = GetLatestTickResponseV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLatestTickResponseV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLatestTickResponseV2) ProtoMessage() {} + +func (x *GetLatestTickResponseV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[46] + 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 GetLatestTickResponseV2.ProtoReflect.Descriptor instead. +func (*GetLatestTickResponseV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{46} +} + +func (x *GetLatestTickResponseV2) GetLatestTick() uint32 { + if x != nil { + return x.LatestTick + } + return 0 +} + // Tick Transactions -type GetTickTransactionsRequestV2 struct { +type GetTickRequestV2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2178,23 +2763,23 @@ type GetTickTransactionsRequestV2 struct { TickNumber uint32 `protobuf:"varint,1,opt,name=tick_number,json=tickNumber,proto3" json:"tick_number,omitempty"` } -func (x *GetTickTransactionsRequestV2) Reset() { - *x = GetTickTransactionsRequestV2{} +func (x *GetTickRequestV2) Reset() { + *x = GetTickRequestV2{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[38] + mi := &file_archive_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetTickTransactionsRequestV2) String() string { +func (x *GetTickRequestV2) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTickTransactionsRequestV2) ProtoMessage() {} +func (*GetTickRequestV2) ProtoMessage() {} -func (x *GetTickTransactionsRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[38] +func (x *GetTickRequestV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2205,12 +2790,12 @@ func (x *GetTickTransactionsRequestV2) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetTickTransactionsRequestV2.ProtoReflect.Descriptor instead. -func (*GetTickTransactionsRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{38} +// Deprecated: Use GetTickRequestV2.ProtoReflect.Descriptor instead. +func (*GetTickRequestV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{47} } -func (x *GetTickTransactionsRequestV2) GetTickNumber() uint32 { +func (x *GetTickRequestV2) GetTickNumber() uint32 { if x != nil { return x.TickNumber } @@ -2228,7 +2813,7 @@ type GetTickTransactionsResponseV2 struct { func (x *GetTickTransactionsResponseV2) Reset() { *x = GetTickTransactionsResponseV2{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[39] + mi := &file_archive_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2241,7 +2826,7 @@ func (x *GetTickTransactionsResponseV2) String() string { func (*GetTickTransactionsResponseV2) ProtoMessage() {} func (x *GetTickTransactionsResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[39] + mi := &file_archive_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2254,7 +2839,7 @@ func (x *GetTickTransactionsResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickTransactionsResponseV2.ProtoReflect.Descriptor instead. func (*GetTickTransactionsResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{39} + return file_archive_proto_rawDescGZIP(), []int{48} } func (x *GetTickTransactionsResponseV2) GetTransactions() []*TransactionData { @@ -2276,7 +2861,7 @@ type GetTransactionRequestV2 struct { func (x *GetTransactionRequestV2) Reset() { *x = GetTransactionRequestV2{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[40] + mi := &file_archive_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2289,7 +2874,7 @@ func (x *GetTransactionRequestV2) String() string { func (*GetTransactionRequestV2) ProtoMessage() {} func (x *GetTransactionRequestV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[40] + mi := &file_archive_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2302,7 +2887,7 @@ func (x *GetTransactionRequestV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionRequestV2.ProtoReflect.Descriptor instead. func (*GetTransactionRequestV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{40} + return file_archive_proto_rawDescGZIP(), []int{49} } func (x *GetTransactionRequestV2) GetTxId() string { @@ -2325,7 +2910,7 @@ type GetTransactionResponseV2 struct { func (x *GetTransactionResponseV2) Reset() { *x = GetTransactionResponseV2{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[41] + mi := &file_archive_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2338,7 +2923,7 @@ func (x *GetTransactionResponseV2) String() string { func (*GetTransactionResponseV2) ProtoMessage() {} func (x *GetTransactionResponseV2) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[41] + mi := &file_archive_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2351,7 +2936,7 @@ func (x *GetTransactionResponseV2) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionResponseV2.ProtoReflect.Descriptor instead. func (*GetTransactionResponseV2) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{41} + return file_archive_proto_rawDescGZIP(), []int{50} } func (x *GetTransactionResponseV2) GetTransaction() *Transaction { @@ -2655,281 +3240,430 @@ var file_archive_proto_rawDesc = []byte{ 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, - 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x7d, 0x0a, 0x25, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, - 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x26, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x70, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, - 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, - 0x69, 0x63, 0x6b, 0x22, 0x36, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x78, 0x44, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x22, 0x7d, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, - 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, - 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, - 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, - 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x48, - 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x75, 0x73, 0x22, 0x7d, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, + 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, + 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, + 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, + 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x1b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x36, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x22, 0x35, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x78, + 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, + 0x65, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x7d, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, - 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, - 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x3f, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x56, 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x56, 0x32, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, - 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 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, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x32, 0xf3, 0x17, 0x0a, 0x0e, - 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xba, - 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, 0x71, 0x75, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, + 0x22, 0xb1, 0x02, 0x0a, 0x04, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, + 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x63, + 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x65, 0x65, 0x73, 0x12, + 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x48, 0x65, 0x78, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x08, 0x74, + 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x50, 0x65, 0x72, 0x54, + 0x69, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x84, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, + 0x57, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x43, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, + 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, + 0x64, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, + 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfb, 0x01, + 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, + 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x17, + 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, + 0x79, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, + 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, + 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x36, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, + 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xb1, + 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x56, 0x32, 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, + 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, + 0x65, 0x77, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x2b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, - 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x1d, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x3a, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x33, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6f, + 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, + 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x2e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, + 0xa1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x48, 0x0a, 0x0b, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 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, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, + 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, + 0x6c, 0x65, 0x77, 0x32, 0xc3, 0x1f, 0x0a, 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x56, 0x32, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x32, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, + 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0xa4, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x44, 0x61, 0x74, 0x61, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, - 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, - 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0xd2, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x56, 0x32, 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x24, 0x12, 0x22, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0x97, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x12, + 0x9d, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x48, 0x61, 0x73, 0x68, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x56, 0x32, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, + 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, + 0xae, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x56, 0x32, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, + 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0xbd, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x3e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x9c, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x32, 0x12, 0x32, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, + 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x12, 0xc6, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, + 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x56, 0x32, 0x12, 0x2b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, + 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x9c, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x32, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x56, 0x32, 0x1a, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, + 0x17, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x3a, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, - 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, - 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, + 0x32, 0x1a, 0x3b, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x28, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x73, 0x65, 0x6e, 0x64, 0x6d, 0x61, 0x6e, 0x79, 0x12, 0xd6, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x32, 0x12, 0x40, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x44, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, - 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2d, 0x74, - 0x69, 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x73, 0x49, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, + 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x7b, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x73, 0x12, 0x97, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, - 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc3, 0x01, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, + 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, + 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb0, 0x01, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, + 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x2d, 0x74, 0x69, 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb2, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, - 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, + 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2d, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0xa6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, + 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x65, 0x64, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x40, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, - 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, - 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x9b, 0x01, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, + 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, + 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x97, 0x01, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, + 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2d, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xde, + 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, + 0x6b, 0x12, 0x40, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, - 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x74, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, - 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x71, 0x75, 0x62, 0x69, 0x63, 0x2f, 0x67, 0x6f, 0x2d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x66, 0x2f, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x95, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, + 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2c, 0x2e, 0x71, + 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x73, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x32, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x16, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, + 0x69, 0x63, 0x6b, 0x12, 0x74, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2f, 0x67, 0x6f, + 0x2d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x66, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2944,53 +3678,62 @@ func file_archive_proto_rawDescGZIP() []byte { return file_archive_proto_rawDescData } -var file_archive_proto_msgTypes = make([]protoimpl.MessageInfo, 44) +var file_archive_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_archive_proto_goTypes = []interface{}{ - (*TickData)(nil), // 0: qubic.archiver.archive.pb.TickData - (*GetTickDataRequest)(nil), // 1: qubic.archiver.archive.pb.GetTickDataRequest - (*GetTickDataResponse)(nil), // 2: qubic.archiver.archive.pb.GetTickDataResponse - (*Transaction)(nil), // 3: qubic.archiver.archive.pb.Transaction - (*TransactionStatus)(nil), // 4: qubic.archiver.archive.pb.TransactionStatus - (*TickTransactionsStatus)(nil), // 5: qubic.archiver.archive.pb.TickTransactionsStatus - (*NextAvailableTick)(nil), // 6: qubic.archiver.archive.pb.NextAvailableTick - (*LastProcessedTick)(nil), // 7: qubic.archiver.archive.pb.LastProcessedTick - (*GetTransactionRequest)(nil), // 8: qubic.archiver.archive.pb.GetTransactionRequest - (*GetTransactionResponse)(nil), // 9: qubic.archiver.archive.pb.GetTransactionResponse - (*GetTransactionStatusRequest)(nil), // 10: qubic.archiver.archive.pb.GetTransactionStatusRequest - (*GetTransactionStatusResponse)(nil), // 11: qubic.archiver.archive.pb.GetTransactionStatusResponse - (*GetTickTransactionsRequest)(nil), // 12: qubic.archiver.archive.pb.GetTickTransactionsRequest - (*GetTickTransactionsResponse)(nil), // 13: qubic.archiver.archive.pb.GetTickTransactionsResponse - (*GetTickApprovedTransactionsRequest)(nil), // 14: qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest - (*GetTickApprovedTransactionsResponse)(nil), // 15: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse - (*QuorumDiff)(nil), // 16: qubic.archiver.archive.pb.QuorumDiff - (*QuorumTickStructure)(nil), // 17: qubic.archiver.archive.pb.QuorumTickStructure - (*SkippedTicksInterval)(nil), // 18: qubic.archiver.archive.pb.SkippedTicksInterval - (*SkippedTicksIntervalList)(nil), // 19: qubic.archiver.archive.pb.SkippedTicksIntervalList - (*QuorumTickData)(nil), // 20: qubic.archiver.archive.pb.QuorumTickData - (*GetQuorumTickDataRequest)(nil), // 21: qubic.archiver.archive.pb.GetQuorumTickDataRequest - (*GetQuorumTickDataResponse)(nil), // 22: qubic.archiver.archive.pb.GetQuorumTickDataResponse - (*Computors)(nil), // 23: qubic.archiver.archive.pb.Computors - (*GetComputorsRequest)(nil), // 24: qubic.archiver.archive.pb.GetComputorsRequest - (*GetComputorsResponse)(nil), // 25: qubic.archiver.archive.pb.GetComputorsResponse - (*TransferTransactionsPerTick)(nil), // 26: qubic.archiver.archive.pb.TransferTransactionsPerTick - (*ProcessedTick)(nil), // 27: qubic.archiver.archive.pb.ProcessedTick - (*GetStatusResponse)(nil), // 28: qubic.archiver.archive.pb.GetStatusResponse - (*GetHealthCheckResponse)(nil), // 29: qubic.archiver.archive.pb.GetHealthCheckResponse - (*GetLatestTickResponse)(nil), // 30: qubic.archiver.archive.pb.GetLatestTickResponse - (*GetTransferTransactionsPerTickRequest)(nil), // 31: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest - (*GetTransferTransactionsPerTickResponse)(nil), // 32: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse - (*GetChainHashRequest)(nil), // 33: qubic.archiver.archive.pb.GetChainHashRequest - (*GetChainHashResponse)(nil), // 34: qubic.archiver.archive.pb.GetChainHashResponse - (*ProcessedTickInterval)(nil), // 35: qubic.archiver.archive.pb.ProcessedTickInterval - (*ProcessedTickIntervalsPerEpoch)(nil), // 36: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch - (*TransactionData)(nil), // 37: qubic.archiver.archive.pb.TransactionData - (*GetTickTransactionsRequestV2)(nil), // 38: qubic.archiver.archive.pb.GetTickTransactionsRequestV2 - (*GetTickTransactionsResponseV2)(nil), // 39: qubic.archiver.archive.pb.GetTickTransactionsResponseV2 - (*GetTransactionRequestV2)(nil), // 40: qubic.archiver.archive.pb.GetTransactionRequestV2 - (*GetTransactionResponseV2)(nil), // 41: qubic.archiver.archive.pb.GetTransactionResponseV2 - nil, // 42: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry - nil, // 43: qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry - (*emptypb.Empty)(nil), // 44: google.protobuf.Empty + (*TickData)(nil), // 0: qubic.archiver.archive.pb.TickData + (*GetTickDataRequest)(nil), // 1: qubic.archiver.archive.pb.GetTickDataRequest + (*GetTickDataResponse)(nil), // 2: qubic.archiver.archive.pb.GetTickDataResponse + (*Transaction)(nil), // 3: qubic.archiver.archive.pb.Transaction + (*TransactionStatus)(nil), // 4: qubic.archiver.archive.pb.TransactionStatus + (*TickTransactionsStatus)(nil), // 5: qubic.archiver.archive.pb.TickTransactionsStatus + (*NextAvailableTick)(nil), // 6: qubic.archiver.archive.pb.NextAvailableTick + (*LastProcessedTick)(nil), // 7: qubic.archiver.archive.pb.LastProcessedTick + (*GetTransactionRequest)(nil), // 8: qubic.archiver.archive.pb.GetTransactionRequest + (*GetTransactionResponse)(nil), // 9: qubic.archiver.archive.pb.GetTransactionResponse + (*GetTransactionStatusRequest)(nil), // 10: qubic.archiver.archive.pb.GetTransactionStatusRequest + (*GetTransactionStatusResponse)(nil), // 11: qubic.archiver.archive.pb.GetTransactionStatusResponse + (*GetTickTransactionsRequest)(nil), // 12: qubic.archiver.archive.pb.GetTickTransactionsRequest + (*GetTickTransactionsResponse)(nil), // 13: qubic.archiver.archive.pb.GetTickTransactionsResponse + (*GetTickApprovedTransactionsRequest)(nil), // 14: qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest + (*GetTickApprovedTransactionsResponse)(nil), // 15: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse + (*QuorumDiff)(nil), // 16: qubic.archiver.archive.pb.QuorumDiff + (*QuorumTickStructure)(nil), // 17: qubic.archiver.archive.pb.QuorumTickStructure + (*SkippedTicksInterval)(nil), // 18: qubic.archiver.archive.pb.SkippedTicksInterval + (*SkippedTicksIntervalList)(nil), // 19: qubic.archiver.archive.pb.SkippedTicksIntervalList + (*QuorumTickData)(nil), // 20: qubic.archiver.archive.pb.QuorumTickData + (*GetQuorumTickDataRequest)(nil), // 21: qubic.archiver.archive.pb.GetQuorumTickDataRequest + (*GetQuorumTickDataResponse)(nil), // 22: qubic.archiver.archive.pb.GetQuorumTickDataResponse + (*Computors)(nil), // 23: qubic.archiver.archive.pb.Computors + (*GetComputorsRequest)(nil), // 24: qubic.archiver.archive.pb.GetComputorsRequest + (*GetComputorsResponse)(nil), // 25: qubic.archiver.archive.pb.GetComputorsResponse + (*TransferTransactionsPerTick)(nil), // 26: qubic.archiver.archive.pb.TransferTransactionsPerTick + (*ProcessedTick)(nil), // 27: qubic.archiver.archive.pb.ProcessedTick + (*GetStatusResponse)(nil), // 28: qubic.archiver.archive.pb.GetStatusResponse + (*GetHealthCheckResponse)(nil), // 29: qubic.archiver.archive.pb.GetHealthCheckResponse + (*GetTransferTransactionsPerTickRequest)(nil), // 30: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + (*GetTransferTransactionsPerTickResponse)(nil), // 31: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse + (*GetChainHashRequest)(nil), // 32: qubic.archiver.archive.pb.GetChainHashRequest + (*GetChainHashResponse)(nil), // 33: qubic.archiver.archive.pb.GetChainHashResponse + (*ProcessedTickInterval)(nil), // 34: qubic.archiver.archive.pb.ProcessedTickInterval + (*ProcessedTickIntervalsPerEpoch)(nil), // 35: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch + (*Tick)(nil), // 36: qubic.archiver.archive.pb.Tick + (*GetTickResponseV2)(nil), // 37: qubic.archiver.archive.pb.GetTickResponseV2 + (*PerTickIdentityTransfers)(nil), // 38: qubic.archiver.archive.pb.PerTickIdentityTransfers + (*GetIdentityTransfersInTickRangeResponseV2)(nil), // 39: qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2 + (*SendManyTransfer)(nil), // 40: qubic.archiver.archive.pb.SendManyTransfer + (*SendManyTransaction)(nil), // 41: qubic.archiver.archive.pb.SendManyTransaction + (*SendManyTransactionData)(nil), // 42: qubic.archiver.archive.pb.SendManyTransactionData + (*GetSendManyTransactionRequestV2)(nil), // 43: qubic.archiver.archive.pb.GetSendManyTransactionRequestV2 + (*GetSendManyTransactionResponseV2)(nil), // 44: qubic.archiver.archive.pb.GetSendManyTransactionResponseV2 + (*TransactionData)(nil), // 45: qubic.archiver.archive.pb.TransactionData + (*GetLatestTickResponseV2)(nil), // 46: qubic.archiver.archive.pb.GetLatestTickResponseV2 + (*GetTickRequestV2)(nil), // 47: qubic.archiver.archive.pb.GetTickRequestV2 + (*GetTickTransactionsResponseV2)(nil), // 48: qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + (*GetTransactionRequestV2)(nil), // 49: qubic.archiver.archive.pb.GetTransactionRequestV2 + (*GetTransactionResponseV2)(nil), // 50: qubic.archiver.archive.pb.GetTransactionResponseV2 + nil, // 51: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry + nil, // 52: qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry + (*emptypb.Empty)(nil), // 53: google.protobuf.Empty } var file_archive_proto_depIdxs = []int32{ 0, // 0: qubic.archiver.archive.pb.GetTickDataResponse.tick_data:type_name -> qubic.archiver.archive.pb.TickData @@ -3001,61 +3744,79 @@ var file_archive_proto_depIdxs = []int32{ 3, // 5: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse.approved_transactions:type_name -> qubic.archiver.archive.pb.Transaction 18, // 6: qubic.archiver.archive.pb.SkippedTicksIntervalList.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval 17, // 7: qubic.archiver.archive.pb.QuorumTickData.quorum_tick_structure:type_name -> qubic.archiver.archive.pb.QuorumTickStructure - 42, // 8: qubic.archiver.archive.pb.QuorumTickData.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry + 51, // 8: qubic.archiver.archive.pb.QuorumTickData.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry 20, // 9: qubic.archiver.archive.pb.GetQuorumTickDataResponse.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickData 23, // 10: qubic.archiver.archive.pb.GetComputorsResponse.computors:type_name -> qubic.archiver.archive.pb.Computors 3, // 11: qubic.archiver.archive.pb.TransferTransactionsPerTick.transactions:type_name -> qubic.archiver.archive.pb.Transaction 27, // 12: qubic.archiver.archive.pb.GetStatusResponse.last_processed_tick:type_name -> qubic.archiver.archive.pb.ProcessedTick - 43, // 13: qubic.archiver.archive.pb.GetStatusResponse.last_processed_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry + 52, // 13: qubic.archiver.archive.pb.GetStatusResponse.last_processed_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry 18, // 14: qubic.archiver.archive.pb.GetStatusResponse.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval - 36, // 15: qubic.archiver.archive.pb.GetStatusResponse.processed_tick_intervals_per_epoch:type_name -> qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch + 35, // 15: qubic.archiver.archive.pb.GetStatusResponse.processed_tick_intervals_per_epoch:type_name -> qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch 26, // 16: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse.transfer_transactions_per_tick:type_name -> qubic.archiver.archive.pb.TransferTransactionsPerTick - 35, // 17: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch.intervals:type_name -> qubic.archiver.archive.pb.ProcessedTickInterval - 3, // 18: qubic.archiver.archive.pb.TransactionData.transaction:type_name -> qubic.archiver.archive.pb.Transaction - 37, // 19: qubic.archiver.archive.pb.GetTickTransactionsResponseV2.transactions:type_name -> qubic.archiver.archive.pb.TransactionData - 3, // 20: qubic.archiver.archive.pb.GetTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.Transaction - 16, // 21: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiff - 38, // 22: qubic.archiver.archive.pb.ArchiveService.GetAllTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 - 38, // 23: qubic.archiver.archive.pb.ArchiveService.GetTransferTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 - 38, // 24: qubic.archiver.archive.pb.ArchiveService.GetApprovedTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 - 40, // 25: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:input_type -> qubic.archiver.archive.pb.GetTransactionRequestV2 - 1, // 26: qubic.archiver.archive.pb.ArchiveService.GetTickData:input_type -> qubic.archiver.archive.pb.GetTickDataRequest - 21, // 27: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:input_type -> qubic.archiver.archive.pb.GetQuorumTickDataRequest - 12, // 28: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest - 12, // 29: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest - 14, // 30: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:input_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest - 33, // 31: qubic.archiver.archive.pb.ArchiveService.GetChainHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest - 33, // 32: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest - 8, // 33: qubic.archiver.archive.pb.ArchiveService.GetTransaction:input_type -> qubic.archiver.archive.pb.GetTransactionRequest - 10, // 34: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:input_type -> qubic.archiver.archive.pb.GetTransactionStatusRequest - 31, // 35: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest - 24, // 36: qubic.archiver.archive.pb.ArchiveService.GetComputors:input_type -> qubic.archiver.archive.pb.GetComputorsRequest - 44, // 37: qubic.archiver.archive.pb.ArchiveService.GetStatus:input_type -> google.protobuf.Empty - 44, // 38: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:input_type -> google.protobuf.Empty - 44, // 39: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:input_type -> google.protobuf.Empty - 39, // 40: qubic.archiver.archive.pb.ArchiveService.GetAllTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 - 39, // 41: qubic.archiver.archive.pb.ArchiveService.GetTransferTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 - 39, // 42: qubic.archiver.archive.pb.ArchiveService.GetApprovedTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 - 41, // 43: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:output_type -> qubic.archiver.archive.pb.GetTransactionResponseV2 - 2, // 44: qubic.archiver.archive.pb.ArchiveService.GetTickData:output_type -> qubic.archiver.archive.pb.GetTickDataResponse - 22, // 45: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse - 13, // 46: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse - 13, // 47: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse - 15, // 48: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:output_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse - 34, // 49: qubic.archiver.archive.pb.ArchiveService.GetChainHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 34, // 50: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 9, // 51: qubic.archiver.archive.pb.ArchiveService.GetTransaction:output_type -> qubic.archiver.archive.pb.GetTransactionResponse - 11, // 52: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:output_type -> qubic.archiver.archive.pb.GetTransactionStatusResponse - 32, // 53: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:output_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse - 25, // 54: qubic.archiver.archive.pb.ArchiveService.GetComputors:output_type -> qubic.archiver.archive.pb.GetComputorsResponse - 28, // 55: qubic.archiver.archive.pb.ArchiveService.GetStatus:output_type -> qubic.archiver.archive.pb.GetStatusResponse - 30, // 56: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:output_type -> qubic.archiver.archive.pb.GetLatestTickResponse - 29, // 57: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:output_type -> qubic.archiver.archive.pb.GetHealthCheckResponse - 40, // [40:58] is the sub-list for method output_type - 22, // [22:40] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 34, // 17: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch.intervals:type_name -> qubic.archiver.archive.pb.ProcessedTickInterval + 36, // 18: qubic.archiver.archive.pb.GetTickResponseV2.tick_Data:type_name -> qubic.archiver.archive.pb.Tick + 45, // 19: qubic.archiver.archive.pb.PerTickIdentityTransfers.transactions:type_name -> qubic.archiver.archive.pb.TransactionData + 38, // 20: qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2.transactions:type_name -> qubic.archiver.archive.pb.PerTickIdentityTransfers + 40, // 21: qubic.archiver.archive.pb.SendManyTransaction.transfers:type_name -> qubic.archiver.archive.pb.SendManyTransfer + 41, // 22: qubic.archiver.archive.pb.SendManyTransactionData.transaction:type_name -> qubic.archiver.archive.pb.SendManyTransaction + 41, // 23: qubic.archiver.archive.pb.GetSendManyTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.SendManyTransaction + 3, // 24: qubic.archiver.archive.pb.TransactionData.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 45, // 25: qubic.archiver.archive.pb.GetTickTransactionsResponseV2.transactions:type_name -> qubic.archiver.archive.pb.TransactionData + 3, // 26: qubic.archiver.archive.pb.GetTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 16, // 27: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiff + 53, // 28: qubic.archiver.archive.pb.ArchiveService.GetLatestTickV2:input_type -> google.protobuf.Empty + 47, // 29: qubic.archiver.archive.pb.ArchiveService.GetTickQuorumDataV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 47, // 30: qubic.archiver.archive.pb.ArchiveService.GetTickChainHashV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 47, // 31: qubic.archiver.archive.pb.ArchiveService.GetTickStoreHashV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 47, // 32: qubic.archiver.archive.pb.ArchiveService.GetAllTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 47, // 33: qubic.archiver.archive.pb.ArchiveService.GetTransferTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 47, // 34: qubic.archiver.archive.pb.ArchiveService.GetApprovedTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickRequestV2 + 49, // 35: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:input_type -> qubic.archiver.archive.pb.GetTransactionRequestV2 + 43, // 36: qubic.archiver.archive.pb.ArchiveService.GetSendManyTransactionV2:input_type -> qubic.archiver.archive.pb.GetSendManyTransactionRequestV2 + 30, // 37: qubic.archiver.archive.pb.ArchiveService.GetIdentityTransfersInTickRangeV2:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + 1, // 38: qubic.archiver.archive.pb.ArchiveService.GetTickData:input_type -> qubic.archiver.archive.pb.GetTickDataRequest + 21, // 39: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:input_type -> qubic.archiver.archive.pb.GetQuorumTickDataRequest + 12, // 40: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest + 12, // 41: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest + 14, // 42: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:input_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest + 32, // 43: qubic.archiver.archive.pb.ArchiveService.GetChainHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest + 32, // 44: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest + 8, // 45: qubic.archiver.archive.pb.ArchiveService.GetTransaction:input_type -> qubic.archiver.archive.pb.GetTransactionRequest + 10, // 46: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:input_type -> qubic.archiver.archive.pb.GetTransactionStatusRequest + 30, // 47: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + 24, // 48: qubic.archiver.archive.pb.ArchiveService.GetComputors:input_type -> qubic.archiver.archive.pb.GetComputorsRequest + 53, // 49: qubic.archiver.archive.pb.ArchiveService.GetStatus:input_type -> google.protobuf.Empty + 53, // 50: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:input_type -> google.protobuf.Empty + 53, // 51: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:input_type -> google.protobuf.Empty + 46, // 52: qubic.archiver.archive.pb.ArchiveService.GetLatestTickV2:output_type -> qubic.archiver.archive.pb.GetLatestTickResponseV2 + 22, // 53: qubic.archiver.archive.pb.ArchiveService.GetTickQuorumDataV2:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse + 33, // 54: qubic.archiver.archive.pb.ArchiveService.GetTickChainHashV2:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 33, // 55: qubic.archiver.archive.pb.ArchiveService.GetTickStoreHashV2:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 48, // 56: qubic.archiver.archive.pb.ArchiveService.GetAllTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 48, // 57: qubic.archiver.archive.pb.ArchiveService.GetTransferTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 48, // 58: qubic.archiver.archive.pb.ArchiveService.GetApprovedTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 50, // 59: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:output_type -> qubic.archiver.archive.pb.GetTransactionResponseV2 + 44, // 60: qubic.archiver.archive.pb.ArchiveService.GetSendManyTransactionV2:output_type -> qubic.archiver.archive.pb.GetSendManyTransactionResponseV2 + 39, // 61: qubic.archiver.archive.pb.ArchiveService.GetIdentityTransfersInTickRangeV2:output_type -> qubic.archiver.archive.pb.GetIdentityTransfersInTickRangeResponseV2 + 2, // 62: qubic.archiver.archive.pb.ArchiveService.GetTickData:output_type -> qubic.archiver.archive.pb.GetTickDataResponse + 22, // 63: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse + 13, // 64: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse + 13, // 65: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse + 15, // 66: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:output_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse + 33, // 67: qubic.archiver.archive.pb.ArchiveService.GetChainHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 33, // 68: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 9, // 69: qubic.archiver.archive.pb.ArchiveService.GetTransaction:output_type -> qubic.archiver.archive.pb.GetTransactionResponse + 11, // 70: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:output_type -> qubic.archiver.archive.pb.GetTransactionStatusResponse + 31, // 71: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:output_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse + 25, // 72: qubic.archiver.archive.pb.ArchiveService.GetComputors:output_type -> qubic.archiver.archive.pb.GetComputorsResponse + 28, // 73: qubic.archiver.archive.pb.ArchiveService.GetStatus:output_type -> qubic.archiver.archive.pb.GetStatusResponse + 46, // 74: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:output_type -> qubic.archiver.archive.pb.GetLatestTickResponseV2 + 29, // 75: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:output_type -> qubic.archiver.archive.pb.GetHealthCheckResponse + 52, // [52:76] is the sub-list for method output_type + 28, // [28:52] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_archive_proto_init() } @@ -3425,7 +4186,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestTickResponse); i { + switch v := v.(*GetTransferTransactionsPerTickRequest); i { case 0: return &v.state case 1: @@ -3437,7 +4198,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransferTransactionsPerTickRequest); i { + switch v := v.(*GetTransferTransactionsPerTickResponse); i { case 0: return &v.state case 1: @@ -3449,7 +4210,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransferTransactionsPerTickResponse); i { + switch v := v.(*GetChainHashRequest); i { case 0: return &v.state case 1: @@ -3461,7 +4222,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChainHashRequest); i { + switch v := v.(*GetChainHashResponse); i { case 0: return &v.state case 1: @@ -3473,7 +4234,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChainHashResponse); i { + switch v := v.(*ProcessedTickInterval); i { case 0: return &v.state case 1: @@ -3485,7 +4246,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessedTickInterval); i { + switch v := v.(*ProcessedTickIntervalsPerEpoch); i { case 0: return &v.state case 1: @@ -3497,7 +4258,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessedTickIntervalsPerEpoch); i { + switch v := v.(*Tick); i { case 0: return &v.state case 1: @@ -3509,7 +4270,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransactionData); i { + switch v := v.(*GetTickResponseV2); i { case 0: return &v.state case 1: @@ -3521,7 +4282,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickTransactionsRequestV2); i { + switch v := v.(*PerTickIdentityTransfers); i { case 0: return &v.state case 1: @@ -3533,7 +4294,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickTransactionsResponseV2); i { + switch v := v.(*GetIdentityTransfersInTickRangeResponseV2); i { case 0: return &v.state case 1: @@ -3545,7 +4306,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionRequestV2); i { + switch v := v.(*SendManyTransfer); i { case 0: return &v.state case 1: @@ -3557,6 +4318,114 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendManyTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendManyTransactionData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSendManyTransactionRequestV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSendManyTransactionResponseV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransactionData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestTickResponseV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickRequestV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickTransactionsResponseV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTransactionRequestV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTransactionResponseV2); i { case 0: return &v.state @@ -3575,7 +4444,7 @@ func file_archive_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_archive_proto_rawDesc, NumEnums: 0, - NumMessages: 44, + NumMessages: 53, NumExtensions: 0, NumServices: 1, }, diff --git a/protobuff/archive.pb.gw.go b/protobuff/archive.pb.gw.go index dc89877..41a4a2b 100644 --- a/protobuff/archive.pb.gw.go +++ b/protobuff/archive.pb.gw.go @@ -32,8 +32,182 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = metadata.Join +func request_ArchiveService_GetLatestTickV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq emptypb.Empty + var metadata runtime.ServerMetadata + + msg, err := client.GetLatestTickV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetLatestTickV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq emptypb.Empty + var metadata runtime.ServerMetadata + + msg, err := server.GetLatestTickV2(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArchiveService_GetTickQuorumDataV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := client.GetTickQuorumDataV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetTickQuorumDataV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := server.GetTickQuorumDataV2(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArchiveService_GetTickChainHashV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := client.GetTickChainHashV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetTickChainHashV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := server.GetTickChainHashV2(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArchiveService_GetTickStoreHashV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := client.GetTickStoreHashV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetTickStoreHashV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := server.GetTickStoreHashV2(ctx, &protoReq) + return msg, metadata, err + +} + func request_ArchiveService_GetAllTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTickTransactionsRequestV2 + var protoReq GetTickRequestV2 var metadata runtime.ServerMetadata var ( @@ -59,7 +233,7 @@ func request_ArchiveService_GetAllTickTransactionsV2_0(ctx context.Context, mars } func local_request_ArchiveService_GetAllTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTickTransactionsRequestV2 + var protoReq GetTickRequestV2 var metadata runtime.ServerMetadata var ( @@ -85,7 +259,7 @@ func local_request_ArchiveService_GetAllTickTransactionsV2_0(ctx context.Context } func request_ArchiveService_GetTransferTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTickTransactionsRequestV2 + var protoReq GetTickRequestV2 var metadata runtime.ServerMetadata var ( @@ -111,7 +285,7 @@ func request_ArchiveService_GetTransferTickTransactionsV2_0(ctx context.Context, } func local_request_ArchiveService_GetTransferTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTickTransactionsRequestV2 + var protoReq GetTickRequestV2 var metadata runtime.ServerMetadata var ( @@ -137,7 +311,7 @@ func local_request_ArchiveService_GetTransferTickTransactionsV2_0(ctx context.Co } func request_ArchiveService_GetApprovedTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTickTransactionsRequestV2 + var protoReq GetTickRequestV2 var metadata runtime.ServerMetadata var ( @@ -163,7 +337,7 @@ func request_ArchiveService_GetApprovedTickTransactionsV2_0(ctx context.Context, } func local_request_ArchiveService_GetApprovedTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTickTransactionsRequestV2 + var protoReq GetTickRequestV2 var metadata runtime.ServerMetadata var ( @@ -240,6 +414,128 @@ func local_request_ArchiveService_GetTransactionV2_0(ctx context.Context, marsha } +func request_ArchiveService_GetSendManyTransactionV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetSendManyTransactionRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tx_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tx_id") + } + + protoReq.TxId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tx_id", err) + } + + msg, err := client.GetSendManyTransactionV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetSendManyTransactionV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetSendManyTransactionRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tx_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tx_id") + } + + protoReq.TxId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tx_id", err) + } + + msg, err := server.GetSendManyTransactionV2(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_ArchiveService_GetIdentityTransfersInTickRangeV2_0 = &utilities.DoubleArray{Encoding: map[string]int{"identity": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ArchiveService_GetIdentityTransfersInTickRangeV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTransferTransactionsPerTickRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["identity"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "identity") + } + + protoReq.Identity, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "identity", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ArchiveService_GetIdentityTransfersInTickRangeV2_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetIdentityTransfersInTickRangeV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetIdentityTransfersInTickRangeV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTransferTransactionsPerTickRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["identity"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "identity") + } + + protoReq.Identity, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "identity", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ArchiveService_GetIdentityTransfersInTickRangeV2_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetIdentityTransfersInTickRangeV2(ctx, &protoReq) + return msg, metadata, err + +} + func request_ArchiveService_GetTickData_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetTickDataRequest var metadata runtime.ServerMetadata @@ -890,6 +1186,106 @@ func local_request_ArchiveService_GetHealthCheck_0(ctx context.Context, marshale // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterArchiveServiceHandlerFromEndpoint instead. func RegisterArchiveServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ArchiveServiceServer) error { + mux.Handle("GET", pattern_ArchiveService_GetLatestTickV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetLatestTickV2", runtime.WithHTTPPathPattern("/v2/tick/latest")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetLatestTickV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetLatestTickV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTickQuorumDataV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTickQuorumDataV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/quorum-data")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetTickQuorumDataV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTickQuorumDataV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTickChainHashV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTickChainHashV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/hash")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetTickChainHashV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTickChainHashV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTickStoreHashV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTickStoreHashV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/store-hash")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetTickStoreHashV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTickStoreHashV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ArchiveService_GetAllTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -990,6 +1386,56 @@ func RegisterArchiveServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ArchiveService_GetSendManyTransactionV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetSendManyTransactionV2", runtime.WithHTTPPathPattern("/v2/transaction/{tx_id}/sendmany")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetSendManyTransactionV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetSendManyTransactionV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetIdentityTransfersInTickRangeV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetIdentityTransfersInTickRangeV2", runtime.WithHTTPPathPattern("/v2/identity/{identity}/transfers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetIdentityTransfersInTickRangeV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetIdentityTransfersInTickRangeV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ArchiveService_GetTickData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1381,6 +1827,94 @@ func RegisterArchiveServiceHandler(ctx context.Context, mux *runtime.ServeMux, c // "ArchiveServiceClient" to call the correct interceptors. func RegisterArchiveServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ArchiveServiceClient) error { + mux.Handle("GET", pattern_ArchiveService_GetLatestTickV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetLatestTickV2", runtime.WithHTTPPathPattern("/v2/tick/latest")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetLatestTickV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetLatestTickV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTickQuorumDataV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTickQuorumDataV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/quorum-data")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetTickQuorumDataV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTickQuorumDataV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTickChainHashV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTickChainHashV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/hash")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetTickChainHashV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTickChainHashV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTickStoreHashV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTickStoreHashV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/store-hash")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetTickStoreHashV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTickStoreHashV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ArchiveService_GetAllTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1469,6 +2003,50 @@ func RegisterArchiveServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_ArchiveService_GetSendManyTransactionV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetSendManyTransactionV2", runtime.WithHTTPPathPattern("/v2/transaction/{tx_id}/sendmany")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetSendManyTransactionV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetSendManyTransactionV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetIdentityTransfersInTickRangeV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetIdentityTransfersInTickRangeV2", runtime.WithHTTPPathPattern("/v2/identity/{identity}/transfers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetIdentityTransfersInTickRangeV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetIdentityTransfersInTickRangeV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ArchiveService_GetTickData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1781,6 +2359,14 @@ func RegisterArchiveServiceHandlerClient(ctx context.Context, mux *runtime.Serve } var ( + pattern_ArchiveService_GetLatestTickV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "tick", "latest"}, "")) + + pattern_ArchiveService_GetTickQuorumDataV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v2", "tick", "tick_number", "quorum-data"}, "")) + + pattern_ArchiveService_GetTickChainHashV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v2", "tick", "tick_number", "hash"}, "")) + + pattern_ArchiveService_GetTickStoreHashV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v2", "tick", "tick_number", "store-hash"}, "")) + pattern_ArchiveService_GetAllTickTransactionsV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v2", "tick", "tick_number", "transactions"}, "")) pattern_ArchiveService_GetTransferTickTransactionsV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v2", "tick", "tick_number", "transactions", "transfers"}, "")) @@ -1789,6 +2375,10 @@ var ( pattern_ArchiveService_GetTransactionV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v2", "transaction", "tx_id"}, "")) + pattern_ArchiveService_GetSendManyTransactionV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v2", "transaction", "tx_id", "sendmany"}, "")) + + pattern_ArchiveService_GetIdentityTransfersInTickRangeV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"v2", "identity", "transfers"}, "")) + pattern_ArchiveService_GetTickData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "ticks", "tick_number", "tick-data"}, "")) pattern_ArchiveService_GetQuorumTickData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "ticks", "tick_number", "quorum-tick-data"}, "")) @@ -1819,6 +2409,14 @@ var ( ) var ( + forward_ArchiveService_GetLatestTickV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetTickQuorumDataV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetTickChainHashV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetTickStoreHashV2_0 = runtime.ForwardResponseMessage + forward_ArchiveService_GetAllTickTransactionsV2_0 = runtime.ForwardResponseMessage forward_ArchiveService_GetTransferTickTransactionsV2_0 = runtime.ForwardResponseMessage @@ -1827,6 +2425,10 @@ var ( forward_ArchiveService_GetTransactionV2_0 = runtime.ForwardResponseMessage + forward_ArchiveService_GetSendManyTransactionV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetIdentityTransfersInTickRangeV2_0 = runtime.ForwardResponseMessage + forward_ArchiveService_GetTickData_0 = runtime.ForwardResponseMessage forward_ArchiveService_GetQuorumTickData_0 = runtime.ForwardResponseMessage diff --git a/protobuff/archive.proto b/protobuff/archive.proto index 3dcda21..c71b240 100644 --- a/protobuff/archive.proto +++ b/protobuff/archive.proto @@ -165,10 +165,6 @@ message GetHealthCheckResponse { bool status = 1; } -message GetLatestTickResponse { - uint32 latest_tick = 1; -} - message GetTransferTransactionsPerTickRequest { string identity = 1; uint32 start_tick = 2; @@ -197,6 +193,67 @@ message ProcessedTickIntervalsPerEpoch { repeated ProcessedTickInterval intervals = 2; } +message Tick { + uint32 computor_index = 1; + uint32 epoch = 2; + uint32 tick_number = 3; + uint64 timestamp = 4; + bytes var_struct = 5; //Will change to return with unmarshalled info + bytes time_lock = 6; + repeated string transaction_ids = 7; + repeated int64 contract_fees = 8; + string signature_hex = 9; +} + +message GetTickResponseV2 { + Tick tick_Data = 1; +} + +message PerTickIdentityTransfers { + uint32 tick_number = 1; + string identity = 2; + repeated TransactionData transactions = 3; +} + +message GetIdentityTransfersInTickRangeResponseV2 { + repeated PerTickIdentityTransfers transactions = 1; +} + +//SendMany Transaction +message SendManyTransfer { + string dest_id = 1; + int64 amount = 2; +} + +message SendManyTransaction { + string source_id = 1; + uint32 tick_number = 2; + repeated SendManyTransfer transfers = 3; + int64 total_amount = 4; + string signature_hex = 5; + string tx_id = 6; +} + +//Wrapper around send many transaction and additional data +message SendManyTransactionData { + SendManyTransaction transaction = 2; + uint64 timestamp = 3; + bool money_flew = 4; +} + +message GetSendManyTransactionRequestV2 { + string tx_id = 1; +} + +message GetSendManyTransactionResponseV2 { + SendManyTransaction transaction = 2; + uint64 timestamp = 3; + bool money_flew = 4; +} + + +//Normal Transaction + // Wrapper around transaction and additional data message TransactionData { Transaction transaction = 1; @@ -206,8 +263,14 @@ message TransactionData { //Ticks +// Latest Tick + +message GetLatestTickResponseV2 { + uint32 latest_tick = 1; +} + // Tick Transactions -message GetTickTransactionsRequestV2 { +message GetTickRequestV2 { uint32 tick_number = 1; } message GetTickTransactionsResponseV2 { @@ -228,30 +291,83 @@ message GetTransactionResponseV2 { service ArchiveService { - //Tick - rpc GetAllTickTransactionsV2(GetTickTransactionsRequestV2) returns (GetTickTransactionsResponseV2){ + // Latest Tick + rpc GetLatestTickV2(google.protobuf.Empty) returns (GetLatestTickResponseV2){ + option (google.api.http) = { + get: "/v2/tick/latest" + }; + }; + + // General data - To be released at a later date + /*rpc GetTickV2(GetTickRequestV2) returns (GetTickResponseV2) { + option (google.api.http) = { + get: "/v2/tick/{tick_number}" + }; + };*/ + + // Quorum data + rpc GetTickQuorumDataV2(GetTickRequestV2) returns (GetQuorumTickDataResponse) { // Uses V1 response + option (google.api.http) = { + get: "/v2/tick/{tick_number}/quorum-data" + }; + }; + + // Chain hash + rpc GetTickChainHashV2(GetTickRequestV2) returns (GetChainHashResponse) { // Uses V1 response + option (google.api.http) = { + get: "/v2/tick/{tick_number}/hash" + }; + } + + // Store hash + rpc GetTickStoreHashV2(GetTickRequestV2) returns (GetChainHashResponse) { // Uses V1 response + option (google.api.http) = { + get: "/v2/tick/{tick_number}/store-hash" + }; + } + + + // Tick transactions + rpc GetAllTickTransactionsV2(GetTickRequestV2) returns (GetTickTransactionsResponseV2){ option (google.api.http) = { get: "/v2/tick/{tick_number}/transactions" }; }; - rpc GetTransferTickTransactionsV2(GetTickTransactionsRequestV2) returns (GetTickTransactionsResponseV2){ + rpc GetTransferTickTransactionsV2(GetTickRequestV2) returns (GetTickTransactionsResponseV2){ option (google.api.http) = { get: "/v2/tick/{tick_number}/transactions/transfers" }; }; - rpc GetApprovedTickTransactionsV2(GetTickTransactionsRequestV2) returns (GetTickTransactionsResponseV2){ + rpc GetApprovedTickTransactionsV2(GetTickRequestV2) returns (GetTickTransactionsResponseV2){ option (google.api.http) = { get: "/v2/tick/{tick_number}/transactions/transfers/approved" }; }; //Transaction + + //Normal rpc GetTransactionV2(GetTransactionRequestV2) returns (GetTransactionResponseV2) { option (google.api.http) = { get: "/v2/transaction/{tx_id}" }; }; + //SendMany + rpc GetSendManyTransactionV2(GetSendManyTransactionRequestV2) returns (GetSendManyTransactionResponseV2) { + option (google.api.http) = { + get: "/v2/transaction/{tx_id}/sendmany" + }; + }; + + //Identity + rpc GetIdentityTransfersInTickRangeV2(GetTransferTransactionsPerTickRequest) returns (GetIdentityTransfersInTickRangeResponseV2) { // Uses V1 request + option (google.api.http) = { + get: "/v2/identity/{identity}/transfers" + }; + }; + + //V1 Endpoints rpc GetTickData(GetTickDataRequest) returns (GetTickDataResponse){ option (google.api.http) = { get: "/v1/ticks/{tick_number}/tick-data" @@ -319,7 +435,7 @@ service ArchiveService { }; }; - rpc GetLatestTick(google.protobuf.Empty) returns (GetLatestTickResponse) { + rpc GetLatestTick(google.protobuf.Empty) returns (GetLatestTickResponseV2) { option (google.api.http) = { get: "/v1/latestTick" }; diff --git a/protobuff/archive_grpc.pb.go b/protobuff/archive_grpc.pb.go index 55ec445..b0cdc6b 100644 --- a/protobuff/archive_grpc.pb.go +++ b/protobuff/archive_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.3 +// - protoc v5.27.1 // source: archive.proto package protobuff @@ -20,36 +20,55 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - ArchiveService_GetAllTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetAllTickTransactionsV2" - ArchiveService_GetTransferTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransferTickTransactionsV2" - ArchiveService_GetApprovedTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetApprovedTickTransactionsV2" - ArchiveService_GetTransactionV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransactionV2" - ArchiveService_GetTickData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickData" - ArchiveService_GetQuorumTickData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetQuorumTickData" - ArchiveService_GetTickTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickTransactions" - ArchiveService_GetTickTransferTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickTransferTransactions" - ArchiveService_GetTickApprovedTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickApprovedTransactions" - ArchiveService_GetChainHash_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetChainHash" - ArchiveService_GetStoreHash_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetStoreHash" - ArchiveService_GetTransaction_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransaction" - ArchiveService_GetTransactionStatus_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransactionStatus" - ArchiveService_GetTransferTransactionsPerTick_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransferTransactionsPerTick" - ArchiveService_GetComputors_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetComputors" - ArchiveService_GetStatus_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetStatus" - ArchiveService_GetLatestTick_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetLatestTick" - ArchiveService_GetHealthCheck_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetHealthCheck" + ArchiveService_GetLatestTickV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetLatestTickV2" + ArchiveService_GetTickQuorumDataV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickQuorumDataV2" + ArchiveService_GetTickChainHashV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickChainHashV2" + ArchiveService_GetTickStoreHashV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickStoreHashV2" + ArchiveService_GetAllTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetAllTickTransactionsV2" + ArchiveService_GetTransferTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransferTickTransactionsV2" + ArchiveService_GetApprovedTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetApprovedTickTransactionsV2" + ArchiveService_GetTransactionV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransactionV2" + ArchiveService_GetSendManyTransactionV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetSendManyTransactionV2" + ArchiveService_GetIdentityTransfersInTickRangeV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetIdentityTransfersInTickRangeV2" + ArchiveService_GetTickData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickData" + ArchiveService_GetQuorumTickData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetQuorumTickData" + ArchiveService_GetTickTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickTransactions" + ArchiveService_GetTickTransferTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickTransferTransactions" + ArchiveService_GetTickApprovedTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickApprovedTransactions" + ArchiveService_GetChainHash_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetChainHash" + ArchiveService_GetStoreHash_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetStoreHash" + ArchiveService_GetTransaction_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransaction" + ArchiveService_GetTransactionStatus_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransactionStatus" + ArchiveService_GetTransferTransactionsPerTick_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransferTransactionsPerTick" + ArchiveService_GetComputors_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetComputors" + ArchiveService_GetStatus_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetStatus" + ArchiveService_GetLatestTick_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetLatestTick" + ArchiveService_GetHealthCheck_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetHealthCheck" ) // ArchiveServiceClient is the client API for ArchiveService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ArchiveServiceClient interface { - // Tick - GetAllTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) - GetTransferTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) - GetApprovedTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) - // Transaction + // Latest Tick + GetLatestTickV2(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestTickResponseV2, error) + // Quorum data + GetTickQuorumDataV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetQuorumTickDataResponse, error) + // Chain hash + GetTickChainHashV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetChainHashResponse, error) + // Store hash + GetTickStoreHashV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetChainHashResponse, error) + // Tick transactions + GetAllTickTransactionsV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) + GetTransferTickTransactionsV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) + GetApprovedTickTransactionsV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) + // Normal GetTransactionV2(ctx context.Context, in *GetTransactionRequestV2, opts ...grpc.CallOption) (*GetTransactionResponseV2, error) + // SendMany + GetSendManyTransactionV2(ctx context.Context, in *GetSendManyTransactionRequestV2, opts ...grpc.CallOption) (*GetSendManyTransactionResponseV2, error) + // Identity + GetIdentityTransfersInTickRangeV2(ctx context.Context, in *GetTransferTransactionsPerTickRequest, opts ...grpc.CallOption) (*GetIdentityTransfersInTickRangeResponseV2, error) + // V1 Endpoints GetTickData(ctx context.Context, in *GetTickDataRequest, opts ...grpc.CallOption) (*GetTickDataResponse, error) GetQuorumTickData(ctx context.Context, in *GetQuorumTickDataRequest, opts ...grpc.CallOption) (*GetQuorumTickDataResponse, error) GetTickTransactions(ctx context.Context, in *GetTickTransactionsRequest, opts ...grpc.CallOption) (*GetTickTransactionsResponse, error) @@ -62,7 +81,7 @@ type ArchiveServiceClient interface { GetTransferTransactionsPerTick(ctx context.Context, in *GetTransferTransactionsPerTickRequest, opts ...grpc.CallOption) (*GetTransferTransactionsPerTickResponse, error) GetComputors(ctx context.Context, in *GetComputorsRequest, opts ...grpc.CallOption) (*GetComputorsResponse, error) GetStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetStatusResponse, error) - GetLatestTick(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestTickResponse, error) + GetLatestTick(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestTickResponseV2, error) GetHealthCheck(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetHealthCheckResponse, error) } @@ -74,7 +93,43 @@ func NewArchiveServiceClient(cc grpc.ClientConnInterface) ArchiveServiceClient { return &archiveServiceClient{cc} } -func (c *archiveServiceClient) GetAllTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { +func (c *archiveServiceClient) GetLatestTickV2(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestTickResponseV2, error) { + out := new(GetLatestTickResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetLatestTickV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetTickQuorumDataV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetQuorumTickDataResponse, error) { + out := new(GetQuorumTickDataResponse) + err := c.cc.Invoke(ctx, ArchiveService_GetTickQuorumDataV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetTickChainHashV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetChainHashResponse, error) { + out := new(GetChainHashResponse) + err := c.cc.Invoke(ctx, ArchiveService_GetTickChainHashV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetTickStoreHashV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetChainHashResponse, error) { + out := new(GetChainHashResponse) + err := c.cc.Invoke(ctx, ArchiveService_GetTickStoreHashV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetAllTickTransactionsV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { out := new(GetTickTransactionsResponseV2) err := c.cc.Invoke(ctx, ArchiveService_GetAllTickTransactionsV2_FullMethodName, in, out, opts...) if err != nil { @@ -83,7 +138,7 @@ func (c *archiveServiceClient) GetAllTickTransactionsV2(ctx context.Context, in return out, nil } -func (c *archiveServiceClient) GetTransferTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { +func (c *archiveServiceClient) GetTransferTickTransactionsV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { out := new(GetTickTransactionsResponseV2) err := c.cc.Invoke(ctx, ArchiveService_GetTransferTickTransactionsV2_FullMethodName, in, out, opts...) if err != nil { @@ -92,7 +147,7 @@ func (c *archiveServiceClient) GetTransferTickTransactionsV2(ctx context.Context return out, nil } -func (c *archiveServiceClient) GetApprovedTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { +func (c *archiveServiceClient) GetApprovedTickTransactionsV2(ctx context.Context, in *GetTickRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { out := new(GetTickTransactionsResponseV2) err := c.cc.Invoke(ctx, ArchiveService_GetApprovedTickTransactionsV2_FullMethodName, in, out, opts...) if err != nil { @@ -110,6 +165,24 @@ func (c *archiveServiceClient) GetTransactionV2(ctx context.Context, in *GetTran return out, nil } +func (c *archiveServiceClient) GetSendManyTransactionV2(ctx context.Context, in *GetSendManyTransactionRequestV2, opts ...grpc.CallOption) (*GetSendManyTransactionResponseV2, error) { + out := new(GetSendManyTransactionResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetSendManyTransactionV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetIdentityTransfersInTickRangeV2(ctx context.Context, in *GetTransferTransactionsPerTickRequest, opts ...grpc.CallOption) (*GetIdentityTransfersInTickRangeResponseV2, error) { + out := new(GetIdentityTransfersInTickRangeResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetIdentityTransfersInTickRangeV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *archiveServiceClient) GetTickData(ctx context.Context, in *GetTickDataRequest, opts ...grpc.CallOption) (*GetTickDataResponse, error) { out := new(GetTickDataResponse) err := c.cc.Invoke(ctx, ArchiveService_GetTickData_FullMethodName, in, out, opts...) @@ -218,8 +291,8 @@ func (c *archiveServiceClient) GetStatus(ctx context.Context, in *emptypb.Empty, return out, nil } -func (c *archiveServiceClient) GetLatestTick(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestTickResponse, error) { - out := new(GetLatestTickResponse) +func (c *archiveServiceClient) GetLatestTick(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetLatestTickResponseV2, error) { + out := new(GetLatestTickResponseV2) err := c.cc.Invoke(ctx, ArchiveService_GetLatestTick_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -240,12 +313,25 @@ func (c *archiveServiceClient) GetHealthCheck(ctx context.Context, in *emptypb.E // All implementations must embed UnimplementedArchiveServiceServer // for forward compatibility type ArchiveServiceServer interface { - // Tick - GetAllTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) - GetTransferTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) - GetApprovedTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) - // Transaction + // Latest Tick + GetLatestTickV2(context.Context, *emptypb.Empty) (*GetLatestTickResponseV2, error) + // Quorum data + GetTickQuorumDataV2(context.Context, *GetTickRequestV2) (*GetQuorumTickDataResponse, error) + // Chain hash + GetTickChainHashV2(context.Context, *GetTickRequestV2) (*GetChainHashResponse, error) + // Store hash + GetTickStoreHashV2(context.Context, *GetTickRequestV2) (*GetChainHashResponse, error) + // Tick transactions + GetAllTickTransactionsV2(context.Context, *GetTickRequestV2) (*GetTickTransactionsResponseV2, error) + GetTransferTickTransactionsV2(context.Context, *GetTickRequestV2) (*GetTickTransactionsResponseV2, error) + GetApprovedTickTransactionsV2(context.Context, *GetTickRequestV2) (*GetTickTransactionsResponseV2, error) + // Normal GetTransactionV2(context.Context, *GetTransactionRequestV2) (*GetTransactionResponseV2, error) + // SendMany + GetSendManyTransactionV2(context.Context, *GetSendManyTransactionRequestV2) (*GetSendManyTransactionResponseV2, error) + // Identity + GetIdentityTransfersInTickRangeV2(context.Context, *GetTransferTransactionsPerTickRequest) (*GetIdentityTransfersInTickRangeResponseV2, error) + // V1 Endpoints GetTickData(context.Context, *GetTickDataRequest) (*GetTickDataResponse, error) GetQuorumTickData(context.Context, *GetQuorumTickDataRequest) (*GetQuorumTickDataResponse, error) GetTickTransactions(context.Context, *GetTickTransactionsRequest) (*GetTickTransactionsResponse, error) @@ -258,7 +344,7 @@ type ArchiveServiceServer interface { GetTransferTransactionsPerTick(context.Context, *GetTransferTransactionsPerTickRequest) (*GetTransferTransactionsPerTickResponse, error) GetComputors(context.Context, *GetComputorsRequest) (*GetComputorsResponse, error) GetStatus(context.Context, *emptypb.Empty) (*GetStatusResponse, error) - GetLatestTick(context.Context, *emptypb.Empty) (*GetLatestTickResponse, error) + GetLatestTick(context.Context, *emptypb.Empty) (*GetLatestTickResponseV2, error) GetHealthCheck(context.Context, *emptypb.Empty) (*GetHealthCheckResponse, error) mustEmbedUnimplementedArchiveServiceServer() } @@ -267,18 +353,36 @@ type ArchiveServiceServer interface { type UnimplementedArchiveServiceServer struct { } -func (UnimplementedArchiveServiceServer) GetAllTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) { +func (UnimplementedArchiveServiceServer) GetLatestTickV2(context.Context, *emptypb.Empty) (*GetLatestTickResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestTickV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetTickQuorumDataV2(context.Context, *GetTickRequestV2) (*GetQuorumTickDataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTickQuorumDataV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetTickChainHashV2(context.Context, *GetTickRequestV2) (*GetChainHashResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTickChainHashV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetTickStoreHashV2(context.Context, *GetTickRequestV2) (*GetChainHashResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTickStoreHashV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetAllTickTransactionsV2(context.Context, *GetTickRequestV2) (*GetTickTransactionsResponseV2, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAllTickTransactionsV2 not implemented") } -func (UnimplementedArchiveServiceServer) GetTransferTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) { +func (UnimplementedArchiveServiceServer) GetTransferTickTransactionsV2(context.Context, *GetTickRequestV2) (*GetTickTransactionsResponseV2, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTransferTickTransactionsV2 not implemented") } -func (UnimplementedArchiveServiceServer) GetApprovedTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) { +func (UnimplementedArchiveServiceServer) GetApprovedTickTransactionsV2(context.Context, *GetTickRequestV2) (*GetTickTransactionsResponseV2, error) { return nil, status.Errorf(codes.Unimplemented, "method GetApprovedTickTransactionsV2 not implemented") } func (UnimplementedArchiveServiceServer) GetTransactionV2(context.Context, *GetTransactionRequestV2) (*GetTransactionResponseV2, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTransactionV2 not implemented") } +func (UnimplementedArchiveServiceServer) GetSendManyTransactionV2(context.Context, *GetSendManyTransactionRequestV2) (*GetSendManyTransactionResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSendManyTransactionV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetIdentityTransfersInTickRangeV2(context.Context, *GetTransferTransactionsPerTickRequest) (*GetIdentityTransfersInTickRangeResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetIdentityTransfersInTickRangeV2 not implemented") +} func (UnimplementedArchiveServiceServer) GetTickData(context.Context, *GetTickDataRequest) (*GetTickDataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTickData not implemented") } @@ -315,7 +419,7 @@ func (UnimplementedArchiveServiceServer) GetComputors(context.Context, *GetCompu func (UnimplementedArchiveServiceServer) GetStatus(context.Context, *emptypb.Empty) (*GetStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetStatus not implemented") } -func (UnimplementedArchiveServiceServer) GetLatestTick(context.Context, *emptypb.Empty) (*GetLatestTickResponse, error) { +func (UnimplementedArchiveServiceServer) GetLatestTick(context.Context, *emptypb.Empty) (*GetLatestTickResponseV2, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLatestTick not implemented") } func (UnimplementedArchiveServiceServer) GetHealthCheck(context.Context, *emptypb.Empty) (*GetHealthCheckResponse, error) { @@ -334,8 +438,80 @@ func RegisterArchiveServiceServer(s grpc.ServiceRegistrar, srv ArchiveServiceSer s.RegisterService(&ArchiveService_ServiceDesc, srv) } +func _ArchiveService_GetLatestTickV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetLatestTickV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetLatestTickV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetLatestTickV2(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetTickQuorumDataV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTickRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetTickQuorumDataV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetTickQuorumDataV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetTickQuorumDataV2(ctx, req.(*GetTickRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetTickChainHashV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTickRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetTickChainHashV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetTickChainHashV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetTickChainHashV2(ctx, req.(*GetTickRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetTickStoreHashV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTickRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetTickStoreHashV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetTickStoreHashV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetTickStoreHashV2(ctx, req.(*GetTickRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + func _ArchiveService_GetAllTickTransactionsV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTickTransactionsRequestV2) + in := new(GetTickRequestV2) if err := dec(in); err != nil { return nil, err } @@ -347,13 +523,13 @@ func _ArchiveService_GetAllTickTransactionsV2_Handler(srv interface{}, ctx conte FullMethod: ArchiveService_GetAllTickTransactionsV2_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ArchiveServiceServer).GetAllTickTransactionsV2(ctx, req.(*GetTickTransactionsRequestV2)) + return srv.(ArchiveServiceServer).GetAllTickTransactionsV2(ctx, req.(*GetTickRequestV2)) } return interceptor(ctx, in, info, handler) } func _ArchiveService_GetTransferTickTransactionsV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTickTransactionsRequestV2) + in := new(GetTickRequestV2) if err := dec(in); err != nil { return nil, err } @@ -365,13 +541,13 @@ func _ArchiveService_GetTransferTickTransactionsV2_Handler(srv interface{}, ctx FullMethod: ArchiveService_GetTransferTickTransactionsV2_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ArchiveServiceServer).GetTransferTickTransactionsV2(ctx, req.(*GetTickTransactionsRequestV2)) + return srv.(ArchiveServiceServer).GetTransferTickTransactionsV2(ctx, req.(*GetTickRequestV2)) } return interceptor(ctx, in, info, handler) } func _ArchiveService_GetApprovedTickTransactionsV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTickTransactionsRequestV2) + in := new(GetTickRequestV2) if err := dec(in); err != nil { return nil, err } @@ -383,7 +559,7 @@ func _ArchiveService_GetApprovedTickTransactionsV2_Handler(srv interface{}, ctx FullMethod: ArchiveService_GetApprovedTickTransactionsV2_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ArchiveServiceServer).GetApprovedTickTransactionsV2(ctx, req.(*GetTickTransactionsRequestV2)) + return srv.(ArchiveServiceServer).GetApprovedTickTransactionsV2(ctx, req.(*GetTickRequestV2)) } return interceptor(ctx, in, info, handler) } @@ -406,6 +582,42 @@ func _ArchiveService_GetTransactionV2_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _ArchiveService_GetSendManyTransactionV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSendManyTransactionRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetSendManyTransactionV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetSendManyTransactionV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetSendManyTransactionV2(ctx, req.(*GetSendManyTransactionRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetIdentityTransfersInTickRangeV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTransferTransactionsPerTickRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetIdentityTransfersInTickRangeV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetIdentityTransfersInTickRangeV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetIdentityTransfersInTickRangeV2(ctx, req.(*GetTransferTransactionsPerTickRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ArchiveService_GetTickData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetTickDataRequest) if err := dec(in); err != nil { @@ -665,6 +877,22 @@ var ArchiveService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "qubic.archiver.archive.pb.ArchiveService", HandlerType: (*ArchiveServiceServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "GetLatestTickV2", + Handler: _ArchiveService_GetLatestTickV2_Handler, + }, + { + MethodName: "GetTickQuorumDataV2", + Handler: _ArchiveService_GetTickQuorumDataV2_Handler, + }, + { + MethodName: "GetTickChainHashV2", + Handler: _ArchiveService_GetTickChainHashV2_Handler, + }, + { + MethodName: "GetTickStoreHashV2", + Handler: _ArchiveService_GetTickStoreHashV2_Handler, + }, { MethodName: "GetAllTickTransactionsV2", Handler: _ArchiveService_GetAllTickTransactionsV2_Handler, @@ -681,6 +909,14 @@ var ArchiveService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetTransactionV2", Handler: _ArchiveService_GetTransactionV2_Handler, }, + { + MethodName: "GetSendManyTransactionV2", + Handler: _ArchiveService_GetSendManyTransactionV2_Handler, + }, + { + MethodName: "GetIdentityTransfersInTickRangeV2", + Handler: _ArchiveService_GetIdentityTransfersInTickRangeV2_Handler, + }, { MethodName: "GetTickData", Handler: _ArchiveService_GetTickData_Handler, diff --git a/rpc/rpc_server.go b/rpc/rpc_server.go index 67e1c5f..3365827 100644 --- a/rpc/rpc_server.go +++ b/rpc/rpc_server.go @@ -72,211 +72,6 @@ func getTransactionInfo(ctx context.Context, pebbleStore *store.PebbleStore, tra } -func (s *Server) GetAllTickTransactionsV2(ctx context.Context, req *protobuff.GetTickTransactionsRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { - lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) - } - if req.TickNumber > lastProcessedTick.TickNumber { - st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) - st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating custom status") - } - - return nil, st.Err() - } - - processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") - } - - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) - if wasSkipped == true { - st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) - st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating custom status") - } - - return nil, st.Err() - } - - txs, err := s.store.GetTickTransactions(ctx, req.TickNumber) - if err != nil { - if errors.Is(err, store.ErrNotFound) { - return nil, status.Errorf(codes.NotFound, "tick transactions for specified tick not found") - } - return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) - } - - var transactions []*protobuff.TransactionData - - for _, transaction := range txs { - - transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) - if err != nil { - return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) - } - - transactions = append(transactions, &protobuff.TransactionData{ - Transaction: transaction, - Timestamp: transactionInfo.timestamp, - MoneyFlew: transactionInfo.moneyFlew, - }) - - } - - return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil -} - -func (s *Server) GetTransferTickTransactionsV2(ctx context.Context, req *protobuff.GetTickTransactionsRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { - lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) - } - if req.TickNumber > lastProcessedTick.TickNumber { - st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) - st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating custom status") - } - - return nil, st.Err() - } - - processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") - } - - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) - if wasSkipped == true { - st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) - st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating custom status") - } - - return nil, st.Err() - } - - txs, err := s.store.GetTickTransferTransactions(ctx, req.TickNumber) - if err != nil { - if errors.Is(err, store.ErrNotFound) { - return nil, status.Errorf(codes.NotFound, "tick transfer transactions for specified tick not found") - } - return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) - } - - var transactions []*protobuff.TransactionData - - for _, transaction := range txs { - - transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) - if err != nil { - return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) - } - - transactions = append(transactions, &protobuff.TransactionData{ - Transaction: transaction, - Timestamp: transactionInfo.timestamp, - MoneyFlew: transactionInfo.moneyFlew, - }) - - } - - return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil -} - -func (s *Server) GetApprovedTickTransactionsV2(ctx context.Context, req *protobuff.GetTickTransactionsRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { - lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) - } - if req.TickNumber > lastProcessedTick.TickNumber { - st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) - st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating custom status") - } - - return nil, st.Err() - } - - processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") - } - - wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) - if wasSkipped == true { - st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) - st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) - if err != nil { - return nil, status.Errorf(codes.Internal, "creating custom status") - } - - return nil, st.Err() - } - - txs, err := s.store.GetTickTransferTransactions(ctx, req.TickNumber) - if err != nil { - if errors.Is(err, store.ErrNotFound) { - return nil, status.Errorf(codes.NotFound, "tick transfer transactions for specified tick not found") - } - return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) - } - - var transactions []*protobuff.TransactionData - - for _, transaction := range txs { - - transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) - if err != nil { - return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) - } - - if transactionInfo.moneyFlew == false { - continue - } - - transactions = append(transactions, &protobuff.TransactionData{ - Transaction: transaction, - Timestamp: transactionInfo.timestamp, - MoneyFlew: transactionInfo.moneyFlew, - }) - - } - - return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil -} - -func (s *Server) GetTransactionV2(ctx context.Context, req *protobuff.GetTransactionRequestV2) (*protobuff.GetTransactionResponseV2, error) { - - tx, err := s.store.GetTransaction(ctx, req.TxId) - if err != nil { - if errors.Is(err, store.ErrNotFound) { - return nil, status.Errorf(codes.NotFound, "transaction not found") - } - return nil, status.Errorf(codes.Internal, "getting transaction: %v", err) - } - - transactionInfo, err := getTransactionInfo(ctx, s.store, tx.TxId, tx.TickNumber) - if err != nil { - return nil, status.Errorf(codes.Internal, "getting transaction info") - } - - res := protobuff.GetTransactionResponseV2{ - Transaction: tx, - MoneyFlew: transactionInfo.moneyFlew, - Timestamp: transactionInfo.timestamp, - } - return &res, nil - -} - func (s *Server) GetTickData(ctx context.Context, req *protobuff.GetTickDataRequest) (*protobuff.GetTickDataResponse, error) { lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) if err != nil { @@ -564,13 +359,13 @@ func (s *Server) GetHealthCheck(ctx context.Context, _ *emptypb.Empty) (*protobu } -func (s *Server) GetLatestTick(ctx context.Context, _ *emptypb.Empty) (*protobuff.GetLatestTickResponse, error) { +func (s *Server) GetLatestTick(ctx context.Context, _ *emptypb.Empty) (*protobuff.GetLatestTickResponseV2, error) { chainTick, err := fetchChainTick(ctx, s.chainTickFetchUrl) if err != nil { return nil, status.Errorf(codes.Internal, "fetching chain tick: %v", err) } - return &protobuff.GetLatestTickResponse{LatestTick: uint32(chainTick)}, nil + return &protobuff.GetLatestTickResponseV2{LatestTick: uint32(chainTick)}, nil } func (s *Server) GetTransferTransactionsPerTick(ctx context.Context, req *protobuff.GetTransferTransactionsPerTickRequest) (*protobuff.GetTransferTransactionsPerTickResponse, error) { diff --git a/rpc/v2_endpoints.go b/rpc/v2_endpoints.go new file mode 100644 index 0000000..cb20270 --- /dev/null +++ b/rpc/v2_endpoints.go @@ -0,0 +1,349 @@ +package rpc + +import ( + "context" + "encoding/hex" + "github.com/pkg/errors" + "github.com/qubic/go-archiver/protobuff" + "github.com/qubic/go-archiver/store" + "github.com/qubic/go-node-connector/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/emptypb" +) + +func (s *Server) GetLatestTickV2(ctx context.Context, req *emptypb.Empty) (*protobuff.GetLatestTickResponseV2, error) { + return s.GetLatestTick(ctx, req) +} + +func (s *Server) GetTickV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetTickResponseV2, error) { + + //TODO: Implement + + return nil, status.Errorf(codes.Unimplemented, "Not yet implemented") +} + +func (s *Server) GetTickQuorumDataV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetQuorumTickDataResponse, error) { + return s.GetQuorumTickData(ctx, &protobuff.GetQuorumTickDataRequest{ + TickNumber: req.TickNumber, + }) +} + +func (s *Server) GetTickChainHashV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetChainHashResponse, error) { + return s.GetChainHash(ctx, &protobuff.GetChainHashRequest{ + TickNumber: req.TickNumber, + }) +} + +func (s *Server) GetTickStoreHashV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetChainHashResponse, error) { + return s.GetStoreHash(ctx, &protobuff.GetChainHashRequest{ + TickNumber: req.TickNumber, + }) +} + +func (s *Server) GetAllTickTransactionsV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) + } + if req.TickNumber > lastProcessedTick.TickNumber { + st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) + st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") + } + + wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + if wasSkipped == true { + st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) + st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + txs, err := s.store.GetTickTransactions(ctx, req.TickNumber) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "tick transactions for specified tick not found") + } + return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) + } + + var transactions []*protobuff.TransactionData + + for _, transaction := range txs { + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) + } + + transactions = append(transactions, &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }) + + } + + return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil +} + +func (s *Server) GetTransferTickTransactionsV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) + } + if req.TickNumber > lastProcessedTick.TickNumber { + st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) + st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") + } + + wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + if wasSkipped == true { + st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) + st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + txs, err := s.store.GetTickTransferTransactions(ctx, req.TickNumber) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "tick transfer transactions for specified tick not found") + } + return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) + } + + var transactions []*protobuff.TransactionData + + for _, transaction := range txs { + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) + } + + transactions = append(transactions, &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }) + + } + + return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil +} + +func (s *Server) GetApprovedTickTransactionsV2(ctx context.Context, req *protobuff.GetTickRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) + } + if req.TickNumber > lastProcessedTick.TickNumber { + st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) + st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") + } + + wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + if wasSkipped == true { + st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) + st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + txs, err := s.store.GetTickTransferTransactions(ctx, req.TickNumber) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "tick transfer transactions for specified tick not found") + } + return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) + } + + var transactions []*protobuff.TransactionData + + for _, transaction := range txs { + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) + } + + if transactionInfo.moneyFlew == false { + continue + } + + transactions = append(transactions, &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }) + + } + + return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil +} + +func (s *Server) GetTransactionV2(ctx context.Context, req *protobuff.GetTransactionRequestV2) (*protobuff.GetTransactionResponseV2, error) { + + tx, err := s.store.GetTransaction(ctx, req.TxId) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "transaction not found") + } + return nil, status.Errorf(codes.Internal, "getting transaction: %v", err) + } + + transactionInfo, err := getTransactionInfo(ctx, s.store, tx.TxId, tx.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting transaction info") + } + + res := protobuff.GetTransactionResponseV2{ + Transaction: tx, + MoneyFlew: transactionInfo.moneyFlew, + Timestamp: transactionInfo.timestamp, + } + return &res, nil + +} + +func (s *Server) GetSendManyTransactionV2(ctx context.Context, req *protobuff.GetSendManyTransactionRequestV2) (*protobuff.GetSendManyTransactionResponseV2, error) { + transaction, err := s.store.GetTransaction(ctx, req.TxId) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "transaction not found") + } + return nil, status.Errorf(codes.Internal, "getting transaction: %v", err) + } + + if transaction.InputType != 1 || transaction.DestId != types.QutilAddress { + return nil, status.Errorf(codes.NotFound, "request transaction is not of send-many type") + } + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting transaction info") + } + + rawPayload, err := hex.DecodeString(transaction.InputHex) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to decode raw payload") + } + + var sendManyPayload types.SendManyTransferPayload + err = sendManyPayload.UnmarshallBinary(rawPayload) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to unmarshall payload data") + } + + sendManyTransfers := make([]*protobuff.SendManyTransfer, 0) + + transfers, err := sendManyPayload.GetTransfers() + + if err != nil { + return nil, status.Errorf(codes.Internal, "getting send many transfers") + } + + for _, transfer := range transfers { + sendManyTransfers = append(sendManyTransfers, &protobuff.SendManyTransfer{ + DestId: transfer.AddressID.String(), + Amount: transfer.Amount, + }) + } + + sendManyTransaction := protobuff.SendManyTransaction{ + SourceId: transaction.SourceId, + Transfers: sendManyTransfers, + TotalAmount: sendManyPayload.GetTotalAmount(), + TickNumber: transaction.TickNumber, + TxId: transaction.TxId, + SignatureHex: transaction.SignatureHex, + } + + return &protobuff.GetSendManyTransactionResponseV2{ + Transaction: &sendManyTransaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }, nil +} + +func (s *Server) GetIdentityTransfersInTickRangeV2(ctx context.Context, req *protobuff.GetTransferTransactionsPerTickRequest) (*protobuff.GetIdentityTransfersInTickRangeResponseV2, error) { + txs, err := s.store.GetTransferTransactions(ctx, req.Identity, uint64(req.GetStartTick()), uint64(req.GetEndTick())) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting transfer transactions: %v", err) + } + + var totalTransactions []*protobuff.PerTickIdentityTransfers + + for _, transactionsPerTick := range txs { + + var tickTransactions []*protobuff.TransactionData + + for _, transaction := range transactionsPerTick.Transactions { + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting transaction info: %v", err) + } + + transactionData := &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + } + + tickTransactions = append(tickTransactions, transactionData) + } + + transfers := &protobuff.PerTickIdentityTransfers{ + Transactions: tickTransactions, + Identity: transactionsPerTick.Identity, + TickNumber: transactionsPerTick.TickNumber, + } + + totalTransactions = append(totalTransactions, transfers) + } + + return &protobuff.GetIdentityTransfersInTickRangeResponseV2{ + Transactions: totalTransactions, + }, nil + +} diff --git a/validator/txstatus/models.go b/validator/txstatus/models.go index 9c5e843..68cae89 100644 --- a/validator/txstatus/models.go +++ b/validator/txstatus/models.go @@ -4,27 +4,16 @@ import ( "github.com/pkg/errors" "github.com/qubic/go-archiver/protobuff" "github.com/qubic/go-node-connector/types" - "log" ) -func qubicToProto(txs types.Transactions, model types.TransactionStatus) (*protobuff.TickTransactionsStatus, error) { +func qubicToProto(model types.TransactionStatus) (*protobuff.TickTransactionsStatus, error) { tickTransactions := make([]*protobuff.TransactionStatus, 0, model.TxCount) - txsIdMap, err := createTxsIdMap(txs) - if err != nil { - return nil, errors.Wrap(err, "error creating txs id map") - } - for index, txDigest := range model.TransactionDigests { var id types.Identity id, err := id.FromPubKey(txDigest, true) if err != nil { return nil, errors.Wrap(err, "converting digest to id") } - if _, ok := txsIdMap[id.String()]; !ok { - log.Printf("Skipping tx status with id: %s\n", id.String()) - continue - } - moneyFlew := getMoneyFlewFromBits(model.MoneyFlew, index) tx := &protobuff.TransactionStatus{ @@ -38,25 +27,6 @@ func qubicToProto(txs types.Transactions, model types.TransactionStatus) (*proto return &protobuff.TickTransactionsStatus{Transactions: tickTransactions}, nil } -func createTxsIdMap(txs types.Transactions) (map[string]struct{}, error) { - txsIdMap := make(map[string]struct{}, len(txs)) - for _, tx := range txs { - digest, err := tx.Digest() - if err != nil { - return nil, errors.Wrapf(err, "creating tx digest for tx with src pubkey %s", tx.SourcePublicKey) - } - - id, err := tx.ID() - if err != nil { - return nil, errors.Wrapf(err, "converting tx with digest %s to id", digest) - } - - txsIdMap[id] = struct{}{} - } - - return txsIdMap, nil -} - func getMoneyFlewFromBits(input [(types.NumberOfTransactionsPerTick + 7) / 8]byte, digestIndex int) bool { pos := digestIndex / 8 bitIndex := digestIndex % 8 diff --git a/validator/txstatus/models_test.go b/validator/txstatus/models_test.go index 7dd5c6f..0ab5802 100644 --- a/validator/txstatus/models_test.go +++ b/validator/txstatus/models_test.go @@ -25,7 +25,7 @@ func TestQubicToProto(t *testing.T) { }, } - res, err := qubicToProto(types.Transactions{}, tickTransactionStatus) + res, err := qubicToProto(tickTransactionStatus) if err != nil { t.Fatalf("Got err when converting qubic to proto. err: %s", err.Error()) } diff --git a/validator/txstatus/validator.go b/validator/txstatus/validator.go index 9eb8f77..897d241 100644 --- a/validator/txstatus/validator.go +++ b/validator/txstatus/validator.go @@ -11,20 +11,20 @@ import ( ) func Validate(ctx context.Context, tickTxStatus types.TransactionStatus, tickTxs types.Transactions) (*protobuff.TickTransactionsStatus, error) { - //if tickTxStatus.TxCount != uint32(len(tickTxs)) { - // return nil, errors.Errorf("Mismatched tx length. Tick tx status count: %d - len(tickTx): %d", tickTxStatus.TxCount, len(tickTxs)) - //} + if tickTxStatus.TxCount != uint32(len(tickTxs)) { + return nil, errors.Errorf("Mismatched tx length. Tick tx status count: %d - len(tickTx): %d", tickTxStatus.TxCount, len(tickTxs)) + } - //tickTxDigests, err := getTickTxDigests(tickTxs) - //if err != nil { - // return nil, errors.Wrap(err, "getting tick tx digests") - //} + tickTxDigests, err := getTickTxDigests(tickTxs) + if err != nil { + return nil, errors.Wrap(err, "getting tick tx digests") + } - //if !equalDigests(tickTxDigests, tickTxStatus.TransactionDigests) { - // return nil, errors.New("digests not equal") - //} + if !equalDigests(tickTxDigests, tickTxStatus.TransactionDigests) { + return nil, errors.New("digests not equal") + } - proto, err := qubicToProto(tickTxs, tickTxStatus) + proto, err := qubicToProto(tickTxStatus) if err != nil { return nil, errors.Wrap(err, "qubic to proto") }