Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions app/appmessage/rpc_get_balance_by_address.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func NewGetBalanceByAddressRequest(address string) *GetBalanceByAddressRequestMe
type GetBalanceByAddressResponseMessage struct {
baseMessage
Balance uint64
NUtxos uint64

Error *RPCError
}
Expand All @@ -34,8 +35,9 @@ func (msg *GetBalanceByAddressResponseMessage) Command() MessageCommand {
}

// NewGetBalanceByAddressResponse returns an instance of the message
func NewGetBalanceByAddressResponse(Balance uint64) *GetBalanceByAddressResponseMessage {
func NewGetBalanceByAddressResponse(balance, nUtxos uint64) *GetBalanceByAddressResponseMessage {
return &GetBalanceByAddressResponseMessage{
Balance: Balance,
Balance: balance,
NUtxos: nUtxos,
}
}
1 change: 1 addition & 0 deletions app/appmessage/rpc_get_balances_by_addresses.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ func NewGetBalancesByAddressesRequest(addresses []string) *GetBalancesByAddresse
type BalancesByAddressesEntry struct {
Address string
Balance uint64
NUtxos uint64
}

// GetBalancesByAddressesResponseMessage is an appmessage corresponding to
Expand Down
14 changes: 7 additions & 7 deletions app/rpc/rpchandlers/get_balance_by_address.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ func HandleGetBalanceByAddress(context *rpccontext.Context, _ *router.Router, re

getBalanceByAddressRequest := request.(*appmessage.GetBalanceByAddressRequestMessage)

balance, err := getBalanceByAddress(context, getBalanceByAddressRequest.Address)
balance, nUtxos, err := getBalanceByAddress(context, getBalanceByAddressRequest.Address)
if err != nil {
rpcError := &appmessage.RPCError{}
if !errors.As(err, &rpcError) {
Expand All @@ -30,28 +30,28 @@ func HandleGetBalanceByAddress(context *rpccontext.Context, _ *router.Router, re
return errorMessage, nil
}

response := appmessage.NewGetBalanceByAddressResponse(balance)
response := appmessage.NewGetBalanceByAddressResponse(balance, nUtxos)
return response, nil
}

func getBalanceByAddress(context *rpccontext.Context, addressString string) (uint64, error) {
func getBalanceByAddress(context *rpccontext.Context, addressString string) (uint64, uint64, error) {
address, err := util.DecodeAddress(addressString, context.Config.ActiveNetParams.Prefix)
if err != nil {
return 0, appmessage.RPCErrorf("Couldn't decode address '%s': %s", addressString, err)
return 0, 0, appmessage.RPCErrorf("Couldn't decode address '%s': %s", addressString, err)
}

scriptPublicKey, err := txscript.PayToAddrScript(address)
if err != nil {
return 0, appmessage.RPCErrorf("Could not create a scriptPublicKey for address '%s': %s", addressString, err)
return 0, 0, appmessage.RPCErrorf("Could not create a scriptPublicKey for address '%s': %s", addressString, err)
}
utxoOutpointEntryPairs, err := context.UTXOIndex.UTXOs(scriptPublicKey)
if err != nil {
return 0, err
return 0, 0, err
}

balance := uint64(0)
for _, utxoOutpointEntryPair := range utxoOutpointEntryPairs {
balance += utxoOutpointEntryPair.Amount()
}
return balance, nil
return balance, uint64(len(utxoOutpointEntryPairs)), nil
}
4 changes: 2 additions & 2 deletions app/rpc/rpchandlers/get_balances_by_addresses.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ func HandleGetBalancesByAddresses(context *rpccontext.Context, _ *router.Router,

allEntries := make([]*appmessage.BalancesByAddressesEntry, len(getBalancesByAddressesRequest.Addresses))
for i, address := range getBalancesByAddressesRequest.Addresses {
balance, err := getBalanceByAddress(context, address)

balance, nUtxos, err := getBalanceByAddress(context, address)
if err != nil {
rpcError := &appmessage.RPCError{}
if !errors.As(err, &rpcError) {
Expand All @@ -33,6 +32,7 @@ func HandleGetBalancesByAddresses(context *rpccontext.Context, _ *router.Router,
allEntries[i] = &appmessage.BalancesByAddressesEntry{
Address: address,
Balance: balance,
NUtxos: nUtxos,
}
}

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

377 changes: 198 additions & 179 deletions infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,7 @@ message GetBalanceByAddressRequestMessage {

message GetBalanceByAddressResponseMessage {
uint64 balance = 1;
uint64 nUtxos = 2;

RPCError error = 1000;
}
Expand All @@ -537,6 +538,7 @@ message GetBalancesByAddressesRequestMessage {
message BalancesByAddressEntry{
string address = 1;
uint64 balance = 2;
uint64 nUtxos = 3;

RPCError error = 1000;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ func (x *KaspadMessage_GetBalanceByAddressResponse) fromAppMessage(message *appm
}
x.GetBalanceByAddressResponse = &GetBalanceByAddressResponseMessage{
Balance: message.Balance,
NUtxos: message.NUtxos,

Error: err,
}
Expand All @@ -64,6 +65,7 @@ func (x *GetBalanceByAddressResponseMessage) toAppMessage() (appmessage.Message,

return &appmessage.GetBalanceByAddressResponseMessage{
Balance: x.Balance,
NUtxos: x.NUtxos,
Error: rpcErr,
}, nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,14 @@ func (x *BalancesByAddressEntry) toAppMessage() (*appmessage.BalancesByAddresses
return &appmessage.BalancesByAddressesEntry{
Address: x.Address,
Balance: x.Balance,
NUtxos: x.NUtxos,
}, nil
}

func (x *BalancesByAddressEntry) fromAppMessage(message *appmessage.BalancesByAddressesEntry) {
*x = BalancesByAddressEntry{
Address: message.Address,
Balance: message.Balance,
NUtxos: message.NUtxos,
}
}