diff --git a/app/appmessage/message.go b/app/appmessage/message.go
index 6296c93283..71c04c4c35 100644
--- a/app/appmessage/message.go
+++ b/app/appmessage/message.go
@@ -159,6 +159,8 @@ const (
CmdNotifyNewBlockTemplateRequestMessage
CmdNotifyNewBlockTemplateResponseMessage
CmdNewBlockTemplateNotificationMessage
+ CmdGetMempoolEntriesByAddressesRequestMessage
+ CmdGetMempoolEntriesByAddressesResponseMessage
)
// ProtocolMessageCommandToString maps all MessageCommands to their string representation
@@ -292,6 +294,8 @@ var RPCMessageCommandToString = map[MessageCommand]string{
CmdNotifyNewBlockTemplateRequestMessage: "NotifyNewBlockTemplateRequest",
CmdNotifyNewBlockTemplateResponseMessage: "NotifyNewBlockTemplateResponse",
CmdNewBlockTemplateNotificationMessage: "NewBlockTemplateNotification",
+ CmdGetMempoolEntriesByAddressesRequestMessage: "CmdGetMempoolEntriesByAddressesRequest",
+ CmdGetMempoolEntriesByAddressesResponseMessage: "CmdGetMempoolEntriesByAddressesResponse",
}
// Message is an interface that describes a kaspa message. A type that
diff --git a/app/appmessage/rpc_get_mempool_entries_by_addresses.go b/app/appmessage/rpc_get_mempool_entries_by_addresses.go
new file mode 100644
index 0000000000..3094c7ab03
--- /dev/null
+++ b/app/appmessage/rpc_get_mempool_entries_by_addresses.go
@@ -0,0 +1,48 @@
+package appmessage
+
+// MempoolEntryByAddress represents MempoolEntries associated with some address
+type MempoolEntryByAddress struct {
+ Address string
+ Receiving []*MempoolEntry
+ Sending []*MempoolEntry
+}
+
+// GetMempoolEntriesByAddressesRequestMessage is an appmessage corresponding to
+// its respective RPC message
+type GetMempoolEntriesByAddressesRequestMessage struct {
+ baseMessage
+ Addresses []string
+}
+
+// Command returns the protocol command string for the message
+func (msg *GetMempoolEntriesByAddressesRequestMessage) Command() MessageCommand {
+ return CmdGetMempoolEntriesByAddressesRequestMessage
+}
+
+// NewGetMempoolEntriesByAddressesRequestMessage returns a instance of the message
+func NewGetMempoolEntriesByAddressesRequestMessage(addresses []string) *GetMempoolEntriesByAddressesRequestMessage {
+ return &GetMempoolEntriesByAddressesRequestMessage{
+ Addresses: addresses,
+ }
+}
+
+// GetMempoolEntriesByAddressesResponseMessage is an appmessage corresponding to
+// its respective RPC message
+type GetMempoolEntriesByAddressesResponseMessage struct {
+ baseMessage
+ Entries []*MempoolEntryByAddress
+
+ Error *RPCError
+}
+
+// Command returns the protocol command string for the message
+func (msg *GetMempoolEntriesByAddressesResponseMessage) Command() MessageCommand {
+ return CmdGetMempoolEntriesByAddressesResponseMessage
+}
+
+// NewGetMempoolEntriesByAddressesResponseMessage returns a instance of the message
+func NewGetMempoolEntriesByAddressesResponseMessage(entries []*MempoolEntryByAddress) *GetMempoolEntriesByAddressesResponseMessage {
+ return &GetMempoolEntriesByAddressesResponseMessage{
+ Entries: entries,
+ }
+}
diff --git a/app/rpc/rpc.go b/app/rpc/rpc.go
index 4aba798161..e0182625e9 100644
--- a/app/rpc/rpc.go
+++ b/app/rpc/rpc.go
@@ -49,6 +49,7 @@ var handlers = map[appmessage.MessageCommand]handler{
appmessage.CmdEstimateNetworkHashesPerSecondRequestMessage: rpchandlers.HandleEstimateNetworkHashesPerSecond,
appmessage.CmdNotifyVirtualDaaScoreChangedRequestMessage: rpchandlers.HandleNotifyVirtualDaaScoreChanged,
appmessage.CmdNotifyNewBlockTemplateRequestMessage: rpchandlers.HandleNotifyNewBlockTemplate,
+ appmessage.CmdGetMempoolEntriesByAddressesRequestMessage: rpchandlers.HandleGetMempoolEntriesByAddresses,
}
func (m *Manager) routerInitializer(router *router.Router, netConnection *netadapter.NetConnection) {
diff --git a/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go b/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go
new file mode 100644
index 0000000000..00a4b6659c
--- /dev/null
+++ b/app/rpc/rpchandlers/get_mempool_entries_by_addresses.go
@@ -0,0 +1,90 @@
+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"
+)
+
+// HandleGetMempoolEntriesByAddresses handles the respectively named RPC command
+func HandleGetMempoolEntriesByAddresses(context *rpccontext.Context, _ *router.Router, request appmessage.Message) (appmessage.Message, error) {
+
+ transactions := context.Domain.MiningManager().AllTransactions()
+ getMempoolEntriesByAddressesRequest := request.(*appmessage.GetMempoolEntriesByAddressesRequestMessage)
+ mempoolEntriesByAddresses := make([]*appmessage.MempoolEntryByAddress, 0)
+
+ for _, addressString := range getMempoolEntriesByAddressesRequest.Addresses {
+
+ _, err := util.DecodeAddress(addressString, context.Config.ActiveNetParams.Prefix)
+ if err != nil {
+ errorMessage := &appmessage.GetUTXOsByAddressesResponseMessage{}
+ errorMessage.Error = appmessage.RPCErrorf("Could not decode address '%s': %s", addressString, err)
+ return errorMessage, nil
+ }
+
+ sending := make([]*appmessage.MempoolEntry, 0)
+ receiving := make([]*appmessage.MempoolEntry, 0)
+
+ for _, transaction := range transactions {
+
+ for _, input := range transaction.Inputs {
+ _, transactionSendingAddress, err := txscript.ExtractScriptPubKeyAddress(
+ input.UTXOEntry.ScriptPublicKey(),
+ context.Config.ActiveNetParams)
+ if err != nil {
+ return nil, err
+ }
+ if addressString == transactionSendingAddress.String() {
+ rpcTransaction := appmessage.DomainTransactionToRPCTransaction(transaction)
+ sending = append(
+ sending,
+ &appmessage.MempoolEntry{
+ Fee: transaction.Fee,
+ Transaction: rpcTransaction,
+ },
+ )
+ break //one input is enough
+ }
+ }
+
+ for _, output := range transaction.Outputs {
+ _, transactionReceivingAddress, err := txscript.ExtractScriptPubKeyAddress(
+ output.ScriptPublicKey,
+ context.Config.ActiveNetParams,
+ )
+ if err != nil {
+ return nil, err
+ }
+ if addressString == transactionReceivingAddress.String() {
+ rpcTransaction := appmessage.DomainTransactionToRPCTransaction(transaction)
+ receiving = append(
+ receiving,
+ &appmessage.MempoolEntry{
+ Fee: transaction.Fee,
+ Transaction: rpcTransaction,
+ },
+ )
+ break //one output is enough
+ }
+ }
+
+ //Only append mempoolEntriesByAddress, if at least 1 mempoolEntry for the address is found.
+ //This mimics the behaviour of GetUtxosByAddresses RPC call.
+ if len(sending) > 0 || len(receiving) > 0 {
+ mempoolEntriesByAddresses = append(
+ mempoolEntriesByAddresses,
+ &appmessage.MempoolEntryByAddress{
+ Address: addressString,
+ Sending: sending,
+ Receiving: receiving,
+ },
+ )
+ }
+
+ }
+ }
+
+ return appmessage.NewGetMempoolEntriesByAddressesResponseMessage(mempoolEntriesByAddresses), nil
+}
diff --git a/cmd/kaspactl/commands.go b/cmd/kaspactl/commands.go
index 1bfae145e6..b75655b92a 100644
--- a/cmd/kaspactl/commands.go
+++ b/cmd/kaspactl/commands.go
@@ -31,6 +31,8 @@ var commandTypes = []reflect.Type{
reflect.TypeOf(protowire.KaspadMessage_GetMempoolEntryRequest{}),
reflect.TypeOf(protowire.KaspadMessage_GetMempoolEntriesRequest{}),
+ reflect.TypeOf(protowire.KaspadMessage_GetMempoolEntriesByAddressesRequest{}),
+
reflect.TypeOf(protowire.KaspadMessage_SubmitTransactionRequest{}),
reflect.TypeOf(protowire.KaspadMessage_GetUtxosByAddressesRequest{}),
diff --git a/go.mod b/go.mod
index c591fc2832..66209abddf 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@ require (
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a
golang.org/x/term v0.0.0-20210503060354-a79de5458b56
google.golang.org/grpc v1.38.0
- google.golang.org/protobuf v1.26.0
+ google.golang.org/protobuf v1.27.1
)
require (
diff --git a/go.sum b/go.sum
index 29d055384e..fe711404ce 100644
--- a/go.sum
+++ b/go.sum
@@ -151,6 +151,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0=
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0 h1:TLkBREm4nIsEcexnCjgQd5GQWaHcqMzwQV0TX9pq8S0=
+google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0/go.mod h1:DNq5QpG7LJqD2AamLZ7zvKE0DEpVl2BSEVjFycAAjRY=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -163,6 +165,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go
index 588cdb24ff..0f65f432d4 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.0
+// protoc-gen-go v1.26.0
// protoc v3.17.2
// source: messages.proto
@@ -152,6 +152,8 @@ type KaspadMessage struct {
// *KaspadMessage_NotifyNewBlockTemplateRequest
// *KaspadMessage_NotifyNewBlockTemplateResponse
// *KaspadMessage_NewBlockTemplateNotification
+ // *KaspadMessage_GetMempoolEntriesByAddressesRequest
+ // *KaspadMessage_GetMempoolEntriesByAddressesResponse
Payload isKaspadMessage_Payload `protobuf_oneof:"payload"`
}
@@ -1076,6 +1078,20 @@ func (x *KaspadMessage) GetNewBlockTemplateNotification() *NewBlockTemplateNotif
return nil
}
+func (x *KaspadMessage) GetGetMempoolEntriesByAddressesRequest() *GetMempoolEntriesByAddressesRequestMessage {
+ if x, ok := x.GetPayload().(*KaspadMessage_GetMempoolEntriesByAddressesRequest); ok {
+ return x.GetMempoolEntriesByAddressesRequest
+ }
+ return nil
+}
+
+func (x *KaspadMessage) GetGetMempoolEntriesByAddressesResponse() *GetMempoolEntriesByAddressesResponseMessage {
+ if x, ok := x.GetPayload().(*KaspadMessage_GetMempoolEntriesByAddressesResponse); ok {
+ return x.GetMempoolEntriesByAddressesResponse
+ }
+ return nil
+}
+
type isKaspadMessage_Payload interface {
isKaspadMessage_Payload()
}
@@ -1584,6 +1600,14 @@ type KaspadMessage_NewBlockTemplateNotification struct {
NewBlockTemplateNotification *NewBlockTemplateNotificationMessage `protobuf:"bytes,1083,opt,name=newBlockTemplateNotification,proto3,oneof"`
}
+type KaspadMessage_GetMempoolEntriesByAddressesRequest struct {
+ GetMempoolEntriesByAddressesRequest *GetMempoolEntriesByAddressesRequestMessage `protobuf:"bytes,1084,opt,name=getMempoolEntriesByAddressesRequest,proto3,oneof"`
+}
+
+type KaspadMessage_GetMempoolEntriesByAddressesResponse struct {
+ GetMempoolEntriesByAddressesResponse *GetMempoolEntriesByAddressesResponseMessage `protobuf:"bytes,1085,opt,name=getMempoolEntriesByAddressesResponse,proto3,oneof"`
+}
+
func (*KaspadMessage_Addresses) isKaspadMessage_Payload() {}
func (*KaspadMessage_Block) isKaspadMessage_Payload() {}
@@ -1836,13 +1860,17 @@ func (*KaspadMessage_NotifyNewBlockTemplateResponse) isKaspadMessage_Payload() {
func (*KaspadMessage_NewBlockTemplateNotification) isKaspadMessage_Payload() {}
+func (*KaspadMessage_GetMempoolEntriesByAddressesRequest) isKaspadMessage_Payload() {}
+
+func (*KaspadMessage_GetMempoolEntriesByAddressesResponse) 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, 0xe1, 0x69, 0x0a, 0x0d, 0x4b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73,
+ 0x6f, 0x22, 0xfe, 0x6b, 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,
@@ -2687,21 +2715,39 @@ var file_messages_proto_rawDesc = []byte{
0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x6e, 0x65,
0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 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, 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,
+ 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8a, 0x01, 0x0a, 0x23, 0x67,
+ 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73,
+ 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x18, 0xbc, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c,
+ 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
+ 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x48, 0x00, 0x52, 0x23, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e,
+ 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x24, 0x67, 0x65, 0x74, 0x4d,
+ 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x41,
+ 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x18, 0xbd, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77,
+ 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e,
+ 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48,
+ 0x00, 0x52, 0x24, 0x67, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74,
+ 0x72, 0x69, 0x65, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 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, 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 (
@@ -2844,6 +2890,8 @@ var file_messages_proto_goTypes = []interface{}{
(*NotifyNewBlockTemplateRequestMessage)(nil), // 123: protowire.NotifyNewBlockTemplateRequestMessage
(*NotifyNewBlockTemplateResponseMessage)(nil), // 124: protowire.NotifyNewBlockTemplateResponseMessage
(*NewBlockTemplateNotificationMessage)(nil), // 125: protowire.NewBlockTemplateNotificationMessage
+ (*GetMempoolEntriesByAddressesRequestMessage)(nil), // 126: protowire.GetMempoolEntriesByAddressesRequestMessage
+ (*GetMempoolEntriesByAddressesResponseMessage)(nil), // 127: protowire.GetMempoolEntriesByAddressesResponseMessage
}
var file_messages_proto_depIdxs = []int32{
1, // 0: protowire.KaspadMessage.addresses:type_name -> protowire.AddressesMessage
@@ -2972,15 +3020,17 @@ var file_messages_proto_depIdxs = []int32{
123, // 123: protowire.KaspadMessage.notifyNewBlockTemplateRequest:type_name -> protowire.NotifyNewBlockTemplateRequestMessage
124, // 124: protowire.KaspadMessage.notifyNewBlockTemplateResponse:type_name -> protowire.NotifyNewBlockTemplateResponseMessage
125, // 125: protowire.KaspadMessage.newBlockTemplateNotification:type_name -> protowire.NewBlockTemplateNotificationMessage
- 0, // 126: protowire.P2P.MessageStream:input_type -> protowire.KaspadMessage
- 0, // 127: protowire.RPC.MessageStream:input_type -> protowire.KaspadMessage
- 0, // 128: protowire.P2P.MessageStream:output_type -> protowire.KaspadMessage
- 0, // 129: protowire.RPC.MessageStream:output_type -> protowire.KaspadMessage
- 128, // [128:130] is the sub-list for method output_type
- 126, // [126:128] is the sub-list for method input_type
- 126, // [126:126] is the sub-list for extension type_name
- 126, // [126:126] is the sub-list for extension extendee
- 0, // [0:126] is the sub-list for field type_name
+ 126, // 126: protowire.KaspadMessage.getMempoolEntriesByAddressesRequest:type_name -> protowire.GetMempoolEntriesByAddressesRequestMessage
+ 127, // 127: protowire.KaspadMessage.getMempoolEntriesByAddressesResponse:type_name -> protowire.GetMempoolEntriesByAddressesResponseMessage
+ 0, // 128: protowire.P2P.MessageStream:input_type -> protowire.KaspadMessage
+ 0, // 129: protowire.RPC.MessageStream:input_type -> protowire.KaspadMessage
+ 0, // 130: protowire.P2P.MessageStream:output_type -> protowire.KaspadMessage
+ 0, // 131: protowire.RPC.MessageStream:output_type -> protowire.KaspadMessage
+ 130, // [130:132] is the sub-list for method output_type
+ 128, // [128:130] is the sub-list for method input_type
+ 128, // [128:128] is the sub-list for extension type_name
+ 128, // [128:128] is the sub-list for extension extendee
+ 0, // [0:128] is the sub-list for field type_name
}
func init() { file_messages_proto_init() }
@@ -3131,6 +3181,8 @@ func file_messages_proto_init() {
(*KaspadMessage_NotifyNewBlockTemplateRequest)(nil),
(*KaspadMessage_NotifyNewBlockTemplateResponse)(nil),
(*KaspadMessage_NewBlockTemplateNotification)(nil),
+ (*KaspadMessage_GetMempoolEntriesByAddressesRequest)(nil),
+ (*KaspadMessage_GetMempoolEntriesByAddressesResponse)(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 8d62e83a47..63e06c2955 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto
@@ -135,6 +135,8 @@ message KaspadMessage {
NotifyNewBlockTemplateRequestMessage notifyNewBlockTemplateRequest = 1081;
NotifyNewBlockTemplateResponseMessage notifyNewBlockTemplateResponse = 1082;
NewBlockTemplateNotificationMessage newBlockTemplateNotification = 1083;
+ GetMempoolEntriesByAddressesRequestMessage getMempoolEntriesByAddressesRequest = 1084;
+ GetMempoolEntriesByAddressesResponseMessage getMempoolEntriesByAddressesResponse = 1085;
}
}
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go
index 334ebda4c3..8e8d889cbd 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.0
+// protoc-gen-go v1.26.0
// protoc v3.17.2
// source: p2p.proto
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md
index facddc3387..d314ee4ca9 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.md
@@ -3,109 +3,116 @@
## Table of Contents
-- [rpc.proto](#rpc.proto)
- - [RPCError](#protowire.RPCError)
- - [RpcBlock](#protowire.RpcBlock)
- - [RpcBlockHeader](#protowire.RpcBlockHeader)
- - [RpcBlockLevelParents](#protowire.RpcBlockLevelParents)
- - [RpcBlockVerboseData](#protowire.RpcBlockVerboseData)
- - [RpcTransaction](#protowire.RpcTransaction)
- - [RpcTransactionInput](#protowire.RpcTransactionInput)
- - [RpcScriptPublicKey](#protowire.RpcScriptPublicKey)
- - [RpcTransactionOutput](#protowire.RpcTransactionOutput)
- - [RpcOutpoint](#protowire.RpcOutpoint)
- - [RpcUtxoEntry](#protowire.RpcUtxoEntry)
- - [RpcTransactionVerboseData](#protowire.RpcTransactionVerboseData)
- - [RpcTransactionInputVerboseData](#protowire.RpcTransactionInputVerboseData)
- - [RpcTransactionOutputVerboseData](#protowire.RpcTransactionOutputVerboseData)
- - [GetCurrentNetworkRequestMessage](#protowire.GetCurrentNetworkRequestMessage)
- - [GetCurrentNetworkResponseMessage](#protowire.GetCurrentNetworkResponseMessage)
- - [SubmitBlockRequestMessage](#protowire.SubmitBlockRequestMessage)
- - [SubmitBlockResponseMessage](#protowire.SubmitBlockResponseMessage)
- - [GetBlockTemplateRequestMessage](#protowire.GetBlockTemplateRequestMessage)
- - [GetBlockTemplateResponseMessage](#protowire.GetBlockTemplateResponseMessage)
- - [NotifyBlockAddedRequestMessage](#protowire.NotifyBlockAddedRequestMessage)
- - [NotifyBlockAddedResponseMessage](#protowire.NotifyBlockAddedResponseMessage)
- - [BlockAddedNotificationMessage](#protowire.BlockAddedNotificationMessage)
- - [GetPeerAddressesRequestMessage](#protowire.GetPeerAddressesRequestMessage)
- - [GetPeerAddressesResponseMessage](#protowire.GetPeerAddressesResponseMessage)
- - [GetPeerAddressesKnownAddressMessage](#protowire.GetPeerAddressesKnownAddressMessage)
- - [GetSelectedTipHashRequestMessage](#protowire.GetSelectedTipHashRequestMessage)
- - [GetSelectedTipHashResponseMessage](#protowire.GetSelectedTipHashResponseMessage)
- - [GetMempoolEntryRequestMessage](#protowire.GetMempoolEntryRequestMessage)
- - [GetMempoolEntryResponseMessage](#protowire.GetMempoolEntryResponseMessage)
- - [GetMempoolEntriesRequestMessage](#protowire.GetMempoolEntriesRequestMessage)
- - [GetMempoolEntriesResponseMessage](#protowire.GetMempoolEntriesResponseMessage)
- - [MempoolEntry](#protowire.MempoolEntry)
- - [GetConnectedPeerInfoRequestMessage](#protowire.GetConnectedPeerInfoRequestMessage)
- - [GetConnectedPeerInfoResponseMessage](#protowire.GetConnectedPeerInfoResponseMessage)
- - [GetConnectedPeerInfoMessage](#protowire.GetConnectedPeerInfoMessage)
- - [AddPeerRequestMessage](#protowire.AddPeerRequestMessage)
- - [AddPeerResponseMessage](#protowire.AddPeerResponseMessage)
- - [SubmitTransactionRequestMessage](#protowire.SubmitTransactionRequestMessage)
- - [SubmitTransactionResponseMessage](#protowire.SubmitTransactionResponseMessage)
- - [NotifyVirtualSelectedParentChainChangedRequestMessage](#protowire.NotifyVirtualSelectedParentChainChangedRequestMessage)
- - [NotifyVirtualSelectedParentChainChangedResponseMessage](#protowire.NotifyVirtualSelectedParentChainChangedResponseMessage)
- - [VirtualSelectedParentChainChangedNotificationMessage](#protowire.VirtualSelectedParentChainChangedNotificationMessage)
- - [GetBlockRequestMessage](#protowire.GetBlockRequestMessage)
- - [GetBlockResponseMessage](#protowire.GetBlockResponseMessage)
- - [GetSubnetworkRequestMessage](#protowire.GetSubnetworkRequestMessage)
- - [GetSubnetworkResponseMessage](#protowire.GetSubnetworkResponseMessage)
- - [GetVirtualSelectedParentChainFromBlockRequestMessage](#protowire.GetVirtualSelectedParentChainFromBlockRequestMessage)
- - [GetVirtualSelectedParentChainFromBlockResponseMessage](#protowire.GetVirtualSelectedParentChainFromBlockResponseMessage)
- - [GetBlocksRequestMessage](#protowire.GetBlocksRequestMessage)
- - [GetBlocksResponseMessage](#protowire.GetBlocksResponseMessage)
- - [GetBlockCountRequestMessage](#protowire.GetBlockCountRequestMessage)
- - [GetBlockCountResponseMessage](#protowire.GetBlockCountResponseMessage)
- - [GetBlockDagInfoRequestMessage](#protowire.GetBlockDagInfoRequestMessage)
- - [GetBlockDagInfoResponseMessage](#protowire.GetBlockDagInfoResponseMessage)
- - [ResolveFinalityConflictRequestMessage](#protowire.ResolveFinalityConflictRequestMessage)
- - [ResolveFinalityConflictResponseMessage](#protowire.ResolveFinalityConflictResponseMessage)
- - [NotifyFinalityConflictsRequestMessage](#protowire.NotifyFinalityConflictsRequestMessage)
- - [NotifyFinalityConflictsResponseMessage](#protowire.NotifyFinalityConflictsResponseMessage)
- - [FinalityConflictNotificationMessage](#protowire.FinalityConflictNotificationMessage)
- - [FinalityConflictResolvedNotificationMessage](#protowire.FinalityConflictResolvedNotificationMessage)
- - [ShutDownRequestMessage](#protowire.ShutDownRequestMessage)
- - [ShutDownResponseMessage](#protowire.ShutDownResponseMessage)
- - [GetHeadersRequestMessage](#protowire.GetHeadersRequestMessage)
- - [GetHeadersResponseMessage](#protowire.GetHeadersResponseMessage)
- - [NotifyUtxosChangedRequestMessage](#protowire.NotifyUtxosChangedRequestMessage)
- - [NotifyUtxosChangedResponseMessage](#protowire.NotifyUtxosChangedResponseMessage)
- - [UtxosChangedNotificationMessage](#protowire.UtxosChangedNotificationMessage)
- - [UtxosByAddressesEntry](#protowire.UtxosByAddressesEntry)
- - [StopNotifyingUtxosChangedRequestMessage](#protowire.StopNotifyingUtxosChangedRequestMessage)
- - [StopNotifyingUtxosChangedResponseMessage](#protowire.StopNotifyingUtxosChangedResponseMessage)
- - [GetUtxosByAddressesRequestMessage](#protowire.GetUtxosByAddressesRequestMessage)
- - [GetUtxosByAddressesResponseMessage](#protowire.GetUtxosByAddressesResponseMessage)
- - [GetBalanceByAddressRequestMessage](#protowire.GetBalanceByAddressRequestMessage)
- - [GetBalanceByAddressResponseMessage](#protowire.GetBalanceByAddressResponseMessage)
- - [GetBalancesByAddressesRequestMessage](#protowire.GetBalancesByAddressesRequestMessage)
- - [BalancesByAddressEntry](#protowire.BalancesByAddressEntry)
- - [GetBalancesByAddressesResponseMessage](#protowire.GetBalancesByAddressesResponseMessage)
- - [GetVirtualSelectedParentBlueScoreRequestMessage](#protowire.GetVirtualSelectedParentBlueScoreRequestMessage)
- - [GetVirtualSelectedParentBlueScoreResponseMessage](#protowire.GetVirtualSelectedParentBlueScoreResponseMessage)
- - [NotifyVirtualSelectedParentBlueScoreChangedRequestMessage](#protowire.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage)
- - [NotifyVirtualSelectedParentBlueScoreChangedResponseMessage](#protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage)
- - [VirtualSelectedParentBlueScoreChangedNotificationMessage](#protowire.VirtualSelectedParentBlueScoreChangedNotificationMessage)
- - [NotifyVirtualDaaScoreChangedRequestMessage](#protowire.NotifyVirtualDaaScoreChangedRequestMessage)
- - [NotifyVirtualDaaScoreChangedResponseMessage](#protowire.NotifyVirtualDaaScoreChangedResponseMessage)
- - [VirtualDaaScoreChangedNotificationMessage](#protowire.VirtualDaaScoreChangedNotificationMessage)
- - [NotifyPruningPointUTXOSetOverrideRequestMessage](#protowire.NotifyPruningPointUTXOSetOverrideRequestMessage)
- - [NotifyPruningPointUTXOSetOverrideResponseMessage](#protowire.NotifyPruningPointUTXOSetOverrideResponseMessage)
- - [PruningPointUTXOSetOverrideNotificationMessage](#protowire.PruningPointUTXOSetOverrideNotificationMessage)
- - [StopNotifyingPruningPointUTXOSetOverrideRequestMessage](#protowire.StopNotifyingPruningPointUTXOSetOverrideRequestMessage)
- - [StopNotifyingPruningPointUTXOSetOverrideResponseMessage](#protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage)
- - [BanRequestMessage](#protowire.BanRequestMessage)
- - [BanResponseMessage](#protowire.BanResponseMessage)
- - [UnbanRequestMessage](#protowire.UnbanRequestMessage)
- - [UnbanResponseMessage](#protowire.UnbanResponseMessage)
- - [GetInfoRequestMessage](#protowire.GetInfoRequestMessage)
- - [GetInfoResponseMessage](#protowire.GetInfoResponseMessage)
- - [EstimateNetworkHashesPerSecondRequestMessage](#protowire.EstimateNetworkHashesPerSecondRequestMessage)
- - [EstimateNetworkHashesPerSecondResponseMessage](#protowire.EstimateNetworkHashesPerSecondResponseMessage)
- - [NotifyNewBlockTemplateRequestMessage](#protowire.NotifyNewBlockTemplateRequestMessage)
- - [NotifyNewBlockTemplateResponseMessage](#protowire.NotifyNewBlockTemplateResponseMessage)
- - [NewBlockTemplateNotificationMessage](#protowire.NewBlockTemplateNotificationMessage)
+- [Protocol Documentation](#protocol-documentation)
+ - [Table of Contents](#table-of-contents)
+ - [rpc.proto](#rpcproto)
+ - [RPCError](#rpcerror)
+ - [RpcBlock](#rpcblock)
+ - [RpcBlockHeader](#rpcblockheader)
+ - [RpcBlockLevelParents](#rpcblocklevelparents)
+ - [RpcBlockVerboseData](#rpcblockverbosedata)
+ - [RpcTransaction](#rpctransaction)
+ - [RpcTransactionInput](#rpctransactioninput)
+ - [RpcScriptPublicKey](#rpcscriptpublickey)
+ - [RpcTransactionOutput](#rpctransactionoutput)
+ - [RpcOutpoint](#rpcoutpoint)
+ - [RpcUtxoEntry](#rpcutxoentry)
+ - [RpcTransactionVerboseData](#rpctransactionverbosedata)
+ - [RpcTransactionInputVerboseData](#rpctransactioninputverbosedata)
+ - [RpcTransactionOutputVerboseData](#rpctransactionoutputverbosedata)
+ - [GetCurrentNetworkRequestMessage](#getcurrentnetworkrequestmessage)
+ - [GetCurrentNetworkResponseMessage](#getcurrentnetworkresponsemessage)
+ - [SubmitBlockRequestMessage](#submitblockrequestmessage)
+ - [SubmitBlockResponseMessage](#submitblockresponsemessage)
+ - [GetBlockTemplateRequestMessage](#getblocktemplaterequestmessage)
+ - [GetBlockTemplateResponseMessage](#getblocktemplateresponsemessage)
+ - [NotifyBlockAddedRequestMessage](#notifyblockaddedrequestmessage)
+ - [NotifyBlockAddedResponseMessage](#notifyblockaddedresponsemessage)
+ - [BlockAddedNotificationMessage](#blockaddednotificationmessage)
+ - [GetPeerAddressesRequestMessage](#getpeeraddressesrequestmessage)
+ - [GetPeerAddressesResponseMessage](#getpeeraddressesresponsemessage)
+ - [GetPeerAddressesKnownAddressMessage](#getpeeraddressesknownaddressmessage)
+ - [GetSelectedTipHashRequestMessage](#getselectedtiphashrequestmessage)
+ - [GetSelectedTipHashResponseMessage](#getselectedtiphashresponsemessage)
+ - [GetMempoolEntryRequestMessage](#getmempoolentryrequestmessage)
+ - [GetMempoolEntryResponseMessage](#getmempoolentryresponsemessage)
+ - [GetMempoolEntriesRequestMessage](#getmempoolentriesrequestmessage)
+ - [GetMempoolEntriesResponseMessage](#getmempoolentriesresponsemessage)
+ - [MempoolEntry](#mempoolentry)
+ - [GetConnectedPeerInfoRequestMessage](#getconnectedpeerinforequestmessage)
+ - [GetConnectedPeerInfoResponseMessage](#getconnectedpeerinforesponsemessage)
+ - [GetConnectedPeerInfoMessage](#getconnectedpeerinfomessage)
+ - [AddPeerRequestMessage](#addpeerrequestmessage)
+ - [AddPeerResponseMessage](#addpeerresponsemessage)
+ - [SubmitTransactionRequestMessage](#submittransactionrequestmessage)
+ - [SubmitTransactionResponseMessage](#submittransactionresponsemessage)
+ - [NotifyVirtualSelectedParentChainChangedRequestMessage](#notifyvirtualselectedparentchainchangedrequestmessage)
+ - [NotifyVirtualSelectedParentChainChangedResponseMessage](#notifyvirtualselectedparentchainchangedresponsemessage)
+ - [VirtualSelectedParentChainChangedNotificationMessage](#virtualselectedparentchainchangednotificationmessage)
+ - [GetBlockRequestMessage](#getblockrequestmessage)
+ - [GetBlockResponseMessage](#getblockresponsemessage)
+ - [GetSubnetworkRequestMessage](#getsubnetworkrequestmessage)
+ - [GetSubnetworkResponseMessage](#getsubnetworkresponsemessage)
+ - [GetVirtualSelectedParentChainFromBlockRequestMessage](#getvirtualselectedparentchainfromblockrequestmessage)
+ - [GetVirtualSelectedParentChainFromBlockResponseMessage](#getvirtualselectedparentchainfromblockresponsemessage)
+ - [GetBlocksRequestMessage](#getblocksrequestmessage)
+ - [GetBlocksResponseMessage](#getblocksresponsemessage)
+ - [GetBlockCountRequestMessage](#getblockcountrequestmessage)
+ - [GetBlockCountResponseMessage](#getblockcountresponsemessage)
+ - [GetBlockDagInfoRequestMessage](#getblockdaginforequestmessage)
+ - [GetBlockDagInfoResponseMessage](#getblockdaginforesponsemessage)
+ - [ResolveFinalityConflictRequestMessage](#resolvefinalityconflictrequestmessage)
+ - [ResolveFinalityConflictResponseMessage](#resolvefinalityconflictresponsemessage)
+ - [NotifyFinalityConflictsRequestMessage](#notifyfinalityconflictsrequestmessage)
+ - [NotifyFinalityConflictsResponseMessage](#notifyfinalityconflictsresponsemessage)
+ - [FinalityConflictNotificationMessage](#finalityconflictnotificationmessage)
+ - [FinalityConflictResolvedNotificationMessage](#finalityconflictresolvednotificationmessage)
+ - [ShutDownRequestMessage](#shutdownrequestmessage)
+ - [ShutDownResponseMessage](#shutdownresponsemessage)
+ - [GetHeadersRequestMessage](#getheadersrequestmessage)
+ - [GetHeadersResponseMessage](#getheadersresponsemessage)
+ - [NotifyUtxosChangedRequestMessage](#notifyutxoschangedrequestmessage)
+ - [NotifyUtxosChangedResponseMessage](#notifyutxoschangedresponsemessage)
+ - [UtxosChangedNotificationMessage](#utxoschangednotificationmessage)
+ - [UtxosByAddressesEntry](#utxosbyaddressesentry)
+ - [StopNotifyingUtxosChangedRequestMessage](#stopnotifyingutxoschangedrequestmessage)
+ - [StopNotifyingUtxosChangedResponseMessage](#stopnotifyingutxoschangedresponsemessage)
+ - [GetUtxosByAddressesRequestMessage](#getutxosbyaddressesrequestmessage)
+ - [GetUtxosByAddressesResponseMessage](#getutxosbyaddressesresponsemessage)
+ - [GetBalanceByAddressRequestMessage](#getbalancebyaddressrequestmessage)
+ - [GetBalanceByAddressResponseMessage](#getbalancebyaddressresponsemessage)
+ - [GetBalancesByAddressesRequestMessage](#getbalancesbyaddressesrequestmessage)
+ - [BalancesByAddressEntry](#balancesbyaddressentry)
+ - [GetBalancesByAddressesResponseMessage](#getbalancesbyaddressesresponsemessage)
+ - [GetVirtualSelectedParentBlueScoreRequestMessage](#getvirtualselectedparentbluescorerequestmessage)
+ - [GetVirtualSelectedParentBlueScoreResponseMessage](#getvirtualselectedparentbluescoreresponsemessage)
+ - [NotifyVirtualSelectedParentBlueScoreChangedRequestMessage](#notifyvirtualselectedparentbluescorechangedrequestmessage)
+ - [NotifyVirtualSelectedParentBlueScoreChangedResponseMessage](#notifyvirtualselectedparentbluescorechangedresponsemessage)
+ - [VirtualSelectedParentBlueScoreChangedNotificationMessage](#virtualselectedparentbluescorechangednotificationmessage)
+ - [NotifyVirtualDaaScoreChangedRequestMessage](#notifyvirtualdaascorechangedrequestmessage)
+ - [NotifyVirtualDaaScoreChangedResponseMessage](#notifyvirtualdaascorechangedresponsemessage)
+ - [VirtualDaaScoreChangedNotificationMessage](#virtualdaascorechangednotificationmessage)
+ - [NotifyPruningPointUTXOSetOverrideRequestMessage](#notifypruningpointutxosetoverriderequestmessage)
+ - [NotifyPruningPointUTXOSetOverrideResponseMessage](#notifypruningpointutxosetoverrideresponsemessage)
+ - [PruningPointUTXOSetOverrideNotificationMessage](#pruningpointutxosetoverridenotificationmessage)
+ - [StopNotifyingPruningPointUTXOSetOverrideRequestMessage](#stopnotifyingpruningpointutxosetoverriderequestmessage)
+ - [StopNotifyingPruningPointUTXOSetOverrideResponseMessage](#stopnotifyingpruningpointutxosetoverrideresponsemessage)
+ - [BanRequestMessage](#banrequestmessage)
+ - [BanResponseMessage](#banresponsemessage)
+ - [UnbanRequestMessage](#unbanrequestmessage)
+ - [UnbanResponseMessage](#unbanresponsemessage)
+ - [GetInfoRequestMessage](#getinforequestmessage)
+ - [GetInfoResponseMessage](#getinforesponsemessage)
+ - [EstimateNetworkHashesPerSecondRequestMessage](#estimatenetworkhashespersecondrequestmessage)
+ - [EstimateNetworkHashesPerSecondResponseMessage](#estimatenetworkhashespersecondresponsemessage)
+ - [NotifyNewBlockTemplateRequestMessage](#notifynewblocktemplaterequestmessage)
+ - [NotifyNewBlockTemplateResponseMessage](#notifynewblocktemplateresponsemessage)
+ - [NewBlockTemplateNotificationMessage](#newblocktemplatenotificationmessage)
+ - [MempoolEntryByAddress](#mempoolentrybyaddress)
+ - [GetMempoolEntriesByAddressesRequestMessage](#getmempoolentriesbyaddressesrequestmessage)
+ - [GetMempoolEntriesByAddressesResponseMessage](#getmempoolentriesbyaddressesresponsemessage)
+ - [SubmitBlockResponseMessage.RejectReason](#submitblockresponsemessagerejectreason)
+ - [Scalar Value Types](#scalar-value-types)
- [SubmitBlockResponseMessage.RejectReason](#protowire.SubmitBlockResponseMessage.RejectReason)
@@ -1739,6 +1746,56 @@ See NotifyNewBlockTemplateRequestMessage
+
+
+
+### MempoolEntryByAddress
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| address | [string](#string) | | |
+| sending | [MempoolEntry](#protowire.MempoolEntry) | repeated | |
+| receiving | [MempoolEntry](#protowire.MempoolEntry) | repeated | |
+
+
+
+
+
+
+
+
+### GetMempoolEntriesByAddressesRequestMessage
+GetMempoolEntriesByAddressesRequestMessage requests all Sending and Receiving Txs for the given kaspad addresses
+
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| addresses | [string](#string) | repeated | |
+
+
+
+
+
+
+
+
+### GetMempoolEntriesByAddressesResponseMessage
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| entries | [MempoolEntryByAddress](#protowire.MempoolEntryByAddress) | repeated | |
+| error | [RPCError](#protowire.RPCError) | | |
+
+
+
+
+
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go
index 36763ae5e9..531fc08ebd 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go
@@ -10,7 +10,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.28.0
+// protoc-gen-go v1.26.0
// protoc v3.17.2
// source: rpc.proto
@@ -5681,6 +5681,171 @@ func (*NewBlockTemplateNotificationMessage) Descriptor() ([]byte, []int) {
return file_rpc_proto_rawDescGZIP(), []int{101}
}
+type MempoolEntryByAddress struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
+ Sending []*MempoolEntry `protobuf:"bytes,2,rep,name=sending,proto3" json:"sending,omitempty"`
+ Receiving []*MempoolEntry `protobuf:"bytes,3,rep,name=receiving,proto3" json:"receiving,omitempty"`
+}
+
+func (x *MempoolEntryByAddress) Reset() {
+ *x = MempoolEntryByAddress{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_rpc_proto_msgTypes[102]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *MempoolEntryByAddress) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MempoolEntryByAddress) ProtoMessage() {}
+
+func (x *MempoolEntryByAddress) ProtoReflect() protoreflect.Message {
+ mi := &file_rpc_proto_msgTypes[102]
+ 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 MempoolEntryByAddress.ProtoReflect.Descriptor instead.
+func (*MempoolEntryByAddress) Descriptor() ([]byte, []int) {
+ return file_rpc_proto_rawDescGZIP(), []int{102}
+}
+
+func (x *MempoolEntryByAddress) GetAddress() string {
+ if x != nil {
+ return x.Address
+ }
+ return ""
+}
+
+func (x *MempoolEntryByAddress) GetSending() []*MempoolEntry {
+ if x != nil {
+ return x.Sending
+ }
+ return nil
+}
+
+func (x *MempoolEntryByAddress) GetReceiving() []*MempoolEntry {
+ if x != nil {
+ return x.Receiving
+ }
+ return nil
+}
+
+type GetMempoolEntriesByAddressesRequestMessage struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"`
+}
+
+func (x *GetMempoolEntriesByAddressesRequestMessage) Reset() {
+ *x = GetMempoolEntriesByAddressesRequestMessage{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_rpc_proto_msgTypes[103]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetMempoolEntriesByAddressesRequestMessage) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetMempoolEntriesByAddressesRequestMessage) ProtoMessage() {}
+
+func (x *GetMempoolEntriesByAddressesRequestMessage) ProtoReflect() protoreflect.Message {
+ mi := &file_rpc_proto_msgTypes[103]
+ 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 GetMempoolEntriesByAddressesRequestMessage.ProtoReflect.Descriptor instead.
+func (*GetMempoolEntriesByAddressesRequestMessage) Descriptor() ([]byte, []int) {
+ return file_rpc_proto_rawDescGZIP(), []int{103}
+}
+
+func (x *GetMempoolEntriesByAddressesRequestMessage) GetAddresses() []string {
+ if x != nil {
+ return x.Addresses
+ }
+ return nil
+}
+
+type GetMempoolEntriesByAddressesResponseMessage struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Entries []*MempoolEntryByAddress `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
+ Error *RPCError `protobuf:"bytes,1000,opt,name=error,proto3" json:"error,omitempty"`
+}
+
+func (x *GetMempoolEntriesByAddressesResponseMessage) Reset() {
+ *x = GetMempoolEntriesByAddressesResponseMessage{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_rpc_proto_msgTypes[104]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GetMempoolEntriesByAddressesResponseMessage) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetMempoolEntriesByAddressesResponseMessage) ProtoMessage() {}
+
+func (x *GetMempoolEntriesByAddressesResponseMessage) ProtoReflect() protoreflect.Message {
+ mi := &file_rpc_proto_msgTypes[104]
+ 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 GetMempoolEntriesByAddressesResponseMessage.ProtoReflect.Descriptor instead.
+func (*GetMempoolEntriesByAddressesResponseMessage) Descriptor() ([]byte, []int) {
+ return file_rpc_proto_rawDescGZIP(), []int{104}
+}
+
+func (x *GetMempoolEntriesByAddressesResponseMessage) GetEntries() []*MempoolEntryByAddress {
+ if x != nil {
+ return x.Entries
+ }
+ return nil
+}
+
+func (x *GetMempoolEntriesByAddressesResponseMessage) GetError() *RPCError {
+ if x != nil {
+ return x.Error
+ }
+ return nil
+}
+
var File_rpc_proto protoreflect.FileDescriptor
var file_rpc_proto_rawDesc = []byte{
@@ -6396,9 +6561,34 @@ var file_rpc_proto_rawDesc = []byte{
0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x25, 0x0a, 0x23, 0x4e, 0x65, 0x77,
0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74,
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 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,
+ 0x22, 0x9b, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 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, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18,
+ 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72,
+ 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
+ 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69,
+ 0x76, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x22, 0x4a,
+ 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72,
+ 0x69, 0x65, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09,
+ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x2b, 0x47,
+ 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73,
+ 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x65, 0x6e,
+ 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 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, 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 (
@@ -6414,7 +6604,7 @@ func file_rpc_proto_rawDescGZIP() []byte {
}
var file_rpc_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 102)
+var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 105)
var file_rpc_proto_goTypes = []interface{}{
(SubmitBlockResponseMessage_RejectReason)(0), // 0: protowire.SubmitBlockResponseMessage.RejectReason
(*RPCError)(nil), // 1: protowire.RPCError
@@ -6519,82 +6709,89 @@ var file_rpc_proto_goTypes = []interface{}{
(*NotifyNewBlockTemplateRequestMessage)(nil), // 100: protowire.NotifyNewBlockTemplateRequestMessage
(*NotifyNewBlockTemplateResponseMessage)(nil), // 101: protowire.NotifyNewBlockTemplateResponseMessage
(*NewBlockTemplateNotificationMessage)(nil), // 102: protowire.NewBlockTemplateNotificationMessage
+ (*MempoolEntryByAddress)(nil), // 103: protowire.MempoolEntryByAddress
+ (*GetMempoolEntriesByAddressesRequestMessage)(nil), // 104: protowire.GetMempoolEntriesByAddressesRequestMessage
+ (*GetMempoolEntriesByAddressesResponseMessage)(nil), // 105: protowire.GetMempoolEntriesByAddressesResponseMessage
}
var file_rpc_proto_depIdxs = []int32{
- 3, // 0: protowire.RpcBlock.header:type_name -> protowire.RpcBlockHeader
- 6, // 1: protowire.RpcBlock.transactions:type_name -> protowire.RpcTransaction
- 5, // 2: protowire.RpcBlock.verboseData:type_name -> protowire.RpcBlockVerboseData
- 4, // 3: protowire.RpcBlockHeader.parents:type_name -> protowire.RpcBlockLevelParents
- 7, // 4: protowire.RpcTransaction.inputs:type_name -> protowire.RpcTransactionInput
- 9, // 5: protowire.RpcTransaction.outputs:type_name -> protowire.RpcTransactionOutput
- 12, // 6: protowire.RpcTransaction.verboseData:type_name -> protowire.RpcTransactionVerboseData
- 10, // 7: protowire.RpcTransactionInput.previousOutpoint:type_name -> protowire.RpcOutpoint
- 13, // 8: protowire.RpcTransactionInput.verboseData:type_name -> protowire.RpcTransactionInputVerboseData
- 8, // 9: protowire.RpcTransactionOutput.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey
- 14, // 10: protowire.RpcTransactionOutput.verboseData:type_name -> protowire.RpcTransactionOutputVerboseData
- 8, // 11: protowire.RpcUtxoEntry.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey
- 1, // 12: protowire.GetCurrentNetworkResponseMessage.error:type_name -> protowire.RPCError
- 2, // 13: protowire.SubmitBlockRequestMessage.block:type_name -> protowire.RpcBlock
- 0, // 14: protowire.SubmitBlockResponseMessage.rejectReason:type_name -> protowire.SubmitBlockResponseMessage.RejectReason
- 1, // 15: protowire.SubmitBlockResponseMessage.error:type_name -> protowire.RPCError
- 2, // 16: protowire.GetBlockTemplateResponseMessage.block:type_name -> protowire.RpcBlock
- 1, // 17: protowire.GetBlockTemplateResponseMessage.error:type_name -> protowire.RPCError
- 1, // 18: protowire.NotifyBlockAddedResponseMessage.error:type_name -> protowire.RPCError
- 2, // 19: protowire.BlockAddedNotificationMessage.block:type_name -> protowire.RpcBlock
- 26, // 20: protowire.GetPeerAddressesResponseMessage.addresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage
- 26, // 21: protowire.GetPeerAddressesResponseMessage.bannedAddresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage
- 1, // 22: protowire.GetPeerAddressesResponseMessage.error:type_name -> protowire.RPCError
- 1, // 23: protowire.GetSelectedTipHashResponseMessage.error:type_name -> protowire.RPCError
- 33, // 24: protowire.GetMempoolEntryResponseMessage.entry:type_name -> protowire.MempoolEntry
- 1, // 25: protowire.GetMempoolEntryResponseMessage.error:type_name -> protowire.RPCError
- 33, // 26: protowire.GetMempoolEntriesResponseMessage.entries:type_name -> protowire.MempoolEntry
- 1, // 27: protowire.GetMempoolEntriesResponseMessage.error:type_name -> protowire.RPCError
- 6, // 28: protowire.MempoolEntry.transaction:type_name -> protowire.RpcTransaction
- 36, // 29: protowire.GetConnectedPeerInfoResponseMessage.infos:type_name -> protowire.GetConnectedPeerInfoMessage
- 1, // 30: protowire.GetConnectedPeerInfoResponseMessage.error:type_name -> protowire.RPCError
- 1, // 31: protowire.AddPeerResponseMessage.error:type_name -> protowire.RPCError
- 6, // 32: protowire.SubmitTransactionRequestMessage.transaction:type_name -> protowire.RpcTransaction
- 1, // 33: protowire.SubmitTransactionResponseMessage.error:type_name -> protowire.RPCError
- 1, // 34: protowire.NotifyVirtualSelectedParentChainChangedResponseMessage.error:type_name -> protowire.RPCError
- 2, // 35: protowire.GetBlockResponseMessage.block:type_name -> protowire.RpcBlock
- 1, // 36: protowire.GetBlockResponseMessage.error:type_name -> protowire.RPCError
- 1, // 37: protowire.GetSubnetworkResponseMessage.error:type_name -> protowire.RPCError
- 1, // 38: protowire.GetVirtualSelectedParentChainFromBlockResponseMessage.error:type_name -> protowire.RPCError
- 2, // 39: protowire.GetBlocksResponseMessage.blocks:type_name -> protowire.RpcBlock
- 1, // 40: protowire.GetBlocksResponseMessage.error:type_name -> protowire.RPCError
- 1, // 41: protowire.GetBlockCountResponseMessage.error:type_name -> protowire.RPCError
- 1, // 42: protowire.GetBlockDagInfoResponseMessage.error:type_name -> protowire.RPCError
- 1, // 43: protowire.ResolveFinalityConflictResponseMessage.error:type_name -> protowire.RPCError
- 1, // 44: protowire.NotifyFinalityConflictsResponseMessage.error:type_name -> protowire.RPCError
- 1, // 45: protowire.ShutDownResponseMessage.error:type_name -> protowire.RPCError
- 1, // 46: protowire.GetHeadersResponseMessage.error:type_name -> protowire.RPCError
- 1, // 47: protowire.NotifyUtxosChangedResponseMessage.error:type_name -> protowire.RPCError
- 69, // 48: protowire.UtxosChangedNotificationMessage.added:type_name -> protowire.UtxosByAddressesEntry
- 69, // 49: protowire.UtxosChangedNotificationMessage.removed:type_name -> protowire.UtxosByAddressesEntry
- 10, // 50: protowire.UtxosByAddressesEntry.outpoint:type_name -> protowire.RpcOutpoint
- 11, // 51: protowire.UtxosByAddressesEntry.utxoEntry:type_name -> protowire.RpcUtxoEntry
- 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.GetBalanceByAddressResponseMessage.error:type_name -> protowire.RPCError
- 1, // 56: protowire.BalancesByAddressEntry.error:type_name -> protowire.RPCError
- 77, // 57: protowire.GetBalancesByAddressesResponseMessage.entries:type_name -> protowire.BalancesByAddressEntry
- 1, // 58: protowire.GetBalancesByAddressesResponseMessage.error:type_name -> protowire.RPCError
- 1, // 59: protowire.GetVirtualSelectedParentBlueScoreResponseMessage.error:type_name -> protowire.RPCError
- 1, // 60: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.error:type_name -> protowire.RPCError
- 1, // 61: protowire.NotifyVirtualDaaScoreChangedResponseMessage.error:type_name -> protowire.RPCError
- 1, // 62: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
- 1, // 63: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
- 1, // 64: protowire.BanResponseMessage.error:type_name -> protowire.RPCError
- 1, // 65: protowire.UnbanResponseMessage.error:type_name -> protowire.RPCError
- 1, // 66: protowire.GetInfoResponseMessage.error:type_name -> protowire.RPCError
- 1, // 67: protowire.EstimateNetworkHashesPerSecondResponseMessage.error:type_name -> protowire.RPCError
- 1, // 68: protowire.NotifyNewBlockTemplateResponseMessage.error:type_name -> protowire.RPCError
- 69, // [69:69] is the sub-list for method output_type
- 69, // [69:69] is the sub-list for method input_type
- 69, // [69:69] is the sub-list for extension type_name
- 69, // [69:69] is the sub-list for extension extendee
- 0, // [0:69] is the sub-list for field type_name
+ 3, // 0: protowire.RpcBlock.header:type_name -> protowire.RpcBlockHeader
+ 6, // 1: protowire.RpcBlock.transactions:type_name -> protowire.RpcTransaction
+ 5, // 2: protowire.RpcBlock.verboseData:type_name -> protowire.RpcBlockVerboseData
+ 4, // 3: protowire.RpcBlockHeader.parents:type_name -> protowire.RpcBlockLevelParents
+ 7, // 4: protowire.RpcTransaction.inputs:type_name -> protowire.RpcTransactionInput
+ 9, // 5: protowire.RpcTransaction.outputs:type_name -> protowire.RpcTransactionOutput
+ 12, // 6: protowire.RpcTransaction.verboseData:type_name -> protowire.RpcTransactionVerboseData
+ 10, // 7: protowire.RpcTransactionInput.previousOutpoint:type_name -> protowire.RpcOutpoint
+ 13, // 8: protowire.RpcTransactionInput.verboseData:type_name -> protowire.RpcTransactionInputVerboseData
+ 8, // 9: protowire.RpcTransactionOutput.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey
+ 14, // 10: protowire.RpcTransactionOutput.verboseData:type_name -> protowire.RpcTransactionOutputVerboseData
+ 8, // 11: protowire.RpcUtxoEntry.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey
+ 1, // 12: protowire.GetCurrentNetworkResponseMessage.error:type_name -> protowire.RPCError
+ 2, // 13: protowire.SubmitBlockRequestMessage.block:type_name -> protowire.RpcBlock
+ 0, // 14: protowire.SubmitBlockResponseMessage.rejectReason:type_name -> protowire.SubmitBlockResponseMessage.RejectReason
+ 1, // 15: protowire.SubmitBlockResponseMessage.error:type_name -> protowire.RPCError
+ 2, // 16: protowire.GetBlockTemplateResponseMessage.block:type_name -> protowire.RpcBlock
+ 1, // 17: protowire.GetBlockTemplateResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 18: protowire.NotifyBlockAddedResponseMessage.error:type_name -> protowire.RPCError
+ 2, // 19: protowire.BlockAddedNotificationMessage.block:type_name -> protowire.RpcBlock
+ 26, // 20: protowire.GetPeerAddressesResponseMessage.addresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage
+ 26, // 21: protowire.GetPeerAddressesResponseMessage.bannedAddresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage
+ 1, // 22: protowire.GetPeerAddressesResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 23: protowire.GetSelectedTipHashResponseMessage.error:type_name -> protowire.RPCError
+ 33, // 24: protowire.GetMempoolEntryResponseMessage.entry:type_name -> protowire.MempoolEntry
+ 1, // 25: protowire.GetMempoolEntryResponseMessage.error:type_name -> protowire.RPCError
+ 33, // 26: protowire.GetMempoolEntriesResponseMessage.entries:type_name -> protowire.MempoolEntry
+ 1, // 27: protowire.GetMempoolEntriesResponseMessage.error:type_name -> protowire.RPCError
+ 6, // 28: protowire.MempoolEntry.transaction:type_name -> protowire.RpcTransaction
+ 36, // 29: protowire.GetConnectedPeerInfoResponseMessage.infos:type_name -> protowire.GetConnectedPeerInfoMessage
+ 1, // 30: protowire.GetConnectedPeerInfoResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 31: protowire.AddPeerResponseMessage.error:type_name -> protowire.RPCError
+ 6, // 32: protowire.SubmitTransactionRequestMessage.transaction:type_name -> protowire.RpcTransaction
+ 1, // 33: protowire.SubmitTransactionResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 34: protowire.NotifyVirtualSelectedParentChainChangedResponseMessage.error:type_name -> protowire.RPCError
+ 2, // 35: protowire.GetBlockResponseMessage.block:type_name -> protowire.RpcBlock
+ 1, // 36: protowire.GetBlockResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 37: protowire.GetSubnetworkResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 38: protowire.GetVirtualSelectedParentChainFromBlockResponseMessage.error:type_name -> protowire.RPCError
+ 2, // 39: protowire.GetBlocksResponseMessage.blocks:type_name -> protowire.RpcBlock
+ 1, // 40: protowire.GetBlocksResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 41: protowire.GetBlockCountResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 42: protowire.GetBlockDagInfoResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 43: protowire.ResolveFinalityConflictResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 44: protowire.NotifyFinalityConflictsResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 45: protowire.ShutDownResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 46: protowire.GetHeadersResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 47: protowire.NotifyUtxosChangedResponseMessage.error:type_name -> protowire.RPCError
+ 69, // 48: protowire.UtxosChangedNotificationMessage.added:type_name -> protowire.UtxosByAddressesEntry
+ 69, // 49: protowire.UtxosChangedNotificationMessage.removed:type_name -> protowire.UtxosByAddressesEntry
+ 10, // 50: protowire.UtxosByAddressesEntry.outpoint:type_name -> protowire.RpcOutpoint
+ 11, // 51: protowire.UtxosByAddressesEntry.utxoEntry:type_name -> protowire.RpcUtxoEntry
+ 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.GetBalanceByAddressResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 56: protowire.BalancesByAddressEntry.error:type_name -> protowire.RPCError
+ 77, // 57: protowire.GetBalancesByAddressesResponseMessage.entries:type_name -> protowire.BalancesByAddressEntry
+ 1, // 58: protowire.GetBalancesByAddressesResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 59: protowire.GetVirtualSelectedParentBlueScoreResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 60: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 61: protowire.NotifyVirtualDaaScoreChangedResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 62: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 63: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 64: protowire.BanResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 65: protowire.UnbanResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 66: protowire.GetInfoResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 67: protowire.EstimateNetworkHashesPerSecondResponseMessage.error:type_name -> protowire.RPCError
+ 1, // 68: protowire.NotifyNewBlockTemplateResponseMessage.error:type_name -> protowire.RPCError
+ 33, // 69: protowire.MempoolEntryByAddress.sending:type_name -> protowire.MempoolEntry
+ 33, // 70: protowire.MempoolEntryByAddress.receiving:type_name -> protowire.MempoolEntry
+ 103, // 71: protowire.GetMempoolEntriesByAddressesResponseMessage.entries:type_name -> protowire.MempoolEntryByAddress
+ 1, // 72: protowire.GetMempoolEntriesByAddressesResponseMessage.error:type_name -> protowire.RPCError
+ 73, // [73:73] is the sub-list for method output_type
+ 73, // [73:73] is the sub-list for method input_type
+ 73, // [73:73] is the sub-list for extension type_name
+ 73, // [73:73] is the sub-list for extension extendee
+ 0, // [0:73] is the sub-list for field type_name
}
func init() { file_rpc_proto_init() }
@@ -7827,6 +8024,42 @@ func file_rpc_proto_init() {
return nil
}
}
+ file_rpc_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*MempoolEntryByAddress); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_rpc_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetMempoolEntriesByAddressesRequestMessage); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_rpc_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GetMempoolEntriesByAddressesResponseMessage); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -7834,7 +8067,7 @@ func file_rpc_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_rpc_proto_rawDesc,
NumEnums: 1,
- NumMessages: 102,
+ NumMessages: 105,
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 a317086e6d..ea6f4fb514 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto
@@ -673,4 +673,19 @@ message NotifyNewBlockTemplateResponseMessage {
message NewBlockTemplateNotificationMessage {
}
+message MempoolEntryByAddress{
+ string address = 1;
+ repeated MempoolEntry sending = 2;
+ repeated MempoolEntry receiving = 3;
+}
+
+message GetMempoolEntriesByAddressesRequestMessage{
+ repeated string addresses = 1;
+}
+
+message GetMempoolEntriesByAddressesResponseMessage{
+ repeated MempoolEntryByAddress entries = 1;
+
+ RPCError error = 1000;
+}
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_get_mempool_entries_by_addresses.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_get_mempool_entries_by_addresses.go
new file mode 100644
index 0000000000..35f03d30e8
--- /dev/null
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_get_mempool_entries_by_addresses.go
@@ -0,0 +1,137 @@
+package protowire
+
+import (
+ "github.com/kaspanet/kaspad/app/appmessage"
+ "github.com/pkg/errors"
+)
+
+func (x *KaspadMessage_GetMempoolEntriesByAddressesRequest) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "KaspadMessage_GetMempoolEntriesRequest is nil")
+ }
+ return x.GetMempoolEntriesByAddressesRequest.toAppMessage()
+}
+
+func (x *KaspadMessage_GetMempoolEntriesByAddressesRequest) fromAppMessage(message *appmessage.GetMempoolEntriesByAddressesRequestMessage) error {
+ x.GetMempoolEntriesByAddressesRequest = &GetMempoolEntriesByAddressesRequestMessage{
+ Addresses: message.Addresses,
+ }
+ return nil
+}
+
+func (x *GetMempoolEntriesByAddressesRequestMessage) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "KaspadMessage_GetMempoolEntriesRequest is nil")
+ }
+ return &appmessage.GetMempoolEntriesByAddressesRequestMessage{
+ Addresses: x.Addresses,
+ }, nil
+}
+
+func (x *KaspadMessage_GetMempoolEntriesByAddressesResponse) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "KaspadMessage_GetMempoolEntriesByAddressesResponse is nil")
+ }
+ return x.GetMempoolEntriesByAddressesResponse.toAppMessage()
+}
+
+func (x *KaspadMessage_GetMempoolEntriesByAddressesResponse) fromAppMessage(message *appmessage.GetMempoolEntriesByAddressesResponseMessage) error {
+ var rpcErr *RPCError
+ if message.Error != nil {
+ rpcErr = &RPCError{Message: message.Error.Message}
+ }
+ entries := make([]*MempoolEntryByAddress, len(message.Entries))
+ for i, entry := range message.Entries {
+ entries[i] = &MempoolEntryByAddress{}
+ entries[i].fromAppMessage(entry)
+ }
+ x.GetMempoolEntriesByAddressesResponse = &GetMempoolEntriesByAddressesResponseMessage{
+ Entries: entries,
+ Error: rpcErr,
+ }
+ return nil
+}
+
+func (x *GetMempoolEntriesByAddressesResponseMessage) toAppMessage() (appmessage.Message, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "GetMempoolEntriesResponseMessage 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 && len(x.Entries) != 0 {
+ return nil, errors.New("GetMempoolEntriesByAddressesResponseMessage contains both an error and a response")
+ }
+ entries := make([]*appmessage.MempoolEntryByAddress, len(x.Entries))
+ for i, entry := range x.Entries {
+ entries[i], err = entry.toAppMessage()
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ return &appmessage.GetMempoolEntriesByAddressesResponseMessage{
+ Entries: entries,
+ Error: rpcErr,
+ }, nil
+}
+
+func (x *MempoolEntryByAddress) toAppMessage() (*appmessage.MempoolEntryByAddress, error) {
+ if x == nil {
+ return nil, errors.Wrapf(errorNil, "MempoolEntry is nil")
+ }
+
+ var err error
+
+ sending := make([]*appmessage.MempoolEntry, len(x.Sending))
+ for i, mempoolEntry := range x.Sending {
+ sending[i], err = mempoolEntry.toAppMessage()
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ receiving := make([]*appmessage.MempoolEntry, len(x.Receiving))
+ for i, mempoolEntry := range x.Receiving {
+ receiving[i], err = mempoolEntry.toAppMessage()
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ return &appmessage.MempoolEntryByAddress{
+ Address: x.Address,
+ Sending: sending,
+ Receiving: receiving,
+ }, nil
+}
+
+func (x *MempoolEntryByAddress) fromAppMessage(message *appmessage.MempoolEntryByAddress) error {
+
+ sending := make([]*MempoolEntry, len(message.Sending))
+ for i, mempoolEntry := range message.Sending {
+ sending[i] = &MempoolEntry{}
+ err := sending[i].fromAppMessage(mempoolEntry)
+ if err != nil {
+ return err
+ }
+ }
+ receiving := make([]*MempoolEntry, len(message.Receiving))
+ for i, mempoolEntry := range message.Receiving {
+ receiving[i] = &MempoolEntry{}
+ err := receiving[i].fromAppMessage(mempoolEntry)
+ if err != nil {
+ return err
+ }
+ }
+
+ *x = MempoolEntryByAddress{
+ Address: message.Address,
+ Sending: sending,
+ Receiving: receiving,
+ }
+ return nil
+}
diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go b/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go
index a3a6e1647d..7794dd3784 100644
--- a/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go
+++ b/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go
@@ -940,6 +940,20 @@ func toRPCPayload(message appmessage.Message) (isKaspadMessage_Payload, error) {
return nil, err
}
return payload, nil
+ case *appmessage.GetMempoolEntriesByAddressesRequestMessage:
+ payload := new(KaspadMessage_GetMempoolEntriesByAddressesRequest)
+ err := payload.fromAppMessage(message)
+ if err != nil {
+ return nil, err
+ }
+ return payload, nil
+ case *appmessage.GetMempoolEntriesByAddressesResponseMessage:
+ payload := new(KaspadMessage_GetMempoolEntriesByAddressesResponse)
+ err := payload.fromAppMessage(message)
+ if err != nil {
+ return nil, err
+ }
+ return payload, nil
default:
return nil, nil
}
diff --git a/infrastructure/network/rpcclient/rpc_get_mempool_entries_by_address.go b/infrastructure/network/rpcclient/rpc_get_mempool_entries_by_address.go
new file mode 100644
index 0000000000..b3ec1fd11a
--- /dev/null
+++ b/infrastructure/network/rpcclient/rpc_get_mempool_entries_by_address.go
@@ -0,0 +1,20 @@
+package rpcclient
+
+import "github.com/kaspanet/kaspad/app/appmessage"
+
+// GetMempoolEntriesByAddresses sends an RPC request respective to the function's name and returns the RPC server's response
+func (c *RPCClient) GetMempoolEntriesByAddresses(addresses []string) (*appmessage.GetMempoolEntriesByAddressesResponseMessage, error) {
+ err := c.rpcRouter.outgoingRoute().Enqueue(appmessage.NewGetMempoolEntriesByAddressesRequestMessage(addresses))
+ if err != nil {
+ return nil, err
+ }
+ response, err := c.route(appmessage.CmdGetMempoolEntriesByAddressesResponseMessage).DequeueWithTimeout(c.timeout)
+ if err != nil {
+ return nil, err
+ }
+ getMempoolEntriesByAddressesResponse := response.(*appmessage.GetMempoolEntriesByAddressesResponseMessage)
+ if getMempoolEntriesByAddressesResponse.Error != nil {
+ return nil, c.convertRPCError(getMempoolEntriesByAddressesResponse.Error)
+ }
+ return getMempoolEntriesByAddressesResponse, nil
+}
diff --git a/testing/integration/tx_relay_test.go b/testing/integration/tx_relay_test.go
index b783c20d3a..6fefae37c7 100644
--- a/testing/integration/tx_relay_test.go
+++ b/testing/integration/tx_relay_test.go
@@ -2,11 +2,12 @@ package integration
import (
"encoding/hex"
- "github.com/kaspanet/kaspad/app/protocol/flowcontext"
"strings"
"testing"
"time"
+ "github.com/kaspanet/kaspad/app/protocol/flowcontext"
+
"github.com/kaspanet/kaspad/domain/consensus/utils/utxo"
"github.com/kaspanet/go-secp256k1"
@@ -60,11 +61,14 @@ func TestTxRelay(t *testing.T) {
txAddedToMempoolChan := make(chan struct{})
+ mempoolAddressQuery := []string{payee.miningAddress, payer.miningAddress}
+
spawn("TestTxRelay-WaitForTransactionPropagation", func() {
ticker := time.NewTicker(10 * time.Millisecond)
defer ticker.Stop()
for range ticker.C {
+
_, err := payee.rpcClient.GetMempoolEntry(txID)
if err != nil {
if strings.Contains(err.Error(), "not found") {
@@ -73,6 +77,31 @@ func TestTxRelay(t *testing.T) {
t.Fatalf("Error getting mempool entry: %+v", err)
}
+
+ mempoolEntriesByAddresses, err := payee.rpcClient.GetMempoolEntriesByAddresses(mempoolAddressQuery)
+ if err != nil {
+ t.Fatalf("Error getting mempool entry: %+v", err)
+ }
+ for _, mempoolEntryByAddress := range mempoolEntriesByAddresses.Entries {
+ if payee.miningAddress == mempoolEntryByAddress.Address {
+ if len(mempoolEntryByAddress.Sending) > 1 {
+ t.Fatal("Error payee is sending")
+ }
+ if len(mempoolEntryByAddress.Receiving) < 1 {
+ t.Fatal("Error payee is not reciving")
+ }
+ }
+ if payer.miningAddress == mempoolEntryByAddress.Address {
+ if len(mempoolEntryByAddress.Sending) < 1 {
+ t.Fatal("Error payer is not sending")
+ }
+ if len(mempoolEntryByAddress.Receiving) > 1 {
+ t.Fatal("Error payer is reciving")
+ }
+ }
+ continue
+ }
+
close(txAddedToMempoolChan)
return
}