diff --git a/app/appmessage/message.go b/app/appmessage/message.go
index 8d680a3f9..877720a30 100644
--- a/app/appmessage/message.go
+++ b/app/appmessage/message.go
@@ -124,6 +124,8 @@ const (
CmdStopNotifyingUTXOsChangedResponseMessage
CmdGetUTXOsByAddressesRequestMessage
CmdGetUTXOsByAddressesResponseMessage
+ CmdGetBalanceByAddressRequestMessage
+ CmdGetBalanceByAddressResponseMessage
CmdGetVirtualSelectedParentBlueScoreRequestMessage
CmdGetVirtualSelectedParentBlueScoreResponseMessage
CmdNotifyVirtualSelectedParentBlueScoreChangedRequestMessage
@@ -243,6 +245,8 @@ var RPCMessageCommandToString = map[MessageCommand]string{
CmdStopNotifyingUTXOsChangedResponseMessage: "StopNotifyingUTXOsChangedResponse",
CmdGetUTXOsByAddressesRequestMessage: "GetUTXOsByAddressesRequest",
CmdGetUTXOsByAddressesResponseMessage: "GetUTXOsByAddressesResponse",
+ CmdGetBalanceByAddressRequestMessage: "GetBalanceByAddressRequest",
+ CmdGetBalanceByAddressResponseMessage: "GetBalancesByAddressResponse",
CmdGetVirtualSelectedParentBlueScoreRequestMessage: "GetVirtualSelectedParentBlueScoreRequest",
CmdGetVirtualSelectedParentBlueScoreResponseMessage: "GetVirtualSelectedParentBlueScoreResponse",
CmdNotifyVirtualSelectedParentBlueScoreChangedRequestMessage: "NotifyVirtualSelectedParentBlueScoreChangedRequest",
diff --git a/app/appmessage/rpc_get_balance_by_address.go b/app/appmessage/rpc_get_balance_by_address.go
new file mode 100644
index 000000000..3bd81b9dc
--- /dev/null
+++ b/app/appmessage/rpc_get_balance_by_address.go
@@ -0,0 +1,41 @@
+package appmessage
+
+// GetBalanceByAddressRequestMessage is an appmessage corresponding to
+// its respective RPC message
+type GetBalanceByAddressRequestMessage struct {
+ baseMessage
+ Address string
+}
+
+// Command returns the protocol command string for the message
+func (msg *GetBalanceByAddressRequestMessage) Command() MessageCommand {
+ return CmdGetBalanceByAddressRequestMessage
+}
+
+// NewGetBalanceByAddressRequest returns a instance of the message
+func NewGetBalanceByAddressRequest(address string) *GetBalanceByAddressRequestMessage {
+ return &GetBalanceByAddressRequestMessage{
+ Address: address,
+ }
+}
+
+// GetBalanceByAddressResponseMessage is an appmessage corresponding to
+// its respective RPC message
+type GetBalanceByAddressResponseMessage struct {
+ baseMessage
+ Balance uint64
+
+ Error *RPCError
+}
+
+// Command returns the protocol command string for the message
+func (msg *GetBalanceByAddressResponseMessage) Command() MessageCommand {
+ return CmdGetBalanceByAddressResponseMessage
+}
+
+// NewGetBalanceByAddressResponse returns an instance of the message
+func NewGetBalanceByAddressResponse(Balance uint64) *GetBalanceByAddressResponseMessage {
+ return &GetBalanceByAddressResponseMessage{
+ Balance: Balance,
+ }
+}
diff --git a/app/rpc/rpc.go b/app/rpc/rpc.go
index b98e3c5a7..3bd78af3f 100644
--- a/app/rpc/rpc.go
+++ b/app/rpc/rpc.go
@@ -28,6 +28,7 @@ var handlers = map[appmessage.MessageCommand]handler{
appmessage.CmdGetVirtualSelectedParentChainFromBlockRequestMessage: rpchandlers.HandleGetVirtualSelectedParentChainFromBlock,
appmessage.CmdGetBlocksRequestMessage: rpchandlers.HandleGetBlocks,
appmessage.CmdGetBlockCountRequestMessage: rpchandlers.HandleGetBlockCount,
+ appmessage.CmdGetBalanceByAddressRequestMessage: rpchandlers.HandleGetBalanceByAddress,
appmessage.CmdGetBlockDAGInfoRequestMessage: rpchandlers.HandleGetBlockDAGInfo,
appmessage.CmdResolveFinalityConflictRequestMessage: rpchandlers.HandleResolveFinalityConflict,
appmessage.CmdNotifyFinalityConflictsRequestMessage: rpchandlers.HandleNotifyFinalityConflicts,
diff --git a/app/rpc/rpchandlers/get_balance_by_address.go b/app/rpc/rpchandlers/get_balance_by_address.go
new file mode 100644
index 000000000..67f295960
--- /dev/null
+++ b/app/rpc/rpchandlers/get_balance_by_address.go
@@ -0,0 +1,47 @@
+package rpchandlers
+
+import (
+ "github.com/kaspanet/kaspad/app/appmessage"
+ "github.com/kaspanet/kaspad/app/rpc/rpccontext"
+ "github.com/kaspanet/kaspad/domain/consensus/utils/txscript"
+ "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router"
+ "github.com/kaspanet/kaspad/util"
+)
+
+// HandleGetBalanceByAddress handles the respectively named RPC command
+func HandleGetBalanceByAddress(context *rpccontext.Context, _ *router.Router, request appmessage.Message) (appmessage.Message, error) {
+ if !context.Config.UTXOIndex {
+ errorMessage := &appmessage.GetUTXOsByAddressesResponseMessage{}
+ errorMessage.Error = appmessage.RPCErrorf("Method unavailable when kaspad is run without --utxoindex")
+ return errorMessage, nil
+ }
+
+ getBalanceByAddressRequest := request.(*appmessage.GetBalanceByAddressRequestMessage)
+
+ var balance uint64 = 0
+ addressString := getBalanceByAddressRequest.Address
+
+ address, err := util.DecodeAddress(addressString, context.Config.ActiveNetParams.Prefix)
+ if err != nil {
+ errorMessage := &appmessage.GetUTXOsByAddressesResponseMessage{}
+ errorMessage.Error = appmessage.RPCErrorf("Could decode address '%s': %s", addressString, err)
+ return errorMessage, nil
+ }
+
+ scriptPublicKey, err := txscript.PayToAddrScript(address)
+ if err != nil {
+ errorMessage := &appmessage.GetUTXOsByAddressesResponseMessage{}
+ errorMessage.Error = appmessage.RPCErrorf("Could not create a scriptPublicKey for address '%s': %s", addressString, err)
+ return errorMessage, nil
+ }
+ utxoOutpointEntryPairs, err := context.UTXOIndex.UTXOs(scriptPublicKey)
+ if err != nil {
+ return nil, err
+ }
+ for _, utxoOutpointEntryPair := range utxoOutpointEntryPairs {
+ balance += utxoOutpointEntryPair.Amount()
+ }
+
+ response := appmessage.NewGetBalanceByAddressResponse(balance)
+ return response, nil
+}
diff --git a/cmd/kaspactl/commands.go b/cmd/kaspactl/commands.go
index 946d6b13e..5147b4602 100644
--- a/cmd/kaspactl/commands.go
+++ b/cmd/kaspactl/commands.go
@@ -34,6 +34,7 @@ var commandTypes = []reflect.Type{
reflect.TypeOf(protowire.KaspadMessage_SubmitTransactionRequest{}),
reflect.TypeOf(protowire.KaspadMessage_GetUtxosByAddressesRequest{}),
+ reflect.TypeOf(protowire.KaspadMessage_GetBalanceByAddressRequestMessage{}),
reflect.TypeOf(protowire.KaspadMessage_BanRequest{}),
reflect.TypeOf(protowire.KaspadMessage_UnbanRequest{}),
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/README.md b/infrastructure/network/netadapter/server/grpcserver/protowire/README.md
index eb4a0d355..2c1922f8c 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/README.md
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/README.md
@@ -3,13 +3,13 @@ protowire
1. Download and place in your PATH:
https://github.com/protocolbuffers/protobuf/releases/download/v3.12.3/protoc-3.12.3-linux-x86_64.zip
-2. `go get github.com/golang/protobuf/protoc-gen-go`
-3. `go get google.golang.org/grpc/cmd/protoc-gen-go-grpc`
+2. `go install github.com/golang/protobuf/protoc-gen-go`
+3. `go install google.golang.org/grpc/cmd/protoc-gen-go-grpc`
4. In the protowire directory: `go generate .`
Documentation
-------------
To generate `rpc.md`:
-1. `go get -u github.com/kaspanet/protoc-gen-doc/cmd/protoc-gen-doc`
+1. `go install -u github.com/kaspanet/protoc-gen-doc/cmd/protoc-gen-doc`
2. In the protowire directory: `protoc --doc_out=. --doc_opt=markdown,rpc.md rpc.proto`
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go
index ccb61203d..96c025790 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go
@@ -138,6 +138,8 @@ type KaspadMessage struct {
// *KaspadMessage_NotifyVirtualDaaScoreChangedRequest
// *KaspadMessage_NotifyVirtualDaaScoreChangedResponse
// *KaspadMessage_VirtualDaaScoreChangedNotification
+ // *KaspadMessage_GetBalanceByAddressRequestMessage
+ // *KaspadMessage_GetBalanceByAddressResponseMessage
Payload isKaspadMessage_Payload `protobuf_oneof:"payload"`
}
@@ -964,6 +966,20 @@ func (x *KaspadMessage) GetVirtualDaaScoreChangedNotification() *VirtualDaaScore
return nil
}
+func (x *KaspadMessage) GetGetBalanceByAddressRequestMessage() *GetBalanceByAddressRequestMessage {
+ if x, ok := x.GetPayload().(*KaspadMessage_GetBalanceByAddressRequestMessage); ok {
+ return x.GetBalanceByAddressRequestMessage
+ }
+ return nil
+}
+
+func (x *KaspadMessage) GetGetBalanceByAddressResponseMessage() *GetBalanceByAddressResponseMessage {
+ if x, ok := x.GetPayload().(*KaspadMessage_GetBalanceByAddressResponseMessage); ok {
+ return x.GetBalanceByAddressResponseMessage
+ }
+ return nil
+}
+
type isKaspadMessage_Payload interface {
isKaspadMessage_Payload()
}
@@ -1416,6 +1432,14 @@ type KaspadMessage_VirtualDaaScoreChangedNotification struct {
VirtualDaaScoreChangedNotification *VirtualDaaScoreChangedNotificationMessage `protobuf:"bytes,1076,opt,name=virtualDaaScoreChangedNotification,proto3,oneof"`
}
+type KaspadMessage_GetBalanceByAddressRequestMessage struct {
+ GetBalanceByAddressRequestMessage *GetBalanceByAddressRequestMessage `protobuf:"bytes,1077,opt,name=getBalanceByAddressRequestMessage,proto3,oneof"`
+}
+
+type KaspadMessage_GetBalanceByAddressResponseMessage struct {
+ GetBalanceByAddressResponseMessage *GetBalanceByAddressResponseMessage `protobuf:"bytes,1078,opt,name=getBalanceByAddressResponseMessage,proto3,oneof"`
+}
+
func (*KaspadMessage_Addresses) isKaspadMessage_Payload() {}
func (*KaspadMessage_Block) isKaspadMessage_Payload() {}
@@ -1640,13 +1664,17 @@ func (*KaspadMessage_NotifyVirtualDaaScoreChangedResponse) isKaspadMessage_Paylo
func (*KaspadMessage_VirtualDaaScoreChangedNotification) isKaspadMessage_Payload() {}
+func (*KaspadMessage_GetBalanceByAddressRequestMessage) isKaspadMessage_Payload() {}
+
+func (*KaspadMessage_GetBalanceByAddressResponseMessage) isKaspadMessage_Payload() {}
+
var File_messages_proto protoreflect.FileDescriptor
var file_messages_proto_rawDesc = []byte{
0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x12, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x1a, 0x09, 0x70, 0x32, 0x70,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x09, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x22, 0xfb, 0x5d, 0x0a, 0x0d, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73,
+ 0x6f, 0x22, 0xfd, 0x5f, 0x0a, 0x0d, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69,
0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x4d, 0x65, 0x73, 0x73,
@@ -2397,21 +2425,37 @@ var file_messages_proto_rawDesc = []byte{
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00,
0x52, 0x22, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72,
0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x32,
- 0x50, 0x0a, 0x03, 0x50, 0x32, 0x50, 0x12, 0x49, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77,
- 0x69, 0x72, 0x65, 0x2e, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x1a, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4b, 0x61,
- 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30,
- 0x01, 0x32, 0x50, 0x0a, 0x03, 0x52, 0x50, 0x43, 0x12, 0x49, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7d, 0x0a, 0x21, 0x67, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+ 0x63, 0x65, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb5, 0x08, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74,
+ 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00,
+ 0x52, 0x21, 0x67, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x41, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x22, 0x67, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+ 0x63, 0x65, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb6, 0x08, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65,
+ 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x48, 0x00, 0x52, 0x22, 0x67, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79,
+ 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+ 0x64, 0x32, 0x50, 0x0a, 0x03, 0x50, 0x32, 0x50, 0x12, 0x49, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x1a, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e,
0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28,
- 0x01, 0x30, 0x01, 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61,
- 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x33,
+ 0x01, 0x30, 0x01, 0x32, 0x50, 0x0a, 0x03, 0x52, 0x50, 0x43, 0x12, 0x49, 0x0a, 0x0d, 0x4d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x18, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72,
+ 0x65, 0x2e, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
+ 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73,
+ 0x70, 0x61, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2540,6 +2584,8 @@ var file_messages_proto_goTypes = []interface{}{
(*NotifyVirtualDaaScoreChangedRequestMessage)(nil), // 109: protowire.NotifyVirtualDaaScoreChangedRequestMessage
(*NotifyVirtualDaaScoreChangedResponseMessage)(nil), // 110: protowire.NotifyVirtualDaaScoreChangedResponseMessage
(*VirtualDaaScoreChangedNotificationMessage)(nil), // 111: protowire.VirtualDaaScoreChangedNotificationMessage
+ (*GetBalanceByAddressRequestMessage)(nil), // 112: protowire.GetBalanceByAddressRequestMessage
+ (*GetBalanceByAddressResponseMessage)(nil), // 113: protowire.GetBalanceByAddressResponseMessage
}
var file_messages_proto_depIdxs = []int32{
1, // 0: protowire.KaspadMessage.addresses:type_name -> protowire.AddressesMessage
@@ -2654,15 +2700,17 @@ var file_messages_proto_depIdxs = []int32{
109, // 109: protowire.KaspadMessage.notifyVirtualDaaScoreChangedRequest:type_name -> protowire.NotifyVirtualDaaScoreChangedRequestMessage
110, // 110: protowire.KaspadMessage.notifyVirtualDaaScoreChangedResponse:type_name -> protowire.NotifyVirtualDaaScoreChangedResponseMessage
111, // 111: protowire.KaspadMessage.virtualDaaScoreChangedNotification:type_name -> protowire.VirtualDaaScoreChangedNotificationMessage
- 0, // 112: protowire.P2P.MessageStream:input_type -> protowire.KaspadMessage
- 0, // 113: protowire.RPC.MessageStream:input_type -> protowire.KaspadMessage
- 0, // 114: protowire.P2P.MessageStream:output_type -> protowire.KaspadMessage
- 0, // 115: protowire.RPC.MessageStream:output_type -> protowire.KaspadMessage
- 114, // [114:116] is the sub-list for method output_type
- 112, // [112:114] is the sub-list for method input_type
- 112, // [112:112] is the sub-list for extension type_name
- 112, // [112:112] is the sub-list for extension extendee
- 0, // [0:112] is the sub-list for field type_name
+ 112, // 112: protowire.KaspadMessage.getBalanceByAddressRequestMessage:type_name -> protowire.GetBalanceByAddressRequestMessage
+ 113, // 113: protowire.KaspadMessage.getBalanceByAddressResponseMessage:type_name -> protowire.GetBalanceByAddressResponseMessage
+ 0, // 114: protowire.P2P.MessageStream:input_type -> protowire.KaspadMessage
+ 0, // 115: protowire.RPC.MessageStream:input_type -> protowire.KaspadMessage
+ 0, // 116: protowire.P2P.MessageStream:output_type -> protowire.KaspadMessage
+ 0, // 117: protowire.RPC.MessageStream:output_type -> protowire.KaspadMessage
+ 116, // [116:118] is the sub-list for method output_type
+ 114, // [114:116] is the sub-list for method input_type
+ 114, // [114:114] is the sub-list for extension type_name
+ 114, // [114:114] is the sub-list for extension extendee
+ 0, // [0:114] is the sub-list for field type_name
}
func init() { file_messages_proto_init() }
@@ -2799,6 +2847,8 @@ func file_messages_proto_init() {
(*KaspadMessage_NotifyVirtualDaaScoreChangedRequest)(nil),
(*KaspadMessage_NotifyVirtualDaaScoreChangedResponse)(nil),
(*KaspadMessage_VirtualDaaScoreChangedNotification)(nil),
+ (*KaspadMessage_GetBalanceByAddressRequestMessage)(nil),
+ (*KaspadMessage_GetBalanceByAddressResponseMessage)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto
index 017a81a5d..b19d4dc8a 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto
@@ -121,6 +121,8 @@ message KaspadMessage {
NotifyVirtualDaaScoreChangedRequestMessage notifyVirtualDaaScoreChangedRequest = 1074;
NotifyVirtualDaaScoreChangedResponseMessage notifyVirtualDaaScoreChangedResponse = 1075;
VirtualDaaScoreChangedNotificationMessage virtualDaaScoreChangedNotification = 1076;
+ GetBalanceByAddressRequestMessage getBalanceByAddressRequest = 1077;
+ GetBalanceByAddressResponseMessage getBalanceByAddressResponse = 1078;
}
}
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md
index d443cd60a..76f5b9226 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md
@@ -7,6 +7,7 @@
- [RPCError](#protowire.RPCError)
- [RpcBlock](#protowire.RpcBlock)
- [RpcBlockHeader](#protowire.RpcBlockHeader)
+ - [RpcBlockLevelParents](#protowire.RpcBlockLevelParents)
- [RpcBlockVerboseData](#protowire.RpcBlockVerboseData)
- [RpcTransaction](#protowire.RpcTransaction)
- [RpcTransactionInput](#protowire.RpcTransactionInput)
@@ -76,6 +77,8 @@
- [StopNotifyingUtxosChangedResponseMessage](#protowire.StopNotifyingUtxosChangedResponseMessage)
- [GetUtxosByAddressesRequestMessage](#protowire.GetUtxosByAddressesRequestMessage)
- [GetUtxosByAddressesResponseMessage](#protowire.GetUtxosByAddressesResponseMessage)
+ - [GetBalanceByAddressRequestMessage](#protowire.GetBalanceByAddressRequestMessage)
+ - [GetBalanceByAddressResponseMessage](#protowire.GetBalanceByAddressResponseMessage)
- [GetVirtualSelectedParentBlueScoreRequestMessage](#protowire.GetVirtualSelectedParentBlueScoreRequestMessage)
- [GetVirtualSelectedParentBlueScoreResponseMessage](#protowire.GetVirtualSelectedParentBlueScoreResponseMessage)
- [NotifyVirtualSelectedParentBlueScoreChangedRequestMessage](#protowire.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage)
@@ -161,13 +164,32 @@ Receivers of any ResponseMessage are expected to check whether its error field i
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| version | [uint32](#uint32) | | |
-| parentHashes | [string](#string) | repeated | |
+| parents | [RpcBlockLevelParents](#protowire.RpcBlockLevelParents) | repeated | |
| hashMerkleRoot | [string](#string) | | |
| acceptedIdMerkleRoot | [string](#string) | | |
| utxoCommitment | [string](#string) | | |
| timestamp | [int64](#int64) | | |
| bits | [uint32](#uint32) | | |
| nonce | [uint64](#uint64) | | |
+| daaScore | [uint64](#uint64) | | |
+| blueWork | [string](#string) | | |
+| pruningPoint | [string](#string) | | |
+| blueScore | [uint64](#uint64) | | |
+
+
+
+
+
+
+
+
+### RpcBlockLevelParents
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| parentHashes | [string](#string) | repeated | |
@@ -313,7 +335,7 @@ Receivers of any ResponseMessage are expected to check whether its error field i
| ----- | ---- | ----- | ----------- |
| transactionId | [string](#string) | | |
| hash | [string](#string) | | |
-| size | [uint64](#uint64) | | |
+| mass | [uint64](#uint64) | | |
| blockHash | [string](#string) | | |
| blockTime | [uint64](#uint64) | | |
@@ -1273,6 +1295,39 @@ This call is only available when this kaspad was started with `--utxoindex`
+
+
+### GetBalanceByAddressRequestMessage
+GetBalanceByAddressRequest returns the total balance in unspent transactions towards a given address
+
+This call is only available when this kaspad was started with `--utxoindex`
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| address | [string](#string) | | |
+
+
+
+
+
+
+
+
+### GetBalanceByAddressResponseMessage
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| balance | [uint64](#uint64) | | |
+| error | [RPCError](#protowire.RPCError) | | |
+
+
+
+
+
+
### GetVirtualSelectedParentBlueScoreRequestMessage
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go
index 87b7a1d27..ca318546e 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go
@@ -4231,6 +4231,111 @@ func (x *GetUtxosByAddressesResponseMessage) GetError() *RPCError {
return nil
}
+// GetBalanceByAddressRequest returns the total balance in unspent transactions towards a given address
+//
+// This call is only available when this kaspad was started with `--utxoindex`
+type GetBalanceByAddressRequestMessage struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
+}
+
+func (x *GetBalanceByAddressRequestMessage) Reset() {
+ *x = GetBalanceByAddressRequestMessage{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_rpc_proto_msgTypes[73]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetBalanceByAddressRequestMessage) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetBalanceByAddressRequestMessage) ProtoMessage() {}
+
+func (x *GetBalanceByAddressRequestMessage) ProtoReflect() protoreflect.Message {
+ mi := &file_rpc_proto_msgTypes[73]
+ 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 GetBalanceByAddressRequestMessage.ProtoReflect.Descriptor instead.
+func (*GetBalanceByAddressRequestMessage) Descriptor() ([]byte, []int) {
+ return file_rpc_proto_rawDescGZIP(), []int{73}
+}
+
+func (x *GetBalanceByAddressRequestMessage) GetAddress() string {
+ if x != nil {
+ return x.Address
+ }
+ return ""
+}
+
+type GetBalanceByAddressResponseMessage struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Balance uint64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance,omitempty"`
+ Error *RPCError `protobuf:"bytes,1000,opt,name=error,proto3" json:"error,omitempty"`
+}
+
+func (x *GetBalanceByAddressResponseMessage) Reset() {
+ *x = GetBalanceByAddressResponseMessage{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_rpc_proto_msgTypes[74]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetBalanceByAddressResponseMessage) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetBalanceByAddressResponseMessage) ProtoMessage() {}
+
+func (x *GetBalanceByAddressResponseMessage) ProtoReflect() protoreflect.Message {
+ mi := &file_rpc_proto_msgTypes[74]
+ 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 GetBalanceByAddressResponseMessage.ProtoReflect.Descriptor instead.
+func (*GetBalanceByAddressResponseMessage) Descriptor() ([]byte, []int) {
+ return file_rpc_proto_rawDescGZIP(), []int{74}
+}
+
+func (x *GetBalanceByAddressResponseMessage) GetBalance() uint64 {
+ if x != nil {
+ return x.Balance
+ }
+ return 0
+}
+
+func (x *GetBalanceByAddressResponseMessage) GetError() *RPCError {
+ if x != nil {
+ return x.Error
+ }
+ return nil
+}
+
// GetVirtualSelectedParentBlueScoreRequestMessage requests the blue score of the current selected parent
// of the virtual block.
type GetVirtualSelectedParentBlueScoreRequestMessage struct {
@@ -4242,7 +4347,7 @@ type GetVirtualSelectedParentBlueScoreRequestMessage struct {
func (x *GetVirtualSelectedParentBlueScoreRequestMessage) Reset() {
*x = GetVirtualSelectedParentBlueScoreRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[73]
+ mi := &file_rpc_proto_msgTypes[75]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4255,7 +4360,7 @@ func (x *GetVirtualSelectedParentBlueScoreRequestMessage) String() string {
func (*GetVirtualSelectedParentBlueScoreRequestMessage) ProtoMessage() {}
func (x *GetVirtualSelectedParentBlueScoreRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[73]
+ mi := &file_rpc_proto_msgTypes[75]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4268,7 +4373,7 @@ func (x *GetVirtualSelectedParentBlueScoreRequestMessage) ProtoReflect() protore
// Deprecated: Use GetVirtualSelectedParentBlueScoreRequestMessage.ProtoReflect.Descriptor instead.
func (*GetVirtualSelectedParentBlueScoreRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{73}
+ return file_rpc_proto_rawDescGZIP(), []int{75}
}
type GetVirtualSelectedParentBlueScoreResponseMessage struct {
@@ -4283,7 +4388,7 @@ type GetVirtualSelectedParentBlueScoreResponseMessage struct {
func (x *GetVirtualSelectedParentBlueScoreResponseMessage) Reset() {
*x = GetVirtualSelectedParentBlueScoreResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[74]
+ mi := &file_rpc_proto_msgTypes[76]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4296,7 +4401,7 @@ func (x *GetVirtualSelectedParentBlueScoreResponseMessage) String() string {
func (*GetVirtualSelectedParentBlueScoreResponseMessage) ProtoMessage() {}
func (x *GetVirtualSelectedParentBlueScoreResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[74]
+ mi := &file_rpc_proto_msgTypes[76]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4309,7 +4414,7 @@ func (x *GetVirtualSelectedParentBlueScoreResponseMessage) ProtoReflect() protor
// Deprecated: Use GetVirtualSelectedParentBlueScoreResponseMessage.ProtoReflect.Descriptor instead.
func (*GetVirtualSelectedParentBlueScoreResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{74}
+ return file_rpc_proto_rawDescGZIP(), []int{76}
}
func (x *GetVirtualSelectedParentBlueScoreResponseMessage) GetBlueScore() uint64 {
@@ -4339,7 +4444,7 @@ type NotifyVirtualSelectedParentBlueScoreChangedRequestMessage struct {
func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) Reset() {
*x = NotifyVirtualSelectedParentBlueScoreChangedRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[75]
+ mi := &file_rpc_proto_msgTypes[77]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4352,7 +4457,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) String() str
func (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) ProtoMessage() {}
func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[75]
+ mi := &file_rpc_proto_msgTypes[77]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4365,7 +4470,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) ProtoReflect
// Deprecated: Use NotifyVirtualSelectedParentBlueScoreChangedRequestMessage.ProtoReflect.Descriptor instead.
func (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{75}
+ return file_rpc_proto_rawDescGZIP(), []int{77}
}
type NotifyVirtualSelectedParentBlueScoreChangedResponseMessage struct {
@@ -4379,7 +4484,7 @@ type NotifyVirtualSelectedParentBlueScoreChangedResponseMessage struct {
func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) Reset() {
*x = NotifyVirtualSelectedParentBlueScoreChangedResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[76]
+ mi := &file_rpc_proto_msgTypes[78]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4392,7 +4497,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) String() st
func (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) ProtoMessage() {}
func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[76]
+ mi := &file_rpc_proto_msgTypes[78]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4405,7 +4510,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) ProtoReflec
// Deprecated: Use NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.ProtoReflect.Descriptor instead.
func (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{76}
+ return file_rpc_proto_rawDescGZIP(), []int{78}
}
func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) GetError() *RPCError {
@@ -4430,7 +4535,7 @@ type VirtualSelectedParentBlueScoreChangedNotificationMessage struct {
func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) Reset() {
*x = VirtualSelectedParentBlueScoreChangedNotificationMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[77]
+ mi := &file_rpc_proto_msgTypes[79]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4443,7 +4548,7 @@ func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) String() stri
func (*VirtualSelectedParentBlueScoreChangedNotificationMessage) ProtoMessage() {}
func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[77]
+ mi := &file_rpc_proto_msgTypes[79]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4456,7 +4561,7 @@ func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) ProtoReflect(
// Deprecated: Use VirtualSelectedParentBlueScoreChangedNotificationMessage.ProtoReflect.Descriptor instead.
func (*VirtualSelectedParentBlueScoreChangedNotificationMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{77}
+ return file_rpc_proto_rawDescGZIP(), []int{79}
}
func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) GetVirtualSelectedParentBlueScore() uint64 {
@@ -4479,7 +4584,7 @@ type NotifyVirtualDaaScoreChangedRequestMessage struct {
func (x *NotifyVirtualDaaScoreChangedRequestMessage) Reset() {
*x = NotifyVirtualDaaScoreChangedRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[78]
+ mi := &file_rpc_proto_msgTypes[80]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4492,7 +4597,7 @@ func (x *NotifyVirtualDaaScoreChangedRequestMessage) String() string {
func (*NotifyVirtualDaaScoreChangedRequestMessage) ProtoMessage() {}
func (x *NotifyVirtualDaaScoreChangedRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[78]
+ mi := &file_rpc_proto_msgTypes[80]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4505,7 +4610,7 @@ func (x *NotifyVirtualDaaScoreChangedRequestMessage) ProtoReflect() protoreflect
// Deprecated: Use NotifyVirtualDaaScoreChangedRequestMessage.ProtoReflect.Descriptor instead.
func (*NotifyVirtualDaaScoreChangedRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{78}
+ return file_rpc_proto_rawDescGZIP(), []int{80}
}
type NotifyVirtualDaaScoreChangedResponseMessage struct {
@@ -4519,7 +4624,7 @@ type NotifyVirtualDaaScoreChangedResponseMessage struct {
func (x *NotifyVirtualDaaScoreChangedResponseMessage) Reset() {
*x = NotifyVirtualDaaScoreChangedResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[79]
+ mi := &file_rpc_proto_msgTypes[81]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4532,7 +4637,7 @@ func (x *NotifyVirtualDaaScoreChangedResponseMessage) String() string {
func (*NotifyVirtualDaaScoreChangedResponseMessage) ProtoMessage() {}
func (x *NotifyVirtualDaaScoreChangedResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[79]
+ mi := &file_rpc_proto_msgTypes[81]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4545,7 +4650,7 @@ func (x *NotifyVirtualDaaScoreChangedResponseMessage) ProtoReflect() protoreflec
// Deprecated: Use NotifyVirtualDaaScoreChangedResponseMessage.ProtoReflect.Descriptor instead.
func (*NotifyVirtualDaaScoreChangedResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{79}
+ return file_rpc_proto_rawDescGZIP(), []int{81}
}
func (x *NotifyVirtualDaaScoreChangedResponseMessage) GetError() *RPCError {
@@ -4570,7 +4675,7 @@ type VirtualDaaScoreChangedNotificationMessage struct {
func (x *VirtualDaaScoreChangedNotificationMessage) Reset() {
*x = VirtualDaaScoreChangedNotificationMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[80]
+ mi := &file_rpc_proto_msgTypes[82]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4583,7 +4688,7 @@ func (x *VirtualDaaScoreChangedNotificationMessage) String() string {
func (*VirtualDaaScoreChangedNotificationMessage) ProtoMessage() {}
func (x *VirtualDaaScoreChangedNotificationMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[80]
+ mi := &file_rpc_proto_msgTypes[82]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4596,7 +4701,7 @@ func (x *VirtualDaaScoreChangedNotificationMessage) ProtoReflect() protoreflect.
// Deprecated: Use VirtualDaaScoreChangedNotificationMessage.ProtoReflect.Descriptor instead.
func (*VirtualDaaScoreChangedNotificationMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{80}
+ return file_rpc_proto_rawDescGZIP(), []int{82}
}
func (x *VirtualDaaScoreChangedNotificationMessage) GetVirtualDaaScore() uint64 {
@@ -4621,7 +4726,7 @@ type NotifyPruningPointUTXOSetOverrideRequestMessage struct {
func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) Reset() {
*x = NotifyPruningPointUTXOSetOverrideRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[81]
+ mi := &file_rpc_proto_msgTypes[83]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4634,7 +4739,7 @@ func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) String() string {
func (*NotifyPruningPointUTXOSetOverrideRequestMessage) ProtoMessage() {}
func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[81]
+ mi := &file_rpc_proto_msgTypes[83]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4647,7 +4752,7 @@ func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() protore
// Deprecated: Use NotifyPruningPointUTXOSetOverrideRequestMessage.ProtoReflect.Descriptor instead.
func (*NotifyPruningPointUTXOSetOverrideRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{81}
+ return file_rpc_proto_rawDescGZIP(), []int{83}
}
type NotifyPruningPointUTXOSetOverrideResponseMessage struct {
@@ -4661,7 +4766,7 @@ type NotifyPruningPointUTXOSetOverrideResponseMessage struct {
func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) Reset() {
*x = NotifyPruningPointUTXOSetOverrideResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[82]
+ mi := &file_rpc_proto_msgTypes[84]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4674,7 +4779,7 @@ func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) String() string {
func (*NotifyPruningPointUTXOSetOverrideResponseMessage) ProtoMessage() {}
func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[82]
+ mi := &file_rpc_proto_msgTypes[84]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4687,7 +4792,7 @@ func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() protor
// Deprecated: Use NotifyPruningPointUTXOSetOverrideResponseMessage.ProtoReflect.Descriptor instead.
func (*NotifyPruningPointUTXOSetOverrideResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{82}
+ return file_rpc_proto_rawDescGZIP(), []int{84}
}
func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) GetError() *RPCError {
@@ -4710,7 +4815,7 @@ type PruningPointUTXOSetOverrideNotificationMessage struct {
func (x *PruningPointUTXOSetOverrideNotificationMessage) Reset() {
*x = PruningPointUTXOSetOverrideNotificationMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[83]
+ mi := &file_rpc_proto_msgTypes[85]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4723,7 +4828,7 @@ func (x *PruningPointUTXOSetOverrideNotificationMessage) String() string {
func (*PruningPointUTXOSetOverrideNotificationMessage) ProtoMessage() {}
func (x *PruningPointUTXOSetOverrideNotificationMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[83]
+ mi := &file_rpc_proto_msgTypes[85]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4736,7 +4841,7 @@ func (x *PruningPointUTXOSetOverrideNotificationMessage) ProtoReflect() protoref
// Deprecated: Use PruningPointUTXOSetOverrideNotificationMessage.ProtoReflect.Descriptor instead.
func (*PruningPointUTXOSetOverrideNotificationMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{83}
+ return file_rpc_proto_rawDescGZIP(), []int{85}
}
// StopNotifyingPruningPointUTXOSetOverrideRequestMessage unregisters this connection for
@@ -4754,7 +4859,7 @@ type StopNotifyingPruningPointUTXOSetOverrideRequestMessage struct {
func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) Reset() {
*x = StopNotifyingPruningPointUTXOSetOverrideRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[84]
+ mi := &file_rpc_proto_msgTypes[86]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4767,7 +4872,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) String() string
func (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage) ProtoMessage() {}
func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[84]
+ mi := &file_rpc_proto_msgTypes[86]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4780,7 +4885,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) ProtoReflect()
// Deprecated: Use StopNotifyingPruningPointUTXOSetOverrideRequestMessage.ProtoReflect.Descriptor instead.
func (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{84}
+ return file_rpc_proto_rawDescGZIP(), []int{86}
}
type StopNotifyingPruningPointUTXOSetOverrideResponseMessage struct {
@@ -4794,7 +4899,7 @@ type StopNotifyingPruningPointUTXOSetOverrideResponseMessage struct {
func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) Reset() {
*x = StopNotifyingPruningPointUTXOSetOverrideResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[85]
+ mi := &file_rpc_proto_msgTypes[87]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4807,7 +4912,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) String() strin
func (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage) ProtoMessage() {}
func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[85]
+ mi := &file_rpc_proto_msgTypes[87]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4820,7 +4925,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) ProtoReflect()
// Deprecated: Use StopNotifyingPruningPointUTXOSetOverrideResponseMessage.ProtoReflect.Descriptor instead.
func (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{85}
+ return file_rpc_proto_rawDescGZIP(), []int{87}
}
func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) GetError() *RPCError {
@@ -4842,7 +4947,7 @@ type BanRequestMessage struct {
func (x *BanRequestMessage) Reset() {
*x = BanRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[86]
+ mi := &file_rpc_proto_msgTypes[88]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4855,7 +4960,7 @@ func (x *BanRequestMessage) String() string {
func (*BanRequestMessage) ProtoMessage() {}
func (x *BanRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[86]
+ mi := &file_rpc_proto_msgTypes[88]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4868,7 +4973,7 @@ func (x *BanRequestMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use BanRequestMessage.ProtoReflect.Descriptor instead.
func (*BanRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{86}
+ return file_rpc_proto_rawDescGZIP(), []int{88}
}
func (x *BanRequestMessage) GetIp() string {
@@ -4889,7 +4994,7 @@ type BanResponseMessage struct {
func (x *BanResponseMessage) Reset() {
*x = BanResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[87]
+ mi := &file_rpc_proto_msgTypes[89]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4902,7 +5007,7 @@ func (x *BanResponseMessage) String() string {
func (*BanResponseMessage) ProtoMessage() {}
func (x *BanResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[87]
+ mi := &file_rpc_proto_msgTypes[89]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4915,7 +5020,7 @@ func (x *BanResponseMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use BanResponseMessage.ProtoReflect.Descriptor instead.
func (*BanResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{87}
+ return file_rpc_proto_rawDescGZIP(), []int{89}
}
func (x *BanResponseMessage) GetError() *RPCError {
@@ -4937,7 +5042,7 @@ type UnbanRequestMessage struct {
func (x *UnbanRequestMessage) Reset() {
*x = UnbanRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[88]
+ mi := &file_rpc_proto_msgTypes[90]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4950,7 +5055,7 @@ func (x *UnbanRequestMessage) String() string {
func (*UnbanRequestMessage) ProtoMessage() {}
func (x *UnbanRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[88]
+ mi := &file_rpc_proto_msgTypes[90]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -4963,7 +5068,7 @@ func (x *UnbanRequestMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use UnbanRequestMessage.ProtoReflect.Descriptor instead.
func (*UnbanRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{88}
+ return file_rpc_proto_rawDescGZIP(), []int{90}
}
func (x *UnbanRequestMessage) GetIp() string {
@@ -4984,7 +5089,7 @@ type UnbanResponseMessage struct {
func (x *UnbanResponseMessage) Reset() {
*x = UnbanResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[89]
+ mi := &file_rpc_proto_msgTypes[91]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -4997,7 +5102,7 @@ func (x *UnbanResponseMessage) String() string {
func (*UnbanResponseMessage) ProtoMessage() {}
func (x *UnbanResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[89]
+ mi := &file_rpc_proto_msgTypes[91]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5010,7 +5115,7 @@ func (x *UnbanResponseMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use UnbanResponseMessage.ProtoReflect.Descriptor instead.
func (*UnbanResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{89}
+ return file_rpc_proto_rawDescGZIP(), []int{91}
}
func (x *UnbanResponseMessage) GetError() *RPCError {
@@ -5030,7 +5135,7 @@ type GetInfoRequestMessage struct {
func (x *GetInfoRequestMessage) Reset() {
*x = GetInfoRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[90]
+ mi := &file_rpc_proto_msgTypes[92]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5043,7 +5148,7 @@ func (x *GetInfoRequestMessage) String() string {
func (*GetInfoRequestMessage) ProtoMessage() {}
func (x *GetInfoRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[90]
+ mi := &file_rpc_proto_msgTypes[92]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5056,7 +5161,7 @@ func (x *GetInfoRequestMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetInfoRequestMessage.ProtoReflect.Descriptor instead.
func (*GetInfoRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{90}
+ return file_rpc_proto_rawDescGZIP(), []int{92}
}
type GetInfoResponseMessage struct {
@@ -5073,7 +5178,7 @@ type GetInfoResponseMessage struct {
func (x *GetInfoResponseMessage) Reset() {
*x = GetInfoResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[91]
+ mi := &file_rpc_proto_msgTypes[93]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5086,7 +5191,7 @@ func (x *GetInfoResponseMessage) String() string {
func (*GetInfoResponseMessage) ProtoMessage() {}
func (x *GetInfoResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[91]
+ mi := &file_rpc_proto_msgTypes[93]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5099,7 +5204,7 @@ func (x *GetInfoResponseMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetInfoResponseMessage.ProtoReflect.Descriptor instead.
func (*GetInfoResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{91}
+ return file_rpc_proto_rawDescGZIP(), []int{93}
}
func (x *GetInfoResponseMessage) GetP2PId() string {
@@ -5142,7 +5247,7 @@ type EstimateNetworkHashesPerSecondRequestMessage struct {
func (x *EstimateNetworkHashesPerSecondRequestMessage) Reset() {
*x = EstimateNetworkHashesPerSecondRequestMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[92]
+ mi := &file_rpc_proto_msgTypes[94]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5155,7 +5260,7 @@ func (x *EstimateNetworkHashesPerSecondRequestMessage) String() string {
func (*EstimateNetworkHashesPerSecondRequestMessage) ProtoMessage() {}
func (x *EstimateNetworkHashesPerSecondRequestMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[92]
+ mi := &file_rpc_proto_msgTypes[94]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5168,7 +5273,7 @@ func (x *EstimateNetworkHashesPerSecondRequestMessage) ProtoReflect() protorefle
// Deprecated: Use EstimateNetworkHashesPerSecondRequestMessage.ProtoReflect.Descriptor instead.
func (*EstimateNetworkHashesPerSecondRequestMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{92}
+ return file_rpc_proto_rawDescGZIP(), []int{94}
}
func (x *EstimateNetworkHashesPerSecondRequestMessage) GetWindowSize() uint32 {
@@ -5197,7 +5302,7 @@ type EstimateNetworkHashesPerSecondResponseMessage struct {
func (x *EstimateNetworkHashesPerSecondResponseMessage) Reset() {
*x = EstimateNetworkHashesPerSecondResponseMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_rpc_proto_msgTypes[93]
+ mi := &file_rpc_proto_msgTypes[95]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5210,7 +5315,7 @@ func (x *EstimateNetworkHashesPerSecondResponseMessage) String() string {
func (*EstimateNetworkHashesPerSecondResponseMessage) ProtoMessage() {}
func (x *EstimateNetworkHashesPerSecondResponseMessage) ProtoReflect() protoreflect.Message {
- mi := &file_rpc_proto_msgTypes[93]
+ mi := &file_rpc_proto_msgTypes[95]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5223,7 +5328,7 @@ func (x *EstimateNetworkHashesPerSecondResponseMessage) ProtoReflect() protorefl
// Deprecated: Use EstimateNetworkHashesPerSecondResponseMessage.ProtoReflect.Descriptor instead.
func (*EstimateNetworkHashesPerSecondResponseMessage) Descriptor() ([]byte, []int) {
- return file_rpc_proto_rawDescGZIP(), []int{93}
+ return file_rpc_proto_rawDescGZIP(), []int{95}
}
func (x *EstimateNetworkHashesPerSecondResponseMessage) GetNetworkHashesPerSecond() uint64 {
@@ -5792,117 +5897,128 @@ var file_rpc_proto_rawDesc = []byte{
0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x31, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74,
- 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e,
- 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x30, 0x47, 0x65, 0x74, 0x56,
- 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61,
- 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09,
- 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72,
- 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52,
- 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3b, 0x0a, 0x39, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
- 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x3a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72,
- 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65,
- 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50,
- 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, 0x01,
- 0x0a, 0x38, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65,
- 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65,
- 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x1e, 0x76, 0x69,
- 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72,
- 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x1e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f,
- 0x72, 0x65, 0x22, 0x2c, 0x0a, 0x2a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74,
- 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67,
- 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x22, 0x59, 0x0a, 0x2b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61,
- 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
- 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45,
- 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x29, 0x56,
- 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68,
- 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x72, 0x74,
- 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f,
- 0x72, 0x65, 0x22, 0x31, 0x0a, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x72, 0x75, 0x6e,
- 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f,
- 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x30, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50,
- 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53,
- 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72,
- 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x30, 0x0a, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67,
- 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72,
- 0x72, 0x69, 0x64, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x38, 0x0a, 0x36, 0x53, 0x74, 0x6f, 0x70, 0x4e,
- 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50,
- 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72,
- 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x22, 0x65, 0x0a, 0x37, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69,
- 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54,
- 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3d, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61,
+ 0x6e, 0x63, 0x65, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x22, 0x6a, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+ 0x63, 0x65, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61,
+ 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x61, 0x6c,
+ 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65,
+ 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x22, 0x31, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65,
+ 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x30, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61,
+ 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42,
+ 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53,
+ 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65,
+ 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8,
+ 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72,
+ 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x22, 0x3b, 0x0a, 0x39, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75,
+ 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74,
+ 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x68,
+ 0x0a, 0x3a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75,
+ 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05,
0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f,
- 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x23, 0x0a, 0x11, 0x42, 0x61, 0x6e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x40, 0x0a,
- 0x12, 0x42, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e,
- 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22,
- 0x25, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x52,
+ 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x38, 0x56, 0x69, 0x72,
+ 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65,
+ 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67,
+ 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x1e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c,
+ 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c,
+ 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1e, 0x76,
+ 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61,
+ 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x2c, 0x0a,
+ 0x2a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61,
+ 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x59, 0x0a, 0x2b, 0x4e,
+ 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53,
+ 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52,
+ 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x29, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61,
+ 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64,
+ 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61,
+ 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, 0x69,
+ 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x31, 0x0a,
+ 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f,
+ 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69,
+ 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x22, 0x5e, 0x0a, 0x30, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e,
+ 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65,
+ 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65,
+ 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x22, 0x30, 0x0a, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74,
+ 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x4e,
+ 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x22, 0x38, 0x0a, 0x36, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
+ 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55,
+ 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x65, 0x0a, 0x37,
+ 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75,
+ 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74,
+ 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77,
+ 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x22, 0x23, 0x0a, 0x11, 0x42, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x40, 0x0a, 0x12, 0x42, 0x61, 0x6e, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a,
0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72,
- 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65,
- 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14,
- 0x0a, 0x05, 0x70, 0x32, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70,
- 0x32, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x53,
- 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x70, 0x6f,
- 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
- 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f,
- 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x2c, 0x45, 0x73, 0x74, 0x69,
- 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65,
- 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x6e, 0x64,
- 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x69,
- 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72,
- 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x93, 0x01, 0x0a, 0x2d, 0x45, 0x73, 0x74, 0x69, 0x6d,
- 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73,
- 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
- 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
- 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43,
- 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x26, 0x5a, 0x24,
- 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61,
- 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x77, 0x69, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x25, 0x0a, 0x13, 0x55, 0x6e,
+ 0x62, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x70, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2,
+ 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x32, 0x70,
+ 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x32, 0x70, 0x49, 0x64, 0x12,
+ 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a,
+ 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69,
+ 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77,
+ 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x2c, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53,
+ 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53,
+ 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73,
+ 0x68, 0x22, 0x93, 0x01, 0x0a, 0x2d, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65,
+ 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61,
+ 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68,
+ 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75,
+ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b,
+ 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x62,
+ 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -5918,7 +6034,7 @@ func file_rpc_proto_rawDescGZIP() []byte {
}
var file_rpc_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 94)
+var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 96)
var file_rpc_proto_goTypes = []interface{}{
(SubmitBlockResponseMessage_RejectReason)(0), // 0: protowire.SubmitBlockResponseMessage.RejectReason
(*RPCError)(nil), // 1: protowire.RPCError
@@ -5994,27 +6110,29 @@ var file_rpc_proto_goTypes = []interface{}{
(*StopNotifyingUtxosChangedResponseMessage)(nil), // 71: protowire.StopNotifyingUtxosChangedResponseMessage
(*GetUtxosByAddressesRequestMessage)(nil), // 72: protowire.GetUtxosByAddressesRequestMessage
(*GetUtxosByAddressesResponseMessage)(nil), // 73: protowire.GetUtxosByAddressesResponseMessage
- (*GetVirtualSelectedParentBlueScoreRequestMessage)(nil), // 74: protowire.GetVirtualSelectedParentBlueScoreRequestMessage
- (*GetVirtualSelectedParentBlueScoreResponseMessage)(nil), // 75: protowire.GetVirtualSelectedParentBlueScoreResponseMessage
- (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage)(nil), // 76: protowire.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage
- (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage)(nil), // 77: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage
- (*VirtualSelectedParentBlueScoreChangedNotificationMessage)(nil), // 78: protowire.VirtualSelectedParentBlueScoreChangedNotificationMessage
- (*NotifyVirtualDaaScoreChangedRequestMessage)(nil), // 79: protowire.NotifyVirtualDaaScoreChangedRequestMessage
- (*NotifyVirtualDaaScoreChangedResponseMessage)(nil), // 80: protowire.NotifyVirtualDaaScoreChangedResponseMessage
- (*VirtualDaaScoreChangedNotificationMessage)(nil), // 81: protowire.VirtualDaaScoreChangedNotificationMessage
- (*NotifyPruningPointUTXOSetOverrideRequestMessage)(nil), // 82: protowire.NotifyPruningPointUTXOSetOverrideRequestMessage
- (*NotifyPruningPointUTXOSetOverrideResponseMessage)(nil), // 83: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage
- (*PruningPointUTXOSetOverrideNotificationMessage)(nil), // 84: protowire.PruningPointUTXOSetOverrideNotificationMessage
- (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage)(nil), // 85: protowire.StopNotifyingPruningPointUTXOSetOverrideRequestMessage
- (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage)(nil), // 86: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage
- (*BanRequestMessage)(nil), // 87: protowire.BanRequestMessage
- (*BanResponseMessage)(nil), // 88: protowire.BanResponseMessage
- (*UnbanRequestMessage)(nil), // 89: protowire.UnbanRequestMessage
- (*UnbanResponseMessage)(nil), // 90: protowire.UnbanResponseMessage
- (*GetInfoRequestMessage)(nil), // 91: protowire.GetInfoRequestMessage
- (*GetInfoResponseMessage)(nil), // 92: protowire.GetInfoResponseMessage
- (*EstimateNetworkHashesPerSecondRequestMessage)(nil), // 93: protowire.EstimateNetworkHashesPerSecondRequestMessage
- (*EstimateNetworkHashesPerSecondResponseMessage)(nil), // 94: protowire.EstimateNetworkHashesPerSecondResponseMessage
+ (*GetBalanceByAddressRequestMessage)(nil), // 74: protowire.GetBalanceByAddressRequestMessage
+ (*GetBalanceByAddressResponseMessage)(nil), // 75: protowire.GetBalanceByAddressResponseMessage
+ (*GetVirtualSelectedParentBlueScoreRequestMessage)(nil), // 76: protowire.GetVirtualSelectedParentBlueScoreRequestMessage
+ (*GetVirtualSelectedParentBlueScoreResponseMessage)(nil), // 77: protowire.GetVirtualSelectedParentBlueScoreResponseMessage
+ (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage)(nil), // 78: protowire.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage
+ (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage)(nil), // 79: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage
+ (*VirtualSelectedParentBlueScoreChangedNotificationMessage)(nil), // 80: protowire.VirtualSelectedParentBlueScoreChangedNotificationMessage
+ (*NotifyVirtualDaaScoreChangedRequestMessage)(nil), // 81: protowire.NotifyVirtualDaaScoreChangedRequestMessage
+ (*NotifyVirtualDaaScoreChangedResponseMessage)(nil), // 82: protowire.NotifyVirtualDaaScoreChangedResponseMessage
+ (*VirtualDaaScoreChangedNotificationMessage)(nil), // 83: protowire.VirtualDaaScoreChangedNotificationMessage
+ (*NotifyPruningPointUTXOSetOverrideRequestMessage)(nil), // 84: protowire.NotifyPruningPointUTXOSetOverrideRequestMessage
+ (*NotifyPruningPointUTXOSetOverrideResponseMessage)(nil), // 85: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage
+ (*PruningPointUTXOSetOverrideNotificationMessage)(nil), // 86: protowire.PruningPointUTXOSetOverrideNotificationMessage
+ (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage)(nil), // 87: protowire.StopNotifyingPruningPointUTXOSetOverrideRequestMessage
+ (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage)(nil), // 88: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage
+ (*BanRequestMessage)(nil), // 89: protowire.BanRequestMessage
+ (*BanResponseMessage)(nil), // 90: protowire.BanResponseMessage
+ (*UnbanRequestMessage)(nil), // 91: protowire.UnbanRequestMessage
+ (*UnbanResponseMessage)(nil), // 92: protowire.UnbanResponseMessage
+ (*GetInfoRequestMessage)(nil), // 93: protowire.GetInfoRequestMessage
+ (*GetInfoResponseMessage)(nil), // 94: protowire.GetInfoResponseMessage
+ (*EstimateNetworkHashesPerSecondRequestMessage)(nil), // 95: protowire.EstimateNetworkHashesPerSecondRequestMessage
+ (*EstimateNetworkHashesPerSecondResponseMessage)(nil), // 96: protowire.EstimateNetworkHashesPerSecondResponseMessage
}
var file_rpc_proto_depIdxs = []int32{
3, // 0: protowire.RpcBlock.header:type_name -> protowire.RpcBlockHeader
@@ -6072,20 +6190,21 @@ var file_rpc_proto_depIdxs = []int32{
1, // 52: protowire.StopNotifyingUtxosChangedResponseMessage.error:type_name -> protowire.RPCError
69, // 53: protowire.GetUtxosByAddressesResponseMessage.entries:type_name -> protowire.UtxosByAddressesEntry
1, // 54: protowire.GetUtxosByAddressesResponseMessage.error:type_name -> protowire.RPCError
- 1, // 55: protowire.GetVirtualSelectedParentBlueScoreResponseMessage.error:type_name -> protowire.RPCError
- 1, // 56: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.error:type_name -> protowire.RPCError
- 1, // 57: protowire.NotifyVirtualDaaScoreChangedResponseMessage.error:type_name -> protowire.RPCError
- 1, // 58: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
- 1, // 59: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
- 1, // 60: protowire.BanResponseMessage.error:type_name -> protowire.RPCError
- 1, // 61: protowire.UnbanResponseMessage.error:type_name -> protowire.RPCError
- 1, // 62: protowire.GetInfoResponseMessage.error:type_name -> protowire.RPCError
- 1, // 63: protowire.EstimateNetworkHashesPerSecondResponseMessage.error:type_name -> protowire.RPCError
- 64, // [64:64] is the sub-list for method output_type
- 64, // [64:64] is the sub-list for method input_type
- 64, // [64:64] is the sub-list for extension type_name
- 64, // [64:64] is the sub-list for extension extendee
- 0, // [0:64] is the sub-list for field type_name
+ 1, // 55: protowire.GetBalanceByAddressResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 56: protowire.GetVirtualSelectedParentBlueScoreResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 57: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 58: protowire.NotifyVirtualDaaScoreChangedResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 59: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 60: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 61: protowire.BanResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 62: protowire.UnbanResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 63: protowire.GetInfoResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 64: protowire.EstimateNetworkHashesPerSecondResponseMessage.error:type_name -> protowire.RPCError
+ 65, // [65:65] is the sub-list for method output_type
+ 65, // [65:65] is the sub-list for method input_type
+ 65, // [65:65] is the sub-list for extension type_name
+ 65, // [65:65] is the sub-list for extension extendee
+ 0, // [0:65] is the sub-list for field type_name
}
func init() { file_rpc_proto_init() }
@@ -6971,7 +7090,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetVirtualSelectedParentBlueScoreRequestMessage); i {
+ switch v := v.(*GetBalanceByAddressRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -6983,7 +7102,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetVirtualSelectedParentBlueScoreResponseMessage); i {
+ switch v := v.(*GetBalanceByAddressResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -6995,7 +7114,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage); i {
+ switch v := v.(*GetVirtualSelectedParentBlueScoreRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7007,7 +7126,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage); i {
+ switch v := v.(*GetVirtualSelectedParentBlueScoreResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7019,7 +7138,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VirtualSelectedParentBlueScoreChangedNotificationMessage); i {
+ switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7031,7 +7150,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyVirtualDaaScoreChangedRequestMessage); i {
+ switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7043,7 +7162,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyVirtualDaaScoreChangedResponseMessage); i {
+ switch v := v.(*VirtualSelectedParentBlueScoreChangedNotificationMessage); i {
case 0:
return &v.state
case 1:
@@ -7055,7 +7174,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VirtualDaaScoreChangedNotificationMessage); i {
+ switch v := v.(*NotifyVirtualDaaScoreChangedRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7067,7 +7186,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyPruningPointUTXOSetOverrideRequestMessage); i {
+ switch v := v.(*NotifyVirtualDaaScoreChangedResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7079,7 +7198,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotifyPruningPointUTXOSetOverrideResponseMessage); i {
+ switch v := v.(*VirtualDaaScoreChangedNotificationMessage); i {
case 0:
return &v.state
case 1:
@@ -7091,7 +7210,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PruningPointUTXOSetOverrideNotificationMessage); i {
+ switch v := v.(*NotifyPruningPointUTXOSetOverrideRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7103,7 +7222,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideRequestMessage); i {
+ switch v := v.(*NotifyPruningPointUTXOSetOverrideResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7115,7 +7234,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideResponseMessage); i {
+ switch v := v.(*PruningPointUTXOSetOverrideNotificationMessage); i {
case 0:
return &v.state
case 1:
@@ -7127,7 +7246,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BanRequestMessage); i {
+ switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7139,7 +7258,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BanResponseMessage); i {
+ switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7151,7 +7270,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UnbanRequestMessage); i {
+ switch v := v.(*BanRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7163,7 +7282,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UnbanResponseMessage); i {
+ switch v := v.(*BanResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7175,7 +7294,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInfoRequestMessage); i {
+ switch v := v.(*UnbanRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7187,7 +7306,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetInfoResponseMessage); i {
+ switch v := v.(*UnbanResponseMessage); i {
case 0:
return &v.state
case 1:
@@ -7199,7 +7318,7 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EstimateNetworkHashesPerSecondRequestMessage); i {
+ switch v := v.(*GetInfoRequestMessage); i {
case 0:
return &v.state
case 1:
@@ -7211,6 +7330,30 @@ func file_rpc_proto_init() {
}
}
file_rpc_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetInfoResponseMessage); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_rpc_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*EstimateNetworkHashesPerSecondRequestMessage); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_rpc_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EstimateNetworkHashesPerSecondResponseMessage); i {
case 0:
return &v.state
@@ -7229,7 +7372,7 @@ func file_rpc_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_rpc_proto_rawDesc,
NumEnums: 1,
- NumMessages: 94,
+ NumMessages: 96,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto
index b4769aef5..03d7b5ae9 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto
@@ -498,6 +498,19 @@ message GetUtxosByAddressesResponseMessage {
RPCError error = 1000;
}
+// GetBalanceByAddressRequest returns the total balance in unspent transactions towards a given address
+//
+// This call is only available when this kaspad was started with `--utxoindex`
+message GetBalanceByAddressRequestMessage {
+ string address = 1;
+}
+
+message GetBalanceByAddressResponseMessage {
+ uint64 balance = 1;
+
+ RPCError error = 1000;
+}
+
// GetVirtualSelectedParentBlueScoreRequestMessage requests the blue score of the current selected parent
// of the virtual block.
message GetVirtualSelectedParentBlueScoreRequestMessage {
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_get_balance_by_address.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_get_balance_by_address.go
new file mode 100644
index 000000000..f110dd31f
--- /dev/null
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_get_balance_by_address.go
@@ -0,0 +1,69 @@
+package protowire
+
+import (
+ "github.com/kaspanet/kaspad/app/appmessage"
+ "github.com/pkg/errors"
+)
+
+func (x *KaspadMessage_GetBalanceByAddressRequestMessage) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "KaspadMessage_GetBalanceByAddressRequest is nil")
+ }
+ return x.GetBalanceByAddressRequestMessage.toAppMessage()
+}
+
+func (x *KaspadMessage_GetBalanceByAddressRequestMessage) fromAppMessage(message *appmessage.GetBalanceByAddressRequestMessage) error {
+ x.GetBalanceByAddressRequestMessage = &GetBalanceByAddressRequestMessage{
+ Address: message.Address,
+ }
+ return nil
+}
+
+func (x *GetBalanceByAddressRequestMessage) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "GetBalanceByAddressRequest is nil")
+ }
+ return &appmessage.GetBalanceByAddressRequestMessage{
+ Address: x.Address,
+ }, nil
+}
+
+func (x *KaspadMessage_GetBalanceByAddressResponseMessage) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "GetBalanceByAddressResponse is nil")
+ }
+ return x.GetBalanceByAddressResponseMessage.toAppMessage()
+}
+
+func (x *KaspadMessage_GetBalanceByAddressResponseMessage) fromAppMessage(message *appmessage.GetBalanceByAddressResponseMessage) error {
+ var err *RPCError
+ if message.Error != nil {
+ err = &RPCError{Message: message.Error.Message}
+ }
+ x.GetBalanceByAddressResponseMessage = &GetBalanceByAddressResponseMessage{
+ Balance: message.Balance,
+
+ Error: err,
+ }
+ return nil
+}
+
+func (x *GetBalanceByAddressResponseMessage) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "GetBalanceByAddressResponse is nil")
+ }
+ rpcErr, err := x.Error.toAppMessage()
+ // Error is an optional field
+ if err != nil && !errors.Is(err, errorNil) {
+ return nil, err
+ }
+
+ if rpcErr != nil && x.Balance != 1 {
+ return nil, errors.New("GetBalanceByAddressResponse contains both an error and a response")
+ }
+
+ return &appmessage.GetBalanceByAddressResponseMessage{
+ Balance: x.Balance,
+ Error: rpcErr,
+ }, nil
+}
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go b/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go
index bfd2bee60..86c7ee54f 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go
@@ -702,6 +702,20 @@ func toRPCPayload(message appmessage.Message) (isKaspadMessage_Payload, error) {
return nil, err
}
return payload, nil
+ case *appmessage.GetBalanceByAddressRequestMessage:
+ payload := new(KaspadMessage_GetBalanceByAddressRequestMessage)
+ err := payload.fromAppMessage(message)
+ if err != nil {
+ return nil, err
+ }
+ return payload, nil
+ case *appmessage.GetBalanceByAddressResponseMessage:
+ payload := new(KaspadMessage_GetBalanceByAddressResponseMessage)
+ err := payload.fromAppMessage(message)
+ if err != nil {
+ return nil, err
+ }
+ return payload, nil
case *appmessage.GetVirtualSelectedParentBlueScoreRequestMessage:
payload := new(KaspadMessage_GetVirtualSelectedParentBlueScoreRequest)
err := payload.fromAppMessage(message)
diff --git a/infrastructure/network/rpcclient/rpc_get_balance_by_address.go b/infrastructure/network/rpcclient/rpc_get_balance_by_address.go
new file mode 100644
index 000000000..ab528ca52
--- /dev/null
+++ b/infrastructure/network/rpcclient/rpc_get_balance_by_address.go
@@ -0,0 +1,20 @@
+package rpcclient
+
+import "github.com/kaspanet/kaspad/app/appmessage"
+
+// GetBalanceByAddress sends an RPC request respective to the function's name and returns the RPC server's response
+func (c *RPCClient) GetBalanceByAddress(address string) (*appmessage.GetBalanceByAddressResponseMessage, error) {
+ err := c.rpcRouter.outgoingRoute().Enqueue(appmessage.NewGetBalanceByAddressRequest(address))
+ if err != nil {
+ return nil, err
+ }
+ response, err := c.route(appmessage.CmdGetBalanceByAddressResponseMessage).DequeueWithTimeout(c.timeout)
+ if err != nil {
+ return nil, err
+ }
+ getBalanceByAddressResponse := response.(*appmessage.GetBalanceByAddressResponseMessage)
+ if getBalanceByAddressResponse.Error != nil {
+ return nil, c.convertRPCError(getBalanceByAddressResponse.Error)
+ }
+ return getBalanceByAddressResponse, nil
+}