@bsv/sdk 1.8.13 → 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 (83) 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/primitives/BigNumber.js +43 -31
  5. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  6. package/dist/cjs/src/primitives/Hash.js +11 -5
  7. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  8. package/dist/cjs/src/primitives/SymmetricKey.js +15 -6
  9. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  10. package/dist/cjs/src/primitives/TransactionSignature.js +60 -18
  11. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  12. package/dist/cjs/src/primitives/utils.js +74 -28
  13. package/dist/cjs/src/primitives/utils.js.map +1 -1
  14. package/dist/cjs/src/script/Script.js +217 -108
  15. package/dist/cjs/src/script/Script.js.map +1 -1
  16. package/dist/cjs/src/script/Spend.js +5 -2
  17. package/dist/cjs/src/script/Spend.js.map +1 -1
  18. package/dist/cjs/src/transaction/Beef.js +62 -7
  19. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  20. package/dist/cjs/src/transaction/BeefTx.js +1 -1
  21. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  22. package/dist/cjs/src/transaction/Transaction.js +67 -35
  23. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  24. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  25. package/dist/esm/src/auth/Peer.js +36 -16
  26. package/dist/esm/src/auth/Peer.js.map +1 -1
  27. package/dist/esm/src/primitives/BigNumber.js +43 -31
  28. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  29. package/dist/esm/src/primitives/Hash.js +11 -5
  30. package/dist/esm/src/primitives/Hash.js.map +1 -1
  31. package/dist/esm/src/primitives/SymmetricKey.js +15 -6
  32. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  33. package/dist/esm/src/primitives/TransactionSignature.js +60 -18
  34. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  35. package/dist/esm/src/primitives/utils.js +74 -28
  36. package/dist/esm/src/primitives/utils.js.map +1 -1
  37. package/dist/esm/src/script/Script.js +222 -110
  38. package/dist/esm/src/script/Script.js.map +1 -1
  39. package/dist/esm/src/script/Spend.js +6 -2
  40. package/dist/esm/src/script/Spend.js.map +1 -1
  41. package/dist/esm/src/transaction/Beef.js +64 -7
  42. package/dist/esm/src/transaction/Beef.js.map +1 -1
  43. package/dist/esm/src/transaction/BeefTx.js +1 -1
  44. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  45. package/dist/esm/src/transaction/Transaction.js +69 -35
  46. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  47. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  48. package/dist/types/src/auth/Peer.d.ts +4 -0
  49. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  50. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  51. package/dist/types/src/primitives/Hash.d.ts +10 -10
  52. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  53. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  54. package/dist/types/src/primitives/TransactionSignature.d.ts +34 -13
  55. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  56. package/dist/types/src/primitives/utils.d.ts +6 -8
  57. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  58. package/dist/types/src/script/Script.d.ts +18 -9
  59. package/dist/types/src/script/Script.d.ts.map +1 -1
  60. package/dist/types/src/script/Spend.d.ts +1 -0
  61. package/dist/types/src/script/Spend.d.ts.map +1 -1
  62. package/dist/types/src/transaction/Beef.d.ts +9 -0
  63. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  64. package/dist/types/src/transaction/Transaction.d.ts +7 -0
  65. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  66. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  67. package/dist/umd/bundle.js +3 -3
  68. package/dist/umd/bundle.js.map +1 -1
  69. package/docs/reference/primitives.md +87 -37
  70. package/docs/reference/script.md +11 -7
  71. package/docs/reference/transaction.md +2 -0
  72. package/package.json +1 -1
  73. package/src/auth/Peer.ts +44 -18
  74. package/src/primitives/BigNumber.ts +44 -23
  75. package/src/primitives/Hash.ts +41 -17
  76. package/src/primitives/SymmetricKey.ts +15 -6
  77. package/src/primitives/TransactionSignature.ts +77 -31
  78. package/src/primitives/utils.ts +80 -30
  79. package/src/script/Script.ts +238 -104
  80. package/src/script/Spend.ts +7 -3
  81. package/src/transaction/Beef.ts +74 -7
  82. package/src/transaction/BeefTx.ts +1 -1
  83. 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);