@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.
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/transaction/Beef.js +195 -50
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js +16 -0
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +6 -1
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +25 -10
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/transaction/Beef.js +194 -49
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js +16 -0
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +6 -1
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +25 -10
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/transaction/Beef.d.ts +60 -4
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefParty.d.ts +11 -0
- package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +6 -1
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +8 -2
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/transaction.md +166 -9
- package/package.json +1 -1
- package/src/transaction/Beef.ts +221 -52
- package/src/transaction/BeefParty.ts +17 -0
- package/src/transaction/BeefTx.ts +6 -1
- package/src/transaction/Transaction.ts +25 -10
- package/src/transaction/__tests/Beef.test.ts +74 -15
|
@@ -4,6 +4,7 @@ import { Reader, Writer, toHex, toArray } from '../primitives/utils.js';
|
|
|
4
4
|
export const BEEF_MAGIC = 4022206465; // 0100BEEF in LE order
|
|
5
5
|
export const BEEF_MAGIC_V2 = 4022206466; // 0200BEEF in LE order
|
|
6
6
|
export const BEEF_MAGIC_TXID_ONLY_EXTENSION = 4022206465; // 0100BEEF in LE order
|
|
7
|
+
export const ATOMIC_BEEF = 0x01010101; // Atomic Beef serialization prefix
|
|
7
8
|
/*
|
|
8
9
|
* BEEF standard: BRC-62: Background Evaluation Extended Format (BEEF) Transactions
|
|
9
10
|
* https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0062.md
|
|
@@ -11,6 +12,14 @@ export const BEEF_MAGIC_TXID_ONLY_EXTENSION = 4022206465; // 0100BEEF in LE orde
|
|
|
11
12
|
* BUMP standard: BRC-74: BSV Unified Merkle Path (BUMP) Format
|
|
12
13
|
* https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0074.md
|
|
13
14
|
*
|
|
15
|
+
* BRC-95: Atomic BEEF Transactions
|
|
16
|
+
* https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0095.md
|
|
17
|
+
*
|
|
18
|
+
* The Atomic BEEF format is supported by the binary deserialization static method `fromBinary`.
|
|
19
|
+
*
|
|
20
|
+
* BRC-96: BEEF V2, Txid Only Extension
|
|
21
|
+
* https://github.com/bitcoin-sv/BRCs/blob/master/transactions/0096.md
|
|
22
|
+
*
|
|
14
23
|
* A valid serialized BEEF is the cornerstone of Simplified Payment Validation (SPV)
|
|
15
24
|
* where they are exchanged between two non-trusting parties to establish the
|
|
16
25
|
* validity of a newly constructed bitcoin transaction and its inputs from prior
|
|
@@ -42,11 +51,18 @@ export const BEEF_MAGIC_TXID_ONLY_EXTENSION = 4022206465; // 0100BEEF in LE orde
|
|
|
42
51
|
*
|
|
43
52
|
* A valid `Beef` is only required when sent to a party with no shared history,
|
|
44
53
|
* such as a transaction processor.
|
|
54
|
+
*
|
|
55
|
+
* IMPORTANT NOTE:
|
|
56
|
+
* It is fundamental to the BEEF value proposition that only valid transactions and valid
|
|
57
|
+
* merkle path (BUMP) data be added to it. Merging invalid data breaks the `verify` and `isValid`
|
|
58
|
+
* functions. There is no support for removing invalid data. A `Beef` that becomes invalid
|
|
59
|
+
* must be discarded.
|
|
45
60
|
*/
|
|
46
61
|
export class Beef {
|
|
47
62
|
bumps = [];
|
|
48
63
|
txs = [];
|
|
49
64
|
version = undefined;
|
|
65
|
+
atomicTxid = undefined;
|
|
50
66
|
constructor(version) {
|
|
51
67
|
this.version = version;
|
|
52
68
|
}
|
|
@@ -75,6 +91,74 @@ export class Beef {
|
|
|
75
91
|
findTxid(txid) {
|
|
76
92
|
return this.txs.find(tx => tx.txid === txid);
|
|
77
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* @returns `MerklePath` with level zero hash equal to txid or undefined.
|
|
96
|
+
*/
|
|
97
|
+
findBump(txid) {
|
|
98
|
+
return this.bumps.find(b => b.path[0].find(leaf => leaf.hash === txid));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Finds a Transaction in this `Beef`
|
|
102
|
+
* and adds any missing input SourceTransactions from this `Beef`.
|
|
103
|
+
*
|
|
104
|
+
* The result is suitable for signing.
|
|
105
|
+
*
|
|
106
|
+
* @param txid The id of the target transaction.
|
|
107
|
+
* @returns Transaction with all available input `SourceTransaction`s from this Beef.
|
|
108
|
+
*/
|
|
109
|
+
findTransactionForSigning(txid) {
|
|
110
|
+
const beefTx = this.findTxid(txid);
|
|
111
|
+
if (!beefTx)
|
|
112
|
+
return undefined;
|
|
113
|
+
for (const i of beefTx.tx.inputs) {
|
|
114
|
+
if (!i.sourceTransaction) {
|
|
115
|
+
const itx = this.findTxid(i.sourceTXID);
|
|
116
|
+
if (itx) {
|
|
117
|
+
i.sourceTransaction = itx.tx;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return beefTx.tx;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Builds the proof tree rooted at a specific `Transaction`.
|
|
125
|
+
*
|
|
126
|
+
* To succeed, the Beef must contain all the required transaction and merkle path data.
|
|
127
|
+
*
|
|
128
|
+
* @param txid The id of the target transaction.
|
|
129
|
+
* @returns Transaction with input `SourceTransaction` and `MerklePath` populated from this Beef.
|
|
130
|
+
*/
|
|
131
|
+
findAtomicTransaction(txid) {
|
|
132
|
+
const beefTx = this.findTxid(txid);
|
|
133
|
+
if (!beefTx)
|
|
134
|
+
return undefined;
|
|
135
|
+
const addInputProof = (beef, tx) => {
|
|
136
|
+
const mp = beef.findBump(tx.id('hex'));
|
|
137
|
+
if (mp)
|
|
138
|
+
tx.merklePath = mp;
|
|
139
|
+
else {
|
|
140
|
+
for (const i of tx.inputs) {
|
|
141
|
+
if (!i.sourceTransaction) {
|
|
142
|
+
const itx = beef.findTxid(i.sourceTXID);
|
|
143
|
+
if (itx) {
|
|
144
|
+
i.sourceTransaction = itx.tx;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (i.sourceTransaction) {
|
|
148
|
+
const mp = beef.findBump(i.sourceTransaction.id('hex'));
|
|
149
|
+
if (mp) {
|
|
150
|
+
i.sourceTransaction.merklePath = mp;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
addInputProof(beef, i.sourceTransaction);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
addInputProof(this, beefTx.tx);
|
|
160
|
+
return beefTx.tx;
|
|
161
|
+
}
|
|
78
162
|
/**
|
|
79
163
|
* Merge a MerklePath that is assumed to be fully valid.
|
|
80
164
|
* @param bump
|
|
@@ -304,11 +388,10 @@ export class Beef {
|
|
|
304
388
|
return r;
|
|
305
389
|
}
|
|
306
390
|
/**
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
const writer = new Writer();
|
|
391
|
+
* Serializes this data to `writer`
|
|
392
|
+
* @param writer
|
|
393
|
+
*/
|
|
394
|
+
toWriter(writer) {
|
|
312
395
|
writer.writeUInt32LE(this.magic);
|
|
313
396
|
writer.writeVarIntNum(this.bumps.length);
|
|
314
397
|
for (const b of this.bumps) {
|
|
@@ -318,6 +401,36 @@ export class Beef {
|
|
|
318
401
|
for (const tx of this.txs) {
|
|
319
402
|
tx.toWriter(writer, this.magic);
|
|
320
403
|
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Returns a binary array representing the serialized BEEF
|
|
407
|
+
* @returns A binary array representing the BEEF
|
|
408
|
+
*/
|
|
409
|
+
toBinary() {
|
|
410
|
+
const writer = new Writer();
|
|
411
|
+
this.toWriter(writer);
|
|
412
|
+
return writer.toArray();
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Serialize this Beef as AtomicBEEF.
|
|
416
|
+
*
|
|
417
|
+
* `txid` must exist and be the last transaction
|
|
418
|
+
* in sorted (dependency) order.
|
|
419
|
+
*
|
|
420
|
+
* @param txid
|
|
421
|
+
* @returns serialized contents of this Beef with AtomicBEEF prefix.
|
|
422
|
+
*/
|
|
423
|
+
toBinaryAtomic(txid) {
|
|
424
|
+
this.sortTxs();
|
|
425
|
+
const tx = this.findTxid(txid);
|
|
426
|
+
if (!tx)
|
|
427
|
+
throw new Error(`${txid} does not exist in this Beef`);
|
|
428
|
+
if (this.txs[this.txs.length - 1] !== tx)
|
|
429
|
+
throw new Error(`${txid} is not the last transaction in this Beef`);
|
|
430
|
+
const writer = new Writer();
|
|
431
|
+
writer.writeUInt32LE(ATOMIC_BEEF);
|
|
432
|
+
writer.write(toArray(txid, 'hex'));
|
|
433
|
+
this.toWriter(writer);
|
|
321
434
|
return writer.toArray();
|
|
322
435
|
}
|
|
323
436
|
/**
|
|
@@ -328,7 +441,13 @@ export class Beef {
|
|
|
328
441
|
return toHex(this.toBinary());
|
|
329
442
|
}
|
|
330
443
|
static fromReader(br) {
|
|
331
|
-
|
|
444
|
+
let version = br.readUInt32LE();
|
|
445
|
+
let atomicTxid = undefined;
|
|
446
|
+
if (version === ATOMIC_BEEF) {
|
|
447
|
+
// Skip the txid and re-read the BEEF version
|
|
448
|
+
atomicTxid = toHex(br.read(32));
|
|
449
|
+
version = br.readUInt32LE();
|
|
450
|
+
}
|
|
332
451
|
if (version !== BEEF_MAGIC && version !== BEEF_MAGIC_V2) {
|
|
333
452
|
throw new Error(`Serialized BEEF must start with ${BEEF_MAGIC} or ${BEEF_MAGIC_V2} but starts with ${version}`);
|
|
334
453
|
}
|
|
@@ -343,6 +462,7 @@ export class Beef {
|
|
|
343
462
|
const beefTx = BeefTx.fromReader(br, version);
|
|
344
463
|
beef.txs.push(beefTx);
|
|
345
464
|
}
|
|
465
|
+
beef.atomicTxid = atomicTxid;
|
|
346
466
|
return beef;
|
|
347
467
|
}
|
|
348
468
|
/**
|
|
@@ -389,69 +509,87 @@ export class Beef {
|
|
|
389
509
|
return false;
|
|
390
510
|
}
|
|
391
511
|
/**
|
|
392
|
-
* Sort the `txs` by input txid dependency order
|
|
393
|
-
*
|
|
512
|
+
* Sort the `txs` by input txid dependency order:
|
|
513
|
+
* - Oldest Tx Anchored by Path
|
|
514
|
+
* - Newer Txs depending on Older parents
|
|
515
|
+
* - Newest Tx
|
|
516
|
+
*
|
|
517
|
+
* with proof (MerklePath) last, longest chain of dependencies first
|
|
518
|
+
*
|
|
519
|
+
* @returns `{ missingInputs, notValid, valid, withMissingInputs }`
|
|
394
520
|
*/
|
|
395
521
|
sortTxs() {
|
|
396
|
-
|
|
522
|
+
// Hashtable of valid txids (with proof or all inputs chain to proof)
|
|
523
|
+
const validTxids = {};
|
|
524
|
+
// Hashtable of all transaction txids to transaction
|
|
397
525
|
const txidToTx = {};
|
|
526
|
+
// queue of unsorted transactions ...
|
|
527
|
+
let queue = [];
|
|
528
|
+
// sorted transactions: hasProof to with longest dependency chain
|
|
529
|
+
const result = [];
|
|
530
|
+
const txidOnly = [];
|
|
398
531
|
for (const tx of this.txs) {
|
|
399
532
|
txidToTx[tx.txid] = tx;
|
|
400
|
-
|
|
401
|
-
tx.
|
|
533
|
+
tx.isValid = tx.hasProof;
|
|
534
|
+
if (tx.isValid) {
|
|
535
|
+
validTxids[tx.txid] = true;
|
|
536
|
+
result.push(tx);
|
|
537
|
+
}
|
|
538
|
+
else if (tx.isTxidOnly)
|
|
539
|
+
txidOnly.push(tx);
|
|
540
|
+
else
|
|
541
|
+
queue.push(tx);
|
|
402
542
|
}
|
|
403
|
-
|
|
404
|
-
|
|
543
|
+
// Hashtable of unknown input txids used to fund transactions without their own proof.
|
|
544
|
+
const missingInputs = {};
|
|
545
|
+
// transactions with one or more missing inputs
|
|
546
|
+
const txsMissingInputs = [];
|
|
547
|
+
const possiblyMissingInputs = queue;
|
|
548
|
+
queue = [];
|
|
549
|
+
for (const tx of possiblyMissingInputs) {
|
|
550
|
+
let hasMissingInput = false;
|
|
551
|
+
if (!tx.isValid) {
|
|
405
552
|
// For all the unproven transactions,
|
|
406
553
|
// link their inputs that exist in this beef,
|
|
407
554
|
// make a note of missing inputs.
|
|
408
555
|
for (const inputTxid of tx.inputTxids) {
|
|
409
556
|
if (!txidToTx[inputTxid]) {
|
|
410
557
|
missingInputs[inputTxid] = true;
|
|
558
|
+
hasMissingInput = true;
|
|
411
559
|
}
|
|
412
560
|
}
|
|
413
561
|
}
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
// sorted transactions
|
|
418
|
-
const result = [];
|
|
419
|
-
// Increment each txid's degree for every input reference to it by another txid
|
|
420
|
-
for (const tx of this.txs) {
|
|
421
|
-
for (const inputTxid of tx.inputTxids) {
|
|
422
|
-
const tx = txidToTx[inputTxid];
|
|
423
|
-
if (tx) {
|
|
424
|
-
tx.degree++;
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
// Since circular dependencies aren't possible, start with the txids no one depends on.
|
|
429
|
-
// These are the transactions that should be sent last...
|
|
430
|
-
for (const tx of this.txs) {
|
|
431
|
-
if (tx.degree === 0) {
|
|
562
|
+
if (hasMissingInput)
|
|
563
|
+
txsMissingInputs.push(tx);
|
|
564
|
+
else
|
|
432
565
|
queue.push(tx);
|
|
433
|
-
}
|
|
434
566
|
}
|
|
435
|
-
// As long as we have transactions
|
|
567
|
+
// As long as we have unsorted transactions...
|
|
436
568
|
while (queue.length > 0) {
|
|
437
|
-
const
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
for (const inputTxid of tx.inputTxids) {
|
|
444
|
-
const inputTx = txidToTx[inputTxid];
|
|
445
|
-
if (inputTx) {
|
|
446
|
-
inputTx.degree--;
|
|
447
|
-
if (inputTx.degree === 0) {
|
|
448
|
-
queue.push(inputTx);
|
|
449
|
-
}
|
|
569
|
+
const oldQueue = queue;
|
|
570
|
+
queue = [];
|
|
571
|
+
for (const tx of oldQueue) {
|
|
572
|
+
if (tx.inputTxids.every(txid => validTxids[txid])) {
|
|
573
|
+
validTxids[tx.txid] = true;
|
|
574
|
+
result.push(tx);
|
|
450
575
|
}
|
|
576
|
+
else
|
|
577
|
+
queue.push(tx);
|
|
451
578
|
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
579
|
+
if (oldQueue.length === queue.length)
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
// transactions that don't have proofs and don't chain to proofs
|
|
583
|
+
const txsNotValid = queue;
|
|
584
|
+
// New order of txs is sorted, unsortable, txidOnly (no raw transaction)
|
|
585
|
+
this.txs = result.concat(queue).concat(txidOnly).concat(txsMissingInputs);
|
|
586
|
+
return {
|
|
587
|
+
missingInputs: Object.keys(missingInputs),
|
|
588
|
+
notValid: txsNotValid.map(tx => tx.txid),
|
|
589
|
+
valid: Object.keys(validTxids),
|
|
590
|
+
withMissingInputs: txsMissingInputs.map(tx => tx.txid),
|
|
591
|
+
txidOnly: txidOnly.map(tx => tx.txid)
|
|
592
|
+
};
|
|
455
593
|
}
|
|
456
594
|
/**
|
|
457
595
|
* @returns a shallow copy of this beef
|
|
@@ -478,6 +616,13 @@ export class Beef {
|
|
|
478
616
|
}
|
|
479
617
|
// TODO: bumps could be trimmed to eliminate unreferenced proofs.
|
|
480
618
|
}
|
|
619
|
+
/**
|
|
620
|
+
* @returns array of transaction txids that either have a proof or whose inputs chain back to a proven transaction.
|
|
621
|
+
*/
|
|
622
|
+
getValidTxids() {
|
|
623
|
+
const r = this.sortTxs();
|
|
624
|
+
return r.valid;
|
|
625
|
+
}
|
|
481
626
|
/**
|
|
482
627
|
* @returns Summary of `Beef` contents as multi-line string.
|
|
483
628
|
*/
|
|
@@ -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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"}
|
|
@@ -92,6 +92,22 @@ export class BeefParty extends Beef {
|
|
|
92
92
|
this.mergeTxidOnly(txid);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Merge a `beef` received from a specific `party`.
|
|
97
|
+
*
|
|
98
|
+
* Updates this `BeefParty` to track all the txids
|
|
99
|
+
* corresponding to transactions for which `party`
|
|
100
|
+
* has raw transaction and validity proof data.
|
|
101
|
+
*
|
|
102
|
+
* @param party
|
|
103
|
+
* @param beef
|
|
104
|
+
*/
|
|
105
|
+
mergeBeefFromParty(party, beef) {
|
|
106
|
+
const b = Array.isArray(beef) ? Beef.fromBinary(beef) : beef;
|
|
107
|
+
const knownTxids = b.getValidTxids();
|
|
108
|
+
this.mergeBeef(b);
|
|
109
|
+
this.addKnownTxidsForParty(party, knownTxids);
|
|
110
|
+
}
|
|
95
111
|
}
|
|
96
112
|
export default BeefParty;
|
|
97
113
|
//# sourceMappingURL=BeefParty.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BeefParty.js","sourceRoot":"","sources":["../../../../src/transaction/BeefParty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC;;;SAGK;IACL,OAAO,GAA4C,EAAE,CAAA;IAErD;;;SAGK;IACL,YAAa,OAAkB;QAC7B,KAAK,EAAE,CAAA;QACP,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;AAED,eAAe,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"BeefParty.js","sourceRoot":"","sources":["../../../../src/transaction/BeefParty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjC;;;SAGK;IACL,OAAO,GAA4C,EAAE,CAAA;IAErD;;;SAGK;IACL,YAAa,OAAkB;QAC7B,KAAK,EAAE,CAAA;QACP,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,IAAI,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;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -17,7 +17,12 @@ export default class BeefTx {
|
|
|
17
17
|
_rawTx;
|
|
18
18
|
_txid;
|
|
19
19
|
inputTxids = [];
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* true if `hasProof` or all inputs chain to `hasProof`.
|
|
22
|
+
*
|
|
23
|
+
* Typically set by sorting transactions by proven dependency chains.
|
|
24
|
+
*/
|
|
25
|
+
isValid = undefined;
|
|
21
26
|
get bumpIndex() { return this._bumpIndex; }
|
|
22
27
|
set bumpIndex(v) {
|
|
23
28
|
this._bumpIndex = v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BeefTx.js","sourceRoot":"","sources":["../../../../src/transaction/BeefTx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAkB,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAA;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,UAAU,CAAS;IACnB,GAAG,CAAc;IACjB,MAAM,CAAW;IACjB,KAAK,CAAS;IACd,UAAU,GAAa,EAAE,CAAA;IACzB,
|
|
1
|
+
{"version":3,"file":"BeefTx.js","sourceRoot":"","sources":["../../../../src/transaction/BeefTx.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,7 +122,18 @@ export default class Transaction {
|
|
|
122
122
|
}
|
|
123
123
|
// Ensure that all transactions are part of the dependency graph of the subject transaction
|
|
124
124
|
const validTxids = new Set();
|
|
125
|
+
// All BUMP level 0 hashes are valid.
|
|
126
|
+
for (const bump of BUMPs) {
|
|
127
|
+
for (const n of bump.path[0])
|
|
128
|
+
if (n.hash)
|
|
129
|
+
validTxids.add(n.hash);
|
|
130
|
+
}
|
|
131
|
+
// To keep track of which transactions were used.
|
|
132
|
+
const unusedTxTxids = new Set();
|
|
133
|
+
for (const txid of Object.keys(transactions))
|
|
134
|
+
unusedTxTxids.add(txid);
|
|
125
135
|
const traverseDependencies = (txid) => {
|
|
136
|
+
unusedTxTxids.delete(txid);
|
|
126
137
|
if (validTxids.has(txid)) {
|
|
127
138
|
return;
|
|
128
139
|
}
|
|
@@ -138,10 +149,8 @@ export default class Transaction {
|
|
|
138
149
|
};
|
|
139
150
|
traverseDependencies(subjectTXID);
|
|
140
151
|
// Check for any unrelated transactions
|
|
141
|
-
for (const txid
|
|
142
|
-
|
|
143
|
-
throw new Error(`Unrelated transaction with TXID ${txid} found in Atomic BEEF data.`);
|
|
144
|
-
}
|
|
152
|
+
for (const txid of unusedTxTxids) {
|
|
153
|
+
throw new Error(`Unrelated transaction with TXID ${txid} found in Atomic BEEF data.`);
|
|
145
154
|
}
|
|
146
155
|
// Build the transaction by linking inputs and merkle paths
|
|
147
156
|
const addPathOrInputs = (obj) => {
|
|
@@ -774,9 +783,12 @@ export default class Transaction {
|
|
|
774
783
|
/**
|
|
775
784
|
* 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.
|
|
776
785
|
*
|
|
786
|
+
* @param allowPartial If true, error will not be thrown if there are any missing sourceTransactions.
|
|
787
|
+
*
|
|
777
788
|
* @returns The serialized BEEF structure
|
|
789
|
+
* @throws Error if there are any missing sourceTransactions unless `allowPartial` is true.
|
|
778
790
|
*/
|
|
779
|
-
toBEEF() {
|
|
791
|
+
toBEEF(allowPartial) {
|
|
780
792
|
const writer = new Writer();
|
|
781
793
|
writer.writeUInt32LE(4022206465);
|
|
782
794
|
const BUMPs = [];
|
|
@@ -820,10 +832,10 @@ export default class Transaction {
|
|
|
820
832
|
if (!hasProof) {
|
|
821
833
|
for (let i = 0; i < tx.inputs.length; i++) {
|
|
822
834
|
const input = tx.inputs[i];
|
|
823
|
-
if (typeof input.sourceTransaction
|
|
835
|
+
if (typeof input.sourceTransaction === 'object')
|
|
836
|
+
addPathsAndInputs(input.sourceTransaction);
|
|
837
|
+
else if (!allowPartial)
|
|
824
838
|
throw new Error('A required source transaction is missing!');
|
|
825
|
-
}
|
|
826
|
-
addPathsAndInputs(input.sourceTransaction);
|
|
827
839
|
}
|
|
828
840
|
}
|
|
829
841
|
};
|
|
@@ -851,16 +863,19 @@ export default class Transaction {
|
|
|
851
863
|
* and then the BEEF data containing only the subject transaction and its dependencies.
|
|
852
864
|
* This format ensures that the BEEF structure is atomic and contains no unrelated transactions.
|
|
853
865
|
*
|
|
866
|
+
* @param allowPartial If true, error will not be thrown if there are any missing sourceTransactions.
|
|
867
|
+
*
|
|
854
868
|
* @returns {number[]} - The serialized Atomic BEEF structure.
|
|
869
|
+
* @throws Error if there are any missing sourceTransactions unless `allowPartial` is true.
|
|
855
870
|
*/
|
|
856
|
-
toAtomicBEEF() {
|
|
871
|
+
toAtomicBEEF(allowPartial) {
|
|
857
872
|
const writer = new Writer();
|
|
858
873
|
// Write the Atomic BEEF prefix
|
|
859
874
|
writer.writeUInt32LE(0x01010101);
|
|
860
875
|
// Write the subject TXID (big-endian)
|
|
861
876
|
writer.write(this.id());
|
|
862
877
|
// Append the BEEF data
|
|
863
|
-
const beefData = this.toBEEF();
|
|
878
|
+
const beefData = this.toBEEF(allowPartial);
|
|
864
879
|
writer.write(beefData);
|
|
865
880
|
return writer.toArray();
|
|
866
881
|
}
|