@bsv/sdk 1.8.12 → 1.9.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 (102) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/auth/Peer.js +35 -16
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/overlay-tools/HostReputationTracker.js +216 -0
  5. package/dist/cjs/src/overlay-tools/HostReputationTracker.js.map +1 -0
  6. package/dist/cjs/src/overlay-tools/LookupResolver.js +55 -3
  7. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  8. package/dist/cjs/src/primitives/BigNumber.js +43 -31
  9. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  10. package/dist/cjs/src/primitives/Hash.js +11 -5
  11. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  12. package/dist/cjs/src/primitives/SymmetricKey.js +15 -6
  13. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  14. package/dist/cjs/src/primitives/TransactionSignature.js +60 -18
  15. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  16. package/dist/cjs/src/primitives/utils.js +74 -28
  17. package/dist/cjs/src/primitives/utils.js.map +1 -1
  18. package/dist/cjs/src/script/Script.js +217 -108
  19. package/dist/cjs/src/script/Script.js.map +1 -1
  20. package/dist/cjs/src/script/Spend.js +5 -2
  21. package/dist/cjs/src/script/Spend.js.map +1 -1
  22. package/dist/cjs/src/transaction/Beef.js +62 -7
  23. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  24. package/dist/cjs/src/transaction/BeefTx.js +1 -1
  25. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  26. package/dist/cjs/src/transaction/Transaction.js +67 -35
  27. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  28. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  29. package/dist/esm/src/auth/Peer.js +36 -16
  30. package/dist/esm/src/auth/Peer.js.map +1 -1
  31. package/dist/esm/src/overlay-tools/HostReputationTracker.js +213 -0
  32. package/dist/esm/src/overlay-tools/HostReputationTracker.js.map +1 -0
  33. package/dist/esm/src/overlay-tools/LookupResolver.js +56 -3
  34. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  35. package/dist/esm/src/primitives/BigNumber.js +43 -31
  36. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  37. package/dist/esm/src/primitives/Hash.js +11 -5
  38. package/dist/esm/src/primitives/Hash.js.map +1 -1
  39. package/dist/esm/src/primitives/SymmetricKey.js +15 -6
  40. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  41. package/dist/esm/src/primitives/TransactionSignature.js +60 -18
  42. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  43. package/dist/esm/src/primitives/utils.js +74 -28
  44. package/dist/esm/src/primitives/utils.js.map +1 -1
  45. package/dist/esm/src/script/Script.js +222 -110
  46. package/dist/esm/src/script/Script.js.map +1 -1
  47. package/dist/esm/src/script/Spend.js +6 -2
  48. package/dist/esm/src/script/Spend.js.map +1 -1
  49. package/dist/esm/src/transaction/Beef.js +64 -7
  50. package/dist/esm/src/transaction/Beef.js.map +1 -1
  51. package/dist/esm/src/transaction/BeefTx.js +1 -1
  52. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  53. package/dist/esm/src/transaction/Transaction.js +69 -35
  54. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  55. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  56. package/dist/types/src/auth/Peer.d.ts +4 -0
  57. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  58. package/dist/types/src/overlay-tools/HostReputationTracker.d.ts +37 -0
  59. package/dist/types/src/overlay-tools/HostReputationTracker.d.ts.map +1 -0
  60. package/dist/types/src/overlay-tools/LookupResolver.d.ts +8 -0
  61. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  62. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  63. package/dist/types/src/primitives/Hash.d.ts +10 -10
  64. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  65. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  66. package/dist/types/src/primitives/TransactionSignature.d.ts +34 -13
  67. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  68. package/dist/types/src/primitives/utils.d.ts +6 -8
  69. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  70. package/dist/types/src/script/Script.d.ts +18 -9
  71. package/dist/types/src/script/Script.d.ts.map +1 -1
  72. package/dist/types/src/script/Spend.d.ts +1 -0
  73. package/dist/types/src/script/Spend.d.ts.map +1 -1
  74. package/dist/types/src/transaction/Beef.d.ts +9 -0
  75. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  76. package/dist/types/src/transaction/Transaction.d.ts +7 -0
  77. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  78. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  79. package/dist/umd/bundle.js +3 -3
  80. package/dist/umd/bundle.js.map +1 -1
  81. package/docs/reference/overlay-tools.md +58 -0
  82. package/docs/reference/primitives.md +120 -37
  83. package/docs/reference/script.md +11 -7
  84. package/docs/reference/transaction.md +2 -0
  85. package/docs/tutorials/advanced-transaction.md +2 -2
  86. package/docs/tutorials/first-transaction.md +1 -1
  87. package/docs/tutorials/transaction-types.md +1 -1
  88. package/package.json +1 -1
  89. package/src/auth/Peer.ts +44 -18
  90. package/src/overlay-tools/HostReputationTracker.ts +232 -0
  91. package/src/overlay-tools/LookupResolver.ts +73 -4
  92. package/src/overlay-tools/__tests/LookupResolver.test.ts +120 -0
  93. package/src/primitives/BigNumber.ts +44 -23
  94. package/src/primitives/Hash.ts +41 -17
  95. package/src/primitives/SymmetricKey.ts +15 -6
  96. package/src/primitives/TransactionSignature.ts +77 -31
  97. package/src/primitives/utils.ts +80 -30
  98. package/src/script/Script.ts +238 -104
  99. package/src/script/Spend.ts +7 -3
  100. package/src/transaction/Beef.ts +74 -7
  101. package/src/transaction/BeefTx.ts +1 -1
  102. package/src/transaction/Transaction.ts +77 -34
