@bsv/sdk 1.1.12 → 1.1.14

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 (146) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/primitives/Point.js +28 -8
  3. package/dist/cjs/src/primitives/Point.js.map +1 -1
  4. package/dist/cjs/src/primitives/Polynomial.js +81 -0
  5. package/dist/cjs/src/primitives/Polynomial.js.map +1 -0
  6. package/dist/cjs/src/primitives/PrivateKey.js +165 -0
  7. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  8. package/dist/cjs/src/primitives/PublicKey.js +16 -2
  9. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  10. package/dist/cjs/src/primitives/index.js +5 -1
  11. package/dist/cjs/src/primitives/index.js.map +1 -1
  12. package/dist/cjs/src/primitives/utils.js +1 -1
  13. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  14. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  15. package/dist/cjs/src/transaction/Transaction.js +9 -4
  16. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  17. package/dist/cjs/src/transaction/broadcasters/ARC.js +4 -4
  18. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  19. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  20. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +3 -3
  21. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  22. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  23. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +2 -2
  24. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  25. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  26. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +2 -2
  27. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  28. package/dist/cjs/src/transaction/http/FetchHttpClient.js +2 -2
  29. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  30. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +2 -2
  31. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  32. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  33. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  34. package/dist/esm/src/primitives/Point.js +28 -8
  35. package/dist/esm/src/primitives/Point.js.map +1 -1
  36. package/dist/esm/src/primitives/Polynomial.js +77 -0
  37. package/dist/esm/src/primitives/Polynomial.js.map +1 -0
  38. package/dist/esm/src/primitives/PrivateKey.js +143 -0
  39. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  40. package/dist/esm/src/primitives/PublicKey.js +16 -2
  41. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  42. package/dist/esm/src/primitives/index.js +2 -1
  43. package/dist/esm/src/primitives/index.js.map +1 -1
  44. package/dist/esm/src/primitives/utils.js +1 -1
  45. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  46. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  47. package/dist/esm/src/transaction/Transaction.js +9 -4
  48. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  49. package/dist/esm/src/transaction/broadcasters/ARC.js +7 -7
  50. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  51. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js +1 -1
  52. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  53. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +4 -4
  54. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  55. package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js +1 -1
  56. package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  57. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  58. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  59. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  60. package/dist/esm/src/transaction/http/DefaultHttpClient.js +2 -2
  61. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  62. package/dist/esm/src/transaction/http/FetchHttpClient.js +2 -2
  63. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  64. package/dist/esm/src/transaction/http/NodejsHttpClient.js +2 -2
  65. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  66. package/dist/esm/src/transaction/http/index.js.map +1 -1
  67. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  68. package/dist/types/src/primitives/Point.d.ts +19 -1
  69. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  70. package/dist/types/src/primitives/Polynomial.d.ts +32 -0
  71. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -0
  72. package/dist/types/src/primitives/PrivateKey.d.ts +72 -0
  73. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  74. package/dist/types/src/primitives/PublicKey.d.ts +12 -1
  75. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  76. package/dist/types/src/primitives/index.d.ts +2 -1
  77. package/dist/types/src/primitives/index.d.ts.map +1 -1
  78. package/dist/types/src/primitives/utils.d.ts +1 -1
  79. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  80. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  81. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  82. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  83. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts +1 -1
  84. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  85. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts +1 -1
  86. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  87. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts +1 -1
  88. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  89. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +2 -2
  90. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  91. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  92. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  93. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +7 -9
  94. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  95. package/dist/types/src/transaction/http/HttpClient.d.ts +5 -5
  96. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  97. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +5 -6
  98. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  99. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  100. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  101. package/docs/primitives.md +231 -16
  102. package/docs/transaction.md +38 -37
  103. package/package.json +1 -1
  104. package/src/compat/__tests/BSM.test.ts +37 -37
  105. package/src/compat/__tests/ECIES.test.ts +71 -71
  106. package/src/compat/__tests/HD.test.ts +362 -362
  107. package/src/compat/__tests/Mnemonic.test.ts +147 -148
  108. package/src/compat/__tests/Mnemonic.vectors.ts +170 -170
  109. package/src/messages/__tests/EncryptedMessage.test.ts +16 -16
  110. package/src/primitives/Point.ts +29 -10
  111. package/src/primitives/Polynomial.ts +89 -0
  112. package/src/primitives/PrivateKey.ts +147 -1
  113. package/src/primitives/PublicKey.ts +17 -2
  114. package/src/primitives/__tests/AESGCM.test.ts +20 -20
  115. package/src/primitives/__tests/Hash.test.ts +2 -2
  116. package/src/primitives/__tests/PBKDF2.vectors.ts +93 -93
  117. package/src/primitives/__tests/PrivateKey.split.test.ts +70 -0
  118. package/src/primitives/__tests/PublicKey.test.ts +14 -1
  119. package/src/primitives/__tests/bug-31.test.ts +24 -26
  120. package/src/primitives/__tests/utils.test.ts +13 -13
  121. package/src/primitives/index.ts +2 -1
  122. package/src/primitives/utils.ts +1 -1
  123. package/src/script/__tests/Script.test.ts +1 -1
  124. package/src/script/__tests/SpendComplex.test.ts +6 -6
  125. package/src/script/__tests/script.invalid.vectors.ts +1464 -1464
  126. package/src/script/__tests/script.valid.vectors.ts +1962 -1962
  127. package/src/script/__tests/spend.valid.vectors.ts +1369 -1369
  128. package/src/script/templates/P2PKH.ts +6 -6
  129. package/src/script/templates/RPuzzle.ts +1 -1
  130. package/src/transaction/Transaction.ts +13 -7
  131. package/src/transaction/__tests/Transaction.test.ts +14 -5
  132. package/src/transaction/__tests/bump.invalid.vectors.ts +1 -1
  133. package/src/transaction/__tests/bump.valid.vectors.ts +3 -3
  134. package/src/transaction/broadcasters/ARC.ts +20 -21
  135. package/src/transaction/broadcasters/DefaultBroadcaster.ts +3 -3
  136. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +10 -10
  137. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +7 -10
  138. package/src/transaction/chaintrackers/DefaultChainTracker.ts +3 -3
  139. package/src/transaction/chaintrackers/WhatsOnChain.ts +10 -12
  140. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +13 -17
  141. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +2 -2
  142. package/src/transaction/http/DefaultHttpClient.ts +13 -13
  143. package/src/transaction/http/FetchHttpClient.ts +14 -16
  144. package/src/transaction/http/HttpClient.ts +22 -23
  145. package/src/transaction/http/NodejsHttpClient.ts +23 -25
  146. package/src/transaction/http/index.ts +6 -6
