@bsv/sdk 1.1.30 → 1.1.33

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 (36) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/transaction/Beef.js +195 -50
  3. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  4. package/dist/cjs/src/transaction/BeefParty.js +16 -0
  5. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  6. package/dist/cjs/src/transaction/BeefTx.js +6 -1
  7. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  8. package/dist/cjs/src/transaction/Transaction.js +25 -10
  9. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  10. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  11. package/dist/esm/src/transaction/Beef.js +194 -49
  12. package/dist/esm/src/transaction/Beef.js.map +1 -1
  13. package/dist/esm/src/transaction/BeefParty.js +16 -0
  14. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  15. package/dist/esm/src/transaction/BeefTx.js +6 -1
  16. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  17. package/dist/esm/src/transaction/Transaction.js +25 -10
  18. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  19. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  20. package/dist/types/src/transaction/Beef.d.ts +60 -4
  21. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  22. package/dist/types/src/transaction/BeefParty.d.ts +11 -0
  23. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  24. package/dist/types/src/transaction/BeefTx.d.ts +6 -1
  25. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  26. package/dist/types/src/transaction/Transaction.d.ts +8 -2
  27. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  28. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  29. package/dist/umd/bundle.js +1 -1
  30. package/docs/transaction.md +166 -9
  31. package/package.json +1 -1
  32. package/src/transaction/Beef.ts +221 -52
  33. package/src/transaction/BeefParty.ts +17 -0
  34. package/src/transaction/BeefTx.ts +6 -1
  35. package/src/transaction/Transaction.ts +25 -10
  36. package/src/transaction/__tests/Beef.test.ts +74 -15
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.1.30",
3
+ "version": "1.1.33",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Beef = exports.BEEF_MAGIC_TXID_ONLY_EXTENSION = exports.BEEF_MAGIC_V2 = exports.BEEF_MAGIC = void 0;
6
+ exports.Beef = exports.ATOMIC_BEEF = exports.BEEF_MAGIC_TXID_ONLY_EXTENSION = exports.BEEF_MAGIC_V2 = exports.BEEF_MAGIC = void 0;
7
7
  const MerklePath_js_1 = __importDefault(require("./MerklePath.js"));
8
8
  const BeefTx_js_1 = __importDefault(require("./BeefTx.js"));
9
9
  const utils_js_1 = require("../primitives/utils.js");
10
10
  exports.BEEF_MAGIC = 4022206465; // 0100BEEF in LE order
11
11
  exports.BEEF_MAGIC_V2 = 4022206466; // 0200BEEF in LE order
12
12
  exports.BEEF_MAGIC_TXID_ONLY_EXTENSION = 4022206465; // 0100BEEF in LE order
13
+ exports.ATOMIC_BEEF = 0x01010101; // Atomic Beef serialization prefix
13
14
  /*
14
15
  * BEEF standard: BRC-62: Background Evaluation Extended Format (BEEF) Transactions
15
16
  * https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0062.md
@@ -17,6 +18,14 @@ exports.BEEF_MAGIC_TXID_ONLY_EXTENSION = 4022206465; // 0100BEEF in LE order
17
18
  * BUMP standard: BRC-74: BSV Unified Merkle Path (BUMP) Format
18
19
  * https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0074.md
19
20
  *
21
+ * BRC-95: Atomic BEEF Transactions
22
+ * https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0095.md
23
+ *
24
+ * The Atomic BEEF format is supported by the binary deserialization static method `fromBinary`.
25
+ *
26
+ * BRC-96: BEEF V2, Txid Only Extension
27
+ * https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0096.md
28
+ *
20
29
  * A valid serialized BEEF is the cornerstone of Simplified Payment Validation (SPV)
21
30
  * where they are exchanged between two non-trusting parties to establish the
22
31
  * validity of a newly constructed bitcoin transaction and its inputs from prior
@@ -48,12 +57,19 @@ exports.BEEF_MAGIC_TXID_ONLY_EXTENSION = 4022206465; // 0100BEEF in LE order
48
57
  *
49
58
  * A valid `Beef` is only required when sent to a party with no shared history,
50
59
  * such as a transaction processor.
60
+ *
61
+ * IMPORTANT NOTE:
62
+ * It is fundamental to the BEEF value proposition that only valid transactions and valid
63
+ * merkle path (BUMP) data be added to it. Merging invalid data breaks the `verify` and `isValid`
64
+ * functions. There is no support for removing invalid data. A `Beef` that becomes invalid
65
+ * must be discarded.
51
66
  */
