@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
package/psbt.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["src/psbt.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RawPSBTV2 = exports.RawPSBTV0 = exports.mergeKeyMap = exports.cleanPSBTFields = exports._DebugPSBT = exports._RawPSBTV2 = exports._RawPSBTV0 = exports.PSBTOutputCoder = exports.PSBTInputCoder = exports.PSBTOutputUnsignedKeys = exports.PSBTOutput = exports.PSBTInputUnsignedKeys = exports.PSBTInputFinalKeys = exports.PSBTInput = exports.PSBTGlobal = exports.TaprootControlBlock = void 0;
3
+ exports.RawPSBTV2 = exports.RawPSBTV0 = exports._DebugPSBT = exports._RawPSBTV2 = exports._RawPSBTV0 = exports.PSBTOutputCoder = exports.PSBTInputCoder = exports.PSBTOutputUnsignedKeys = exports.PSBTOutput = exports.PSBTInputUnsignedKeys = exports.PSBTInputFinalKeys = exports.PSBTInput = exports.PSBTGlobal = exports.TaprootControlBlock = void 0;
4
+ exports.cleanPSBTFields = cleanPSBTFields;
5
+ exports.mergeKeyMap = mergeKeyMap;
4
6
  const base_1 = require("@scure/base");
5
7
  const P = require("micro-packed");
6
8
  const script_js_1 = require("./script.js");
9
+ const script_js_2 = require("./script.js");
7
10
  const transaction_js_1 = require("./transaction.js"); // circular
8
11
  const utils_js_1 = require("./utils.js");
9
12
  // PSBT BIP174, BIP370, BIP371
@@ -53,7 +56,7 @@ const Bytes32 = P.bytes(32);
53
56
  // Tables from BIP-0174 (https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki)
54
57
  // prettier-ignore
55
58
  exports.PSBTGlobal = {
56
- unsignedTx: [0x00, false, script_js_1.RawTx, [0], [0], false],
59
+ unsignedTx: [0x00, false, script_js_2.RawOldTx, [0], [0], false],
57
60
  xpub: [0x01, GlobalXPUB, BIP32Der, [], [0, 2], false],
58
61
  txVersion: [0x02, false, P.U32LE, [2], [2], false],
59
62
  fallbackLocktime: [0x03, false, P.U32LE, [], [2], false],
@@ -65,15 +68,15 @@ exports.PSBTGlobal = {
65
68
  };
66
69
  // prettier-ignore
67
70
  exports.PSBTInput = {
68
- nonWitnessUtxo: [0x00, false, script_js_1.RawTx, [], [0, 2], false],
69
- witnessUtxo: [0x01, false, script_js_1.RawOutput, [], [0, 2], false],
71
+ nonWitnessUtxo: [0x00, false, script_js_2.RawTx, [], [0, 2], false],
72
+ witnessUtxo: [0x01, false, script_js_2.RawOutput, [], [0, 2], false],
70
73
  partialSig: [0x02, PubKeyECDSA, BytesInf, [], [0, 2], false],
71
74
  sighashType: [0x03, false, P.U32LE, [], [0, 2], false],
72
75
  redeemScript: [0x04, false, BytesInf, [], [0, 2], false],
73
76
  witnessScript: [0x05, false, BytesInf, [], [0, 2], false],
74
77
  bip32Derivation: [0x06, PubKeyECDSA, BIP32Der, [], [0, 2], false],
75
78
  finalScriptSig: [0x07, false, BytesInf, [], [0, 2], false],
76
- finalScriptWitness: [0x08, false, script_js_1.RawWitness, [], [0, 2], false],
79
+ finalScriptWitness: [0x08, false, script_js_2.RawWitness, [], [0, 2], false],
77
80
  porCommitment: [0x09, false, BytesInf, [], [0, 2], false],
78
81
  ripemd160: [0x0a, Bytes20, BytesInf, [], [0, 2], false],
79
82
  sha256: [0x0b, Bytes32, BytesInf, [], [0, 2], false],
@@ -216,7 +219,7 @@ function PSBTKeyMap(psbtEnum) {
216
219
  }
217
220
  exports.PSBTInputCoder = P.validate(PSBTKeyMap(exports.PSBTInput), (i) => {
218
221
  if (i.finalScriptWitness && !i.finalScriptWitness.length)
219
- throw new Error('validateInput: wmpty finalScriptWitness');
222
+ throw new Error('validateInput: empty finalScriptWitness');
220
223
  //if (i.finalScriptSig && !i.finalScriptSig.length) throw new Error('validateInput: empty finalScriptSig');
221
224
  if (i.partialSig && !i.partialSig.length)
222
225
  throw new Error('Empty partialSig');
@@ -239,8 +242,7 @@ exports.PSBTInputCoder = P.validate(PSBTKeyMap(exports.PSBTInput), (i) => {
239
242
  throw new Error(`validateInput: index(${i.index}) not in nonWitnessUtxo`);
240
243
  const prevOut = i.nonWitnessUtxo.outputs[i.index];
241
244
  if (i.witnessUtxo &&
242
- (!P.equalBytes(i.witnessUtxo.script, prevOut.script) ||
243
- i.witnessUtxo.amount !== prevOut.amount))
245
+ (!(0, utils_js_1.equalBytes)(i.witnessUtxo.script, prevOut.script) || i.witnessUtxo.amount !== prevOut.amount))
244
246
  throw new Error('validateInput: witnessUtxo different from nonWitnessUtxo');
245
247
  }
246
248
  if (i.tapLeafScript) {
@@ -265,7 +267,7 @@ exports.PSBTInputCoder = P.validate(PSBTKeyMap(exports.PSBTInput), (i) => {
265
267
  // in case user wants to use wrong input by mistake
266
268
  // - Worst case: tx will be rejected by nodes. Still better than disallowing user
267
269
  // to spend real input, no matter how broken it looks
268
- const tx = transaction_js_1.Transaction.fromRaw(script_js_1.RawTx.encode(i.nonWitnessUtxo), {
270
+ const tx = transaction_js_1.Transaction.fromRaw(script_js_2.RawTx.encode(i.nonWitnessUtxo), {
269
271
  allowUnknownOutputs: true,
270
272
  disableScriptCheck: true,
271
273
  allowUnknownInputs: true,
@@ -288,8 +290,6 @@ const PSBTGlobalCoder = P.validate(PSBTKeyMap(exports.PSBTGlobal), (g) => {
288
290
  if (version === 0) {
289
291
  if (!g.unsignedTx)
290
292
  throw new Error('PSBTv0: missing unsignedTx');
291
- if (g.unsignedTx.segwitFlag || g.unsignedTx.witnesses)
292
- throw new Error('PSBTv0: witness in unsingedTx');
293
293
  for (const inp of g.unsignedTx.inputs)
294
294
  if (inp.finalScriptSig && inp.finalScriptSig.length)
295
295
  throw new Error('PSBTv0: input scriptSig found in unsignedTx');
@@ -346,7 +346,6 @@ function cleanPSBTFields(version, info, lst) {
346
346
  }
347
347
  return out;
348
348
  }
349
- exports.cleanPSBTFields = cleanPSBTFields;
350
349
  function validatePSBT(tx) {
351
350
  const version = (tx && tx.global && tx.global.version) || 0;
352
351
  validatePSBTFields(version, exports.PSBTGlobal, tx.global);
@@ -430,7 +429,7 @@ function mergeKeyMap(psbtEnum, val, cur, allowedFields) {
430
429
  res[k] = vC.decode(base_1.hex.decode(res[k]));
431
430
  }
432
431
  else if (cannotChange && k in val && cur && cur[k] !== undefined) {
433
- if (!P.equalBytes(vC.encode(val[k]), vC.encode(cur[k])))
432
+ if (!(0, utils_js_1.equalBytes)(vC.encode(val[k]), vC.encode(cur[k])))
434
433
  throw new Error(`Cannot change signed field=${k}`);
435
434
  }
436
435
  }
@@ -440,7 +439,6 @@ function mergeKeyMap(psbtEnum, val, cur, allowedFields) {
440
439
  delete res[k];
441
440
  return res;
442
441
  }
443
- exports.mergeKeyMap = mergeKeyMap;
444
442
  exports.RawPSBTV0 = P.validate(exports._RawPSBTV0, validatePSBT);
445
443
  exports.RawPSBTV2 = P.validate(exports._RawPSBTV2, validatePSBT);
446
444
  //# sourceMappingURL=psbt.js.map
package/psbt.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psbt.js","sourceRoot":"","sources":["src/psbt.ts"],"names":[],"mappings":"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"}
package/script.d.ts ADDED
@@ -0,0 +1,168 @@
1
+ import * as P from 'micro-packed';
2
+ export declare const MAX_SCRIPT_BYTE_LENGTH = 520;
3
+ export declare enum OP {
4
+ OP_0 = 0,
5
+ PUSHDATA1 = 76,
6
+ PUSHDATA2 = 77,
7
+ PUSHDATA4 = 78,
8
+ '1NEGATE' = 79,
9
+ RESERVED = 80,
10
+ OP_1 = 81,
11
+ OP_2 = 82,
12
+ OP_3 = 83,
13
+ OP_4 = 84,
14
+ OP_5 = 85,
15
+ OP_6 = 86,
16
+ OP_7 = 87,
17
+ OP_8 = 88,
18
+ OP_9 = 89,
19
+ OP_10 = 90,
20
+ OP_11 = 91,
21
+ OP_12 = 92,
22
+ OP_13 = 93,
23
+ OP_14 = 94,
24
+ OP_15 = 95,
25
+ OP_16 = 96,
26
+ NOP = 97,
27
+ VER = 98,
28
+ IF = 99,
29
+ NOTIF = 100,
30
+ VERIF = 101,
31
+ VERNOTIF = 102,
32
+ ELSE = 103,
33
+ ENDIF = 104,
34
+ VERIFY = 105,
35
+ RETURN = 106,
36
+ TOALTSTACK = 107,
37
+ FROMALTSTACK = 108,
38
+ '2DROP' = 109,
39
+ '2DUP' = 110,
40
+ '3DUP' = 111,
41
+ '2OVER' = 112,
42
+ '2ROT' = 113,
43
+ '2SWAP' = 114,
44
+ IFDUP = 115,
45
+ DEPTH = 116,
46
+ DROP = 117,
47
+ DUP = 118,
48
+ NIP = 119,
49
+ OVER = 120,
50
+ PICK = 121,
51
+ ROLL = 122,
52
+ ROT = 123,
53
+ SWAP = 124,
54
+ TUCK = 125,
55
+ CAT = 126,
56
+ SUBSTR = 127,
57
+ LEFT = 128,
58
+ RIGHT = 129,
59
+ SIZE = 130,
60
+ INVERT = 131,
61
+ AND = 132,
62
+ OR = 133,
63
+ XOR = 134,
64
+ EQUAL = 135,
65
+ EQUALVERIFY = 136,
66
+ RESERVED1 = 137,
67
+ RESERVED2 = 138,
68
+ '1ADD' = 139,
69
+ '1SUB' = 140,
70
+ '2MUL' = 141,
71
+ '2DIV' = 142,
72
+ NEGATE = 143,
73
+ ABS = 144,
74
+ NOT = 145,
75
+ '0NOTEQUAL' = 146,
76
+ ADD = 147,
77
+ SUB = 148,
78
+ MUL = 149,
79
+ DIV = 150,
80
+ MOD = 151,
81
+ LSHIFT = 152,
82
+ RSHIFT = 153,
83
+ BOOLAND = 154,
84
+ BOOLOR = 155,
85
+ NUMEQUAL = 156,
86
+ NUMEQUALVERIFY = 157,
87
+ NUMNOTEQUAL = 158,
88
+ LESSTHAN = 159,
89
+ GREATERTHAN = 160,
90
+ LESSTHANOREQUAL = 161,
91
+ GREATERTHANOREQUAL = 162,
92
+ MIN = 163,
93
+ MAX = 164,
94
+ WITHIN = 165,
95
+ RIPEMD160 = 166,
96
+ SHA1 = 167,
97
+ SHA256 = 168,
98
+ HASH160 = 169,
99
+ HASH256 = 170,
100
+ CODESEPARATOR = 171,
101
+ CHECKSIG = 172,
102
+ CHECKSIGVERIFY = 173,
103
+ CHECKMULTISIG = 174,
104
+ CHECKMULTISIGVERIFY = 175,
105
+ NOP1 = 176,
106
+ CHECKLOCKTIMEVERIFY = 177,
107
+ CHECKSEQUENCEVERIFY = 178,
108
+ NOP4 = 179,
109
+ NOP5 = 180,
110
+ NOP6 = 181,
111
+ NOP7 = 182,
112
+ NOP8 = 183,
113
+ NOP9 = 184,
114
+ NOP10 = 185,
115
+ CHECKSIGADD = 186,
116
+ INVALID = 255
117
+ }
118
+ export type ScriptOP = keyof typeof OP | Uint8Array | number;
119
+ export type ScriptType = ScriptOP[];
120
+ export declare function ScriptNum(bytesLimit?: number, forceMinimal?: boolean): P.CoderType<bigint>;
121
+ export declare function OpToNum(op: ScriptOP, bytesLimit?: number, forceMinimal?: boolean): number | undefined;
122
+ export declare const Script: P.CoderType<ScriptType>;
123
+ export declare const CompactSize: P.CoderType<bigint>;
124
+ export declare const CompactSizeLen: P.CoderType<number>;
125
+ export declare const VarBytes: P.CoderType<Uint8Array>;
126
+ export declare const RawWitness: P.CoderType<Uint8Array[]>;
127
+ export declare const BTCArray: <T>(t: P.CoderType<T>) => P.CoderType<T[]>;
128
+ export declare const RawInput: P.CoderType<P.StructInput<{
129
+ txid: Uint8Array;
130
+ index: number;
131
+ finalScriptSig: Uint8Array;
132
+ sequence: number;
133
+ }>>;
134
+ export declare const RawOutput: P.CoderType<P.StructInput<{
135
+ amount: bigint;
136
+ script: Uint8Array;
137
+ }>>;
138
+ export declare const RawTx: P.CoderType<P.StructInput<{
139
+ version: number;
140
+ segwitFlag: boolean | undefined;
141
+ inputs: P.StructInput<{
142
+ txid: any;
143
+ index: any;
144
+ finalScriptSig: any;
145
+ sequence: any;
146
+ }>[];
147
+ outputs: P.StructInput<{
148
+ amount: any;
149
+ script: any;
150
+ }>[];
151
+ witnesses: P.Option<Uint8Array[][]>;
152
+ lockTime: number;
153
+ }>>;
154
+ export declare const RawOldTx: P.CoderType<P.StructInput<{
155
+ version: number;
156
+ inputs: P.StructInput<{
157
+ txid: any;
158
+ index: any;
159
+ finalScriptSig: any;
160
+ sequence: any;
161
+ }>[];
162
+ outputs: P.StructInput<{
163
+ amount: any;
164
+ script: any;
165
+ }>[];
166
+ lockTime: number;
167
+ }>>;
168
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["src/script.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RawTx = exports.RawOutput = exports.RawInput = exports.BTCArray = exports.RawWitness = exports.VarBytes = exports.CompactSizeLen = exports.CompactSize = exports.Script = exports.OpToNum = exports.ScriptNum = exports.OP = exports.MAX_SCRIPT_BYTE_LENGTH = void 0;
3
+ exports.RawOldTx = exports.RawTx = exports.RawOutput = exports.RawInput = exports.BTCArray = exports.RawWitness = exports.VarBytes = exports.CompactSizeLen = exports.CompactSize = exports.Script = exports.OP = exports.MAX_SCRIPT_BYTE_LENGTH = void 0;
4
+ exports.ScriptNum = ScriptNum;
5
+ exports.OpToNum = OpToNum;
4
6
  const P = require("micro-packed");
7
+ const utils_js_1 = require("./utils.js");
5
8
  exports.MAX_SCRIPT_BYTE_LENGTH = 520;
6
9
  // prettier-ignore
7
10
  var OP;
@@ -154,10 +157,11 @@ function ScriptNum(bytesLimit = 6, forceMinimal = false) {
154
157
  if (len === 0)
155
158
  return 0n;
156
159
  if (forceMinimal) {
160
+ const data = r.bytes(len, true);
157
161
  // MSB is zero (without sign bit) -> not minimally encoded
158
- if ((r.data[len - 1] & 0x7f) === 0) {
162
+ if ((data[data.length - 1] & 0x7f) === 0) {
159
163
  // exception
160
- if (len <= 1 || (r.data[len - 2] & 0x80) === 0)
164
+ if (len <= 1 || (data[data.length - 2] & 0x80) === 0)
161
165
  throw new Error('Non-minimally encoded ScriptNum');
162
166
  }
163
167
  }
@@ -175,11 +179,10 @@ function ScriptNum(bytesLimit = 6, forceMinimal = false) {
175
179
  },
176
180
  });
177
181
  }
178
- exports.ScriptNum = ScriptNum;
179
182
  function OpToNum(op, bytesLimit = 4, forceMinimal = true) {
180
183
  if (typeof op === 'number')
181
184
  return op;
182
- if (P.isBytes(op)) {
185
+ if ((0, utils_js_1.isBytes)(op)) {
183
186
  try {
184
187
  const val = ScriptNum(bytesLimit, forceMinimal).decode(op);
185
188
  if (val > Number.MAX_SAFE_INTEGER)
@@ -192,7 +195,6 @@ function OpToNum(op, bytesLimit = 4, forceMinimal = true) {
192
195
  }
193
196
  return;
194
197
  }
195
- exports.OpToNum = OpToNum;
196
198
  // Converts script bytes to parsed script
197
199
  // 5221030000000000000000000000000000000000000000000000000000000000000001210300000000000000000000000000000000000000000000000000000000000000022103000000000000000000000000000000000000000000000000000000000000000353ae
198
200
  // =>
@@ -224,7 +226,7 @@ exports.Script = P.wrap({
224
226
  // Encode big numbers
225
227
  if (typeof o === 'number')
226
228
  o = ScriptNum().encode(BigInt(o));
227
- if (!P.isBytes(o))
229
+ if (!(0, utils_js_1.isBytes)(o))
228
230
  throw new Error(`Wrong Script OP=${o} (${typeof o})`);
229
231
  // Bytes
230
232
  const len = o.length;
@@ -317,7 +319,7 @@ exports.CompactSize = P.wrap({
317
319
  },
318
320
  });
319
321
  // Same thing, but in number instead of bigint. Checks for safe integer inside
320
- exports.CompactSizeLen = P.apply(exports.CompactSize, P.coders.number);
322
+ exports.CompactSizeLen = P.apply(exports.CompactSize, P.coders.numberBigint);
321
323
  // ui8a of size <CompactSize>
322
324
  exports.VarBytes = P.bytes(exports.CompactSize);
323
325
  // SegWit v0 stack of witness buffers
@@ -350,4 +352,11 @@ function validateRawTx(tx) {
350
352
  return tx;
351
353
  }
352
354
  exports.RawTx = P.validate(_RawTx, validateRawTx);
355
+ // Pre-SegWit serialization format (for PSBTv0)
356
+ exports.RawOldTx = P.struct({
357
+ version: P.I32LE,
358
+ inputs: (0, exports.BTCArray)(exports.RawInput),
359
+ outputs: (0, exports.BTCArray)(exports.RawOutput),
360
+ lockTime: P.U32LE,
361
+ });
353
362
  //# sourceMappingURL=script.js.map
package/script.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["src/script.ts"],"names":[],"mappings":"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"}
package/src/index.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  /*! scure-btc-signer - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
- import { isBytes, concatBytes, compareBytes, pubSchnorr, randomPrivateKeyBytes } from './utils.js';
2
+ import {
3
+ isBytes,
4
+ concatBytes,
5
+ compareBytes,
6
+ pubSchnorr,
7
+ randomPrivateKeyBytes,
8
+ taprootTweakPubkey,
9
+ } from './utils.js';
3
10
  // prettier-ignore
4
11
  export {
5
12
  p2pk, p2pkh, p2sh, p2ms, p2wsh, p2wpkh, p2tr, p2tr_ns, p2tr_ms, p2tr_pk,
@@ -7,14 +14,21 @@ export {
7
14
  } from './payment.js';
8
15
  // prettier-ignore
9
16
  export {
10
- OP, RawTx, CompactSize,
17
+ OP, RawTx, CompactSize, RawWitness,
11
18
  Script, ScriptNum, ScriptType, MAX_SCRIPT_BYTE_LENGTH,
12
19
  } from './script.js';
13
20
  export { Transaction } from './transaction.js';
14
21
  export { getInputType, selectUTXO } from './utxo.js';
15
22
  export { NETWORK, TEST_NETWORK, TAPROOT_UNSPENDABLE_KEY } from './utils.js';
16
23
 
17
- export const utils = { isBytes, concatBytes, compareBytes, pubSchnorr, randomPrivateKeyBytes };
24
+ export const utils = {
25
+ isBytes,
26
+ concatBytes,
27
+ compareBytes,
28
+ pubSchnorr,
29
+ randomPrivateKeyBytes,
30
+ taprootTweakPubkey,
31
+ };
18
32
 
19
33
  // Utils
20
34
  // prettier-ignore
package/src/payment.ts CHANGED
@@ -258,7 +258,7 @@ export type OutScriptType = typeof OutScript;
258
258
 
259
259
  // Basic sanity check for scripts
260
260
  function checkWSH(s: OutWSHType, witnessScript: Bytes) {
261
- if (!P.equalBytes(s.hash, u.sha256(witnessScript)))
261
+ if (!u.equalBytes(s.hash, u.sha256(witnessScript)))
262
262
  throw new Error('checkScript: wsh wrong witnessScript hash');
263
263
  const w = OutScript.decode(witnessScript);
264
264
  if (w.type === 'tr' || w.type === 'tr_ns' || w.type === 'tr_ms')
@@ -274,7 +274,7 @@ export function checkScript(script?: Bytes, redeemScript?: Bytes, witnessScript?
274
274
  if (s.type === 'tr_ns' || s.type === 'tr_ms' || s.type === 'ms' || s.type == 'pk')
275
275
  throw new Error(`checkScript: non-wrapped ${s.type}`);
276
276
  if (s.type === 'sh' && redeemScript) {
277
- if (!P.equalBytes(s.hash, u.hash160(redeemScript)))
277
+ if (!u.equalBytes(s.hash, u.hash160(redeemScript)))
278
278
  throw new Error('checkScript: sh wrong redeemScript hash');
279
279
  const r = OutScript.decode(redeemScript);
280
280
  if (r.type === 'tr' || r.type === 'tr_ns' || r.type === 'tr_ms')
@@ -390,7 +390,7 @@ function checkTaprootScript(
390
390
  const outms = out as OutTRNSType | OutTRMSType;
391
391
  if (!allowUnknownOutputs && outms.pubkeys) {
392
392
  for (const p of outms.pubkeys) {
393
- if (P.equalBytes(p, u.TAPROOT_UNSPENDABLE_KEY))
393
+ if (u.equalBytes(p, u.TAPROOT_UNSPENDABLE_KEY))
394
394
  throw new Error('Unspendable taproot key in leaf script');
395
395
  // It's likely a mistake at this point:
396
396
  // 1. p2tr(A, p2tr_ns(2, [A, B])) == p2tr(A, p2tr_pk(B)) (A or B key)
@@ -399,7 +399,7 @@ function checkTaprootScript(
399
399
  // User creates 2 of 3 multisig of keys [A, B, C],
400
400
  // but key A always can spend whole output without signatures from other keys.
401
401
  // p2tr(A, p2tr_ns(2, [B, C, D])) is ok: A or (B and C) or (B and D) or (C and D)
402
- if (P.equalBytes(p, internalPubKey)) {
402
+ if (u.equalBytes(p, internalPubKey)) {
403
403
  throw new Error(
404
404
  'Using P2TR with leaf script with same key as internal key is not supported'
405
405
  );
@@ -500,7 +500,7 @@ function taprootHashTree(
500
500
  if (!Array.isArray(tree)) {
501
501
  const { leafVersion: version, script: leafScript } = tree;
502
502
  // Earliest tree walk where we can validate tapScripts
503
- if (tree.tapLeafScript || (tree.tapMerkleRoot && !P.equalBytes(tree.tapMerkleRoot, P.EMPTY)))
503
+ if (tree.tapLeafScript || (tree.tapMerkleRoot && !u.equalBytes(tree.tapMerkleRoot, P.EMPTY)))
504
504
  throw new Error('P2TR: tapRoot leafScript cannot have tree');
505
505
  const script = typeof leafScript === 'string' ? hex.decode(leafScript) : leafScript;
506
506
  if (!u.isBytes(script)) throw new Error(`checkScript: wrong script type=${script}`);
@@ -719,14 +719,14 @@ export function Address(network = NETWORK) {
719
719
  decode(address: string): P.UnwrapCoder<OutScriptType> {
720
720
  if (address.length < 14 || address.length > 74) throw new Error('Invalid address length');
721
721
  // Bech32
722
- if (network.bech32 && address.toLowerCase().startsWith(network.bech32)) {
722
+ if (network.bech32 && address.toLowerCase().startsWith(`${network.bech32}1`)) {
723
723
  let res;
724
724
  try {
725
- res = bech32.decode(address);
725
+ res = bech32.decode(address as `${string}1${string}`);
726
726
  if (res.words[0] !== 0) throw new Error(`bech32: wrong version=${res.words[0]}`);
727
727
  } catch (_) {
728
728
  // Starting from version 1 it is decoded as bech32m
729
- res = bech32m.decode(address);
729
+ res = bech32m.decode(address as `${string}1${string}`);
730
730
  if (res.words[0] === 0) throw new Error(`bech32m: wrong version=${res.words[0]}`);
731
731
  }
732
732
  if (res.prefix !== network.bech32) throw new Error(`wrong bech32 prefix=${res.prefix}`);
package/src/psbt.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { hex } from '@scure/base';
2
2
  import * as P from 'micro-packed';
3
- import { CompactSize, CompactSizeLen, RawOutput, RawTx, RawWitness, VarBytes } from './script.js';
3
+ import { CompactSize, CompactSizeLen, VarBytes } from './script.js';
4
+ import { RawOutput, RawTx, RawOldTx, RawWitness } from './script.js';
4
5
  import { Transaction } from './transaction.js'; // circular
5
- import { Bytes, compareBytes, PubT, validatePubkey } from './utils.js';
6
+ import { Bytes, compareBytes, PubT, validatePubkey, equalBytes } from './utils.js';
6
7
 
7
8
  // PSBT BIP174, BIP370, BIP371
8
9
 
@@ -60,7 +61,7 @@ const Bytes32 = P.bytes(32);
60
61
  // Tables from BIP-0174 (https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki)
61
62
  // prettier-ignore
62
63
  export const PSBTGlobal = {
63
- unsignedTx: [0x00, false, RawTx, [0], [0], false],
64
+ unsignedTx: [0x00, false, RawOldTx, [0], [0], false],
64
65
  xpub: [0x01, GlobalXPUB, BIP32Der, [], [0, 2], false],
65
66
  txVersion: [0x02, false, P.U32LE, [2], [2], false],
66
67
  fallbackLocktime: [0x03, false, P.U32LE, [], [2], false],
@@ -251,7 +252,7 @@ function PSBTKeyMap<T extends PSBTKeyMap>(psbtEnum: T): P.CoderType<PSBTKeyMapKe
251
252
 
252
253
  export const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {
253
254
  if (i.finalScriptWitness && !i.finalScriptWitness.length)
254
- throw new Error('validateInput: wmpty finalScriptWitness');
255
+ throw new Error('validateInput: empty finalScriptWitness');
255
256
  //if (i.finalScriptSig && !i.finalScriptSig.length) throw new Error('validateInput: empty finalScriptSig');
256
257
  if (i.partialSig && !i.partialSig.length) throw new Error('Empty partialSig');
257
258
  if (i.partialSig) for (const [k] of i.partialSig) validatePubkey(k, PubT.ecdsa);
@@ -272,8 +273,7 @@ export const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {
272
273
  const prevOut = i.nonWitnessUtxo.outputs[i.index];
273
274
  if (
274
275
  i.witnessUtxo &&
275
- (!P.equalBytes(i.witnessUtxo.script, prevOut.script) ||
276
- i.witnessUtxo.amount !== prevOut.amount)
276
+ (!equalBytes(i.witnessUtxo.script, prevOut.script) || i.witnessUtxo.amount !== prevOut.amount)
277
277
  )
278
278
  throw new Error('validateInput: witnessUtxo different from nonWitnessUtxo');
279
279
  }
@@ -343,8 +343,6 @@ const PSBTGlobalCoder = P.validate(PSBTKeyMap(PSBTGlobal), (g) => {
343
343
  const version = g.version || 0;
344
344
  if (version === 0) {
345
345
  if (!g.unsignedTx) throw new Error('PSBTv0: missing unsignedTx');
346
- if (g.unsignedTx.segwitFlag || g.unsignedTx.witnesses)
347
- throw new Error('PSBTv0: witness in unsingedTx');
348
346
  for (const inp of g.unsignedTx.inputs)
349
347
  if (inp.finalScriptSig && inp.finalScriptSig.length)
350
348
  throw new Error('PSBTv0: input scriptSig found in unsignedTx');
@@ -499,7 +497,7 @@ export function mergeKeyMap<T extends PSBTKeyMap>(
499
497
  } else if (typeof res[k] === 'string') {
500
498
  res[k] = vC.decode(hex.decode(res[k] as string));
501
499
  } else if (cannotChange && k in val && cur && cur[k] !== undefined) {
502
- if (!P.equalBytes(vC.encode(val[k]), vC.encode(cur[k])))
500
+ if (!equalBytes(vC.encode(val[k]), vC.encode(cur[k])))
503
501
  throw new Error(`Cannot change signed field=${k}`);
504
502
  }
505
503
  }
package/src/script.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as P from 'micro-packed';
2
+ import { isBytes } from './utils.js';
2
3
 
3
4
  export const MAX_SCRIPT_BYTE_LENGTH = 520;
4
5
 
@@ -57,10 +58,11 @@ export function ScriptNum(bytesLimit = 6, forceMinimal = false): P.CoderType<big
57
58
  throw new Error(`ScriptNum: number (${len}) bigger than limit=${bytesLimit}`);
58
59
  if (len === 0) return 0n;
59
60
  if (forceMinimal) {
61
+ const data = r.bytes(len, true);
60
62
  // MSB is zero (without sign bit) -> not minimally encoded
61
- if ((r.data[len - 1] & 0x7f) === 0) {
63
+ if ((data[data.length - 1] & 0x7f) === 0) {
62
64
  // exception
63
- if (len <= 1 || (r.data[len - 2] & 0x80) === 0)
65
+ if (len <= 1 || (data[data.length - 2] & 0x80) === 0)
64
66
  throw new Error('Non-minimally encoded ScriptNum');
65
67
  }
66
68
  }
@@ -81,7 +83,7 @@ export function ScriptNum(bytesLimit = 6, forceMinimal = false): P.CoderType<big
81
83
 
82
84
  export function OpToNum(op: ScriptOP, bytesLimit = 4, forceMinimal = true) {
83
85
  if (typeof op === 'number') return op;
84
- if (P.isBytes(op)) {
86
+ if (isBytes(op)) {
85
87
  try {
86
88
  const val = ScriptNum(bytesLimit, forceMinimal).decode(op);
87
89
  if (val > Number.MAX_SAFE_INTEGER) return;
@@ -120,7 +122,7 @@ export const Script: P.CoderType<ScriptType> = P.wrap({
120
122
  }
121
123
  // Encode big numbers
122
124
  if (typeof o === 'number') o = ScriptNum().encode(BigInt(o));
123
- if (!P.isBytes(o)) throw new Error(`Wrong Script OP=${o} (${typeof o})`);
125
+ if (!isBytes(o)) throw new Error(`Wrong Script OP=${o} (${typeof o})`);
124
126
  // Bytes
125
127
  const len = o.length;
126
128
  if (len < OP.PUSHDATA1) w.byte(len);
@@ -195,7 +197,7 @@ export const CompactSize: P.CoderType<bigint> = P.wrap({
195
197
  });
196
198
 
197
199
  // Same thing, but in number instead of bigint. Checks for safe integer inside
198
- export const CompactSizeLen = P.apply(CompactSize, P.coders.number);
200
+ export const CompactSizeLen = P.apply(CompactSize, P.coders.numberBigint);
199
201
 
200
202
  // ui8a of size <CompactSize>
201
203
  export const VarBytes = P.bytes(CompactSize);
@@ -234,3 +236,10 @@ function validateRawTx(tx: P.UnwrapCoder<typeof _RawTx>) {
234
236
  return tx;
235
237
  }
236
238
  export const RawTx = P.validate(_RawTx, validateRawTx);
239
+ // Pre-SegWit serialization format (for PSBTv0)
240
+ export const RawOldTx = P.struct({
241
+ version: P.I32LE,
242
+ inputs: BTCArray(RawInput),
243
+ outputs: BTCArray(RawOutput),
244
+ lockTime: P.U32LE,
245
+ });