@@ -1,33 +1,31 @@
1
- //import { PrivateKey, PublicKey, Curve, Hash, BigNumber } from '..';
1
+ // import { PrivateKey, PublicKey, Curve, Hash, BigNumber } from '..';
2
2
  import PublicKey from '../../../dist/cjs/src/primitives/PublicKey'
3
- //import { PrivateKey } from '..';
3
+ // import { PrivateKey } from '..';
4
4
  import PrivateKey from '../../../dist/cjs/src/primitives/PrivateKey'
5
5
  import Curve from '../../../dist/cjs/src/primitives/Curve'
6
6
  import BigNumber from '../../../dist/cjs/src/primitives/BigNumber'
7
7
 
8
- describe("bug-31 tests", () => {
8
+ describe('bug-31 tests', () => {
9
+ test('0', () => {
10
+ const c = new Curve()
11
+ const G = c.g
12
+ // const bn = new BigNumber(c.n + 12)
13
+ const bn = c.n.addn(12)
14
+ const sn = new BigNumber(12)
15
+ {
16
+ expect(() => new PrivateKey(bn.toHex(), 'hex', 'be', 'error')).toThrow('Input is out of field')
17
+ }
18
+ const o = PrivateKey.fromString(bn.toHex(), 'hex')
19
+ const os = PrivateKey.fromString(sn.toHex(), 'hex')
20
+ expect(o.cmp(os)).toBe(0)
21
+ const os2 = new PrivateKey(bn.toHex(), 'hex', 'be', 'nocheck')
22
+ expect(o.cmp(os2)).not.toBe(0)
9
23
 
10
- test("0", () => {
11
- const c = new Curve()
12
- const G = c.g
13
- //const bn = new BigNumber(c.n + 12)
14
- const bn = c.n.addn(12)
15
- const sn = new BigNumber(12)
16
- {
17
- expect(() => new PrivateKey(bn.toHex(), 'hex', 'be', 'error')).toThrow("Input is out of field")
18
- }
19
- const o = PrivateKey.fromString(bn.toHex(), 'hex')
20
- const os = PrivateKey.fromString(sn.toHex(), 'hex')
21
- expect(o.cmp(os)).toBe(0)
22
- const os2 = new PrivateKey(bn.toHex(), 'hex', 'be', 'nocheck')
23
- expect(o.cmp(os2)).not.toBe(0)
24
+ const oWif = o.toWif()
25
+ expect(oWif).toBe('KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU79MFFcB1G')
26
+ const osWif = os.toWif()
27
+ expect(osWif).toBe('KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU79MFFcB1G')
24
28
 
25
- const oWif = o.toWif()
26
- expect(oWif).toBe('KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU79MFFcB1G')
27
- const osWif = os.toWif()
28
- expect(osWif).toBe('KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU79MFFcB1G')
29
-
30
- expect(() => os2.toWif()).toThrow("Value is out of field")
31
-
32
- })
33
- })
29
+ expect(() => os2.toWif()).toThrow('Value is out of field')
30
+ })
31
+ })
@@ -24,13 +24,13 @@ describe('utils', () => {
24
24
  expect(encode([0, 1, 2, 3], 'hex')).toBe('00010203')
25
25
  })
