@bsv/sdk 1.0.24 → 1.0.29

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 (329) hide show
  1. package/package.json +1 -1
  2. package/dist/cjs/mod.js +0 -25
  3. package/dist/cjs/mod.js.map +0 -1
  4. package/dist/cjs/package.json +0 -49
  5. package/dist/cjs/src/compat/BSM.js +0 -77
  6. package/dist/cjs/src/compat/BSM.js.map +0 -1
  7. package/dist/cjs/src/compat/ECIES.js +0 -512
  8. package/dist/cjs/src/compat/ECIES.js.map +0 -1
  9. package/dist/cjs/src/compat/HD.js +0 -344
  10. package/dist/cjs/src/compat/HD.js.map +0 -1
  11. package/dist/cjs/src/compat/Mnemonic.js +0 -298
  12. package/dist/cjs/src/compat/Mnemonic.js.map +0 -1
  13. package/dist/cjs/src/compat/bip-39-wordlist-en.js +0 -2057
  14. package/dist/cjs/src/compat/bip-39-wordlist-en.js.map +0 -1
  15. package/dist/cjs/src/compat/index.js +0 -37
  16. package/dist/cjs/src/compat/index.js.map +0 -1
  17. package/dist/cjs/src/messages/EncryptedMessage.js +0 -69
  18. package/dist/cjs/src/messages/EncryptedMessage.js.map +0 -1
  19. package/dist/cjs/src/messages/SignedMessage.js +0 -85
  20. package/dist/cjs/src/messages/SignedMessage.js.map +0 -1
  21. package/dist/cjs/src/messages/index.js +0 -29
  22. package/dist/cjs/src/messages/index.js.map +0 -1
  23. package/dist/cjs/src/primitives/AESGCM.js +0 -384
  24. package/dist/cjs/src/primitives/AESGCM.js.map +0 -1
  25. package/dist/cjs/src/primitives/BasePoint.js +0 -19
  26. package/dist/cjs/src/primitives/BasePoint.js.map +0 -1
  27. package/dist/cjs/src/primitives/BigNumber.js +0 -4272
  28. package/dist/cjs/src/primitives/BigNumber.js.map +0 -1
  29. package/dist/cjs/src/primitives/Curve.js +0 -1126
  30. package/dist/cjs/src/primitives/Curve.js.map +0 -1
  31. package/dist/cjs/src/primitives/DRBG.js +0 -99
  32. package/dist/cjs/src/primitives/DRBG.js.map +0 -1
  33. package/dist/cjs/src/primitives/ECDSA.js +0 -169
  34. package/dist/cjs/src/primitives/ECDSA.js.map +0 -1
  35. package/dist/cjs/src/primitives/Hash.js +0 -1387
  36. package/dist/cjs/src/primitives/Hash.js.map +0 -1
  37. package/dist/cjs/src/primitives/JacobianPoint.js +0 -400
  38. package/dist/cjs/src/primitives/JacobianPoint.js.map +0 -1
  39. package/dist/cjs/src/primitives/K256.js +0 -111
  40. package/dist/cjs/src/primitives/K256.js.map +0 -1
  41. package/dist/cjs/src/primitives/Mersenne.js +0 -118
  42. package/dist/cjs/src/primitives/Mersenne.js.map +0 -1
  43. package/dist/cjs/src/primitives/MontgomoryMethod.js +0 -150
  44. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +0 -1
  45. package/dist/cjs/src/primitives/Point.js +0 -819
  46. package/dist/cjs/src/primitives/Point.js.map +0 -1
  47. package/dist/cjs/src/primitives/PrivateKey.js +0 -246
  48. package/dist/cjs/src/primitives/PrivateKey.js.map +0 -1
  49. package/dist/cjs/src/primitives/PublicKey.js +0 -168
  50. package/dist/cjs/src/primitives/PublicKey.js.map +0 -1
  51. package/dist/cjs/src/primitives/Random.js +0 -57
  52. package/dist/cjs/src/primitives/Random.js.map +0 -1
  53. package/dist/cjs/src/primitives/ReductionContext.js +0 -490
  54. package/dist/cjs/src/primitives/ReductionContext.js.map +0 -1
  55. package/dist/cjs/src/primitives/Signature.js +0 -357
  56. package/dist/cjs/src/primitives/Signature.js.map +0 -1
  57. package/dist/cjs/src/primitives/SymmetricKey.js +0 -82
  58. package/dist/cjs/src/primitives/SymmetricKey.js.map +0 -1
  59. package/dist/cjs/src/primitives/TransactionSignature.js +0 -172
  60. package/dist/cjs/src/primitives/TransactionSignature.js.map +0 -1
  61. package/dist/cjs/src/primitives/index.js +0 -51
  62. package/dist/cjs/src/primitives/index.js.map +0 -1
  63. package/dist/cjs/src/primitives/utils.js +0 -624
  64. package/dist/cjs/src/primitives/utils.js.map +0 -1
  65. package/dist/cjs/src/script/LockingScript.js +0 -35
  66. package/dist/cjs/src/script/LockingScript.js.map +0 -1
  67. package/dist/cjs/src/script/OP.js +0 -207
  68. package/dist/cjs/src/script/OP.js.map +0 -1
  69. package/dist/cjs/src/script/Script.js +0 -435
  70. package/dist/cjs/src/script/Script.js.map +0 -1
  71. package/dist/cjs/src/script/ScriptChunk.js +0 -3
  72. package/dist/cjs/src/script/ScriptChunk.js.map +0 -1
  73. package/dist/cjs/src/script/ScriptTemplate.js +0 -3
  74. package/dist/cjs/src/script/ScriptTemplate.js.map +0 -1
  75. package/dist/cjs/src/script/Spend.js +0 -1252
  76. package/dist/cjs/src/script/Spend.js.map +0 -1
  77. package/dist/cjs/src/script/UnlockingScript.js +0 -35
  78. package/dist/cjs/src/script/UnlockingScript.js.map +0 -1
  79. package/dist/cjs/src/script/index.js +0 -32
  80. package/dist/cjs/src/script/index.js.map +0 -1
  81. package/dist/cjs/src/script/templates/P2PKH.js +0 -120
  82. package/dist/cjs/src/script/templates/P2PKH.js.map +0 -1
  83. package/dist/cjs/src/script/templates/RPuzzle.js +0 -125
  84. package/dist/cjs/src/script/templates/RPuzzle.js.map +0 -1
  85. package/dist/cjs/src/script/templates/index.js +0 -11
  86. package/dist/cjs/src/script/templates/index.js.map +0 -1
  87. package/dist/cjs/src/transaction/Broadcaster.js +0 -3
  88. package/dist/cjs/src/transaction/Broadcaster.js.map +0 -1
  89. package/dist/cjs/src/transaction/ChainTracker.js +0 -3
  90. package/dist/cjs/src/transaction/ChainTracker.js.map +0 -1
  91. package/dist/cjs/src/transaction/FeeModel.js +0 -3
  92. package/dist/cjs/src/transaction/FeeModel.js.map +0 -1
  93. package/dist/cjs/src/transaction/MerklePath.js +0 -239
  94. package/dist/cjs/src/transaction/MerklePath.js.map +0 -1
  95. package/dist/cjs/src/transaction/Transaction.js +0 -616
  96. package/dist/cjs/src/transaction/Transaction.js.map +0 -1
  97. package/dist/cjs/src/transaction/TransactionInput.js +0 -3
  98. package/dist/cjs/src/transaction/TransactionInput.js.map +0 -1
  99. package/dist/cjs/src/transaction/TransactionOutput.js +0 -3
  100. package/dist/cjs/src/transaction/TransactionOutput.js.map +0 -1
  101. package/dist/cjs/src/transaction/broadcasters/ARC.js +0 -112
  102. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +0 -1
  103. package/dist/cjs/src/transaction/broadcasters/index.js +0 -9
  104. package/dist/cjs/src/transaction/broadcasters/index.js.map +0 -1
  105. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +0 -69
  106. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +0 -1
  107. package/dist/cjs/src/transaction/fee-models/index.js +0 -9
  108. package/dist/cjs/src/transaction/fee-models/index.js.map +0 -1
  109. package/dist/cjs/src/transaction/index.js +0 -11
  110. package/dist/cjs/src/transaction/index.js.map +0 -1
  111. package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
  112. package/dist/esm/mod.js +0 -9
  113. package/dist/esm/mod.js.map +0 -1
  114. package/dist/esm/src/compat/BSM.js +0 -45
  115. package/dist/esm/src/compat/BSM.js.map +0 -1
  116. package/dist/esm/src/compat/ECIES.js +0 -483
  117. package/dist/esm/src/compat/ECIES.js.map +0 -1
  118. package/dist/esm/src/compat/HD.js +0 -322
  119. package/dist/esm/src/compat/HD.js.map +0 -1
  120. package/dist/esm/src/compat/Mnemonic.js +0 -272
  121. package/dist/esm/src/compat/Mnemonic.js.map +0 -1
  122. package/dist/esm/src/compat/bip-39-wordlist-en.js +0 -2054
  123. package/dist/esm/src/compat/bip-39-wordlist-en.js.map +0 -1
  124. package/dist/esm/src/compat/index.js +0 -5
  125. package/dist/esm/src/compat/index.js.map +0 -1
  126. package/dist/esm/src/messages/EncryptedMessage.js +0 -61
  127. package/dist/esm/src/messages/EncryptedMessage.js.map +0 -1
  128. package/dist/esm/src/messages/SignedMessage.js +0 -77
  129. package/dist/esm/src/messages/SignedMessage.js.map +0 -1
  130. package/dist/esm/src/messages/index.js +0 -3
  131. package/dist/esm/src/messages/index.js.map +0 -1
  132. package/dist/esm/src/primitives/AESGCM.js +0 -371
  133. package/dist/esm/src/primitives/AESGCM.js.map +0 -1
  134. package/dist/esm/src/primitives/BasePoint.js +0 -16
  135. package/dist/esm/src/primitives/BasePoint.js.map +0 -1
  136. package/dist/esm/src/primitives/BigNumber.js +0 -4307
  137. package/dist/esm/src/primitives/BigNumber.js.map +0 -1
  138. package/dist/esm/src/primitives/Curve.js +0 -1141
  139. package/dist/esm/src/primitives/Curve.js.map +0 -1
  140. package/dist/esm/src/primitives/DRBG.js +0 -98
  141. package/dist/esm/src/primitives/DRBG.js.map +0 -1
  142. package/dist/esm/src/primitives/ECDSA.js +0 -161
  143. package/dist/esm/src/primitives/ECDSA.js.map +0 -1
  144. package/dist/esm/src/primitives/Hash.js +0 -1391
  145. package/dist/esm/src/primitives/Hash.js.map +0 -1
  146. package/dist/esm/src/primitives/JacobianPoint.js +0 -398
  147. package/dist/esm/src/primitives/JacobianPoint.js.map +0 -1
  148. package/dist/esm/src/primitives/K256.js +0 -105
  149. package/dist/esm/src/primitives/K256.js.map +0 -1
  150. package/dist/esm/src/primitives/Mersenne.js +0 -117
  151. package/dist/esm/src/primitives/Mersenne.js.map +0 -1
  152. package/dist/esm/src/primitives/MontgomoryMethod.js +0 -149
  153. package/dist/esm/src/primitives/MontgomoryMethod.js.map +0 -1
  154. package/dist/esm/src/primitives/Point.js +0 -816
  155. package/dist/esm/src/primitives/Point.js.map +0 -1
  156. package/dist/esm/src/primitives/PrivateKey.js +0 -240
  157. package/dist/esm/src/primitives/PrivateKey.js.map +0 -1
  158. package/dist/esm/src/primitives/PublicKey.js +0 -162
  159. package/dist/esm/src/primitives/PublicKey.js.map +0 -1
  160. package/dist/esm/src/primitives/Random.js +0 -56
  161. package/dist/esm/src/primitives/Random.js.map +0 -1
  162. package/dist/esm/src/primitives/ReductionContext.js +0 -486
  163. package/dist/esm/src/primitives/ReductionContext.js.map +0 -1
  164. package/dist/esm/src/primitives/Signature.js +0 -360
  165. package/dist/esm/src/primitives/Signature.js.map +0 -1
  166. package/dist/esm/src/primitives/SymmetricKey.js +0 -76
  167. package/dist/esm/src/primitives/SymmetricKey.js.map +0 -1
  168. package/dist/esm/src/primitives/TransactionSignature.js +0 -144
  169. package/dist/esm/src/primitives/TransactionSignature.js.map +0 -1
  170. package/dist/esm/src/primitives/index.js +0 -13
  171. package/dist/esm/src/primitives/index.js.map +0 -1
  172. package/dist/esm/src/primitives/utils.js +0 -609
  173. package/dist/esm/src/primitives/utils.js.map +0 -1
  174. package/dist/esm/src/script/LockingScript.js +0 -29
  175. package/dist/esm/src/script/LockingScript.js.map +0 -1
  176. package/dist/esm/src/script/OP.js +0 -205
  177. package/dist/esm/src/script/OP.js.map +0 -1
  178. package/dist/esm/src/script/Script.js +0 -430
  179. package/dist/esm/src/script/Script.js.map +0 -1
  180. package/dist/esm/src/script/ScriptChunk.js +0 -2
  181. package/dist/esm/src/script/ScriptChunk.js.map +0 -1
  182. package/dist/esm/src/script/ScriptTemplate.js +0 -2
  183. package/dist/esm/src/script/ScriptTemplate.js.map +0 -1
  184. package/dist/esm/src/script/Spend.js +0 -1240
  185. package/dist/esm/src/script/Spend.js.map +0 -1
  186. package/dist/esm/src/script/UnlockingScript.js +0 -29
  187. package/dist/esm/src/script/UnlockingScript.js.map +0 -1
  188. package/dist/esm/src/script/index.js +0 -7
  189. package/dist/esm/src/script/index.js.map +0 -1
  190. package/dist/esm/src/script/templates/P2PKH.js +0 -113
  191. package/dist/esm/src/script/templates/P2PKH.js.map +0 -1
  192. package/dist/esm/src/script/templates/RPuzzle.js +0 -119
  193. package/dist/esm/src/script/templates/RPuzzle.js.map +0 -1
  194. package/dist/esm/src/script/templates/index.js +0 -3
  195. package/dist/esm/src/script/templates/index.js.map +0 -1
  196. package/dist/esm/src/transaction/Broadcaster.js +0 -2
  197. package/dist/esm/src/transaction/Broadcaster.js.map +0 -1
  198. package/dist/esm/src/transaction/ChainTracker.js +0 -2
  199. package/dist/esm/src/transaction/ChainTracker.js.map +0 -1
  200. package/dist/esm/src/transaction/FeeModel.js +0 -2
  201. package/dist/esm/src/transaction/FeeModel.js.map +0 -1
  202. package/dist/esm/src/transaction/MerklePath.js +0 -237
  203. package/dist/esm/src/transaction/MerklePath.js.map +0 -1
  204. package/dist/esm/src/transaction/Transaction.js +0 -617
  205. package/dist/esm/src/transaction/Transaction.js.map +0 -1
  206. package/dist/esm/src/transaction/TransactionInput.js +0 -2
  207. package/dist/esm/src/transaction/TransactionInput.js.map +0 -1
  208. package/dist/esm/src/transaction/TransactionOutput.js +0 -2
  209. package/dist/esm/src/transaction/TransactionOutput.js.map +0 -1
  210. package/dist/esm/src/transaction/broadcasters/ARC.js +0 -111
  211. package/dist/esm/src/transaction/broadcasters/ARC.js.map +0 -1
  212. package/dist/esm/src/transaction/broadcasters/index.js +0 -2
  213. package/dist/esm/src/transaction/broadcasters/index.js.map +0 -1
  214. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +0 -71
  215. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +0 -1
  216. package/dist/esm/src/transaction/fee-models/index.js +0 -2
  217. package/dist/esm/src/transaction/fee-models/index.js.map +0 -1
  218. package/dist/esm/src/transaction/index.js +0 -3
  219. package/dist/esm/src/transaction/index.js.map +0 -1
  220. package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
  221. package/dist/types/mod.d.ts +0 -9
  222. package/dist/types/mod.d.ts.map +0 -1
  223. package/dist/types/src/compat/BSM.d.ts +0 -28
  224. package/dist/types/src/compat/BSM.d.ts.map +0 -1
  225. package/dist/types/src/compat/ECIES.d.ts +0 -62
  226. package/dist/types/src/compat/ECIES.d.ts.map +0 -1
  227. package/dist/types/src/compat/HD.d.ts +0 -131
  228. package/dist/types/src/compat/HD.d.ts.map +0 -1
  229. package/dist/types/src/compat/Mnemonic.d.ts +0 -132
  230. package/dist/types/src/compat/Mnemonic.d.ts.map +0 -1
  231. package/dist/types/src/compat/bip-39-wordlist-en.d.ts +0 -5
  232. package/dist/types/src/compat/bip-39-wordlist-en.d.ts.map +0 -1
  233. package/dist/types/src/compat/index.d.ts +0 -5
  234. package/dist/types/src/compat/index.d.ts.map +0 -1
  235. package/dist/types/src/messages/EncryptedMessage.d.ts +0 -20
  236. package/dist/types/src/messages/EncryptedMessage.d.ts.map +0 -1
  237. package/dist/types/src/messages/SignedMessage.d.ts +0 -21
  238. package/dist/types/src/messages/SignedMessage.d.ts.map +0 -1
  239. package/dist/types/src/messages/index.d.ts +0 -3
  240. package/dist/types/src/messages/index.d.ts.map +0 -1
  241. package/dist/types/src/primitives/AESGCM.d.ts +0 -14
  242. package/dist/types/src/primitives/AESGCM.d.ts.map +0 -1
  243. package/dist/types/src/primitives/BasePoint.d.ts +0 -22
  244. package/dist/types/src/primitives/BasePoint.d.ts.map +0 -1
  245. package/dist/types/src/primitives/BigNumber.d.ts +0 -1895
  246. package/dist/types/src/primitives/BigNumber.d.ts.map +0 -1
  247. package/dist/types/src/primitives/Curve.d.ts +0 -55
  248. package/dist/types/src/primitives/Curve.d.ts.map +0 -1
  249. package/dist/types/src/primitives/DRBG.d.ts +0 -54
  250. package/dist/types/src/primitives/DRBG.d.ts.map +0 -1
  251. package/dist/types/src/primitives/ECDSA.d.ts +0 -39
  252. package/dist/types/src/primitives/ECDSA.d.ts.map +0 -1
  253. package/dist/types/src/primitives/Hash.d.ts +0 -450
  254. package/dist/types/src/primitives/Hash.d.ts.map +0 -1
  255. package/dist/types/src/primitives/JacobianPoint.d.ts +0 -164
  256. package/dist/types/src/primitives/JacobianPoint.d.ts.map +0 -1
  257. package/dist/types/src/primitives/K256.d.ts +0 -53
  258. package/dist/types/src/primitives/K256.d.ts.map +0 -1
  259. package/dist/types/src/primitives/Mersenne.d.ts +0 -72
  260. package/dist/types/src/primitives/Mersenne.d.ts.map +0 -1
  261. package/dist/types/src/primitives/MontgomoryMethod.d.ts +0 -96
  262. package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +0 -1
  263. package/dist/types/src/primitives/Point.d.ts +0 -303
  264. package/dist/types/src/primitives/Point.d.ts.map +0 -1
  265. package/dist/types/src/primitives/PrivateKey.d.ts +0 -174
  266. package/dist/types/src/primitives/PrivateKey.d.ts.map +0 -1
  267. package/dist/types/src/primitives/PublicKey.d.ts +0 -120
  268. package/dist/types/src/primitives/PublicKey.d.ts.map +0 -1
  269. package/dist/types/src/primitives/Random.d.ts +0 -14
  270. package/dist/types/src/primitives/Random.d.ts.map +0 -1
  271. package/dist/types/src/primitives/ReductionContext.d.ts +0 -308
  272. package/dist/types/src/primitives/ReductionContext.d.ts.map +0 -1
  273. package/dist/types/src/primitives/Signature.d.ts +0 -162
  274. package/dist/types/src/primitives/Signature.d.ts.map +0 -1
  275. package/dist/types/src/primitives/SymmetricKey.d.ts +0 -55
  276. package/dist/types/src/primitives/SymmetricKey.d.ts.map +0 -1
  277. package/dist/types/src/primitives/TransactionSignature.d.ts +0 -36
  278. package/dist/types/src/primitives/TransactionSignature.d.ts.map +0 -1
  279. package/dist/types/src/primitives/index.d.ts +0 -13
  280. package/dist/types/src/primitives/index.d.ts.map +0 -1
  281. package/dist/types/src/primitives/utils.d.ts +0 -124
  282. package/dist/types/src/primitives/utils.d.ts.map +0 -1
  283. package/dist/types/src/script/LockingScript.d.ts +0 -25
  284. package/dist/types/src/script/LockingScript.d.ts.map +0 -1
  285. package/dist/types/src/script/OP.d.ts +0 -193
  286. package/dist/types/src/script/OP.d.ts.map +0 -1
  287. package/dist/types/src/script/Script.d.ts +0 -148
  288. package/dist/types/src/script/Script.d.ts.map +0 -1
  289. package/dist/types/src/script/ScriptChunk.d.ts +0 -8
  290. package/dist/types/src/script/ScriptChunk.d.ts.map +0 -1
  291. package/dist/types/src/script/ScriptTemplate.d.ts +0 -33
  292. package/dist/types/src/script/ScriptTemplate.d.ts.map +0 -1
  293. package/dist/types/src/script/Spend.d.ts +0 -103
  294. package/dist/types/src/script/Spend.d.ts.map +0 -1
  295. package/dist/types/src/script/UnlockingScript.d.ts +0 -25
  296. package/dist/types/src/script/UnlockingScript.d.ts.map +0 -1
  297. package/dist/types/src/script/index.d.ts +0 -8
  298. package/dist/types/src/script/index.d.ts.map +0 -1
  299. package/dist/types/src/script/templates/P2PKH.d.ts +0 -40
  300. package/dist/types/src/script/templates/P2PKH.d.ts.map +0 -1
  301. package/dist/types/src/script/templates/RPuzzle.d.ts +0 -47
  302. package/dist/types/src/script/templates/RPuzzle.d.ts.map +0 -1
  303. package/dist/types/src/script/templates/index.d.ts +0 -3
  304. package/dist/types/src/script/templates/index.d.ts.map +0 -1
  305. package/dist/types/src/transaction/Broadcaster.d.ts +0 -39
  306. package/dist/types/src/transaction/Broadcaster.d.ts.map +0 -1
  307. package/dist/types/src/transaction/ChainTracker.d.ts +0 -23
  308. package/dist/types/src/transaction/ChainTracker.d.ts.map +0 -1
  309. package/dist/types/src/transaction/FeeModel.d.ts +0 -12
  310. package/dist/types/src/transaction/FeeModel.d.ts.map +0 -1
  311. package/dist/types/src/transaction/MerklePath.d.ts +0 -91
  312. package/dist/types/src/transaction/MerklePath.d.ts.map +0 -1
  313. package/dist/types/src/transaction/Transaction.d.ts +0 -215
  314. package/dist/types/src/transaction/Transaction.d.ts.map +0 -1
  315. package/dist/types/src/transaction/TransactionInput.d.ts +0 -63
  316. package/dist/types/src/transaction/TransactionInput.d.ts.map +0 -1
  317. package/dist/types/src/transaction/TransactionOutput.d.ts +0 -36
  318. package/dist/types/src/transaction/TransactionOutput.d.ts.map +0 -1
  319. package/dist/types/src/transaction/broadcasters/ARC.d.ts +0 -28
  320. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +0 -1
  321. package/dist/types/src/transaction/broadcasters/index.d.ts +0 -2
  322. package/dist/types/src/transaction/broadcasters/index.d.ts.map +0 -1
  323. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +0 -26
  324. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +0 -1
  325. package/dist/types/src/transaction/fee-models/index.d.ts +0 -2
  326. package/dist/types/src/transaction/fee-models/index.d.ts.map +0 -1
  327. package/dist/types/src/transaction/index.d.ts +0 -7
  328. package/dist/types/src/transaction/index.d.ts.map +0 -1
  329. package/dist/types/tsconfig.types.tsbuildinfo +0 -1
