@bsv/sdk 1.2.17 → 1.2.19
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/primitives/BigNumber.js +85 -89
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js +5 -2
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js +3 -2
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +71 -62
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +0 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +26 -40
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +75 -73
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +12 -1
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +70 -96
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +20 -2
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/primitives/BigNumber.js +85 -89
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js +5 -2
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js +2 -2
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +70 -61
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/totp/totp.js +0 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +25 -39
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js +1 -1
- package/dist/esm/src/transaction/BeefTx.js +76 -74
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +12 -1
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +71 -97
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +20 -2
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +24 -22
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +17 -17
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +9 -12
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefParty.d.ts +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +5 -2
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/ChainTracker.d.ts +6 -0
- package/dist/types/src/transaction/ChainTracker.d.ts.map +1 -1
- package/dist/types/src/transaction/MerklePath.d.ts +1 -0
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +6 -0
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +2 -1
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/compat.md +13 -11
- package/docs/primitives.md +152 -188
- package/docs/transaction.md +78 -76
- package/package.json +1 -1
- package/src/primitives/BigNumber.ts +111 -111
- package/src/primitives/PublicKey.ts +5 -2
- package/src/primitives/Random.ts +2 -2
- package/src/primitives/utils.ts +92 -77
- package/src/totp/totp.ts +0 -1
- package/src/transaction/Beef.ts +20 -43
- package/src/transaction/BeefParty.ts +1 -1
- package/src/transaction/BeefTx.ts +89 -57
- package/src/transaction/ChainTracker.ts +6 -0
- package/src/transaction/MerklePath.ts +13 -1
- package/src/transaction/Transaction.ts +77 -100
- package/src/transaction/__tests/Beef.test.ts +9 -9
- package/src/transaction/__tests/MerklePath.test.ts +23 -2
- package/src/transaction/__tests/Transaction.benchmarks.test.ts +1 -1
- package/src/transaction/__tests/Transaction.test.ts +3 -3
- package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +2 -2
- package/src/transaction/chaintrackers/WhatsOnChain.ts +20 -2
- package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +32 -1
package/dist/cjs/package.json
CHANGED
|
@@ -91,10 +91,12 @@ class BigNumber {
|
|
|
91
91
|
base = 10;
|
|
92
92
|
}
|
|
93
93
|
if (typeof number === 'number') {
|
|
94
|
-
|
|
94
|
+
this.initNumber(number, base, endian);
|
|
95
|
+
return;
|
|
95
96
|
}
|
|
96
97
|
if (typeof number === 'object') {
|
|
97
|
-
|
|
98
|
+
this.initArray(number, endian);
|
|
99
|
+
return;
|
|
98
100
|
}
|
|
99
101
|
if (base === 'hex') {
|
|
100
102
|
base = 16;
|
|
@@ -102,7 +104,7 @@ class BigNumber {
|
|
|
102
104
|
this.assert(base === (base | 0) && base >= 2 && base <= 36);
|
|
103
105
|
number = number.toString().replace(/\s+/g, '');
|
|
104
106
|
let start = 0;
|
|
105
|
-
if (number
|
|
107
|
+
if (number.startsWith('-')) {
|
|
106
108
|
start++;
|
|
107
109
|
this.negative = 1;
|
|
108
110
|
}
|
|
@@ -159,7 +161,7 @@ class BigNumber {
|
|
|
159
161
|
this.length = 2;
|
|
160
162
|
}
|
|
161
163
|
else {
|
|
162
|
-
this.assert(number
|
|
164
|
+
this.assert(number <= 0x1FFFFFFFFFFFFF, 'The number is larger than 2 ^ 53 (unsafe)');
|
|
163
165
|
this.words = [
|
|
164
166
|
number & 0x3ffffff,
|
|
165
167
|
(number / 0x4000000) & 0x3ffffff,
|
|
@@ -279,44 +281,33 @@ class BigNumber {
|
|
|
279
281
|
* @return The current BigNumber instance.
|
|
280
282
|
*/
|
|
281
283
|
parseHex(number, start, endian) {
|
|
282
|
-
//
|
|
284
|
+
// Initialize the words array
|
|
283
285
|
this.length = Math.ceil((number.length - start) / 6);
|
|
284
|
-
this.words = new Array(this.length);
|
|
285
|
-
let i = 0;
|
|
286
|
-
for (; i < this.length; i++) {
|
|
287
|
-
this.words[i] = 0;
|
|
288
|
-
}
|
|
286
|
+
this.words = new Array(this.length).fill(0);
|
|
289
287
|
// 24-bits chunks
|
|
290
288
|
let off = 0;
|
|
291
289
|
let j = 0;
|
|
292
|
-
|
|
290
|
+
const processHexByte = (i) => {
|
|
291
|
+
const w = this.parseHexByte(number, start, i) << off;
|
|
292
|
+
this.words[j] |= w & 0x3ffffff;
|
|
293
|
+
if (off >= 18) {
|
|
294
|
+
off -= 18;
|
|
295
|
+
j += 1;
|
|
296
|
+
this.words[j] |= w >>> 26;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
off += 8;
|
|
300
|
+
}
|
|
301
|
+
};
|
|
293
302
|
if (endian === 'be') {
|
|
294
|
-
for (i = number.length - 1; i >= start; i -= 2) {
|
|
295
|
-
|
|
296
|
-
this.words[j] |= w & 0x3ffffff;
|
|
297
|
-
if (off >= 18) {
|
|
298
|
-
off -= 18;
|
|
299
|
-
j += 1;
|
|
300
|
-
this.words[j] |= w >>> 26;
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
off += 8;
|
|
304
|
-
}
|
|
303
|
+
for (let i = number.length - 1; i >= start; i -= 2) {
|
|
304
|
+
processHexByte(i);
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
else {
|
|
308
308
|
const parseLength = number.length - start;
|
|
309
|
-
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
|
|
310
|
-
|
|
311
|
-
this.words[j] |= w & 0x3ffffff;
|
|
312
|
-
if (off >= 18) {
|
|
313
|
-
off -= 18;
|
|
314
|
-
j += 1;
|
|
315
|
-
this.words[j] |= w >>> 26;
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
off += 8;
|
|
319
|
-
}
|
|
309
|
+
for (let i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
|
|
310
|
+
processHexByte(i);
|
|
320
311
|
}
|
|
321
312
|
}
|
|
322
313
|
return this.strip();
|
|
@@ -469,7 +460,7 @@ class BigNumber {
|
|
|
469
460
|
* Increases the BigNumber length up to a certain size and initializes new elements with 0.
|
|
470
461
|
*
|
|
471
462
|
* @method expand
|
|
472
|
-
* @param size - The desired size to grow the BigNumber length.
|
|
463
|
+
* @param {number} size - The desired size to grow the BigNumber length.
|
|
473
464
|
* @returns The BigNumber instance after expansion.
|
|
474
465
|
*
|
|
475
466
|
* @example
|
|
@@ -543,69 +534,74 @@ class BigNumber {
|
|
|
543
534
|
* bn.toString(16); // Converts the BigNumber to a hexadecimal string.
|
|
544
535
|
*/
|
|
545
536
|
toString(base = 10, padding = 1) {
|
|
546
|
-
let out;
|
|
547
537
|
if (base === 16 || base === 'hex') {
|
|
548
|
-
|
|
549
|
-
let off = 0;
|
|
550
|
-
let carry = 0;
|
|
551
|
-
for (let i = 0; i < this.length; i++) {
|
|
552
|
-
const w = this.words[i];
|
|
553
|
-
const word = (((w << off) | carry) & 0xffffff).toString(16);
|
|
554
|
-
carry = (w >>> (24 - off)) & 0xffffff;
|
|
555
|
-
off += 2;
|
|
556
|
-
if (off >= 26) {
|
|
557
|
-
off -= 26;
|
|
558
|
-
i--;
|
|
559
|
-
}
|
|
560
|
-
if (carry !== 0 || i !== this.length - 1) {
|
|
561
|
-
out = BigNumber.zeros[6 - word.length] + word + out;
|
|
562
|
-
}
|
|
563
|
-
else {
|
|
564
|
-
out = word + out;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
if (carry !== 0) {
|
|
568
|
-
out = carry.toString(16) + out;
|
|
569
|
-
}
|
|
570
|
-
if (padding === 0 && out === '0') {
|
|
571
|
-
return '';
|
|
572
|
-
}
|
|
573
|
-
while (out.length % padding !== 0 && padding !== 0) {
|
|
574
|
-
out = '0' + out;
|
|
575
|
-
}
|
|
576
|
-
if (this.negative !== 0) {
|
|
577
|
-
out = '-' + out;
|
|
578
|
-
}
|
|
579
|
-
return out;
|
|
538
|
+
return this.toHexString(padding);
|
|
580
539
|
}
|
|
581
540
|
if (base === (base | 0) && base >= 2 && base <= 36) {
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
541
|
+
return this.toBaseString(base, padding);
|
|
542
|
+
}
|
|
543
|
+
throw new Error('Base should be between 2 and 36');
|
|
544
|
+
}
|
|
545
|
+
toHexString(padding) {
|
|
546
|
+
let out = '';
|
|
547
|
+
let off = 0;
|
|
548
|
+
let carry = 0;
|
|
549
|
+
for (let i = 0; i < this.length; i++) {
|
|
550
|
+
const w = this.words[i];
|
|
551
|
+
const word = (((w << off) | carry) & 0xffffff).toString(16);
|
|
552
|
+
carry = (w >>> (24 - off)) & 0xffffff;
|
|
553
|
+
off += 2;
|
|
554
|
+
if (off >= 26) {
|
|
555
|
+
off -= 26;
|
|
556
|
+
i--;
|
|
596
557
|
}
|
|
597
|
-
if (this.
|
|
598
|
-
out =
|
|
558
|
+
if (carry !== 0 || i !== this.length - 1) {
|
|
559
|
+
out = BigNumber.zeros[6 - word.length] + word + out;
|
|
599
560
|
}
|
|
600
|
-
|
|
601
|
-
out =
|
|
561
|
+
else {
|
|
562
|
+
out = word + out;
|
|
602
563
|
}
|
|
603
|
-
|
|
604
|
-
|
|
564
|
+
}
|
|
565
|
+
if (carry !== 0) {
|
|
566
|
+
out = carry.toString(16) + out;
|
|
567
|
+
}
|
|
568
|
+
if (padding === 0 && out === '0') {
|
|
569
|
+
return '';
|
|
570
|
+
}
|
|
571
|
+
while (out.length % padding !== 0 && padding !== 0) {
|
|
572
|
+
out = '0' + out;
|
|
573
|
+
}
|
|
574
|
+
if (this.negative !== 0) {
|
|
575
|
+
out = '-' + out;
|
|
576
|
+
}
|
|
577
|
+
return out;
|
|
578
|
+
}
|
|
579
|
+
toBaseString(base, padding) {
|
|
580
|
+
const groupSize = BigNumber.groupSizes[base];
|
|
581
|
+
const groupBase = BigNumber.groupBases[base];
|
|
582
|
+
let out = '';
|
|
583
|
+
let c = this.clone();
|
|
584
|
+
c.negative = 0;
|
|
585
|
+
while (!c.isZero()) {
|
|
586
|
+
const r = c.modrn(groupBase).toString(base);
|
|
587
|
+
c = c.idivn(groupBase);
|
|
588
|
+
if (!c.isZero()) {
|
|
589
|
+
out = BigNumber.zeros[groupSize - r.length] + r + out;
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
out = r + out;
|
|
605
593
|
}
|
|
606
|
-
return out;
|
|
607
594
|
}
|
|
608
|
-
|
|
595
|
+
if (this.isZero()) {
|
|
596
|
+
out = '0' + out;
|
|
597
|
+
}
|
|
598
|
+
while (out.length % padding !== 0) {
|
|
599
|
+
out = '0' + out;
|
|
600
|
+
}
|
|
601
|
+
if (this.negative !== 0) {
|
|
602
|
+
out = '-' + out;
|
|
603
|
+
}
|
|
604
|
+
return out;
|
|
609
605
|
}
|
|
610
606
|
/**
|
|
611
607
|
* Converts the BigNumber instance to a JavaScript number.
|