26
26
 
27
- describe("base58 to binary", () => {
27
+ describe('base58 to binary', () => {
28
28
  it('Converts as expected', () => {
29
- const actual = fromBase58("6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV")
29
+ const actual = fromBase58('6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV')
30
30
  expect(toHex(actual)).toEqual('02c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cfeb05f9d2')
31
31
  })
32
32
  it('Converts as expected with leading 1s', () => {
33
- const actual = fromBase58("111z")
33
+ const actual = fromBase58('111z')
34
34
  expect(toHex(actual)).toEqual('00000039')
35
35
  })
36
36
  it('Throws when called with undefined base58 string', () => {
@@ -40,16 +40,16 @@ describe('utils', () => {
40
40
  expect(() => fromBase58('0L')).toThrow(new Error('Invalid base58 character “0”'))
41
41
  })
42
42
  })
43
- describe("binary to base58 string", () => {
43
+ describe('binary to base58 string', () => {
44
44
  it('Converts to base58 as expected', () => {
45
45
  const actual = toBase58(
46
- toArray("02c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cfeb05f9d2", "hex")
46
+ toArray('02c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cfeb05f9d2', 'hex')
47
47
  )
48
- expect(actual).toEqual("6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV")
48
+ expect(actual).toEqual('6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV')
49
49
  })
50
50
  it('Converts to base58 as expected with 1s', () => {
51
51
  const actual = toBase58([0, 0, 0, 4])
52
- expect(actual).toEqual("1115")
52
+ expect(actual).toEqual('1115')
53
53
  })
54
54
  })
55
55
  describe('base58check encoding and decoding', () => {
@@ -63,7 +63,7 @@ describe('utils', () => {
63
63
  encoded = toBase58Check(data)
64
64
  expect(encoded).toBe('14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3')
65
65
  expect(fromBase58Check(encoded)).toEqual({ prefix: [0], data })
66
- });
66
+ })
67
67
 
68
68
  it('should correctly encode and decode data with custom prefix', () => {
69
69
  const prefix = [0x80]
@@ -76,7 +76,7 @@ describe('utils', () => {
76
76
  encoded = toBase58Check(data, prefix)
77
77
  expect(encoded).toBe('5JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K')
78
78
  expect(fromBase58Check(encoded)).toEqual({ prefix, data })
79
- });
79
+ })
80
80
 
81
81
  it('should correctly handle encoding and decoding with different encoding formats', () => {
82
82
  const prefix = [0x80]
@@ -92,12 +92,12 @@ describe('utils', () => {
92
92
  encoded = toBase58Check(data, prefix)
93
93
  expect(encoded).toBe('KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S')
94
94
  expect(fromBase58Check(encoded, 'hex')).toEqual({ prefix: '80', data: dataHex })
95
- });
95
+ })
96
96
 
97
97
  it('should correctly encode and decode Bitcoin addresses', () => {
98
98
  const dataHex = '086eaa677895f92d4a6c5ef740c168932b5e3f44'
99
- let data = toArray(dataHex, 'hex')
100
- let encoded = toBase58Check(data)
99
+ const data = toArray(dataHex, 'hex')
100
+ const encoded = toBase58Check(data)
101
101
  expect(encoded).toBe('1mayif3H2JDC62S4N3rLNtBNRAiUUP99k')
102
102
  expect(fromBase58Check(encoded, 'hex')).toEqual({ prefix: '00', data: dataHex })
103
103
 
@@ -105,4 +105,4 @@ describe('utils', () => {
105
105
  expect(fromBase58Check(address, 'hex')).toEqual({ prefix: '00', data: dataHex })
106
106
  })
107
107
  })
108
- })
108
+ })
@@ -3,10 +3,11 @@ export { default as Curve } from './Curve.js'
3
3
  export { default as Point } from './Point.js'
4
4
  export { default as PublicKey } from './PublicKey.js'
5
5
  export { default as Signature } from './Signature.js'
6
- export { default as PrivateKey } from './PrivateKey.js'
6
+ export { default as PrivateKey, KeyShares } from './PrivateKey.js'
7
7
  export { default as SymmetricKey } from './SymmetricKey.js'
8
8
  export * as ECDSA from './ECDSA.js'
9
9
  export * as Utils from './utils.js'
10
10
  export * as Hash from './Hash.js'
11
11
  export { default as Random } from './Random.js'
12
12
  export { default as TransactionSignature } from './TransactionSignature.js'
13
+ export { default as Polynomial, PointInFiniteField } from './Polynomial.js'
@@ -32,7 +32,7 @@ export const toHex = (msg: number[]): string => {
32
32
  * Supports arrays, hexadecimal strings, base64 strings, and UTF-8 strings.
33
33
  *
34
34
  * @param {any} msg - The input message (array or string).
35
- * @param {('hex' | 'utf8')} enc - Specifies the string encoding, if applicable.
35
+ * @param {('hex' | 'utf8' | 'base64')} enc - Specifies the string encoding, if applicable.
36
36
  * @returns {any[]} - Array representation of the input.
37
37
  */
38
38
  export const toArray = (msg: any, enc?: 'hex' | 'utf8' | 'base64'): any[] => {
@@ -48,7 +48,7 @@ describe('Script', () => {
48
48
  it('should error when attempting to parse this strange Base58Check encoded string', () => {
49
49
  const priv = PrivateKey.fromRandom()
50
50
  const address = priv.toAddress([0x88])
51
- function attemptToDeriveAddress() {
51
+ function attemptToDeriveAddress () {
52
52
  const script = new P2PKH().lock(address).toASM()
53
53
  return script
54
54
  }
@@ -1,6 +1,6 @@
1
- import Script from "../../../dist/cjs/src/script/Script"
2
- import Spend from "../../../dist/cjs/src/script/Spend"
3
- import Transaction from "../../../dist/cjs/src/transaction/Transaction"
1
+ import Script from '../../../dist/cjs/src/script/Script'
2
+ import Spend from '../../../dist/cjs/src/script/Spend'
3
+ import Transaction from '../../../dist/cjs/src/transaction/Transaction'
4
4
 
5
5
  describe('SpendComplex', () => {
6
6
  it('complex unlock script validation', () => {
@@ -17,9 +17,9 @@ describe('SpendComplex', () => {
17
17
  })
18
18
  })
19
19
 
20
- function verifyTruthy<T>(v: T | undefined): T { if (v == null) throw new Error('must have value'); return v }
20
+ function verifyTruthy<T> (v: T | undefined): T { if (v == null) throw new Error('must have value'); return v }
21
21
 
22
- export function validateUnlockScript(spendingRawTx: string, vin: number, lockingScript: string, amount: number): boolean {
22
+ export function validateUnlockScript (spendingRawTx: string, vin: number, lockingScript: string, amount: number): boolean {
23
23
  const spendingTx = Transaction.fromHex(spendingRawTx)
24
24
  const ls = Script.fromHex(lockingScript)
25
25
 
@@ -43,4 +43,4 @@ export function validateUnlockScript(spendingRawTx: string, vin: number, locking
43
43
 
44
44
  const valid = spend.validate()
45
45
  return valid
46
- }
46
+ }