@@ -1,237 +0,0 @@
1
- import { Reader, Writer, toHex, toArray } from '../primitives/utils.js';
2
- import { hash256 } from '../primitives/Hash.js';
3
- /**
4
- * Represents a Merkle Path, which is used to provide a compact proof of inclusion for a
5
- * transaction in a block. This class encapsulates all the details required for creating
6
- * and verifying Merkle Proofs.
7
- *
8
- * @class MerklePath
9
- * @property {number} blockHeight - The height of the block in which the transaction is included.
10
- * @property {Array<Array<{offset: number, hash?: string, txid?: boolean, duplicate?: boolean}>>} path -
11
- * A tree structure representing the Merkle Path, with each level containing information
12
- * about the nodes involved in constructing the proof.
13
- *
14
- * @example
15
- * // Creating and verifying a Merkle Path
16
- * const merklePath = MerklePath.fromHex('...');
17
- * const isValid = merklePath.verify(txid, chainTracker);
18
- *
19
- * @description
20
- * The MerklePath class is useful for verifying transactions in a lightweight and efficient manner without
21
- * needing the entire block data. This class offers functionalities for creating, converting,
22
- * and verifying these proofs.
23
- */
24
- export default class MerklePath {
25
- blockHeight;
26
- path;
27
- /**
28
- * Creates a MerklePath instance from a hexadecimal string.
29
- *
30
- * @static
31
- * @param {string} hex - The hexadecimal string representation of the Merkle Path.
32
- * @returns {MerklePath} - A new MerklePath instance.
33
- */
34
- static fromHex(hex) {
35
- return MerklePath.fromBinary(toArray(hex, 'hex'));
36
- }
37
- static fromReader(reader) {
38
- const blockHeight = reader.readVarIntNum();
39
- const treeHeight = reader.readUInt8();
40
- const path = Array(treeHeight).fill(0).map(() => ([]));
41
- let flags, offset, nLeavesAtThisHeight;
42
- for (let level = 0; level < treeHeight; level++) {
43
- nLeavesAtThisHeight = reader.readVarIntNum();
44
- while (nLeavesAtThisHeight) {
45
- offset = reader.readVarIntNum();
46
- flags = reader.readUInt8();
47
- const leaf = { offset };
48
- if (flags & 1) {
49
- leaf.duplicate = true;
50
- }
51
- else {
52
- if (flags & 2) {
53
- leaf.txid = true;
54
- }
55
- leaf.hash = toHex(reader.read(32).reverse());
56
- }
57
- path[level].push(leaf);
58
- nLeavesAtThisHeight--;
59
- }
60
- path[level].sort((a, b) => a.offset - b.offset);
61
- }
62
- return new MerklePath(blockHeight, path);
63
- }
64
- /**
65
- * Creates a MerklePath instance from a binary array.
66
- *
67
- * @static
68
- * @param {number[]} bump - The binary array representation of the Merkle Path.
69
- * @returns {MerklePath} - A new MerklePath instance.
70
- */
71
- static fromBinary(bump) {
72
- const reader = new Reader(bump);
73
- return MerklePath.fromReader(reader);
74
- }
75
- constructor(blockHeight, path) {
76
- this.blockHeight = blockHeight;
77
- this.path = path;
78
- // store all of the legal offsets which we expect given the txid indices.
79
- const legalOffsets = Array(this.path.length).fill(0).map(() => new Set());
80
- this.path.map((leaves, height) => {
81
- if (leaves.length === 0) {
82
- throw new Error(`Empty level at height: ${height}`);
83
- }
84
- const offsetsAtThisHeight = new Set();
85
- leaves.map(leaf => {
86
- if (offsetsAtThisHeight.has(leaf.offset))
87
- throw new Error(`Duplicate offset: ${leaf.offset}, at height: ${height}`);
88
- offsetsAtThisHeight.add(leaf.offset);
89
- if (height === 0) {
90
- if (!leaf.duplicate) {
91
- for (let h = 1; h < this.path.length; h++) {
92
- legalOffsets[h].add(leaf.offset >> h ^ 1);
93
- }
94
- }
95
- }
96
- else {
97
- if (!legalOffsets[height].has(leaf.offset)) {
98
- throw new Error(`Invalid offset: ${leaf.offset}, at height: ${height}, with legal offsets: ${Array.from(legalOffsets[height]).join(', ')}`);
99
- }
100
- }
101
- });
102
- });
103
- let root;
104
- // every txid must calculate to the same root.
105
- this.path[0].map((leaf, idx) => {
106
- if (idx === 0)
107
- root = this.computeRoot(leaf.hash);
108
- if (root !== this.computeRoot(leaf.hash)) {
109
- throw new Error('Mismatched roots');
110
- }
111
- });
112
- }
113
- /**
114
- * Converts the MerklePath to a binary array format.
115
- *
116
- * @returns {number[]} - The binary array representation of the Merkle Path.
117
- */
118
- toBinary() {
119
- const writer = new Writer();
120
- writer.writeVarIntNum(this.blockHeight);
121
- const treeHeight = this.path.length;
122
- writer.writeUInt8(treeHeight);
123
- for (let level = 0; level < treeHeight; level++) {
124
- const nLeaves = Object.keys(this.path[level]).length;
125
- writer.writeVarIntNum(nLeaves);
126
- for (const leaf of this.path[level]) {
127
- writer.writeVarIntNum(leaf.offset);
128
- let flags = 0;
129
- if (leaf?.duplicate) {
130
- flags |= 1;
131
- }
132
- if (leaf?.txid) {
133
- flags |= 2;
134
- }
135
- writer.writeUInt8(flags);
136
- if ((flags & 1) === 0) {
137
- writer.write(toArray(leaf.hash, 'hex').reverse());
138
- }
139
- }
140
- }
141
- return writer.toArray();
142
- }
143
- /**
144
- * Converts the MerklePath to a hexadecimal string format.
145
- *
146
- * @returns {string} - The hexadecimal string representation of the Merkle Path.
147
- */
148
- toHex() {
149
- return toHex(this.toBinary());
150
- }
151
- /**
152
- * Computes the Merkle root from the provided transaction ID.
153
- *
154
- * @param {string} txid - The transaction ID to compute the Merkle root for. If not provided, the root will be computed from an unspecified branch, and not all branches will be validated!
155
- * @returns {string} - The computed Merkle root as a hexadecimal string.
156
- * @throws {Error} - If the transaction ID is not part of the Merkle Path.
157
- */
158
- computeRoot(txid) {
159
- if (typeof txid !== 'string') {
160
- txid = this.path[0].find(leaf => Boolean(leaf?.hash)).hash;
161
- }
162
- // Find the index of the txid at the lowest level of the Merkle tree
163
- const index = this.path[0].find(l => l.hash === txid).offset;
164
- if (typeof index !== 'number') {
165
- throw new Error(`This proof does not contain the txid: ${txid}`);
166
- }
167
- // Calculate the root using the index as a way to determine which direction to concatenate.
168
- const hash = (m) => toHex((hash256(toArray(m, 'hex').reverse())).reverse());
169
- let workingHash = txid;
170
- for (let height = 0; height < this.path.length; height++) {
171
- const leaves = this.path[height];
172
- const offset = index >> height ^ 1;
173
- const leaf = leaves.find(l => l.offset === offset);
174
- if (typeof leaf !== 'object') {
175
- throw new Error(`Missing hash for index ${index} at height ${height}`);
176
- }
177
- if (leaf.duplicate) {
178
- workingHash = hash(workingHash + workingHash);
179
- }
180
- else if (offset % 2 !== 0) {
181
- workingHash = hash(leaf.hash + workingHash);
182
- }
183
- else {
184
- workingHash = hash(workingHash + leaf.hash);
185
- }
186
- }
187
- return workingHash;
188
- }
189
- /**
190
- * Verifies if the given transaction ID is part of the Merkle tree at the specified block height.
191
- *
192
- * @param {string} txid - The transaction ID to verify.
193
- * @param {ChainTracker} chainTracker - The ChainTracker instance used to verify the Merkle root.
194
- * @returns {boolean} - True if the transaction ID is valid within the Merkle Path at the specified block height.
195
- */
196
- async verify(txid, chainTracker) {
197
- const root = this.computeRoot(txid);
198
- // Use the chain tracker to determine whether this is a valid merkle root at the given block height
199
- return await chainTracker.isValidRootForHeight(root, this.blockHeight);
200
- }
201
- /**
202
- * Combines this MerklePath with another to create a compound proof.
203
- *
204
- * @param {MerklePath} other - Another MerklePath to combine with this path.
205
- * @throws {Error} - If the paths have different block heights or roots.
206
- */
207
- combine(other) {
208
- if (this.blockHeight !== other.blockHeight) {
209
- throw new Error('You cannot combine paths which do not have the same block height.');
210
- }
211
- const root1 = this.computeRoot();
212
- const root2 = other.computeRoot();
213
- if (root1 !== root2) {
214
- throw new Error('You cannot combine paths which do not have the same root.');
215
- }
216
- const combinedPath = [];
217
- for (let h = 0; h < this.path.length; h++) {
218
- combinedPath.push([]);
219
- for (let l = 0; l < this.path[h].length; l++) {
220
- combinedPath[h].push(this.path[h][l]);
221
- }
222
- for (let l = 0; l < other.path[h].length; l++) {
223
- if (!combinedPath[h].find(leaf => leaf.offset === other.path[h][l].offset)) {
224
- combinedPath[h].push(other.path[h][l]);
225
- }
226
- else {
227
- // Ensure that any elements which appear in both are not downgraded to a non txid.
228
- if (other.path[h][l]?.txid) {
229
- combinedPath[h].find(leaf => leaf.offset === other.path[h][l]).txid = true;
230
- }
231
- }
232
- }
233
- }
234
- this.path = combinedPath;
235
- }
236
- }
237
- //# sourceMappingURL=MerklePath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MerklePath.js","sourceRoot":"","sources":["../../../../src/transaction/MerklePath.ts"],"names":[],"mappings":"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"}