@ledgerhq/hw-app-btc 6.11.0 → 6.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +110 -47
  2. package/lib/Btc.d.ts.map +1 -1
  3. package/lib/Btc.js +5 -3
  4. package/lib/Btc.js.map +1 -1
  5. package/lib/BtcNew.d.ts +1 -1
  6. package/lib/BtcNew.d.ts.map +1 -1
  7. package/lib/BtcNew.js +71 -174
  8. package/lib/BtcNew.js.map +1 -1
  9. package/lib/newops/accounttype.d.ts +110 -0
  10. package/lib/newops/accounttype.d.ts.map +1 -0
  11. package/lib/newops/accounttype.js +236 -0
  12. package/lib/newops/accounttype.js.map +1 -0
  13. package/lib/newops/appClient.d.ts +1 -1
  14. package/lib/newops/appClient.d.ts.map +1 -1
  15. package/lib/newops/appClient.js +7 -7
  16. package/lib/newops/appClient.js.map +1 -1
  17. package/lib/newops/clientCommands.d.ts +3 -2
  18. package/lib/newops/clientCommands.d.ts.map +1 -1
  19. package/lib/newops/clientCommands.js +19 -12
  20. package/lib/newops/clientCommands.js.map +1 -1
  21. package/lib/newops/merkle.js +2 -2
  22. package/lib/newops/merkle.js.map +1 -1
  23. package/lib/newops/psbtExtractor.js +2 -2
  24. package/lib/newops/psbtExtractor.js.map +1 -1
  25. package/lib/newops/psbtv2.d.ts +3 -0
  26. package/lib/newops/psbtv2.d.ts.map +1 -1
  27. package/lib/newops/psbtv2.js +14 -4
  28. package/lib/newops/psbtv2.js.map +1 -1
  29. package/lib-es/Btc.d.ts.map +1 -1
  30. package/lib-es/Btc.js +5 -3
  31. package/lib-es/Btc.js.map +1 -1
  32. package/lib-es/BtcNew.d.ts +1 -1
  33. package/lib-es/BtcNew.d.ts.map +1 -1
  34. package/lib-es/BtcNew.js +73 -176
  35. package/lib-es/BtcNew.js.map +1 -1
  36. package/lib-es/newops/accounttype.d.ts +110 -0
  37. package/lib-es/newops/accounttype.d.ts.map +1 -0
  38. package/lib-es/newops/accounttype.js +233 -0
  39. package/lib-es/newops/accounttype.js.map +1 -0
  40. package/lib-es/newops/appClient.d.ts +1 -1
  41. package/lib-es/newops/appClient.d.ts.map +1 -1
  42. package/lib-es/newops/appClient.js +7 -7
  43. package/lib-es/newops/appClient.js.map +1 -1
  44. package/lib-es/newops/clientCommands.d.ts +3 -2
  45. package/lib-es/newops/clientCommands.d.ts.map +1 -1
  46. package/lib-es/newops/clientCommands.js +19 -12
  47. package/lib-es/newops/clientCommands.js.map +1 -1
  48. package/lib-es/newops/merkle.js +2 -2
  49. package/lib-es/newops/merkle.js.map +1 -1
  50. package/lib-es/newops/psbtExtractor.js +2 -2
  51. package/lib-es/newops/psbtExtractor.js.map +1 -1
  52. package/lib-es/newops/psbtv2.d.ts +3 -0
  53. package/lib-es/newops/psbtv2.d.ts.map +1 -1
  54. package/lib-es/newops/psbtv2.js +14 -4
  55. package/lib-es/newops/psbtv2.js.map +1 -1
  56. package/package.json +3 -3
  57. package/src/Btc.ts +34 -3
  58. package/src/BtcNew.ts +105 -174
  59. package/src/newops/accounttype.ts +373 -0
  60. package/src/newops/appClient.ts +8 -7
  61. package/src/newops/clientCommands.ts +19 -12
  62. package/src/newops/merkle.ts +2 -2
  63. package/src/newops/psbtExtractor.ts +2 -2
  64. package/src/newops/psbtv2.ts +13 -4
  65. package/tests/Btc.test.ts +68 -39
  66. package/tests/newops/BtcNew.test.ts +47 -20
  67. package/tests/newops/integrationtools.ts +91 -50
  68. package/tests/newops/merkle.test.ts +1 -1
  69. package/tests/newops/testtx.ts +0 -55