@@ -13,6 +13,7 @@ const BigNumber_js_1 = __importDefault(require("../primitives/BigNumber.js"));
13
13
  *
14
14
  * @property {ScriptChunk[]} chunks - An array of script chunks that make up the script.
15
15
  */
16
+ const BufferCtor = typeof globalThis !== 'undefined' ? globalThis.Buffer : undefined;
16
17
  class Script {
17
18
  /**
18
19
  * @method fromASM
@@ -113,7 +114,9 @@ class Script {
113
114
  if (!/^[0-9a-fA-F]+$/.test(hex)) {
114
115
  throw new Error('Some elements in this string are not hex encoded.');
115
116
  }
116
- return Script.fromBinary((0, utils_js_1.toArray)(hex, 'hex'));
117
+ const bin = (0, utils_js_1.toArray)(hex, 'hex');
118
+ const rawBytes = Uint8Array.from(bin);
119
+ return new Script([], rawBytes, hex.toLowerCase(), false);
117
120
  }
118
121
  /**
119
122
  * @method fromBinary
@@ -124,91 +127,42 @@ class Script {
124
127
  * const script = Script.fromBinary([0x76, 0xa9, ...])
125
128
  */
126
129
  static fromBinary(bin) {
127
- bin = [...bin];
128
- const chunks = [];
129
- let inConditionalBlock = 0;
130
- const br = new utils_js_1.Reader(bin);
131
- while (!br.eof()) {
132
- const op = br.readUInt8();
133
- // if OP_RETURN and not in a conditional block, do not parse the rest of the data,
134
- // rather just return the last chunk as data without prefixing with data length.
135
- if (op === OP_js_1.default.OP_RETURN && inConditionalBlock === 0) {
136
- chunks.push({
137
- op,
138
- data: br.read()
139
- });
140
- break;
141
- }
142
- if (op === OP_js_1.default.OP_IF || op === OP_js_1.default.OP_NOTIF || op === OP_js_1.default.OP_VERIF || op === OP_js_1.default.OP_VERNOTIF) {
143
- inConditionalBlock++;
144
- }
145
- else if (op === OP_js_1.default.OP_ENDIF) {
146
- inConditionalBlock--;
147
- }
148
- let len = 0;
149
- // eslint-disable-next-line @typescript-eslint/no-shadow
150
- let data = [];
151
- if (op > 0 && op < OP_js_1.default.OP_PUSHDATA1) {
152
- len = op;
153
- chunks.push({
154
- data: br.read(len),
155
- op
156
- });
157
- }
158
- else if (op === OP_js_1.default.OP_PUSHDATA1) {
159
- try {
160
- len = br.readUInt8();
161
- data = br.read(len);
162
- }
163
- catch {
164
- br.read();
165
- }
166
- chunks.push({
167
- data,
168
- op
169
- });
170
- }
171
- else if (op === OP_js_1.default.OP_PUSHDATA2) {
172
- try {
173
- len = br.readUInt16LE();
174
- data = br.read(len);
175
- }
176
- catch {
177
- br.read();
178
- }
179
- chunks.push({
180
- data,
181
- op
182
- });
183
- }
184
- else if (op === OP_js_1.default.OP_PUSHDATA4) {
185
- try {
186
- len = br.readUInt32LE();
187
- data = br.read(len);
188
- }
189
- catch {
190
- br.read();
191
- }
192
- chunks.push({
193
- data,
194
- op
195
- });
196
- }
197
- else {
198
- chunks.push({
199
- op
200
- });
201
- }
202
- }
203
- return new Script(chunks);
130
+ const rawBytes = Uint8Array.from(bin);
131
+ return new Script([], rawBytes, undefined, false);
204
132
  }
205
133
  /**
206
134
  * @constructor
207
135
  * Constructs a new Script object.
208
136
  * @param chunks=[] - An array of script chunks to directly initialize the script.
137
+ * @param rawBytesCache - Optional serialized bytes that can be reused instead of reserializing `chunks`.
138
+ * @param hexCache - Optional lowercase hex string that matches the serialized bytes, used to satisfy `toHex` quickly.
139
+ * @param parsed - When false the script defers parsing `rawBytesCache` until `chunks` is accessed; defaults to true.
209
140
  */
210
- constructor(chunks = []) {
211
- this.chunks = chunks;
141
+ constructor(chunks = [], rawBytesCache, hexCache, parsed = true) {
142
+ this._chunks = chunks;
143
+ this.parsed = parsed;
144
+ this.rawBytesCache = rawBytesCache;
145
+ this.hexCache = hexCache;
146
+ }
147
+ get chunks() {
148
+ this.ensureParsed();
149
+ return this._chunks;
150
+ }
151
+ set chunks(value) {
152
+ this._chunks = value;
153
+ this.parsed = true;
154
+ this.invalidateSerializationCaches();
155
+ }
156
+ ensureParsed() {
157
+ if (this.parsed)
158
+ return;
159
+ if (this.rawBytesCache != null) {
160
+ this._chunks = Script.parseChunks(this.rawBytesCache);
161
+ }
162
+ else {
163
+ this._chunks = [];
164
+ }
165
+ this.parsed = true;
212
166
  }
213
167
  /**
214
168
  * @method toASM
@@ -229,7 +183,17 @@ class Script {
229
183
  * @returns The script in hexadecimal format.
230
184
  */
231
185
  toHex() {
232
- return (0, utils_js_1.encode)(this.toBinary(), 'hex');
186
+ if (this.hexCache != null) {
187
+ return this.hexCache;
188
+ }
189
+ if (this.rawBytesCache == null) {
190
+ this.rawBytesCache = this.serializeChunksToBytes();
191
+ }
192
+ const hex = BufferCtor != null
193
+ ? BufferCtor.from(this.rawBytesCache).toString('hex')
194
+ : (0, utils_js_1.encode)(Array.from(this.rawBytesCache), 'hex');
195
+ this.hexCache = hex;
196
+ return hex;
233
197
  }
234
198
  /**
235
199
  * @method toBinary
@@ -237,34 +201,13 @@ class Script {
237
201
  * @returns The script in binary array format.
238
202
  */
239
203
  toBinary() {
240
- const writer = new utils_js_1.Writer();
241
- for (let i = 0; i < this.chunks.length; i++) {
242
- const chunk = this.chunks[i];
243
- const op = chunk.op;
244
- writer.writeUInt8(op);
245
- if (op === OP_js_1.default.OP_RETURN && chunk.data != null) { // special case for unformatted data
246
- writer.write(chunk.data);
247
- break;
248
- }
249
- else if (chunk.data != null) {
250
- if (op < OP_js_1.default.OP_PUSHDATA1) {
251
- writer.write(chunk.data);
252
- }
253
- else if (op === OP_js_1.default.OP_PUSHDATA1) {
254
- writer.writeUInt8(chunk.data.length);
255
- writer.write(chunk.data);
256
- }
257
- else if (op === OP_js_1.default.OP_PUSHDATA2) {
258
- writer.writeUInt16LE(chunk.data.length);
259
- writer.write(chunk.data);
260
- }
261
- else if (op === OP_js_1.default.OP_PUSHDATA4) {
262
- writer.writeUInt32LE(chunk.data.length);
263
- writer.write(chunk.data);
264
- }
265
- }
204
+ return Array.from(this.toUint8Array());
205
+ }
206
+ toUint8Array() {
207
+ if (this.rawBytesCache == null) {
208
+ this.rawBytesCache = this.serializeChunksToBytes();
266
209
  }
267
- return writer.toArray();
210
+ return this.rawBytesCache;
268
211
  }
269
212
  /**
270
213
  * @method writeScript
@@ -273,6 +216,7 @@ class Script {
273
216
  * @returns This script instance for chaining.
274
217
  */
275
218
  writeScript(script) {
219
+ this.invalidateSerializationCaches();
276
220
  this.chunks = this.chunks.concat(script.chunks);
277
221
  return this;
278
222
  }
@@ -283,6 +227,7 @@ class Script {
283
227
  * @returns This script instance for chaining.
284
228
  */
285
229
  writeOpCode(op) {
230
+ this.invalidateSerializationCaches();
286
231
  this.chunks.push({ op });
287
232
  return this;
288
233
  }
@@ -294,6 +239,7 @@ class Script {
294
239
  * @returns This script instance for chaining.
295
240
  */
296
241
  setChunkOpCode(i, op) {
242
+ this.invalidateSerializationCaches();
297
243
  this.chunks[i] = { op };
298
244
  return this;
299
245
  }
@@ -304,6 +250,7 @@ class Script {
304
250
  * @returns This script instance for chaining.
305
251
  */
306
252
  writeBn(bn) {
253
+ this.invalidateSerializationCaches();
307
254
  if (bn.cmpn(0) === OP_js_1.default.OP_0) {
308
255
  this.chunks.push({
309
256
  op: OP_js_1.default.OP_0
@@ -334,6 +281,7 @@ class Script {
334
281
  * @throws {Error} Throws an error if the data is too large to be pushed.
335
282
  */
336
283
  writeBin(bin) {
284
+ this.invalidateSerializationCaches();
337
285
  let op;
338
286
  const data = bin.length > 0 ? bin : undefined;
339
287
  if (bin.length > 0 && bin.length < OP_js_1.default.OP_PUSHDATA1) {
@@ -367,6 +315,7 @@ class Script {
367
315
  * @returns This script instance for chaining.
368
316
  */
369
317
  writeNumber(num) {
318
+ this.invalidateSerializationCaches();
370
319
  this.writeBn(new BigNumber_js_1.default(num));
371
320
  return this;
372
321
  }
@@ -376,6 +325,7 @@ class Script {
376
325
  * @returns This script instance for chaining.
377
326
  */
378
327
  removeCodeseparators() {
328
+ this.invalidateSerializationCaches();
379
329
  const chunks = [];
380
330
  for (let i = 0; i < this.chunks.length; i++) {
381
331
  if (this.chunks[i].op !== OP_js_1.default.OP_CODESEPARATOR) {
@@ -393,6 +343,7 @@ class Script {
393
343
  * @returns This script instance for chaining.
394
344
  */
395
345
  findAndDelete(script) {
346
+ this.invalidateSerializationCaches();
396
347
  const buf = script.toHex();
397
348
  for (let i = 0; i < this.chunks.length; i++) {
398
349
  const script2 = new Script([this.chunks[i]]);
@@ -441,6 +392,164 @@ class Script {
441
392
  * @param chunk - The script chunk.
442
393
  * @returns The string representation of the chunk.
443
394
  */
395
+ static computeSerializedLength(chunks) {
396
+ let total = 0;
397
+ for (const chunk of chunks) {
398
+ total += 1;
399
+ if (chunk.data == null)
400
+ continue;
401
+ const len = chunk.data.length;
402
+ if (chunk.op === OP_js_1.default.OP_RETURN) {
403
+ total += len;
404
+ break;
405
+ }
406
+ if (chunk.op < OP_js_1.default.OP_PUSHDATA1) {
407
+ total += len;
408
+ }
409
+ else if (chunk.op === OP_js_1.default.OP_PUSHDATA1) {
410
+ total += 1 + len;
411
+ }
412
+ else if (chunk.op === OP_js_1.default.OP_PUSHDATA2) {
413
+ total += 2 + len;
414
+ }
415
+ else if (chunk.op === OP_js_1.default.OP_PUSHDATA4) {
416
+ total += 4 + len;
417
+ }
418
+ }
419
+ return total;
420
+ }
421
+ serializeChunksToBytes() {
422
+ const chunks = this.chunks;
423
+ const totalLength = Script.computeSerializedLength(chunks);
424
+ const bytes = new Uint8Array(totalLength);
425
+ let offset = 0;
426
+ for (let i = 0; i < chunks.length; i++) {
427
+ const chunk = chunks[i];
428
+ bytes[offset++] = chunk.op;
429
+ if (chunk.data == null)
430
+ continue;
431
+ if (chunk.op === OP_js_1.default.OP_RETURN) {
432
+ bytes.set(chunk.data, offset);
433
+ offset += chunk.data.length;
434
+ break;
435
+ }
436
+ offset = Script.writeChunkData(bytes, offset, chunk.op, chunk.data);
437
+ }
438
+ return bytes;
439
+ }
440
+ invalidateSerializationCaches() {
441
+ this.rawBytesCache = undefined;
442
+ this.hexCache = undefined;
443
+ }
444
+ static writeChunkData(target, offset, op, data) {
445
+ const len = data.length;
446
+ if (op < OP_js_1.default.OP_PUSHDATA1) {
447
+ target.set(data, offset);
448
+ return offset + len;
449
+ }
450
+ else if (op === OP_js_1.default.OP_PUSHDATA1) {
451
+ target[offset++] = len & 0xff;
452
+ target.set(data, offset);
453
+ return offset + len;
454
+ }
455
+ else if (op === OP_js_1.default.OP_PUSHDATA2) {
456
+ target[offset++] = len & 0xff;
457
+ target[offset++] = (len >> 8) & 0xff;
458
+ target.set(data, offset);
459
+ return offset + len;
460
+ }
461
+ else if (op === OP_js_1.default.OP_PUSHDATA4) {
462
+ const size = len >>> 0;
463
+ target[offset++] = size & 0xff;
464
+ target[offset++] = (size >> 8) & 0xff;
465
+ target[offset++] = (size >> 16) & 0xff;
466
+ target[offset++] = (size >> 24) & 0xff;
467
+ target.set(data, offset);
468
+ return offset + len;
469
+ }
470
+ return offset;
471
+ }
472
+ static parseChunks(bytes) {
473
+ const chunks = [];
474
+ const length = bytes.length;
475
+ let pos = 0;
476
+ let inConditionalBlock = 0;
477
+ while (pos < length) {
478
+ const op = bytes[pos++] ?? 0;
479
+ if (op === OP_js_1.default.OP_RETURN && inConditionalBlock === 0) {
480
+ chunks.push({
481
+ op,
482
+ data: Script.copyRange(bytes, pos, length)
483
+ });
484
+ break;
485
+ }
486
+ if (op === OP_js_1.default.OP_IF ||
487
+ op === OP_js_1.default.OP_NOTIF ||
488
+ op === OP_js_1.default.OP_VERIF ||
489
+ op === OP_js_1.default.OP_VERNOTIF) {
490
+ inConditionalBlock++;
491
+ }
492
+ else if (op === OP_js_1.default.OP_ENDIF) {
493
+ inConditionalBlock--;
494
+ }
495
+ if (op > 0 && op < OP_js_1.default.OP_PUSHDATA1) {
496
+ const len = op;
497
+ const end = Math.min(pos + len, length);
498
+ chunks.push({
499
+ data: Script.copyRange(bytes, pos, end),
500
+ op
501
+ });
502
+ pos = end;
503
+ }
504
+ else if (op === OP_js_1.default.OP_PUSHDATA1) {
505
+ const len = pos < length ? bytes[pos++] ?? 0 : 0;
506
+ const end = Math.min(pos + len, length);
507
+ chunks.push({
508
+ data: Script.copyRange(bytes, pos, end),
509
+ op
510
+ });
511
+ pos = end;
512
+ }
513
+ else if (op === OP_js_1.default.OP_PUSHDATA2) {
514
+ const b0 = bytes[pos] ?? 0;
515
+ const b1 = bytes[pos + 1] ?? 0;
516
+ const len = b0 | (b1 << 8);
517
+ pos = Math.min(pos + 2, length);
518
+ const end = Math.min(pos + len, length);
519
+ chunks.push({
520
+ data: Script.copyRange(bytes, pos, end),
521
+ op
522
+ });
523
+ pos = end;
524
+ }
525
+ else if (op === OP_js_1.default.OP_PUSHDATA4) {
526
+ const len = ((bytes[pos] ?? 0) |
527
+ ((bytes[pos + 1] ?? 0) << 8) |
528
+ ((bytes[pos + 2] ?? 0) << 16) |
529
+ ((bytes[pos + 3] ?? 0) << 24)) >>>
530
+ 0;
531
+ pos = Math.min(pos + 4, length);
532
+ const end = Math.min(pos + len, length);
533
+ chunks.push({
534
+ data: Script.copyRange(bytes, pos, end),
535
+ op
536
+ });
537
+ pos = end;
538
+ }
539
+ else {
540
+ chunks.push({ op });
541
+ }
542
+ }
543
+ return chunks;
544
+ }
545
+ static copyRange(bytes, start, end) {
546
+ const size = Math.max(end - start, 0);
547
+ const data = new Array(size);
548
+ for (let i = 0; i < size; i++) {
549
+ data[i] = bytes[start + i] ?? 0;
550
+ }
551
+ return data;
552
+ }
444
553
  _chunkToString(chunk) {
445
554
  const op = chunk.op;
446
555
  let str = '';
@@ -1 +1 @@
1
- {"version":3,"file":"Script.js","sourceRoot":"","sources":["../../../../src/script/Script.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Script.js","sourceRoot":"","sources":["../../../../src/script/Script.ts"],"names":[],"mappings":"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"}
@@ -204,6 +204,7 @@ class Spend {
204
204
  this.ifStack = [];
205
205
  this.stackMem = 0;
206
206
  this.altStackMem = 0;
207
+ this.sigHashCache = { hashOutputsSingle: new Map() };
207
208
  this.reset();
208
209
  }
209
210
  reset() {
@@ -215,6 +216,7 @@ class Spend {
215
216
  this.ifStack = [];
216
217
  this.stackMem = 0;
217
218
  this.altStackMem = 0;
219
+ this.sigHashCache = { hashOutputsSingle: new Map() };
218
220
  }
219
221
  ensureStackMem(additional) {
220
222
  if (this.stackMem + additional > this.memoryLimit) {
@@ -325,7 +327,7 @@ class Spend {
325
327
  return true;
326
328
  }
327
329
  verifySignature(sig, pubkey, subscript) {
328
- const preimage = TransactionSignature_js_1.default.format({
330
+ const preimage = TransactionSignature_js_1.default.formatBytes({
329
331
  sourceTXID: this.sourceTXID,
330
332
  sourceOutputIndex: this.sourceOutputIndex,
331
333
  sourceSatoshis: this.sourceSatoshis,
@@ -336,7 +338,8 @@ class Spend {
336
338
  subscript,
337
339
  inputSequence: this.inputSequence,
338
340
  lockTime: this.lockTime,
339
- scope: sig.scope
341
+ scope: sig.scope,
342
+ cache: this.sigHashCache
340
343
  });
341
344
  const hash = new BigNumber_js_1.default(Hash.hash256(preimage));
342
345
  return (0, ECDSA_js_1.verify)(hash, sig, pubkey);