@scure/btc-signer 1.3.1 → 1.4.0

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 (95) hide show
  1. package/README.md +7 -10
  2. package/_type_test.d.ts.map +1 -0
  3. package/_type_test.js.map +1 -0
  4. package/esm/_type_test.d.ts +2 -0
  5. package/esm/_type_test.js.map +1 -0
  6. package/{lib → esm}/index.d.ts +5 -4
  7. package/esm/index.d.ts.map +1 -0
  8. package/{lib/esm → esm}/index.js +10 -3
  9. package/esm/index.js.map +1 -0
  10. package/{lib → esm}/payment.d.ts.map +1 -1
  11. package/{lib/esm → esm}/payment.js +6 -6
  12. package/esm/payment.js.map +1 -0
  13. package/{lib → esm}/psbt.d.ts +2 -16
  14. package/esm/psbt.d.ts.map +1 -0
  15. package/{lib/esm → esm}/psbt.js +7 -9
  16. package/esm/psbt.js.map +1 -0
  17. package/{lib → esm}/script.d.ts +15 -1
  18. package/{lib → esm}/script.d.ts.map +1 -1
  19. package/{lib/esm → esm}/script.js +14 -5
  20. package/esm/script.js.map +1 -0
  21. package/{lib → esm}/transaction.d.ts +16 -10
  22. package/esm/transaction.d.ts.map +1 -0
  23. package/{lib/esm → esm}/transaction.js +45 -19
  24. package/esm/transaction.js.map +1 -0
  25. package/{lib → esm}/utils.d.ts +4 -4
  26. package/esm/utils.d.ts.map +1 -0
  27. package/{lib/esm → esm}/utils.js +3 -2
  28. package/esm/utils.js.map +1 -0
  29. package/{lib → esm}/utxo.d.ts +18 -21
  30. package/esm/utxo.d.ts.map +1 -0
  31. package/{lib/esm → esm}/utxo.js +68 -30
  32. package/esm/utxo.js.map +1 -0
  33. package/index.d.ts +20 -0
  34. package/index.d.ts.map +1 -0
  35. package/{lib/index.js → index.js} +10 -2
  36. package/index.js.map +1 -0
  37. package/package.json +41 -44
  38. package/payment.d.ts +177 -0
  39. package/payment.d.ts.map +1 -0
  40. package/{lib/payment.js → payment.js} +17 -17
  41. package/payment.js.map +1 -0
  42. package/psbt.d.ts +820 -0
  43. package/psbt.d.ts.map +1 -0
  44. package/{lib/psbt.js → psbt.js} +12 -14
  45. package/psbt.js.map +1 -0
  46. package/script.d.ts +168 -0
  47. package/script.d.ts.map +1 -0
  48. package/{lib/script.js → script.js} +17 -8
  49. package/script.js.map +1 -0
  50. package/src/index.ts +17 -3
  51. package/src/payment.ts +8 -8
  52. package/src/psbt.ts +7 -9
  53. package/src/script.ts +14 -5
  54. package/src/transaction.ts +50 -20
  55. package/src/utils.ts +3 -2
  56. package/src/utxo.ts +91 -26
  57. package/transaction.d.ts +229 -0
  58. package/transaction.d.ts.map +1 -0
  59. package/{lib/transaction.js → transaction.js} +56 -30
  60. package/transaction.js.map +1 -0
  61. package/utils.d.ts +30 -0
  62. package/utils.d.ts.map +1 -0
  63. package/{lib/utils.js → utils.js} +13 -11
  64. package/utils.js.map +1 -0
  65. package/utxo.d.ts +248 -0
  66. package/utxo.d.ts.map +1 -0
  67. package/{lib/utxo.js → utxo.js} +72 -34
  68. package/utxo.js.map +1 -0
  69. package/lib/_type_test.js.map +0 -1
  70. package/lib/esm/_type_test.js.map +0 -1
  71. package/lib/esm/index.js.map +0 -1
  72. package/lib/esm/payment.js.map +0 -1
  73. package/lib/esm/psbt.js.map +0 -1
  74. package/lib/esm/script.js.map +0 -1
  75. package/lib/esm/transaction.js.map +0 -1
  76. package/lib/esm/utils.js.map +0 -1
  77. package/lib/esm/utxo.js.map +0 -1
  78. package/lib/index.d.ts.map +0 -1
  79. package/lib/index.js.map +0 -1
  80. package/lib/payment.js.map +0 -1
  81. package/lib/psbt.d.ts.map +0 -1
  82. package/lib/psbt.js.map +0 -1
  83. package/lib/script.js.map +0 -1
  84. package/lib/transaction.d.ts.map +0 -1
  85. package/lib/transaction.js.map +0 -1
  86. package/lib/utils.d.ts.map +0 -1
  87. package/lib/utils.js.map +0 -1
  88. package/lib/utxo.d.ts.map +0 -1
  89. package/lib/utxo.js.map +0 -1
  90. /package/{lib/_type_test.d.ts → _type_test.d.ts} +0 -0
  91. /package/{lib/_type_test.js → _type_test.js} +0 -0
  92. /package/{lib → esm}/_type_test.d.ts.map +0 -0
  93. /package/{lib/esm → esm}/_type_test.js +0 -0
  94. /package/{lib/esm → esm}/package.json +0 -0
  95. /package/{lib → esm}/payment.d.ts +0 -0
