Skip to content
Merged
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
9 changes: 7 additions & 2 deletions cli/src/main/java/bisq/cli/CliMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
import bisq.cli.opts.GetAvgBsqPriceOptionParser;
import bisq.cli.opts.GetBTCMarketPriceOptionParser;
import bisq.cli.opts.GetBalanceOptionParser;
import bisq.cli.opts.GetFundingAddressesOptionParser;
import bisq.cli.opts.GetOffersOptionParser;
import bisq.cli.opts.GetPaymentAcctFormOptionParser;
import bisq.cli.opts.GetTradeOptionParser;
Expand Down Expand Up @@ -249,11 +250,14 @@ public static void run(String[] args) {
return;
}
case getfundingaddresses: {
if (new SimpleMethodOptionParser(args).parse().isForHelp()) {
var opts = new GetFundingAddressesOptionParser(args).parse();
if (opts.isForHelp()) {
out.println(client.getMethodHelp(method));
return;
}
var fundingAddresses = client.getFundingAddresses();
var onlyFunded = opts.getIsOnlyFunded();

var fundingAddresses = client.getFundingAddresses(onlyFunded);
new TableBuilder(ADDRESS_BALANCE_TBL, fundingAddresses).build().print(out);
return;
}
Expand Down Expand Up @@ -897,6 +901,7 @@ private static void printHelp(OptionParser parser, @SuppressWarnings("SameParame
stream.format(rowFormat, getbtcprice.name(), "--currency-code=<currency-code>", "Get current market btc price");
stream.println();
stream.format(rowFormat, getfundingaddresses.name(), "", "Get BTC funding addresses");
stream.format(rowFormat, "", "[--only-funded=<true|false>]", "");
stream.println();
stream.format(rowFormat, getunusedbsqaddress.name(), "", "Get unused BSQ address");
stream.println();
Expand Down
4 changes: 2 additions & 2 deletions cli/src/main/java/bisq/cli/GrpcClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ public double getBtcPrice(String currencyCode) {
return walletsServiceRequest.getBtcPrice(currencyCode);
}

public List<AddressBalanceInfo> getFundingAddresses() {
return walletsServiceRequest.getFundingAddresses();
public List<AddressBalanceInfo> getFundingAddresses(boolean onlyFunded) {
return walletsServiceRequest.getFundingAddresses(onlyFunded);
}

public String getUnusedBsqAddress() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package bisq.cli.opts;

import joptsimple.OptionSpec;

import static bisq.cli.opts.OptLabel.OPT_ONLY_FUNDED;

public class GetFundingAddressesOptionParser extends AbstractMethodOptionParser implements MethodOpts {
final OptionSpec<Boolean> onlyFundedOpt = parser.accepts(OPT_ONLY_FUNDED, "only funded addresses")
.withOptionalArg()
.ofType(boolean.class)
.defaultsTo(Boolean.FALSE);

public GetFundingAddressesOptionParser(String[] args) {
super(args);
}

public GetFundingAddressesOptionParser parse() {
super.parse();

return this;
}

public boolean getIsOnlyFunded() {
return options.valueOf(onlyFundedOpt);
}
}
1 change: 1 addition & 0 deletions cli/src/main/java/bisq/cli/opts/OptLabel.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class OptLabel {
public final static String OPT_MKT_PRICE_MARGIN = "market-price-margin";
public final static String OPT_MIN_AMOUNT = "min-amount";
public final static String OPT_OFFER_ID = "offer-id";
public final static String OPT_ONLY_FUNDED = "only-funded";
public final static String OPT_PASSWORD = "password";
public final static String OPT_PAYMENT_ACCOUNT_ID = "payment-account-id";
public final static String OPT_PAYMENT_ACCOUNT_FORM = "payment-account-form";
Expand Down
9 changes: 6 additions & 3 deletions cli/src/main/java/bisq/cli/request/WalletsServiceRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,12 @@ public double getBtcPrice(String currencyCode) {
return grpcStubs.priceService.getMarketPrice(request).getPrice();
}

public List<AddressBalanceInfo> getFundingAddresses() {
var request = GetFundingAddressesRequest.newBuilder().build();
return grpcStubs.walletsService.getFundingAddresses(request).getAddressBalanceInfoList();
public List<AddressBalanceInfo> getFundingAddresses(boolean onlyFunded) {
var request = GetFundingAddressesRequest.newBuilder()
.setOnlyFunded(onlyFunded)
.build();
return grpcStubs.walletsService.getFundingAddresses(request)
.getAddressBalanceInfoList();
}

public String getUnusedBsqAddress() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public AddressCliOutputDiffTest() {
}

private void getFundingAddresses() {
var fundingAddresses = aliceClient.getFundingAddresses();
var fundingAddresses = aliceClient.getFundingAddresses(false);
if (fundingAddresses.size() > 0) {
// TableFormat class had been deprecated, then deleted on 17-Feb-2022, but
// these diff tests can be useful for testing changes to the current tbl formatting api.
Expand All @@ -42,7 +42,7 @@ private void getFundingAddresses() {
}

private void getAddressBalance() {
List<AddressBalanceInfo> addresses = aliceClient.getFundingAddresses();
List<AddressBalanceInfo> addresses = aliceClient.getFundingAddresses(false);
int numAddresses = addresses.size();
// Check output for last 2 addresses.
for (int i = numAddresses - 2; i < addresses.size(); i++) {
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/java/bisq/core/api/CoreApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -392,8 +392,8 @@ public AddressBalanceInfo getAddressBalanceInfo(String addressString) {
return walletsService.getAddressBalanceInfo(addressString);
}

public List<AddressBalanceInfo> getFundingAddresses() {
return walletsService.getFundingAddresses();
public List<AddressBalanceInfo> getFundingAddresses(boolean onlyFunded) {
return walletsService.getFundingAddresses(onlyFunded);
}

public String getUnusedBsqAddress() {
Expand Down
10 changes: 8 additions & 2 deletions core/src/main/java/bisq/core/api/CoreWalletsService.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -201,7 +202,7 @@ AddressBalanceInfo getAddressBalanceInfo(String addressString) {
btcWalletService.isAddressUnused(address));
}

List<AddressBalanceInfo> getFundingAddresses() {
List<AddressBalanceInfo> getFundingAddresses(boolean onlyFunded) {
verifyWalletsAreAvailable();
verifyEncryptedWalletIsUnlocked();

Expand Down Expand Up @@ -231,7 +232,12 @@ List<AddressBalanceInfo> getFundingAddresses() {
addressStrings.add(newZeroBalanceAddress.getAddressString());
}

return addressStrings.stream().map(address ->
Stream<String> resultStream = addressStrings.stream();
if (onlyFunded) {
resultStream = resultStream.filter(address -> balances.getUnchecked(address) > 0);
}

return resultStream.map(address ->
new AddressBalanceInfo(address,
balances.getUnchecked(address),
getNumConfirmationsForMostRecentTransaction(address),
Expand Down
7 changes: 7 additions & 0 deletions core/src/main/resources/help/getfundingaddresses-help.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,18 @@ getfundingaddresses - list BTC receiving address
SYNOPSIS
--------
getfundingaddresses
[--only-funded=<true|false>]

DESCRIPTION
-----------
Returns a list of receiving BTC addresses.

OPTIONS
-------
--only-funded
If true, only addresses with a positive balance will be included.
Useful for filtering out empty addresses.

EXAMPLES
--------
$ ./bisq-cli --password=xyz --port=9998 getfundingaddresses
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,8 @@ public void getAddressBalance(GetAddressBalanceRequest req,
public void getFundingAddresses(GetFundingAddressesRequest req,
StreamObserver<GetFundingAddressesReply> responseObserver) {
try {
List<AddressBalanceInfo> balanceInfo = coreApi.getFundingAddresses();
boolean onlyFunded = req.getOnlyFunded();
List<AddressBalanceInfo> balanceInfo = coreApi.getFundingAddresses(onlyFunded);
var reply = GetFundingAddressesReply.newBuilder()
.addAllAddressBalanceInfo(
balanceInfo.stream()
Expand Down
1 change: 1 addition & 0 deletions proto/src/main/proto/grpc.proto
Original file line number Diff line number Diff line change
Expand Up @@ -927,6 +927,7 @@ message GetTransactionReply {
}

message GetFundingAddressesRequest {
optional bool only_funded = 1; // Return only addresses with positive balance.
}

message GetFundingAddressesReply {
Expand Down
Loading