aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-04-18 21:23:25 +0200
committerFlorian Dold <florian@dold.me>2022-04-18 21:23:48 +0200
commit68b4d0c4de7df98190fcc07c11fa809622b27bfc (patch)
tree6595879e6040e81564f0daac3eb6f71bc5afcbc0
parentdc2c2b36501b24c7f2ed8f3dd0f7e6edc9dd6658 (diff)
wallet-cli: allow generating segwit addresses
-rw-r--r--packages/taler-wallet-cli/src/index.ts13
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts9
2 files changed, 22 insertions, 0 deletions
diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts
index 254dadf93..fca6bf676 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -45,6 +45,7 @@ import {
rsaBlind,
LogLevel,
setGlobalLogLevelFromString,
+ parsePaytoUri,
} from "@gnu-taler/taler-util";
import {
NodeHttpLib,
@@ -743,6 +744,18 @@ advancedCli
});
advancedCli
+ .subcommand("genSegwit", "gen-segwit")
+ .requiredArgument("paytoUri", clk.STRING)
+ .requiredArgument("reservePub", clk.STRING)
+ .action(async (args) => {
+ const p = parsePaytoUri(args.genSegwit.paytoUri);
+ if (p?.isKnown && p?.targetType === "bitcoin") {
+ p.generateSegwitAddress(args.genSegwit.reservePub);
+ }
+ console.log(p);
+ });
+
+advancedCli
.subcommand("withdrawManually", "withdraw-manually", {
help: "Withdraw manually from an exchange.",
})
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts
index 6d45599dc..66bfd6b91 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -1016,6 +1016,15 @@ export async function getExchangeWithdrawalInfo(
instructedAmount,
denoms,
);
+
+ if (selectedDenoms.selectedDenoms.length === 0) {
+ throw Error(
+ `unable to withdraw from ${exchangeBaseUrl}, can't select denominations for instructed amount (${Amounts.stringify(
+ instructedAmount,
+ )}`,
+ );
+ }
+
const exchangeWireAccounts: string[] = [];
for (const account of exchangeDetails.wireInfo.accounts) {
exchangeWireAccounts.push(account.payto_uri);