@@ -4,7 +4,7 @@ import { Address, OutScript, checkScript, tapLeafHash } from './payment.js';
4
4
  import * as psbt from './psbt.js';
5
5
  import { CompactSizeLen, RawTx, RawWitness, Script, VarBytes } from './script.js';
6
6
  import { DEFAULT_SEQUENCE, inputBeforeSign, SignatureHash, Transaction, } from './transaction.js'; // circular
7
- import { NETWORK, compareBytes, isBytes, TAPROOT_UNSPENDABLE_KEY, sha256 } from './utils.js';
7
+ import { NETWORK, compareBytes, equalBytes, isBytes, TAPROOT_UNSPENDABLE_KEY, sha256, } from './utils.js';
8
8
  import { validatePubkey, PubT } from './utils.js';
9
9
  // Normalizes input
10
10
  export function getPrevOut(input) {
@@ -154,7 +154,7 @@ function iterLeafs(tapLeafScript, sigSize, customScripts) {
154
154
  if (csEncoded === undefined)
155
155
  continue;
156
156
  const pubKeys = scriptDecoded.filter((i) => {
157
- if (!P.isBytes(i))
157
+ if (!isBytes(i))
158
158
  return false;
159
159
  try {
160
160
  validatePubkey(i, PubT.schnorr);
@@ -181,7 +181,7 @@ function estimateInput(inputType, input, opts) {
181
181
  // schnorr sig is always 64 bytes. except for cases when sighash is not default!
182
182
  if (inputType.txType === 'taproot') {
183
183
  const SCHNORR_SIG_SIZE = inputType.sighash !== SignatureHash.DEFAULT ? 65 : 64;
184
- if (input.tapInternalKey && !P.equalBytes(input.tapInternalKey, TAPROOT_UNSPENDABLE_KEY)) {
184
+ if (input.tapInternalKey && !equalBytes(input.tapInternalKey, TAPROOT_UNSPENDABLE_KEY)) {
185
185
  witness = [new Uint8Array(SCHNORR_SIG_SIZE)];
186
186
  }
187
187
  else if (input.tapLeafScript) {
@@ -274,7 +274,7 @@ function getScript(o, opts = {}, network = NETWORK) {
274
274
  if (!script)
275
275
  throw new Error('Estimator: wrong output script');
276
276
  if (typeof o.amount !== 'bigint')
277
- throw new Error(`Estimator: wrong output amount=${o.amount}`);
277
+ throw new Error(`Estimator: wrong output amount=${o.amount}, should be of type bigint but got ${typeof o.amount}.`);
278
278
  if (script && !opts.allowUnknownOutputs && OutScript.decode(script).type === 'unknown') {
279
279
  throw new Error('Estimator: unknown output script type, there is a chance that input is unspendable. Pass allowUnknownOutputs=true, if you sure');
280
280
  }
@@ -286,22 +286,37 @@ function getScript(o, opts = {}, network = NETWORK) {
286
286
  // internal stuff, exported for tests only
287
287
  export class _Estimator {
288
288
  constructor(inputs, outputs, opts) {
289
- this.inputs = inputs;
290
289
  this.outputs = outputs;
291
290
  this.opts = opts;
292
- // https://github.com/bitcoin/bitcoin/blob/f90603ac6d24f5263649675d51233f1fce8b2ecd/src/policy/policy.cpp#L44
293
- // 32 + 4 + 1 + 107 + 4
294
- // Dust used in accumExact + change address algo
295
- // - change address: can be smaller for segwit
296
- // - accumExact: ???
297
- this.dust = 148n; // compat with coinselect
291
+ this.requiredIndices = [];
298
292
  if (typeof opts.feePerByte !== 'bigint')
299
- throw new Error(`Estimator: wrong feePerByte=${opts.feePerByte}`);
300
- if (opts.dust) {
301
- if (typeof opts.dust !== 'bigint')
302
- throw new Error(`Estimator: wrong dust=${opts.dust}`);
303
- this.dust = opts.dust;
293
+ throw new Error(`Estimator: wrong feePerByte=${opts.feePerByte}, should be of type bigint but got ${typeof opts.feePerByte}.`);
294
+ // Dust stuff
295
+ // TODO: think about this more:
296
+ // - current dust filters tx which cannot be relayed by core
297
+ // - but actual dust meaning is 'can be this amount spent?'
298
+ // - dust contains full tx size. but we can use other inputs to pay for outputDust (and parially inputsDust)?
299
+ // - not sure if we can spent anything with feePerByte: 3. It will be relayed, but will it be mined?
300
+ // - for now it works exactly as bitcoin-core. But will create change/outputs which cannot be spent (reasonable).
301
+ // Number of bytes needed to create and spend a UTXO.
302
+ // https://github.com/bitcoin/bitcoin/blob/27a770b34b8f1dbb84760f442edb3e23a0c2420b/src/policy/policy.cpp#L28-L41
303
+ const inputsDust = 32 + 4 + 1 + 107 + 4; // NOTE: can be smaller for segwit tx?
304
+ const outputDust = 34; // NOTE: 'nSize = GetSerializeSize(txout)'
305
+ const dustBytes = opts.dust === undefined ? BigInt(inputsDust + outputDust) : opts.dust;
306
+ if (typeof dustBytes !== 'bigint') {
307
+ throw new Error(`Estimator: wrong dust=${opts.dust}, should be of type bigint but got ${typeof opts.dust}.`);
304
308
  }
309
+ // 3 sat/vb is the default minimum fee rate used to calculate dust thresholds by bitcoin core.
310
+ // 3000 sat/kvb -> 3 sat/vb.
311
+ // https://github.com/bitcoin/bitcoin/blob/27a770b34b8f1dbb84760f442edb3e23a0c2420b/src/policy/policy.h#L55
312
+ const dustFee = opts.dustRelayFeeRate === undefined ? 3n : opts.dustRelayFeeRate;
313
+ if (typeof dustFee !== 'bigint') {
314
+ throw new Error(`Estimator: wrong dustRelayFeeRate=${opts.dustRelayFeeRate}, should be of type bigint but got ${typeof opts.dustRelayFeeRate}.`);
315
+ }
316
+ // Dust uses feePerbyte by default, but we allow separate dust fee if needed
317
+ this.dust = dustBytes * dustFee;
318
+ if (opts.requiredInputs !== undefined && !Array.isArray(opts.requiredInputs))
319
+ throw new Error(`Estimator: wrong required inputs=${opts.requiredInputs}`);
305
320
  const network = opts.network || NETWORK;
306
321
  let amount = 0n;
307
322
  // Base weight: tx with outputs, no inputs
@@ -322,9 +337,19 @@ export class _Estimator {
322
337
  this.baseWeight = baseWeight;
323
338
  this.changeWeight = changeWeight;
324
339
  this.amount = amount;
325
- this.normalizedInputs = this.inputs.map((i) => {
340
+ const allInputs = Array.from(inputs);
341
+ if (opts.requiredInputs) {
342
+ for (let i = 0; i < opts.requiredInputs.length; i++)
343
+ this.requiredIndices.push(allInputs.push(opts.requiredInputs[i]) - 1);
344
+ }
345
+ const inputKeys = new Set();
346
+ this.normalizedInputs = allInputs.map((i) => {
326
347
  const normalized = normalizeInput(i, undefined, undefined, opts.disableScriptCheck);
327
348
  inputBeforeSign(normalized); // check fields
349
+ const key = `${hex.encode(normalized.txid)}:${normalized.index}`;
350
+ if (!opts.allowSameUtxo && inputKeys.has(key))
351
+ throw new Error(`Estimator: same input passed multiple times: ${key}`);
352
+ inputKeys.add(key);
328
353
  const inputType = getInputType(normalized, opts.allowLegacyWitnessUtxo);
329
354
  const prev = getPrevOut(normalized);
330
355
  const estimate = estimateInput(inputType, normalized, this.opts);
@@ -333,7 +358,7 @@ export class _Estimator {
333
358
  });
334
359
  }
335
360
  checkInputIdx(idx) {
336
- if (!Number.isSafeInteger(idx) || 0 > idx || idx >= this.inputs.length)
361
+ if (!Number.isSafeInteger(idx) || 0 > idx || idx >= this.normalizedInputs.length)
337
362
  throw new Error(`Wrong input index=${idx}`);
338
363
  return idx;
339
364
  }
@@ -364,7 +389,7 @@ export class _Estimator {
364
389
  }
365
390
  // Sort by value instead of amount
366
391
  get biggest() {
367
- return this.inputs
392
+ return this.normalizedInputs
368
393
  .map((_i, j) => j)
369
394
  .sort((a, b) => _cmpBig(this.normalizedInputs[b].value, this.normalizedInputs[a].value));
370
395
  }
@@ -375,7 +400,7 @@ export class _Estimator {
375
400
  // Otherwise, we have no way to know which tx is oldest
376
401
  // Explorers usually give UTXO in this order.
377
402
  get oldest() {
378
- return this.inputs.map((_i, j) => j);
403
+ return this.normalizedInputs.map((_i, j) => j);
379
404
  }
380
405
  get newest() {
381
406
  return this.oldest.reverse();
@@ -384,7 +409,6 @@ export class _Estimator {
384
409
  // exact(biggest) will select one big utxo which is closer to targetValue+dust, if possible.
385
410
  // If not, it will accumulate largest utxo until value is close to targetValue+dust.
386
411
  accumulate(indices, exact = false, skipNegative = true, all = false) {
387
- const { feePerByte } = this.opts;
388
412
  // TODO: how to handle change addresses?
389
413
  // - cost of input
390
414
  // - cost of change output (if input requires change)
@@ -400,6 +424,24 @@ export class _Estimator {
400
424
  const targetAmount = this.amount;
401
425
  const res = [];
402
426
  let fee;
427
+ for (const idx of this.requiredIndices) {
428
+ this.checkInputIdx(idx);
429
+ const { estimate, amount } = this.normalizedInputs[idx];
430
+ let newWeight = weight + estimate.weight;
431
+ if (!hasWitnesses && estimate.hasWitnesses)
432
+ newWeight += 2; // enable witness if needed
433
+ const totalWeight = newWeight + 4 * CompactSizeLen.encode(num).length; // number of outputs can change weight
434
+ fee = this.getSatoshi(totalWeight);
435
+ weight = newWeight;
436
+ if (estimate.hasWitnesses)
437
+ hasWitnesses = true;
438
+ num++;
439
+ inputsAmount += amount;
440
+ res.push(idx);
441
+ // inputsAmount is enough to cover cost of tx
442
+ if (!all && targetAmount + fee <= inputsAmount)
443
+ return { indices: res, fee, weight: totalWeight, total: inputsAmount };
444
+ }
403
445
  for (const idx of indices) {
404
446
  this.checkInputIdx(idx);
405
447
  const { estimate, amount, value } = this.normalizedInputs[idx];
@@ -409,12 +451,8 @@ export class _Estimator {
409
451
  const totalWeight = newWeight + 4 * CompactSizeLen.encode(num).length; // number of outputs can change weight
410
452
  fee = this.getSatoshi(totalWeight);
411
453
  // Best case scenario exact(biggest) -> we find biggest output, less than target+threshold
412
- if (exact) {
413
- const dust = this.dust * feePerByte;
414
- // skip if added value is bigger than dust
415
- if (amount + inputsAmount > targetAmount + fee + dust)
416
- continue;
417
- }
454
+ if (exact && amount + inputsAmount > targetAmount + fee + this.dust)
455
+ continue; // skip if added value is bigger than dust
418
456
  // Negative: cost of using input is more than value provided (negative)
419
457
  // By default 'blackjack' mode in coinselect doesn't use that, which means
420
458
  // it will use negative output if sorted by 'smallest'
@@ -427,7 +465,7 @@ export class _Estimator {
427
465
  inputsAmount += amount;
428
466
  res.push(idx);
429
467
  // inputsAmount is enough to cover cost of tx
430
- if (!all && targetAmount + fee < inputsAmount)
468
+ if (!all && targetAmount + fee <= inputsAmount)
431
469
  return { indices: res, fee, weight: totalWeight, total: inputsAmount };
432
470
  }
433
471
  if (all) {
@@ -446,7 +484,7 @@ export class _Estimator {
446
484
  }
447
485
  select(strategy) {
448
486
  if (strategy === 'all') {
449
- return this.accumulate(this.inputs.map((_, j) => j), false, true, true);
487
+ return this.accumulate(this.normalizedInputs.map((_, j) => j), false, true, true);
450
488
  }
451
489
  if (strategy === 'default')
452
490
  return this.default();
@@ -501,7 +539,7 @@ export class _Estimator {
501
539
  outputs = this.sortOutputs(outputs).map((i) => outputs[i]);
502
540
  }
503
541
  const res = {
504
- inputs: inputs.map((i) => this.inputs[i]),
542
+ inputs: inputs.map((i) => this.normalizedInputs[i].normalized),
505
543
  outputs,
506
544
  fee,
507
545
  weight: this.opts.alwaysChange ? s.weight : changeWeight,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utxo.js","sourceRoot":"","sources":["../src/utxo.ts"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ /*! scure-btc-signer - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { compareBytes, taprootTweakPubkey } from './utils.js';
3
+ export { p2pk, p2pkh, p2sh, p2ms, p2wsh, p2wpkh, p2tr, p2tr_ns, p2tr_ms, p2tr_pk, multisig } from './payment.js';
4
+ export { OP, RawTx, CompactSize, RawWitness, Script, ScriptNum, ScriptType, MAX_SCRIPT_BYTE_LENGTH, } from './script.js';
5
+ export { Transaction } from './transaction.js';
6
+ export { getInputType, selectUTXO } from './utxo.js';
7
+ export { NETWORK, TEST_NETWORK, TAPROOT_UNSPENDABLE_KEY } from './utils.js';
8
+ export declare const utils: {
9
+ isBytes: (a: unknown) => a is import("micro-packed").Bytes;
10
+ concatBytes: (...arrays: Uint8Array[]) => Uint8Array;
11
+ compareBytes: typeof compareBytes;
12
+ pubSchnorr: (priv: string | Uint8Array) => Uint8Array;
13
+ randomPrivateKeyBytes: () => Uint8Array;
14
+ taprootTweakPubkey: typeof taprootTweakPubkey;
15
+ };
16
+ export { Address, getAddress, WIF, OptScript, CustomScript, taprootListToTree, OutScript, _sortPubkeys, sortedMultisig, combinations } from './payment.js';
17
+ export { _DebugPSBT, TaprootControlBlock } from './psbt.js';
18
+ export { Decimal, bip32Path, SigHash, PSBTCombine, DEFAULT_SEQUENCE } from './transaction.js';
19
+ export { _cmpBig, _Estimator } from './utxo.js';
20
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAGL,YAAY,EAGZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACvE,QAAQ,EACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAClC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,sBAAsB,GACtD,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE5E,eAAO,MAAM,KAAK;;;;;;;CAOjB,CAAC;AAIF,OAAO,EACL,OAAO,EAAE,UAAU,EAAE,GAAG,EACxB,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EACzE,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._Estimator = exports._cmpBig = exports.DEFAULT_SEQUENCE = exports.PSBTCombine = exports.SigHash = exports.bip32Path = exports.Decimal = exports.TaprootControlBlock = exports._DebugPSBT = exports.combinations = exports.sortedMultisig = exports._sortPubkeys = exports.OutScript = exports.taprootListToTree = exports.WIF = exports.getAddress = exports.Address = exports.utils = exports.TAPROOT_UNSPENDABLE_KEY = exports.TEST_NETWORK = exports.NETWORK = exports.selectUTXO = exports.getInputType = exports.Transaction = exports.MAX_SCRIPT_BYTE_LENGTH = exports.ScriptNum = exports.Script = exports.CompactSize = exports.RawTx = exports.OP = exports.multisig = exports.p2tr_pk = exports.p2tr_ms = exports.p2tr_ns = exports.p2tr = exports.p2wpkh = exports.p2wsh = exports.p2ms = exports.p2sh = exports.p2pkh = exports.p2pk = void 0;
3
+ exports._Estimator = exports._cmpBig = exports.DEFAULT_SEQUENCE = exports.PSBTCombine = exports.SigHash = exports.bip32Path = exports.Decimal = exports.TaprootControlBlock = exports._DebugPSBT = exports.combinations = exports.sortedMultisig = exports._sortPubkeys = exports.OutScript = exports.taprootListToTree = exports.WIF = exports.getAddress = exports.Address = exports.utils = exports.TAPROOT_UNSPENDABLE_KEY = exports.TEST_NETWORK = exports.NETWORK = exports.selectUTXO = exports.getInputType = exports.Transaction = exports.MAX_SCRIPT_BYTE_LENGTH = exports.ScriptNum = exports.Script = exports.RawWitness = exports.CompactSize = exports.RawTx = exports.OP = exports.multisig = exports.p2tr_pk = exports.p2tr_ms = exports.p2tr_ns = exports.p2tr = exports.p2wpkh = exports.p2wsh = exports.p2ms = exports.p2sh = exports.p2pkh = exports.p2pk = void 0;
4
4
  /*! scure-btc-signer - MIT License (c) 2022 Paul Miller (paulmillr.com) */
5
5
  const utils_js_1 = require("./utils.js");
6
6
  // prettier-ignore
@@ -21,6 +21,7 @@ var script_js_1 = require("./script.js");
21
21
  Object.defineProperty(exports, "OP", { enumerable: true, get: function () { return script_js_1.OP; } });
22
22
  Object.defineProperty(exports, "RawTx", { enumerable: true, get: function () { return script_js_1.RawTx; } });
23
23
  Object.defineProperty(exports, "CompactSize", { enumerable: true, get: function () { return script_js_1.CompactSize; } });
24
+ Object.defineProperty(exports, "RawWitness", { enumerable: true, get: function () { return script_js_1.RawWitness; } });
24
25
  Object.defineProperty(exports, "Script", { enumerable: true, get: function () { return script_js_1.Script; } });
25
26
  Object.defineProperty(exports, "ScriptNum", { enumerable: true, get: function () { return script_js_1.ScriptNum; } });
26
27
  Object.defineProperty(exports, "MAX_SCRIPT_BYTE_LENGTH", { enumerable: true, get: function () { return script_js_1.MAX_SCRIPT_BYTE_LENGTH; } });
@@ -33,7 +34,14 @@ var utils_js_2 = require("./utils.js");
33
34
  Object.defineProperty(exports, "NETWORK", { enumerable: true, get: function () { return utils_js_2.NETWORK; } });
34
35
  Object.defineProperty(exports, "TEST_NETWORK", { enumerable: true, get: function () { return utils_js_2.TEST_NETWORK; } });
35
36
  Object.defineProperty(exports, "TAPROOT_UNSPENDABLE_KEY", { enumerable: true, get: function () { return utils_js_2.TAPROOT_UNSPENDABLE_KEY; } });
36
- exports.utils = { isBytes: utils_js_1.isBytes, concatBytes: utils_js_1.concatBytes, compareBytes: utils_js_1.compareBytes, pubSchnorr: utils_js_1.pubSchnorr, randomPrivateKeyBytes: utils_js_1.randomPrivateKeyBytes };
37
+ exports.utils = {
38
+ isBytes: utils_js_1.isBytes,
39
+ concatBytes: utils_js_1.concatBytes,
40
+ compareBytes: utils_js_1.compareBytes,
41
+ pubSchnorr: utils_js_1.pubSchnorr,
42
+ randomPrivateKeyBytes: utils_js_1.randomPrivateKeyBytes,
43
+ taprootTweakPubkey: utils_js_1.taprootTweakPubkey,
44
+ };
37
45
  // Utils
38
46
  // prettier-ignore
39
47
  var payment_js_2 = require("./payment.js"); // remove
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAAA,0EAA0E;AAC1E,yCAOoB;AACpB,kBAAkB;AAClB,2CAGsB;AAFpB,kGAAA,IAAI,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,qGAAA,OAAO,OAAA;AACvE,sGAAA,QAAQ,OAAA,CAAC,sBAAsB;AAEjC,kBAAkB;AAClB,yCAGqB;AAFnB,+FAAA,EAAE,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,uGAAA,UAAU,OAAA;AAClC,mGAAA,MAAM,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAc,mHAAA,sBAAsB,OAAA;AAEvD,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AACpB,qCAAqD;AAA5C,uGAAA,YAAY,OAAA;AAAE,qGAAA,UAAU,OAAA;AACjC,uCAA4E;AAAnE,mGAAA,OAAO,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAE1C,QAAA,KAAK,GAAG;IACnB,OAAO,EAAP,kBAAO;IACP,WAAW,EAAX,sBAAW;IACX,YAAY,EAAZ,uBAAY;IACZ,UAAU,EAAV,qBAAU;IACV,qBAAqB,EAArB,gCAAqB;IACrB,kBAAkB,EAAlB,6BAAkB;CACnB,CAAC;AAEF,QAAQ;AACR,kBAAkB;AAClB,2CAIsB,CAAC,SAAS;AAH9B,qGAAA,OAAO,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,iGAAA,GAAG,OAAA;AAExB,+GAAA,iBAAiB,OAAA;AAAE,uGAAA,SAAS,OAAA;AAAE,0GAAA,YAAY,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,0GAAA,YAAY,OAAA;AAE1E,qCAA4D,CAAC,SAAS;AAA7D,qGAAA,UAAU,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AACxC,mDAA8F,CAAC,SAAS;AAA/F,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AACnE,qCAAgD;AAAvC,kGAAA,OAAO,OAAA;AAAE,qGAAA,UAAU,OAAA"}
package/package.json CHANGED
@@ -1,69 +1,66 @@
1
1
  {
2
2
  "name": "@scure/btc-signer",
3
- "version": "1.3.1",
4
- "description": "Audited & minimal library for creating, signing & decoding Bitcoin transactions: with Schnorr, Taproot, UTXO & PSBT",
3
+ "version": "1.4.0",
4
+ "description": "Audited & minimal library for Bitcoin. Handle transactions, Schnorr, Taproot, UTXO & PSBT",
5
5
  "files": [
6
- "lib",
7
- "src"
6
+ "esm",
7
+ "src",
8
+ "*.js",
9
+ "*.d.ts",
10
+ "*.js.map",
11
+ "*.d.ts.map"
8
12
  ],
9
- "main": "lib/index.js",
10
- "module": "lib/esm/index.js",
11
- "types": "lib/index.d.ts",
13
+ "main": "./index.js",
14
+ "module": "./esm/index.js",
15
+ "types": "./index.d.ts",
16
+ "dependencies": {
17
+ "@noble/curves": "~1.6.0",
18
+ "@noble/hashes": "~1.5.0",
19
+ "@scure/base": "~1.1.9",
20
+ "micro-packed": "~0.6.2"
21
+ },
22
+ "devDependencies": {
23
+ "@paulmillr/jsbt": "0.2.1",
24
+ "@scure/bip32": "~1.5.0",
25
+ "micro-should": "0.4.0",
26
+ "prettier": "3.3.2",
27
+ "typescript": "5.5.2"
28
+ },
12
29
  "exports": {
13
30
  ".": {
14
- "types": "./lib/index.d.ts",
15
- "import": "./lib/esm/index.js",
16
- "default": "./lib/index.js"
31
+ "import": "./esm/index.js",
32
+ "require": "./index.js"
17
33
  },
18
34
  "./index": {
19
- "types": "./lib/index.d.ts",
20
- "import": "./lib/esm/index.js",
21
- "default": "./lib/index.js"
35
+ "import": "./esm/index.js",
36
+ "require": "./index.js"
22
37
  },
23
38
  "./payment": {
24
- "types": "./lib/payment.d.ts",
25
- "import": "./lib/esm/payment.js",
26
- "default": "./lib/payment.js"
39
+ "import": "./esm/payment.js",
40
+ "require": "./payment.js"
27
41
  },
28
42
  "./psbt": {
29
- "types": "./lib/psbt.d.ts",
30
- "import": "./lib/esm/psbt.js",
31
- "default": "./lib/psbt.js"
43
+ "import": "./esm/psbt.js",
44
+ "require": "./psbt.js"
32
45
  },
33
46
  "./script": {
34
- "types": "./lib/script.d.ts",
35
- "import": "./lib/esm/script.js",
36
- "default": "./lib/script.js"
47
+ "import": "./esm/script.js",
48
+ "require": "./script.js"
37
49
  },
38
50
  "./transaction": {
39
- "types": "./lib/transaction.d.ts",
40
- "import": "./lib/esm/transaction.js",
41
- "default": "./lib/transaction.js"
51
+ "import": "./esm/transaction.js",
52
+ "require": "./transaction.js"
42
53
  },
43
54
  "./utils": {
44
- "types": "./lib/utils.d.ts",
45
- "import": "./lib/esm/utils.js",
46
- "default": "./lib/utils.js"
55
+ "import": "./esm/utils.js",
56
+ "require": "./utils.js"
47
57
  },
48
58
  "./utxo": {
49
- "types": "./lib/utxo.d.ts",
50
- "import": "./lib/esm/utxo.js",
51
- "default": "./lib/utxo.js"
59
+ "import": "./esm/utxo.js",
60
+ "require": "./utxo.js"
52
61
  }
53
62
  },
54
- "dependencies": {
55
- "@noble/curves": "~1.4.0",
56
- "@noble/hashes": "~1.4.0",
57
- "@scure/base": "~1.1.6",
58
- "micro-packed": "~0.5.3"
59
- },
60
- "devDependencies": {
61
- "@paulmillr/jsbt": "0.1.0",
62
- "@scure/bip32": "~1.4.0",
63
- "micro-should": "0.4.0",
64
- "prettier": "3.1.1",
65
- "typescript": "5.3.2"
66
- },
63
+ "sideEffects": false,
67
64
  "author": "Paul Miller (https://paulmillr.com)",
68
65
  "license": "MIT",
69
66
  "homepage": "https://github.com/paulmillr/scure-btc-signer",
package/payment.d.ts ADDED
@@ -0,0 +1,177 @@
1
+ import { Coder } from '@scure/base';
2
+ import * as P from 'micro-packed';
3
+ import { TransactionInput } from './psbt.js';
4
+ import { ScriptType } from './script.js';
5
+ import { Bytes } from './utils.js';
6
+ export type P2Ret = {
7
+ type: string;
8
+ script: Bytes;
9
+ address?: string;
10
+ redeemScript?: Bytes;
11
+ witnessScript?: Bytes;
12
+ };
13
+ type OutPKType = {
14
+ type: 'pk';
15
+ pubkey: Bytes;
16
+ };
17
+ export type OptScript = ScriptType | undefined;
18
+ type OutPKHType = {
19
+ type: 'pkh';
20
+ hash: Bytes;
21
+ };
22
+ type OutSHType = {
23
+ type: 'sh';
24
+ hash: Bytes;
25
+ };
26
+ type OutWSHType = {
27
+ type: 'wsh';
28
+ hash: Bytes;
29
+ };
30
+ type OutWPKHType = {
31
+ type: 'wpkh';
32
+ hash: Bytes;
33
+ };
34
+ type OutMSType = {
35
+ type: 'ms';
36
+ pubkeys: Bytes[];
37
+ m: number;
38
+ };
39
+ type OutTRType = {
40
+ type: 'tr';
41
+ pubkey: Bytes;
42
+ };
43
+ type OutTRNSType = {
44
+ type: 'tr_ns';
45
+ pubkeys: Bytes[];
46
+ };
47
+ type OutTRMSType = {
48
+ type: 'tr_ms';
49
+ pubkeys: Bytes[];
50
+ m: number;
51
+ };
52
+ type OutUnknownType = {
53
+ type: 'unknown';
54
+ script: Bytes;
55
+ };
56
+ type FinalizeSignature = [{
57
+ pubKey: Bytes;
58
+ leafHash: Bytes;
59
+ }, Bytes];
60
+ type CustomScriptOut = {
61
+ type: string;
62
+ } & Record<string, any>;
63
+ export type CustomScript = Coder<OptScript, CustomScriptOut | undefined> & {
64
+ finalizeTaproot?: (script: Bytes, parsed: CustomScriptOut, signatures: FinalizeSignature[]) => Bytes[] | undefined;
65
+ };
66
+ export declare const OutScript: P.CoderType<NonNullable<OutPKType | OutPKHType | OutSHType | OutWSHType | OutWPKHType | OutMSType | OutTRType | OutTRNSType | OutTRMSType | OutUnknownType | undefined>>;
67
+ export type OutScriptType = typeof OutScript;
68
+ export declare function checkScript(script?: Bytes, redeemScript?: Bytes, witnessScript?: Bytes): void;
69
+ export declare const p2pk: (pubkey: Bytes, network?: {
70
+ bech32: string;
71
+ pubKeyHash: number;
72
+ scriptHash: number;
73
+ wif: number;
74
+ }) => P2Ret;
75
+ export declare const p2pkh: (publicKey: Bytes, network?: {
76
+ bech32: string;
77
+ pubKeyHash: number;
78
+ scriptHash: number;
79
+ wif: number;
80
+ }) => P2Ret;
81
+ export declare const p2sh: (child: P2Ret, network?: {
82
+ bech32: string;
83
+ pubKeyHash: number;
84
+ scriptHash: number;
85
+ wif: number;
86
+ }) => P2Ret;
87
+ export declare const p2wsh: (child: P2Ret, network?: {
88
+ bech32: string;
89
+ pubKeyHash: number;
90
+ scriptHash: number;
91
+ wif: number;
92
+ }) => P2Ret;
93
+ export declare const p2wpkh: (publicKey: Bytes, network?: {
94
+ bech32: string;
95
+ pubKeyHash: number;
96
+ scriptHash: number;
97
+ wif: number;
98
+ }) => P2Ret;
99
+ export declare const p2ms: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => P2Ret;
100
+ export type P2TROut = P2Ret & {
101
+ tweakedPubkey: Uint8Array;
102
+ tapInternalKey: Uint8Array;
103
+ tapMerkleRoot?: Uint8Array;
104
+ tapLeafScript?: TransactionInput['tapLeafScript'];
105
+ leaves?: TaprootLeaf[];
106
+ };
107
+ export type TaprootNode = {
108
+ script: Bytes | string;
109
+ leafVersion?: number;
110
+ weight?: number;
111
+ } & Partial<P2TROut>;
112
+ export type TaprootScriptTree = TaprootNode | TaprootScriptTree[];
113
+ export type TaprootScriptList = TaprootNode[];
114
+ export declare function taprootListToTree(taprootList: TaprootScriptList): TaprootScriptTree;
115
+ type TaprootLeaf = {
116
+ type: 'leaf';
117
+ version?: number;
118
+ script: Bytes;
119
+ hash: Bytes;
120
+ path: Bytes[];
121
+ };
122
+ export declare const TAP_LEAF_VERSION = 192;
123
+ export declare const tapLeafHash: (script: Bytes, version?: number) => Uint8Array;
124
+ export declare function p2tr(internalPubKey?: Bytes | string, tree?: TaprootScriptTree, network?: {
125
+ bech32: string;
126
+ pubKeyHash: number;
127
+ scriptHash: number;
128
+ wif: number;
129
+ }, allowUnknownOutputs?: boolean, customScripts?: CustomScript[]): P2TROut;
130
+ export declare function combinations<T>(m: number, list: T[]): T[][];
131
+ /**
132
+ * M-of-N multi-leaf wallet via p2tr_ns. If m == n, single script is emitted.
133
+ * Takes O(n^2) if m != n. 99-of-100 is ok, 5-of-100 is not.
134
+ * `2-of-[A,B,C] => [A,B] | [A,C] | [B,C]`
135
+ */
136
+ export declare const p2tr_ns: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => P2Ret[];
137
+ export declare const p2tr_pk: (pubkey: Bytes) => P2Ret;
138
+ export declare function p2tr_ms(m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean): {
139
+ type: string;
140
+ script: Uint8Array;
141
+ };
142
+ export declare function getAddress(type: 'pkh' | 'wpkh' | 'tr', privKey: Bytes, network?: {
143
+ bech32: string;
144
+ pubKeyHash: number;
145
+ scriptHash: number;
146
+ wif: number;
147
+ }): string | undefined;
148
+ export declare const _sortPubkeys: (pubkeys: Bytes[]) => Uint8Array[];
149
+ export declare function multisig(m: number, pubkeys: Bytes[], sorted?: boolean, witness?: boolean, network?: {
150
+ bech32: string;
151
+ pubKeyHash: number;
152
+ scriptHash: number;
153
+ wif: number;
154
+ }): P2Ret;
155
+ export declare function sortedMultisig(m: number, pubkeys: Bytes[], witness?: boolean, network?: {
156
+ bech32: string;
157
+ pubKeyHash: number;
158
+ scriptHash: number;
159
+ wif: number;
160
+ }): P2Ret;
161
+ export declare function WIF(network?: {
162
+ bech32: string;
163
+ pubKeyHash: number;
164
+ scriptHash: number;
165
+ wif: number;
166
+ }): Coder<Bytes, string>;
167
+ export declare function Address(network?: {
168
+ bech32: string;
169
+ pubKeyHash: number;
170
+ scriptHash: number;
171
+ wif: number;
172
+ }): {
173
+ encode(from: P.UnwrapCoder<OutScriptType>): string;
174
+ decode(address: string): P.UnwrapCoder<OutScriptType>;
175
+ };
176
+ export {};
177
+ //# sourceMappingURL=payment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["src/payment.ts"],"names":[],"mappings":"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"}