@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.
- package/README.md +110 -47
- package/lib/Btc.d.ts.map +1 -1
- package/lib/Btc.js +5 -3
- package/lib/Btc.js.map +1 -1
- package/lib/BtcNew.d.ts +1 -1
- package/lib/BtcNew.d.ts.map +1 -1
- package/lib/BtcNew.js +71 -174
- package/lib/BtcNew.js.map +1 -1
- package/lib/newops/accounttype.d.ts +110 -0
- package/lib/newops/accounttype.d.ts.map +1 -0
- package/lib/newops/accounttype.js +236 -0
- package/lib/newops/accounttype.js.map +1 -0
- package/lib/newops/appClient.d.ts +1 -1
- package/lib/newops/appClient.d.ts.map +1 -1
- package/lib/newops/appClient.js +7 -7
- package/lib/newops/appClient.js.map +1 -1
- package/lib/newops/clientCommands.d.ts +3 -2
- package/lib/newops/clientCommands.d.ts.map +1 -1
- package/lib/newops/clientCommands.js +19 -12
- package/lib/newops/clientCommands.js.map +1 -1
- package/lib/newops/merkle.js +2 -2
- package/lib/newops/merkle.js.map +1 -1
- package/lib/newops/psbtExtractor.js +2 -2
- package/lib/newops/psbtExtractor.js.map +1 -1
- package/lib/newops/psbtv2.d.ts +3 -0
- package/lib/newops/psbtv2.d.ts.map +1 -1
- package/lib/newops/psbtv2.js +14 -4
- package/lib/newops/psbtv2.js.map +1 -1
- package/lib-es/Btc.d.ts.map +1 -1
- package/lib-es/Btc.js +5 -3
- package/lib-es/Btc.js.map +1 -1
- package/lib-es/BtcNew.d.ts +1 -1
- package/lib-es/BtcNew.d.ts.map +1 -1
- package/lib-es/BtcNew.js +73 -176
- package/lib-es/BtcNew.js.map +1 -1
- package/lib-es/newops/accounttype.d.ts +110 -0
- package/lib-es/newops/accounttype.d.ts.map +1 -0
- package/lib-es/newops/accounttype.js +233 -0
- package/lib-es/newops/accounttype.js.map +1 -0
- package/lib-es/newops/appClient.d.ts +1 -1
- package/lib-es/newops/appClient.d.ts.map +1 -1
- package/lib-es/newops/appClient.js +7 -7
- package/lib-es/newops/appClient.js.map +1 -1
- package/lib-es/newops/clientCommands.d.ts +3 -2
- package/lib-es/newops/clientCommands.d.ts.map +1 -1
- package/lib-es/newops/clientCommands.js +19 -12
- package/lib-es/newops/clientCommands.js.map +1 -1
- package/lib-es/newops/merkle.js +2 -2
- package/lib-es/newops/merkle.js.map +1 -1
- package/lib-es/newops/psbtExtractor.js +2 -2
- package/lib-es/newops/psbtExtractor.js.map +1 -1
- package/lib-es/newops/psbtv2.d.ts +3 -0
- package/lib-es/newops/psbtv2.d.ts.map +1 -1
- package/lib-es/newops/psbtv2.js +14 -4
- package/lib-es/newops/psbtv2.js.map +1 -1
- package/package.json +3 -3
- package/src/Btc.ts +34 -3
- package/src/BtcNew.ts +105 -174
- package/src/newops/accounttype.ts +373 -0
- package/src/newops/appClient.ts +8 -7
- package/src/newops/clientCommands.ts +19 -12
- package/src/newops/merkle.ts +2 -2
- package/src/newops/psbtExtractor.ts +2 -2
- package/src/newops/psbtv2.ts +13 -4
- package/tests/Btc.test.ts +68 -39
- package/tests/newops/BtcNew.test.ts +47 -20
- package/tests/newops/integrationtools.ts +91 -50
- package/tests/newops/merkle.test.ts +1 -1
- 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
|
|
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,
|
|
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,
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
225
|
+
psbt.setGlobalInputCount(inputCount);
|
|
234
226
|
psbt.setGlobalPsbtVersion(2);
|
|
235
227
|
psbt.setGlobalTxVersion(2);
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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 <
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
341
|
-
|
|
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,
|
|
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
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
|
|
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
|
-
|
|
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
|
|
433
|
+
return "pkh(@0)";
|
|
501
434
|
if (addressFormat == "p2sh")
|
|
502
|
-
return
|
|
435
|
+
return "sh(wpkh(@0))";
|
|
503
436
|
if (addressFormat == "bech32")
|
|
504
|
-
return
|
|
437
|
+
return "wpkh(@0)";
|
|
505
438
|
if (addressFormat == "bech32m")
|
|
506
|
-
return
|
|
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
|
|
444
|
+
return new accounttype_1.p2tr(psbt, masterFp);
|
|
512
445
|
if (arg.additionals.includes("bech32"))
|
|
513
|
-
return
|
|
446
|
+
return new accounttype_1.p2wpkh(psbt, masterFp);
|
|
514
447
|
if (arg.segwit)
|
|
515
|
-
return
|
|
516
|
-
return
|
|
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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"}
|