52
67
  class Beef {
53
68
  constructor(version) {
54
69
  this.bumps = [];
55
70
  this.txs = [];
56
71
  this.version = undefined;
72
+ this.atomicTxid = undefined;
57
73
  this.version = version;
58
74
  }
59
75
  /**
@@ -81,6 +97,74 @@ class Beef {
81
97
  findTxid(txid) {
82
98
  return this.txs.find(tx => tx.txid === txid);
83
99
  }
100
+ /**
101
+ * @returns `MerklePath` with level zero hash equal to txid or undefined.
102
+ */
103
+ findBump(txid) {
104
+ return this.bumps.find(b => b.path[0].find(leaf => leaf.hash === txid));
105
+ }
106
+ /**
107
+ * Finds a Transaction in this `Beef`
108
+ * and adds any missing input SourceTransactions from this `Beef`.
109
+ *
110
+ * The result is suitable for signing.
111
+ *
112
+ * @param txid The id of the target transaction.
113
+ * @returns Transaction with all available input `SourceTransaction`s from this Beef.
114
+ */
115
+ findTransactionForSigning(txid) {
116
+ const beefTx = this.findTxid(txid);
117
+ if (!beefTx)
118
+ return undefined;
119
+ for (const i of beefTx.tx.inputs) {
120
+ if (!i.sourceTransaction) {
121
+ const itx = this.findTxid(i.sourceTXID);
122
+ if (itx) {
123
+ i.sourceTransaction = itx.tx;
124
+ }
125
+ }
126
+ }
127
+ return beefTx.tx;
128
+ }
129
+ /**
130
+ * Builds the proof tree rooted at a specific `Transaction`.
131
+ *
132
+ * To succeed, the Beef must contain all the required transaction and merkle path data.
133
+ *
134
+ * @param txid The id of the target transaction.
135
+ * @returns Transaction with input `SourceTransaction` and `MerklePath` populated from this Beef.
136
+ */
137
+ findAtomicTransaction(txid) {
138
+ const beefTx = this.findTxid(txid);
139
+ if (!beefTx)
140
+ return undefined;
141
+ const addInputProof = (beef, tx) => {
142
+ const mp = beef.findBump(tx.id('hex'));
143
+ if (mp)
144
+ tx.merklePath = mp;
145
+ else {
146
+ for (const i of tx.inputs) {
147
+ if (!i.sourceTransaction) {
148
+ const itx = beef.findTxid(i.sourceTXID);
149
+ if (itx) {
150
+ i.sourceTransaction = itx.tx;
151
+ }
152
+ }
153
+ if (i.sourceTransaction) {
154
+ const mp = beef.findBump(i.sourceTransaction.id('hex'));
155
+ if (mp) {
156
+ i.sourceTransaction.merklePath = mp;
157
+ }
158
+ else {
159
+ addInputProof(beef, i.sourceTransaction);
160
+ }
161
+ }
162
+ }
163
+ }
164
+ };
165
+ addInputProof(this, beefTx.tx);
166
+ return beefTx.tx;
167
+ }
84
168
  /**
85
169
  * Merge a MerklePath that is assumed to be fully valid.
86
170
  * @param bump
@@ -310,11 +394,10 @@ class Beef {
310
394
  return r;
311
395
  }
312
396
  /**
313
- * Returns a binary array representing the serialized BEEF
314
- * @returns A binary array representing the BEEF
315
- */
316
- toBinary() {
317
- const writer = new utils_js_1.Writer();
397
+ * Serializes this data to `writer`
398
+ * @param writer
399
+ */
400
+ toWriter(writer) {
318
401
  writer.writeUInt32LE(this.magic);
319
402
  writer.writeVarIntNum(this.bumps.length);
320
403
  for (const b of this.bumps) {
@@ -324,6 +407,36 @@ class Beef {
324
407
  for (const tx of this.txs) {
325
408
  tx.toWriter(writer, this.magic);
326
409
  }
410
+ }
411
+ /**
412
+ * Returns a binary array representing the serialized BEEF
413
+ * @returns A binary array representing the BEEF
414
+ */
415
+ toBinary() {
416
+ const writer = new utils_js_1.Writer();
417
+ this.toWriter(writer);
418
+ return writer.toArray();
419
+ }
420
+ /**
421
+ * Serialize this Beef as AtomicBEEF.
422
+ *
423
+ * `txid` must exist and be the last transaction
424
+ * in sorted (dependency) order.
425
+ *
426
+ * @param txid
427
+ * @returns serialized contents of this Beef with AtomicBEEF prefix.
428
+ */
429
+ toBinaryAtomic(txid) {
430
+ this.sortTxs();
431
+ const tx = this.findTxid(txid);
432
+ if (!tx)
433
+ throw new Error(`${txid} does not exist in this Beef`);
434
+ if (this.txs[this.txs.length - 1] !== tx)
435
+ throw new Error(`${txid} is not the last transaction in this Beef`);
436
+ const writer = new utils_js_1.Writer();
437
+ writer.writeUInt32LE(exports.ATOMIC_BEEF);
438
+ writer.write((0, utils_js_1.toArray)(txid, 'hex'));
439
+ this.toWriter(writer);
327
440
  return writer.toArray();
328
441
  }
329
442
  /**
@@ -334,7 +447,13 @@ class Beef {
334
447
  return (0, utils_js_1.toHex)(this.toBinary());
335
448
  }
336
449
  static fromReader(br) {
337
- const version = br.readUInt32LE();
450
+ let version = br.readUInt32LE();
451
+ let atomicTxid = undefined;
452
+ if (version === exports.ATOMIC_BEEF) {
453
+ // Skip the txid and re-read the BEEF version
454
+ atomicTxid = (0, utils_js_1.toHex)(br.read(32));
455
+ version = br.readUInt32LE();
456
+ }
338
457
  if (version !== exports.BEEF_MAGIC && version !== exports.BEEF_MAGIC_V2) {
339
458
  throw new Error(`Serialized BEEF must start with ${exports.BEEF_MAGIC} or ${exports.BEEF_MAGIC_V2} but starts with ${version}`);
340
459
  }
@@ -349,6 +468,7 @@ class Beef {
349
468
  const beefTx = BeefTx_js_1.default.fromReader(br, version);
350
469
  beef.txs.push(beefTx);
351
470
  }
471
+ beef.atomicTxid = atomicTxid;
352
472
  return beef;
353
473
  }
354
474
  /**
@@ -395,69 +515,87 @@ class Beef {
395
515
  return false;
396
516
  }
397
517
  /**
398
- * Sort the `txs` by input txid dependency order.
399
- * @returns array of input txids of unproven transactions that aren't included in txs.
518
+ * Sort the `txs` by input txid dependency order:
519
+ * - Oldest Tx Anchored by Path
520
+ * - Newer Txs depending on Older parents
521
+ * - Newest Tx
522
+ *
523
+ * with proof (MerklePath) last, longest chain of dependencies first
524
+ *
525
+ * @returns `{ missingInputs, notValid, valid, withMissingInputs }`
400
526
  */
401
527
  sortTxs() {
402
- const missingInputs = {};
528
+ // Hashtable of valid txids (with proof or all inputs chain to proof)
529
+ const validTxids = {};
530
+ // Hashtable of all transaction txids to transaction
403
531
  const txidToTx = {};
532
+ // queue of unsorted transactions ...
533
+ let queue = [];
534
+ // sorted transactions: hasProof to with longest dependency chain
535
+ const result = [];
536
+ const txidOnly = [];
404
537
  for (const tx of this.txs) {
405
538
  txidToTx[tx.txid] = tx;
406
- // All transactions in this beef start at degree zero.
407
- tx.degree = 0;
539
+ tx.isValid = tx.hasProof;
540
+ if (tx.isValid) {
541
+ validTxids[tx.txid] = true;
542
+ result.push(tx);
543
+ }
544
+ else if (tx.isTxidOnly)
545
+ txidOnly.push(tx);
546
+ else
547
+ queue.push(tx);
408
548
  }
409
- for (const tx of this.txs) {
410
- if (tx.bumpIndex === undefined) {
549
+ // Hashtable of unknown input txids used to fund transactions without their own proof.
550
+ const missingInputs = {};
551
+ // transactions with one or more missing inputs
552
+ const txsMissingInputs = [];
553
+ const possiblyMissingInputs = queue;
554
+ queue = [];
555
+ for (const tx of possiblyMissingInputs) {
556
+ let hasMissingInput = false;
557
+ if (!tx.isValid) {
411
558
  // For all the unproven transactions,
412
559
  // link their inputs that exist in this beef,
413
560
  // make a note of missing inputs.
414
561
  for (const inputTxid of tx.inputTxids) {
415
562
  if (!txidToTx[inputTxid]) {
416
563
  missingInputs[inputTxid] = true;
564
+ hasMissingInput = true;
417
565
  }
418
566
  }
419
567
  }
420
- }
421
- // queue of transactions that no unsorted transactions depend upon...
422
- const queue = [];
423
- // sorted transactions
424
- const result = [];
425
- // Increment each txid's degree for every input reference to it by another txid
426
- for (const tx of this.txs) {
427
- for (const inputTxid of tx.inputTxids) {
428
- const tx = txidToTx[inputTxid];
429
- if (tx) {
430
- tx.degree++;
431
- }
432
- }
433
- }
434
- // Since circular dependencies aren't possible, start with the txids no one depends on.
435
- // These are the transactions that should be sent last...
436
- for (const tx of this.txs) {
437
- if (tx.degree === 0) {
568
+ if (hasMissingInput)
569
+ txsMissingInputs.push(tx);
570
+ else
438
571
  queue.push(tx);
439
- }
440
572
  }
441
- // As long as we have transactions to send...
573
+ // As long as we have unsorted transactions...
442
574
  while (queue.length > 0) {
443
- const tx = queue.shift();
444
- // Add it as new first to send
445
- result.unshift(tx);
446
- // And remove its impact on degree
447
- // noting that any tx achieving a
448
- // value of zero can be sent...
449
- for (const inputTxid of tx.inputTxids) {
450
- const inputTx = txidToTx[inputTxid];
451
- if (inputTx) {
452
- inputTx.degree--;
453
- if (inputTx.degree === 0) {
454
- queue.push(inputTx);
455
- }
575
+ const oldQueue = queue;
576
+ queue = [];
577
+ for (const tx of oldQueue) {
578
+ if (tx.inputTxids.every(txid => validTxids[txid])) {
579
+ validTxids[tx.txid] = true;
580
+ result.push(tx);
456
581
  }
582
+ else
583
+ queue.push(tx);
457
584
  }
458
- }
459
- this.txs = result;
460
- return Object.keys(missingInputs);
585
+ if (oldQueue.length === queue.length)
586
+ break;
587
+ }
588
+ // transactions that don't have proofs and don't chain to proofs
589
+ const txsNotValid = queue;
590
+ // New order of txs is sorted, unsortable, txidOnly (no raw transaction)
591
+ this.txs = result.concat(queue).concat(txidOnly).concat(txsMissingInputs);
592
+ return {
593
+ missingInputs: Object.keys(missingInputs),
594
+ notValid: txsNotValid.map(tx => tx.txid),
595
+ valid: Object.keys(validTxids),
596
+ withMissingInputs: txsMissingInputs.map(tx => tx.txid),
597
+ txidOnly: txidOnly.map(tx => tx.txid)
598
+ };
461
599
  }
462
600
  /**
463
601
  * @returns a shallow copy of this beef
@@ -484,6 +622,13 @@ class Beef {
484
622
  }
485
623
  // TODO: bumps could be trimmed to eliminate unreferenced proofs.
486
624
  }
625
+ /**
626
+ * @returns array of transaction txids that either have a proof or whose inputs chain back to a proven transaction.
627
+ */
628
+ getValidTxids() {
629
+ const r = this.sortTxs();
630
+ return r.valid;
631
+ }
487
632
  /**
488
633
  * @returns Summary of `Beef` contents as multi-line string.
489
634
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Beef.js","sourceRoot":"","sources":["../../../../src/transaction/Beef.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Beef.js","sourceRoot":"","sources":["../../../../src/transaction/Beef.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,22 @@ class BeefParty extends Beef_js_1.Beef {
95
95
  this.mergeTxidOnly(txid);
96
96
  }
97
97
  }
98
+ /**
99
+ * Merge a `beef` received from a specific `party`.
100
+ *
101
+ * Updates this `BeefParty` to track all the txids
102
+ * corresponding to transactions for which `party`
103
+ * has raw transaction and validity proof data.
104
+ *
105
+ * @param party
106
+ * @param beef
107
+ */
108
+ mergeBeefFromParty(party, beef) {
109
+ const b = Array.isArray(beef) ? Beef_js_1.Beef.fromBinary(beef) : beef;
110
+ const knownTxids = b.getValidTxids();
111
+ this.mergeBeef(b);
112
+ this.addKnownTxidsForParty(party, knownTxids);
113
+ }
98
114
  }
99
115
  exports.BeefParty = BeefParty;
100
116
  exports.default = BeefParty;
@@ -1 +1 @@
1
- {"version":3,"file":"BeefParty.js","sourceRoot":"","sources":["../../../../src/transaction/BeefParty.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAEhC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,SAAU,SAAQ,cAAI;IAOjC;;;SAGK;IACL,YAAa,OAAkB;QAC7B,KAAK,EAAE,CAAA;QAXT;;;aAGK;QACL,YAAO,GAA4C,EAAE,CAAA;QAQnD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;SAGK;IACL,OAAO,CAAE,KAAa;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACnD,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;;SAGK;IACL,QAAQ,CAAE,KAAa;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAA;QAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;IAED;;;SAGK;IACL,qBAAqB,CAAE,KAAa;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,CAAC,CAAA;QAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED;;;SAGK;IACL,sBAAsB,CAAE,KAAa;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAC/B,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACrC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;;;SAIK;IACL,qBAAqB,CAAE,KAAa,EAAE,UAAoB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;CACF;AAtED,8BAsEC;AAED,kBAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"BeefParty.js","sourceRoot":"","sources":["../../../../src/transaction/BeefParty.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAEhC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,SAAU,SAAQ,cAAI;IAOjC;;;SAGK;IACL,YAAa,OAAkB;QAC7B,KAAK,EAAE,CAAA;QAXT;;;aAGK;QACL,YAAO,GAA4C,EAAE,CAAA;QAQnD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;SAGK;IACL,OAAO,CAAE,KAAa;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACnD,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;;SAGK;IACL,QAAQ,CAAE,KAAa;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAA;QAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;IAED;;;SAGK;IACL,qBAAqB,CAAE,KAAa;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,CAAC,CAAA;QAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED;;;SAGK;IACL,sBAAsB,CAAE,KAAa;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAC/B,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACrC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;;;SAIK;IACL,qBAAqB,CAAE,KAAa,EAAE,UAAoB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,kBAAkB,CAAE,KAAa,EAAE,IAAqB;QACtD,MAAM,CAAC,GAAS,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAClE,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,EAAE,CAAA;QACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACjB,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAC/C,CAAC;CACF;AAvFD,8BAuFC;AAED,kBAAe,SAAS,CAAA"}
@@ -57,7 +57,12 @@ class BeefTx {
57
57
  */
58
58
  constructor(tx, bumpIndex) {
59
59
  this.inputTxids = [];
60
- this.degree = 0;
60
+ /**
61
+ * true if `hasProof` or all inputs chain to `hasProof`.
62
+ *
63
+ * Typically set by sorting transactions by proven dependency chains.
64
+ */
65
+ this.isValid = undefined;
61
66
  if (typeof tx === 'string') {
62
67
  this._txid = tx;
63
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BeefTx.js","sourceRoot":"","sources":["../../../../src/transaction/BeefTx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BeefTx.js","sourceRoot":"","sources":["../../../../src/transaction/BeefTx.ts"],"names":[],"mappings":"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"}
@@ -120,7 +120,18 @@ class Transaction {
120
120
  }
121
121
  // Ensure that all transactions are part of the dependency graph of the subject transaction
122
122
  const validTxids = new Set();
123
+ // All BUMP level 0 hashes are valid.
124
+ for (const bump of BUMPs) {
125
+ for (const n of bump.path[0])
126
+ if (n.hash)
127
+ validTxids.add(n.hash);
128
+ }
129
+ // To keep track of which transactions were used.
130
+ const unusedTxTxids = new Set();
131
+ for (const txid of Object.keys(transactions))
132
+ unusedTxTxids.add(txid);
123
133
  const traverseDependencies = (txid) => {
134
+ unusedTxTxids.delete(txid);
124
135
  if (validTxids.has(txid)) {
125
136
  return;
126
137
  }
@@ -136,10 +147,8 @@ class Transaction {
136
147
  };
137
148
  traverseDependencies(subjectTXID);
138
149
  // Check for any unrelated transactions
139
- for (const txid in transactions) {
140
- if (!validTxids.has(txid)) {
141
- throw new Error(`Unrelated transaction with TXID ${txid} found in Atomic BEEF data.`);
142
- }
150
+ for (const txid of unusedTxTxids) {
151
+ throw new Error(`Unrelated transaction with TXID ${txid} found in Atomic BEEF data.`);
143
152
  }
144
153
  // Build the transaction by linking inputs and merkle paths
145
154
  const addPathOrInputs = (obj) => {
@@ -772,9 +781,12 @@ class Transaction {
772
781
  /**
773
782
  * Serializes this transaction, together with its inputs and the respective merkle proofs, into the BEEF (BRC-62) format. This enables efficient verification of its compliance with the rules of SPV.
774
783
  *
784
+ * @param allowPartial If true, error will not be thrown if there are any missing sourceTransactions.
785
+ *
775
786
  * @returns The serialized BEEF structure
787
+ * @throws Error if there are any missing sourceTransactions unless `allowPartial` is true.
776
788
  */
777
- toBEEF() {
789
+ toBEEF(allowPartial) {
778
790
  const writer = new utils_js_1.Writer();
779
791
  writer.writeUInt32LE(4022206465);
780
792
  const BUMPs = [];
@@ -818,10 +830,10 @@ class Transaction {
818
830
  if (!hasProof) {
819
831
  for (let i = 0; i < tx.inputs.length; i++) {
820
832
  const input = tx.inputs[i];
821
- if (typeof input.sourceTransaction !== 'object') {
833
+ if (typeof input.sourceTransaction === 'object')
834
+ addPathsAndInputs(input.sourceTransaction);
835
+ else if (!allowPartial)
822
836
  throw new Error('A required source transaction is missing!');
823
- }
824
- addPathsAndInputs(input.sourceTransaction);
825
837
  }
826
838
  }
827
839
  };
@@ -849,16 +861,19 @@ class Transaction {
849
861
  * and then the BEEF data containing only the subject transaction and its dependencies.
850
862
  * This format ensures that the BEEF structure is atomic and contains no unrelated transactions.
851
863
  *
864
+ * @param allowPartial If true, error will not be thrown if there are any missing sourceTransactions.
865
+ *
852
866
  * @returns {number[]} - The serialized Atomic BEEF structure.
867
+ * @throws Error if there are any missing sourceTransactions unless `allowPartial` is true.
853
868
  */
854
- toAtomicBEEF() {
869
+ toAtomicBEEF(allowPartial) {
855
870
  const writer = new utils_js_1.Writer();
856
871
  // Write the Atomic BEEF prefix
857
872
  writer.writeUInt32LE(0x01010101);
858
873
  // Write the subject TXID (big-endian)
859
874
  writer.write(this.id());
860
875
  // Append the BEEF data
861
- const beefData = this.toBEEF();
876
+ const beefData = this.toBEEF(allowPartial);
862
877
  writer.write(beefData);
863
878
  return writer.toArray();
864
879
  }