package/lib/BtcNew.js CHANGED
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -52,17 +41,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
52
41
  exports.__esModule = true;
53
42
  exports.canSupportApp = void 0;
54
43
  var bitcoinjs_lib_1 = require("bitcoinjs-lib");
55
- var tiny_secp256k1_1 = require("tiny-secp256k1");
56
44
  var semver_1 = __importDefault(require("semver"));
45
+ var tiny_secp256k1_1 = require("tiny-secp256k1");
57
46
  var bip32_1 = require("./bip32");
58
47
  var buffertools_1 = require("./buffertools");
59
- var hashPublicKey_1 = require("./hashPublicKey");
48
+ var accounttype_1 = require("./newops/accounttype");
60
49
  var policy_1 = require("./newops/policy");
61
50
  var psbtExtractor_1 = require("./newops/psbtExtractor");
62
51
  var psbtFinalizer_1 = require("./newops/psbtFinalizer");
63
52
  var psbtv2_1 = require("./newops/psbtv2");
64
53
  var serializeTransaction_1 = require("./serializeTransaction");
65
- var constants_1 = require("./constants");
66
54
  var newSupportedApps = ["Bitcoin", "Bitcoin Test"];
67
55
  function canSupportApp(appAndVersion) {
68
56
  return (newSupportedApps.includes(appAndVersion.name) &&
@@ -155,7 +143,7 @@ var BtcNew = /** @class */ (function () {
155
143
  case 1:
156
144
  xpub = _c.sent();
157
145
  display = (_a = opts === null || opts === void 0 ? void 0 : opts.verify) !== null && _a !== void 0 ? _a : false;
158
- return [4 /*yield*/, this.getWalletAddress(pathElements, accountTypeFrom((_b = opts === null || opts === void 0 ? void 0 : opts.format) !== null && _b !== void 0 ? _b : "legacy"), display)];
146
+ return [4 /*yield*/, this.getWalletAddress(pathElements, descrTemplFrom((_b = opts === null || opts === void 0 ? void 0 : opts.format) !== null && _b !== void 0 ? _b : "legacy"), display)];
159
147
  case 2:
160
148
  address = _c.sent();
161
149
  components = (0, bip32_1.getXpubComponents)(xpub);
@@ -184,7 +172,7 @@ var BtcNew = /** @class */ (function () {
184
172
  * way to get the address from the device. In this case we have to create it
185
173
  * ourselves, but we don't at this time, and instead return an empty ("") address.
186
174
  */
187
- BtcNew.prototype.getWalletAddress = function (pathElements, accountType, display) {
175
+ BtcNew.prototype.getWalletAddress = function (pathElements, descrTempl, display) {
188
176
  return __awaiter(this, void 0, void 0, function () {
189
177
  var accountPath, accountXpub, masterFingerprint, policy, changeAndIndex;
190
178
  return __generator(this, function (_a) {
@@ -200,7 +188,7 @@ var BtcNew = /** @class */ (function () {
200
188
  return [4 /*yield*/, this.client.getMasterFingerprint()];
201
189
  case 2:
202
190
  masterFingerprint = _a.sent();
203
- policy = new policy_1.WalletPolicy(accountType, (0, policy_1.createKey)(masterFingerprint, accountPath, accountXpub));
191
+ policy = new policy_1.WalletPolicy(descrTempl, (0, policy_1.createKey)(masterFingerprint, accountPath, accountXpub));
204
192
  changeAndIndex = pathElements.slice(-2, pathElements.length);
205
193
  return [2 /*return*/, this.client.getWalletAddress(policy, Buffer.alloc(32, 0), changeAndIndex[0], changeAndIndex[1], display)];
206
194
  }
@@ -217,31 +205,43 @@ var BtcNew = /** @class */ (function () {
217
205
  */
218
206
  BtcNew.prototype.createPaymentTransactionNew = function (arg) {
219
207
  return __awaiter(this, void 0, void 0, function () {
220
- var psbt, accountType, masterFp, accountXpub, accountPath, i, pathElems, outputsConcat, outputsBufferReader, outputCount, changeData, changeFound, i, amount, outputScript, isChange, changePath, pubkey, key, p, serializedTx;
208
+ var inputCount, psbt, masterFp, accountType, notifyCount, progress, accountXpub, accountPath, i, pathElems, outputsConcat, outputsBufferReader, outputCount, changeData, changeFound, i, amount, outputScript, isChange, changePath, pubkey, key, p, firstSigned, progressCallback, serializedTx;
221
209
  return __generator(this, function (_a) {
222
210
  switch (_a.label) {
223
211
  case 0:
224
- if (arg.inputs.length == 0) {
212
+ inputCount = arg.inputs.length;
213
+ if (inputCount == 0) {
225
214
  throw Error("No inputs");
226
215
  }
227
216
  psbt = new psbtv2_1.PsbtV2();
228
- accountType = accountTypeFromArg(arg);
217
+ return [4 /*yield*/, this.client.getMasterFingerprint()];
218
+ case 1:
219
+ masterFp = _a.sent();
220
+ accountType = accountTypeFromArg(arg, psbt, masterFp);
229
221
  if (arg.lockTime) {
230
222
  // The signer will assume locktime 0 if unset
231
223
  psbt.setGlobalFallbackLocktime(arg.lockTime);
232
224
  }
233
- psbt.setGlobalInputCount(arg.inputs.length);
225
+ psbt.setGlobalInputCount(inputCount);
234
226
  psbt.setGlobalPsbtVersion(2);
235
227
  psbt.setGlobalTxVersion(2);
236
- return [4 /*yield*/, this.client.getMasterFingerprint()];
237
- case 1:
238
- masterFp = _a.sent();
228
+ notifyCount = 0;
229
+ progress = function () {
230
+ if (!arg.onDeviceStreaming)
231
+ return;
232
+ arg.onDeviceStreaming({
233
+ total: 2 * inputCount,
234
+ index: notifyCount,
235
+ progress: ++notifyCount / (2 * inputCount)
236
+ });
237
+ };
239
238
  accountXpub = "";
240
239
  accountPath = [];
241
240
  i = 0;
242
241
  _a.label = 2;
243
242
  case 2:
244
- if (!(i < arg.inputs.length)) return [3 /*break*/, 7];
243
+ if (!(i < inputCount)) return [3 /*break*/, 7];
244
+ progress();
245
245
  pathElems = (0, bip32_1.pathStringToArray)(arg.associatedKeysets[i]);
246
246
  if (!(accountXpub == "")) return [3 /*break*/, 4];
247
247
  // We assume all inputs belong to the same account so we set
@@ -251,7 +251,7 @@ var BtcNew = /** @class */ (function () {
251
251
  case 3:
252
252
  accountXpub = _a.sent();
253
253
  _a.label = 4;
254
- case 4: return [4 /*yield*/, this.setInput(psbt, i, arg.inputs[i], pathElems, accountType, masterFp)];
254
+ case 4: return [4 /*yield*/, this.setInput(psbt, i, arg.inputs[i], pathElems, accountType, masterFp, arg.sigHashType)];
255
255
  case 5:
256
256
  _a.sent();
257
257
  _a.label = 6;
@@ -272,34 +272,33 @@ var BtcNew = /** @class */ (function () {
272
272
  outputScript = outputsBufferReader.readVarSlice();
273
273
  psbt.setOutputAmount(i, amount);
274
274
  psbt.setOutputScript(i, outputScript);
275
- isChange = changeData && outputScript.equals(changeData === null || changeData === void 0 ? void 0 : changeData.script);
275
+ isChange = changeData && outputScript.equals(changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey);
276
276
  if (isChange) {
277
277
  changeFound = true;
278
278
  changePath = (0, bip32_1.pathStringToArray)(arg.changePath);
279
279
  pubkey = changeData.pubkey;
280
- if (accountType == AccountType.p2pkh) {
281
- psbt.setOutputBip32Derivation(i, pubkey, masterFp, changePath);
282
- }
283
- else if (accountType == AccountType.p2wpkh) {
284
- psbt.setOutputBip32Derivation(i, pubkey, masterFp, changePath);
285
- }
286
- else if (accountType == AccountType.p2wpkhWrapped) {
287
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
288
- psbt.setOutputRedeemScript(i, changeData.redeemScript);
289
- psbt.setOutputBip32Derivation(i, pubkey, masterFp, changePath);
290
- }
291
- else if (accountType == AccountType.p2tr) {
292
- psbt.setOutputTapBip32Derivation(i, pubkey, [], masterFp, changePath);
293
- }
280
+ accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);
294
281
  }
295
282
  }
296
283
  if (!changeFound) {
297
284
  throw new Error("Change script not found among outputs! " +
298
- (changeData === null || changeData === void 0 ? void 0 : changeData.script.toString("hex")));
285
+ (changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey.toString("hex")));
299
286
  }
300
287
  key = (0, policy_1.createKey)(masterFp, accountPath, accountXpub);
301
- p = new policy_1.WalletPolicy(accountType, key);
302
- return [4 /*yield*/, this.signPsbt(psbt, p)];
288
+ p = new policy_1.WalletPolicy(accountType.getDescriptorTemplate(), key);
289
+ // This is cheating, because it's not actually requested on the
290
+ // device yet, but it will be, soonish.
291
+ if (arg.onDeviceSignatureRequested)
292
+ arg.onDeviceSignatureRequested();
293
+ firstSigned = false;
294
+ progressCallback = function () {
295
+ if (!firstSigned) {
296
+ firstSigned = true;
297
+ arg.onDeviceSignatureGranted && arg.onDeviceSignatureGranted();
298
+ }
299
+ progress();
300
+ };
301
+ return [4 /*yield*/, this.signPsbt(psbt, p, progressCallback)];
303
302
  case 9:
304
303
  _a.sent();
305
304
  (0, psbtFinalizer_1.finalize)(psbt);
@@ -319,7 +318,7 @@ var BtcNew = /** @class */ (function () {
319
318
  */
320
319
  BtcNew.prototype.outputScriptAt = function (accountPath, accountType, path) {
321
320
  return __awaiter(this, void 0, void 0, function () {
322
- var pathElems, i, xpub, pubkey, script;
321
+ var pathElems, i, xpub, pubkey, cond;
323
322
  return __generator(this, function (_a) {
324
323
  switch (_a.label) {
325
324
  case 0:
@@ -337,11 +336,8 @@ var BtcNew = /** @class */ (function () {
337
336
  case 1:
338
337
  xpub = _a.sent();
339
338
  pubkey = (0, bip32_1.pubkeyFromXpub)(xpub);
340
- if (accountType == AccountType.p2tr) {
341
- pubkey = pubkey.slice(1);
342
- }
343
- script = outputScriptOf(pubkey, accountType);
344
- return [2 /*return*/, __assign(__assign({}, script), { pubkey: pubkey })];
339
+ cond = accountType.spendingCondition([pubkey]);
340
+ return [2 /*return*/, { cond: cond, pubkey: pubkey }];
345
341
  }
346
342
  });
347
343
  });
@@ -351,19 +347,22 @@ var BtcNew = /** @class */ (function () {
351
347
  * previous txid, output index, spent UTXO, redeem script for wrapped p2wpkh,
352
348
  * public key and its derivation path.
353
349
  */
354
- BtcNew.prototype.setInput = function (psbt, i, input, pathElements, accountType, masterFP) {
350
+ BtcNew.prototype.setInput = function (psbt, i, input, pathElements, accountType, masterFP, sigHashType) {
355
351
  return __awaiter(this, void 0, void 0, function () {
356
- var inputTx, spentOutputIndex, redeemScript, sequence, inputTxBuffer, inputTxid, xpubBase58, pubkey, spentOutput, expectedRedeemScript, xonly;
352
+ var inputTx, spentOutputIndex, redeemScript, sequence, inputTxBuffer, inputTxid, xpubBase58, pubkey, spentTxOutput, spendCondition, spentOutput;
357
353
  return __generator(this, function (_a) {
358
354
  switch (_a.label) {
359
355
  case 0:
360
356
  inputTx = input[0];
361
357
  spentOutputIndex = input[1];
362
- redeemScript = input[2];
358
+ redeemScript = input[2] ? Buffer.from(input[2], "hex") : undefined;
363
359
  sequence = input[3];
364
360
  if (sequence) {
365
361
  psbt.setInputSequence(i, sequence);
366
362
  }
363
+ if (sigHashType) {
364
+ psbt.setInputSighashType(i, sigHashType);
365
+ }
367
366
  inputTxBuffer = (0, serializeTransaction_1.serializeTransaction)(inputTx, true);
368
367
  inputTxid = bitcoinjs_lib_1.crypto.hash256(inputTxBuffer);
369
368
  return [4 /*yield*/, this.client.getExtendedPubkey(false, pathElements)];
@@ -372,34 +371,13 @@ var BtcNew = /** @class */ (function () {
372
371
  pubkey = (0, bip32_1.pubkeyFromXpub)(xpubBase58);
373
372
  if (!inputTx.outputs)
374
373
  throw Error("Missing outputs array in transaction to sign");
375
- spentOutput = inputTx.outputs[spentOutputIndex];
376
- if (accountType == AccountType.p2pkh) {
377
- psbt.setInputNonWitnessUtxo(i, inputTxBuffer);
378
- psbt.setInputBip32Derivation(i, pubkey, masterFP, pathElements);
379
- }
380
- else if (accountType == AccountType.p2wpkh) {
381
- psbt.setInputNonWitnessUtxo(i, inputTxBuffer);
382
- psbt.setInputBip32Derivation(i, pubkey, masterFP, pathElements);
383
- psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.script);
384
- }
385
- else if (accountType == AccountType.p2wpkhWrapped) {
386
- psbt.setInputNonWitnessUtxo(i, inputTxBuffer);
387
- psbt.setInputBip32Derivation(i, pubkey, masterFP, pathElements);
388
- if (!redeemScript) {
389
- throw new Error("Missing redeemScript for p2wpkhWrapped input");
390
- }
391
- expectedRedeemScript = createRedeemScript(pubkey);
392
- if (redeemScript != expectedRedeemScript.toString("hex")) {
393
- throw new Error("Unexpected redeemScript");
394
- }
395
- psbt.setInputRedeemScript(i, expectedRedeemScript);
396
- psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.script);
397
- }
398
- else if (accountType == AccountType.p2tr) {
399
- xonly = pubkey.slice(1);
400
- psbt.setInputTapBip32Derivation(i, xonly, [], masterFP, pathElements);
401
- psbt.setInputWitnessUtxo(i, spentOutput.amount, spentOutput.script);
402
- }
374
+ spentTxOutput = inputTx.outputs[spentOutputIndex];
375
+ spendCondition = {
376
+ scriptPubKey: spentTxOutput.script,
377
+ redeemScript: redeemScript
378
+ };
379
+ spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };
380
+ accountType.setInput(i, inputTxBuffer, spentOutput, [pubkey], [pathElements]);
403
381
  psbt.setInputPreviousTxId(i, inputTxid);
404
382
  psbt.setInputOutputIndex(i, spentOutputIndex);
405
383
  return [2 /*return*/];
@@ -416,12 +394,12 @@ var BtcNew = /** @class */ (function () {
416
394
  * comment in-line. The signatures returned from the hardware device is added
417
395
  * to the appropriate input fields of the PSBT.
418
396
  */
419
- BtcNew.prototype.signPsbt = function (psbt, walletPolicy) {
397
+ BtcNew.prototype.signPsbt = function (psbt, walletPolicy, progressCallback) {
420
398
  return __awaiter(this, void 0, void 0, function () {
421
399
  var sigs;
422
400
  return __generator(this, function (_a) {
423
401
  switch (_a.label) {
424
- case 0: return [4 /*yield*/, this.client.signPsbt(psbt, walletPolicy, Buffer.alloc(32, 0))];
402
+ case 0: return [4 /*yield*/, this.client.signPsbt(psbt, walletPolicy, Buffer.alloc(32, 0), progressCallback)];
425
403
  case 1:
426
404
  sigs = _a.sent();
427
405
  sigs.forEach(function (v, k) {
@@ -450,105 +428,24 @@ var BtcNew = /** @class */ (function () {
450
428
  return BtcNew;
451
429
  }());
452
430
  exports["default"] = BtcNew;
453
- var AccountType;
454
- (function (AccountType) {
455
- AccountType["p2pkh"] = "pkh(@0)";
456
- AccountType["p2wpkh"] = "wpkh(@0)";
457
- AccountType["p2wpkhWrapped"] = "sh(wpkh(@0))";
458
- AccountType["p2tr"] = "tr(@0)";
459
- })(AccountType || (AccountType = {}));
460
- function createRedeemScript(pubkey) {
461
- var pubkeyHash = (0, hashPublicKey_1.hashPublicKey)(pubkey);
462
- return Buffer.concat([Buffer.from("0014", "hex"), pubkeyHash]);
463
- }
464
- /**
465
- * Generates a single signature scriptPubKey (output script) from a public key.
466
- * This is done differently depending on account type.
467
- *
468
- * If accountType is p2tr, the public key must be a 32 byte x-only taproot
469
- * pubkey, otherwise it's expected to be a 33 byte ecdsa compressed pubkey.
470
- */
471
- function outputScriptOf(pubkey, accountType) {
472
- var buf = new buffertools_1.BufferWriter();
473
- var pubkeyHash = (0, hashPublicKey_1.hashPublicKey)(pubkey);
474
- var redeemScript;
475
- if (accountType == AccountType.p2pkh) {
476
- buf.writeSlice(Buffer.of(constants_1.OP_DUP, constants_1.OP_HASH160, constants_1.HASH_SIZE));
477
- buf.writeSlice(pubkeyHash);
478
- buf.writeSlice(Buffer.of(constants_1.OP_EQUALVERIFY, constants_1.OP_CHECKSIG));
479
- }
480
- else if (accountType == AccountType.p2wpkhWrapped) {
481
- redeemScript = createRedeemScript(pubkey);
482
- var scriptHash = (0, hashPublicKey_1.hashPublicKey)(redeemScript);
483
- buf.writeSlice(Buffer.of(constants_1.OP_HASH160, constants_1.HASH_SIZE));
484
- buf.writeSlice(scriptHash);
485
- buf.writeUInt8(constants_1.OP_EQUAL);
486
- }
487
- else if (accountType == AccountType.p2wpkh) {
488
- buf.writeSlice(Buffer.of(0, constants_1.HASH_SIZE));
489
- buf.writeSlice(pubkeyHash);
490
- }
491
- else if (accountType == AccountType.p2tr) {
492
- var outputKey = getTaprootOutputKey(pubkey);
493
- buf.writeSlice(Buffer.of(0x51, 32)); // push1, pubkeylen
494
- buf.writeSlice(outputKey);
495
- }
496
- return { script: buf.buffer(), redeemScript: redeemScript };
497
- }
498
- function accountTypeFrom(addressFormat) {
431
+ function descrTemplFrom(addressFormat) {
499
432
  if (addressFormat == "legacy")
500
- return AccountType.p2pkh;
433
+ return "pkh(@0)";
501
434
  if (addressFormat == "p2sh")
502
- return AccountType.p2wpkhWrapped;
435
+ return "sh(wpkh(@0))";
503
436
  if (addressFormat == "bech32")
504
- return AccountType.p2wpkh;
437
+ return "wpkh(@0)";
505
438
  if (addressFormat == "bech32m")
506
- return AccountType.p2tr;
439
+ return "tr(@0)";
507
440
  throw new Error("Unsupported address format " + addressFormat);
508
441
  }
509
- function accountTypeFromArg(arg) {
442
+ function accountTypeFromArg(arg, psbt, masterFp) {
510
443
  if (arg.additionals.includes("bech32m"))
511
- return AccountType.p2tr;
444
+ return new accounttype_1.p2tr(psbt, masterFp);
512
445
  if (arg.additionals.includes("bech32"))
513
- return AccountType.p2wpkh;
446
+ return new accounttype_1.p2wpkh(psbt, masterFp);
514
447
  if (arg.segwit)
515
- return AccountType.p2wpkhWrapped;
516
- return AccountType.p2pkh;
517
- }
518
- /*
519
- The following two functions are copied from wallet-btc and adapted.
520
- They should be moved to a library to avoid code reuse.
521
- */
522
- function hashTapTweak(x) {
523
- // hash_tag(x) = SHA256(SHA256(tag) || SHA256(tag) || x), see BIP340
524
- // See https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#specification
525
- var h = bitcoinjs_lib_1.crypto.sha256(Buffer.from("TapTweak", "utf-8"));
526
- return bitcoinjs_lib_1.crypto.sha256(Buffer.concat([h, h, x]));
527
- }
528
- /**
529
- * Calculates a taproot output key from an internal key. This output key will be
530
- * used as witness program in a taproot output. The internal key is tweaked
531
- * according to recommendation in BIP341:
532
- * https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0
533
- *
534
- * @param internalPubkey A 32 byte x-only taproot internal key
535
- * @returns The output key
536
- */
537
- function getTaprootOutputKey(internalPubkey) {
538
- if (internalPubkey.length != 32) {
539
- throw new Error("Expected 32 byte pubkey. Got " + internalPubkey.length);
540
- }
541
- // A BIP32 derived key can be converted to a schnorr pubkey by dropping
542
- // the first byte, which represent the oddness/evenness. In schnorr all
543
- // pubkeys are even.
544
- // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#public-key-conversion
545
- var evenEcdsaPubkey = Buffer.concat([Buffer.of(0x02), internalPubkey]);
546
- var tweak = hashTapTweak(internalPubkey);
547
- // Q = P + int(hash_TapTweak(bytes(P)))G
548
- var outputEcdsaKey = Buffer.from((0, tiny_secp256k1_1.pointAddScalar)(evenEcdsaPubkey, tweak));
549
- // Convert to schnorr.
550
- var outputSchnorrKey = outputEcdsaKey.slice(1);
551
- // Create address
552
- return outputSchnorrKey;
448
+ return new accounttype_1.p2wpkhWrapped(psbt, masterFp);
449
+ return new accounttype_1.p2pkh(psbt, masterFp);
553
450
  }
554
451
  //# sourceMappingURL=BtcNew.js.map
package/lib/BtcNew.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"BtcNew.js","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BtcNew.js","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /// <reference types="node" />
2
+ import { DefaultDescriptorTemplate } from "./policy";
3
+ import { PsbtV2 } from "./psbtv2";
4
+ export declare type SpendingCondition = {
5
+ scriptPubKey: Buffer;
6
+ redeemScript?: Buffer;
7
+ };
8
+ export declare type SpentOutput = {
9
+ cond: SpendingCondition;
10
+ amount: Buffer;
11
+ };
12
+ /**
13
+ * Encapsulates differences between account types, for example p2wpkh,
14
+ * p2wpkhWrapped, p2tr.
15
+ */
16
+ export interface AccountType {
17
+ /**
18
+ * Generates a scriptPubKey (output script) from a list of public keys. If a
19
+ * p2sh redeemScript or a p2wsh witnessScript is needed it will also be set on
20
+ * the returned SpendingCondition.
21
+ *
22
+ * The pubkeys are expected to be 33 byte ecdsa compressed pubkeys.
23
+ */
24
+ spendingCondition(pubkeys: Buffer[]): SpendingCondition;
25
+ /**
26
+ * Populates the psbt with account type-specific data for an input.
27
+ * @param i The index of the input map to populate
28
+ * @param inputTx The full transaction containing the spent output. This may
29
+ * be omitted for taproot.
30
+ * @param spentOutput The amount and spending condition of the spent output
31
+ * @param pubkeys The 33 byte ecdsa compressed public keys involved in the input
32
+ * @param pathElems The paths corresponding to the pubkeys, in same order.
33
+ */
34
+ setInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkeys: Buffer[], pathElems: number[][]): void;
35
+ /**
36
+ * Populates the psbt with account type-specific data for an output. This is typically
37
+ * done for change outputs and other outputs that goes to the same account as
38
+ * being spent from.
39
+ * @param i The index of the output map to populate
40
+ * @param cond The spending condition for this output
41
+ * @param pubkeys The 33 byte ecdsa compressed public keys involved in this output
42
+ * @param paths The paths corresponding to the pubkeys, in same order.
43
+ */
44
+ setOwnOutput(i: number, cond: SpendingCondition, pubkeys: Buffer[], paths: number[][]): void;
45
+ /**
46
+ * Returns the descriptor template for this account type. Currently only
47
+ * DefaultDescriptorTemplates are allowed, but that might be changed in the
48
+ * future. See class WalletPolicy for more information on descriptor
49
+ * templates.
50
+ */
51
+ getDescriptorTemplate(): DefaultDescriptorTemplate;
52
+ }
53
+ interface BaseAccount extends AccountType {
54
+ }
55
+ declare abstract class BaseAccount implements AccountType {
56
+ protected psbt: PsbtV2;
57
+ protected masterFp: Buffer;
58
+ constructor(psbt: PsbtV2, masterFp: Buffer);
59
+ }
60
+ /**
61
+ * Superclass for single signature accounts. This will make sure that the pubkey
62
+ * arrays and path arrays in the method arguments contains exactly one element
63
+ * and calls an abstract method to do the actual work.
64
+ */
65
+ declare abstract class SingleKeyAccount extends BaseAccount {
66
+ spendingCondition(pubkeys: Buffer[]): SpendingCondition;
67
+ protected abstract singleKeyCondition(pubkey: Buffer): SpendingCondition;
68
+ setInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkeys: Buffer[], pathElems: number[][]): void;
69
+ protected abstract setSingleKeyInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): any;
70
+ setOwnOutput(i: number, cond: SpendingCondition, pubkeys: Buffer[], paths: number[][]): void;
71
+ protected abstract setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): any;
72
+ }
73
+ export declare class p2pkh extends SingleKeyAccount {
74
+ singleKeyCondition(pubkey: Buffer): SpendingCondition;
75
+ setSingleKeyInput(i: number, inputTx: Buffer | undefined, _spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
76
+ setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
77
+ getDescriptorTemplate(): DefaultDescriptorTemplate;
78
+ }
79
+ export declare class p2tr extends SingleKeyAccount {
80
+ singleKeyCondition(pubkey: Buffer): SpendingCondition;
81
+ setSingleKeyInput(i: number, _inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
82
+ setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
83
+ getDescriptorTemplate(): DefaultDescriptorTemplate;
84
+ private hashTapTweak;
85
+ /**
86
+ * Calculates a taproot output key from an internal key. This output key will be
87
+ * used as witness program in a taproot output. The internal key is tweaked
88
+ * according to recommendation in BIP341:
89
+ * https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#cite_ref-22-0
90
+ *
91
+ * @param internalPubkey A 32 byte x-only taproot internal key
92
+ * @returns The output key
93
+ */
94
+ getTaprootOutputKey(internalPubkey: Buffer): Buffer;
95
+ }
96
+ export declare class p2wpkhWrapped extends SingleKeyAccount {
97
+ singleKeyCondition(pubkey: Buffer): SpendingCondition;
98
+ setSingleKeyInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
99
+ setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
100
+ getDescriptorTemplate(): DefaultDescriptorTemplate;
101
+ private createRedeemScript;
102
+ }
103
+ export declare class p2wpkh extends SingleKeyAccount {
104
+ singleKeyCondition(pubkey: Buffer): SpendingCondition;
105
+ setSingleKeyInput(i: number, inputTx: Buffer | undefined, spentOutput: SpentOutput, pubkey: Buffer, path: number[]): void;
106
+ setSingleKeyOutput(i: number, cond: SpendingCondition, pubkey: Buffer, path: number[]): void;
107
+ getDescriptorTemplate(): DefaultDescriptorTemplate;
108
+ }
109
+ export {};
110
+ //# sourceMappingURL=accounttype.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounttype.d.ts","sourceRoot":"","sources":["../../src/newops/accounttype.ts"],"names":[],"mappings":"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"}