@bsv/sdk 1.3.12 → 1.3.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 (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -1,8 +1,8 @@
1
- import Script from '../../../dist/cjs/src/script/Script'
2
- import PrivateKey from '../../../dist/cjs/src/primitives/PrivateKey'
3
- import P2PKH from '../../../dist/cjs/src/script/templates/P2PKH'
4
- import OP from '../../../dist/cjs/src/script/OP'
5
- import { toHex } from '../../../dist/cjs/src/primitives/utils'
1
+ import Script from '../../script/Script'
2
+ import PrivateKey from '../../primitives/PrivateKey'
3
+ import P2PKH from '../../script/templates/P2PKH'
4
+ import OP from '../../script/OP'
5
+ import { toHex } from '../../primitives/utils'
6
6
 
7
7
  import scriptInvalid from './script.invalid.vectors'
8
8
  import scriptValid from './script.valid.vectors'
@@ -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 (): string {
52
52
  const script = new P2PKH().lock(address).toASM()
53
53
  return script
54
54
  }
@@ -60,7 +60,7 @@ describe('Script', () => {
60
60
  it('should parse this buffer containing an OP code', () => {
61
61
  const buf = Buffer.alloc(1)
62
62
  buf[0] = OP.OP_0
63
- const script = Script.fromBinary(buf)
63
+ const script = Script.fromBinary([...buf])
64
64
  expect(script.chunks).toHaveLength(1)
65
65
  expect(script.chunks[0].op).toBe(buf[0])
66
66
  })
@@ -68,59 +68,59 @@ describe('Script', () => {
68
68
  it('should parse this buffer containing another OP code', () => {
69
69
  const buf = Buffer.alloc(1)
70
70
  buf[0] = OP.OP_CHECKMULTISIG
71
- const script = Script.fromBinary(buf)
71
+ const script = Script.fromBinary([...buf])
72
72
  expect(script.chunks).toHaveLength(1)
73
73
  expect(script.chunks[0].op).toBe(buf[0])
74
74
  })
75
75
 
76
76
  it('should parse this buffer containing three bytes of data', () => {
77
- const buf = ([3, 1, 2, 3])
78
- const script = Script.fromBinary(buf)
77
+ const buf = [3, 1, 2, 3]
78
+ const script = Script.fromBinary([...buf])
79
79
  expect(script.chunks).toHaveLength(1)
80
80
  expect(script.chunks[0].data).toEqual([1, 2, 3])
81
81
  })
82
82
 
83
83
  it('should parse this buffer containing OP_PUSHDATA1 and zero bytes of data', () => {
84
- const buf = ([0])
84
+ const buf = [0]
85
85
  buf[0] = OP.OP_PUSHDATA1
86
- const script = Script.fromBinary(buf)
86
+ const script = Script.fromBinary([...buf])
87
87
  expect(script.chunks.length).toEqual(1)
88
88
  expect(script.chunks[0].data).toEqual([])
89
89
  })
90
90
 
91
91
  it('should parse this buffer containing OP_PUSHDATA2 and zero bytes of data', () => {
92
- const buf = ([0])
92
+ const buf = [0]
93
93
  buf[0] = OP.OP_PUSHDATA2
94
- const script = Script.fromBinary(buf)
94
+ const script = Script.fromBinary([...buf])
95
95
  expect(script.chunks.length).toEqual(1)
96
96
  expect(script.chunks[0].data).toEqual([])
97
97
  })
98
98
 
99
99
  it('should parse this buffer containing OP_PUSHDATA2 and three bytes of data', () => {
100
- const buf = ([OP.OP_PUSHDATA2, 3, 0, 1, 2, 3])
101
- const script = Script.fromBinary(buf)
100
+ const buf = [OP.OP_PUSHDATA2, 3, 0, 1, 2, 3]
101
+ const script = Script.fromBinary([...buf])
102
102
  expect(script.chunks.length).toEqual(1)
103
103
  expect(script.chunks[0].data).toEqual([1, 2, 3])
104
104
  })
105
105
 
106
106
  it('should parse this buffer containing OP_PUSHDATA4 and zero bytes of data', () => {
107
- const buf = ([0, 0])
107
+ const buf = [0, 0]
108
108
  buf[0] = OP.OP_PUSHDATA4
109
- const script = Script.fromBinary(buf)
109
+ const script = Script.fromBinary([...buf])
110
110
  expect(script.chunks.length).toEqual(1)
111
111
  expect(script.chunks[0].data).toEqual([])
112
112
  })
113
113
 
114
114
  it('should parse this buffer containing OP_PUSHDATA4 and three bytes of data', () => {
115
115
  const buf = [OP.OP_PUSHDATA4, 3, 0, 0, 0, 1, 2, 3]
116
- const script = Script.fromBinary(buf)
116
+ const script = Script.fromBinary([...buf])
117
117
  expect(script.chunks.length).toEqual(1)
118
118
  expect(script.chunks[0].data).toEqual([1, 2, 3])
119
119
  })
120
120
 
121
121
  it('should parse this buffer an OP code, data, and another OP code', () => {
122
122
  const buf = [OP.OP_0, OP.OP_PUSHDATA4, 3, 0, 0, 0, 1, 2, 3, OP.OP_0]
123
- const script = Script.fromBinary(buf)
123
+ const script = Script.fromBinary([...buf])
124
124
  expect(script.chunks.length).toEqual(3)
125
125
  expect(script.chunks[0].op).toEqual(buf[0])
126
126
  expect(script.chunks[1].data).toEqual([1, 2, 3])
@@ -139,7 +139,7 @@ describe('Script', () => {
139
139
  it('should output this buffer containing an OP code', () => {
140
140
  const buf = Buffer.alloc(1)
141
141
  buf[0] = OP.OP_0
142
- const script = Script.fromBinary(buf)
142
+ const script = Script.fromBinary([...buf])
143
143
  expect(script.chunks.length).toEqual(1)
144
144
  expect(script.chunks[0].op).toEqual(buf[0])
145
145
  expect(script.toHex()).toEqual(buf.toString('hex'))
@@ -148,7 +148,7 @@ describe('Script', () => {
148
148
  it('should output this buffer containing another OP code', () => {
149
149
  const buf = Buffer.alloc(1)
150
150
  buf[0] = OP.OP_CHECKMULTISIG
151
- const script = Script.fromBinary(buf)
151
+ const script = Script.fromBinary([...buf])
152
152
  expect(script.chunks.length).toEqual(1)
153
153
  expect(script.chunks[0].op).toEqual(buf[0])
154
154
  expect(script.toHex()).toEqual(buf.toString('hex'))
@@ -156,7 +156,7 @@ describe('Script', () => {
156
156
 
157
157
  it('should output this buffer containing three bytes of data', () => {
158
158
  const buf = Buffer.from([3, 1, 2, 3])
159
- const script = Script.fromBinary(buf)
159
+ const script = Script.fromBinary([...buf])
160
160
  expect(script.chunks.length).toEqual(1)
161
161
  expect(script.chunks[0].data).toEqual([1, 2, 3])
162
162
  expect(script.toHex()).toEqual(buf.toString('hex'))
@@ -166,7 +166,7 @@ describe('Script', () => {
166
166
  const buf = Buffer.from([0, 0, 1, 2, 3])
167
167
  buf[0] = OP.OP_PUSHDATA1
168
168
  buf.writeUInt8(3, 1)
169
- const script = Script.fromBinary(buf)
169
+ const script = Script.fromBinary([...buf])
170
170
  expect(script.chunks.length).toEqual(1)
171
171
  expect(script.chunks[0].data).toEqual([1, 2, 3])
172
172
  expect(script.toHex()).toEqual(buf.toString('hex'))
@@ -176,7 +176,7 @@ describe('Script', () => {
176
176
  const buf = Buffer.from([0, 0, 0, 1, 2, 3])
177
177
  buf[0] = OP.OP_PUSHDATA2
178
178
  buf.writeUInt16LE(3, 1)
179
- const script = Script.fromBinary(buf)
179
+ const script = Script.fromBinary([...buf])
180
180
  expect(script.chunks.length).toEqual(1)
181
181
  expect(script.chunks[0].data).toEqual([1, 2, 3])
182
182
  expect(script.toHex()).toEqual(buf.toString('hex'))
@@ -186,7 +186,7 @@ describe('Script', () => {
186
186
  const buf = Buffer.from([0, 0, 0, 0, 0, 1, 2, 3])
187
187
  buf[0] = OP.OP_PUSHDATA4
188
188
  buf.writeUInt16LE(3, 1)
189
- const script = Script.fromBinary(buf)
189
+ const script = Script.fromBinary([...buf])
190
190
  expect(script.chunks.length).toEqual(1)
191
191
  expect(script.chunks[0].data).toEqual([1, 2, 3])
192
192
  expect(script.toHex()).toEqual(buf.toString('hex'))
@@ -198,7 +198,7 @@ describe('Script', () => {
198
198
  buf[1] = OP.OP_PUSHDATA4
199
199
  buf.writeUInt16LE(3, 2)
200
200
  buf[buf.length - 1] = OP.OP_0
201
- const script = Script.fromBinary(buf)
201
+ const script = Script.fromBinary([...buf])
202
202
  expect(script.chunks.length).toEqual(3)
203
203
  expect(script.chunks[0].op).toEqual(buf[0])
204
204
  expect(script.chunks[1].data).toEqual([1, 2, 3])
@@ -214,7 +214,7 @@ describe('Script', () => {
214
214
  buf[1] = OP.OP_PUSHDATA4
215
215
  buf.writeUInt16LE(3, 2)
216
216
  buf[buf.length - 1] = OP.OP_0
217
- const script = Script.fromBinary(buf)
217
+ const script = Script.fromBinary([...buf])
218
218
  expect(script.chunks.length).toEqual(3)
219
219
  expect(script.chunks[0].op).toEqual(buf[0])
220
220
  expect(script.chunks[1].data).toEqual([1, 2, 3])
@@ -225,35 +225,48 @@ describe('Script', () => {
225
225
 
226
226
  describe('fromASM', () => {
227
227
  it('should parse these known scripts', () => {
228
- expect(Script.fromASM('OP_0 010203 OP_0')
229
- .toASM()
230
- ).toEqual('OP_0 010203 OP_0')
231
- expect(Script.fromASM(
232
- 'OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIG'
233
- ).toASM()).toEqual(
228
+ expect(Script.fromASM('OP_0 010203 OP_0').toASM()).toEqual(
229
+ 'OP_0 010203 OP_0'
230
+ )
231
+ expect(
232
+ Script.fromASM(
233
+ 'OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIG'
234
+ ).toASM()
235
+ ).toEqual(
234
236
  'OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIG'
235
237
  )
236
- expect(Script.fromASM(
237
- 'OP_SHA256 8cc17e2a2b10e1da145488458a6edec4a1fdb1921c2d5ccbc96aa0ed31b4d5f8 OP_EQUALVERIFY OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_EQUALVERIFY OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIG'
238
- ).toASM()).toEqual(
238
+ expect(
239
+ Script.fromASM(
240
+ 'OP_SHA256 8cc17e2a2b10e1da145488458a6edec4a1fdb1921c2d5ccbc96aa0ed31b4d5f8 OP_EQUALVERIFY OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_EQUALVERIFY OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIG'
241
+ ).toASM()
242
+ ).toEqual(
239
243
  'OP_SHA256 8cc17e2a2b10e1da145488458a6edec4a1fdb1921c2d5ccbc96aa0ed31b4d5f8 OP_EQUALVERIFY OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_EQUALVERIFY OP_DUP OP_HASH160 1451baa3aad777144a0759998a03538018dd7b4b OP_EQUALVERIFY OP_CHECKSIG'
240
244
  )
241
- expect(Script.fromASM('OP_0 010203 OP_0')
242
- .toASM()
243
- ).toEqual('OP_0 010203 OP_0')
244
- expect(Script.fromASM('OP_0 010203 OP_0')
245
- .toASM()
246
- ).toEqual('OP_0 010203 OP_0')
247
- expect(Script.fromASM('OP_0 3 010203 OP_0').toASM()).toEqual('OP_0 03 010203 OP_0')
245
+ expect(Script.fromASM('OP_0 010203 OP_0').toASM()).toEqual(
246
+ 'OP_0 010203 OP_0'
247
+ )
248
+ expect(Script.fromASM('OP_0 010203 OP_0').toASM()).toEqual(
249
+ 'OP_0 010203 OP_0'
250
+ )
251
+ expect(Script.fromASM('OP_0 3 010203 OP_0').toASM()).toEqual(
252
+ 'OP_0 03 010203 OP_0'
253
+ )
248
254
  expect(Script.fromASM('').toASM()).toEqual('')
249
255
  })
250
256
  it('should parse this known script in ASM', () => {
251
- const asm = 'OP_DUP OP_HASH160 f4c03610e60ad15100929cc23da2f3a799af1725 OP_EQUALVERIFY OP_CHECKSIG'
257
+ const asm =
258
+ 'OP_DUP OP_HASH160 f4c03610e60ad15100929cc23da2f3a799af1725 OP_EQUALVERIFY OP_CHECKSIG'
252
259
  const script = Script.fromASM(asm)
260
+
253
261
  expect(script.chunks[0].op).toEqual(OP.OP_DUP)
254
262
  expect(script.chunks[1].op).toEqual(OP.OP_HASH160)
255
263
  expect(script.chunks[2].op).toEqual(20)
256
- expect(toHex(script.chunks[2].data)).toEqual('f4c03610e60ad15100929cc23da2f3a799af1725')
264
+
265
+ // Ensure `data` is defined before calling `toHex`
266
+ expect(toHex(script.chunks[2].data ?? [])).toEqual(
267
+ 'f4c03610e60ad15100929cc23da2f3a799af1725'
268
+ )
269
+
257
270
  expect(script.chunks[3].op).toEqual(OP.OP_EQUALVERIFY)
258
271
  expect(script.chunks[4].op).toEqual(OP.OP_CHECKSIG)
259
272
  })
@@ -267,7 +280,7 @@ describe('Script', () => {
267
280
  it('should know this is invalid hex', () => {
268
281
  const asm = 'OP_RETURN 026d02 0568656c6c6fzz'
269
282
 
270
- const createScript = () => {
283
+ const createScript = (): string => {
271
284
  const script = Script.fromASM(asm)
272
285
  return script.toASM()
273
286
  }
@@ -319,9 +332,11 @@ describe('Script', () => {
319
332
 
320
333
  describe('#removeCodeseparators', () => {
321
334
  it('should remove any OP_CODESEPARATORs', () => {
322
- expect(Script.fromASM('OP_CODESEPARATOR OP_0 OP_CODESEPARATOR')
323
- .removeCodeseparators()
324
- .toASM()).toEqual('OP_0')
335
+ expect(
336
+ Script.fromASM('OP_CODESEPARATOR OP_0 OP_CODESEPARATOR')
337
+ .removeCodeseparators()
338
+ .toASM()
339
+ ).toEqual('OP_0')
325
340
  })
326
341
  })
327
342
 
@@ -329,7 +344,9 @@ describe('Script', () => {
329
344
  it("should know these scripts are or aren't push only", () => {
330
345
  expect(Script.fromASM('OP_0').isPushOnly()).toEqual(true)
331
346
  expect(Script.fromASM('OP_0 OP_RETURN').isPushOnly()).toEqual(false)
332
- expect(Script.fromASM('OP_PUSHDATA1 5 1010101010').isPushOnly()).toEqual(true)
347
+ expect(Script.fromASM('OP_PUSHDATA1 5 1010101010').isPushOnly()).toEqual(
348
+ true
349
+ )
333
350
 
334
351
  // like bitcoind, we regard OP_RESERVED as being "push only"
335
352
  expect(Script.fromASM('OP_RESERVED').isPushOnly()).toEqual(true)
@@ -338,10 +355,11 @@ describe('Script', () => {
338
355
 
339
356
  describe('#findAndDelete', () => {
340
357
  it('should find and delete this buffer', () => {
341
- expect(Script
342
- .fromASM('OP_RETURN f0f0')
343
- .findAndDelete(Script.fromASM('f0f0'))
344
- .toASM()).toEqual('OP_RETURN')
358
+ expect(
359
+ Script.fromASM('OP_RETURN f0f0')
360
+ .findAndDelete(Script.fromASM('f0f0'))
361
+ .toASM()
362
+ ).toEqual('OP_RETURN')
345
363
  })
346
364
  })
347
365
 
@@ -1,12 +1,12 @@
1
- import PrivateKey from '../../../dist/cjs/src/primitives/PrivateKey'
2
- import { hash160, hash256 } from '../../../dist/cjs/src/primitives/Hash'
3
- import Curve from '../../../dist/cjs/src/primitives/Curve'
4
- import Spend from '../../../dist/cjs/src/script/Spend'
5
- import P2PKH from '../../../dist/cjs/src/script/templates/P2PKH'
6
- import RPuzzle from '../../../dist/cjs/src/script/templates/RPuzzle'
7
- import Transaction from '../../../dist/cjs/src/transaction/Transaction'
8
- import LockingScript from '../../../dist/cjs/src/script/LockingScript'
9
- import UnlockingScript from '../../../dist/cjs/src/script/UnlockingScript'
1
+ import PrivateKey from '../../primitives/PrivateKey'
2
+ import { hash160, hash256 } from '../../primitives/Hash'
3
+ import Curve from '../../primitives/Curve'
4
+ import Spend from '../../script/Spend'
5
+ import P2PKH from '../../script/templates/P2PKH'
6
+ import RPuzzle from '../../script/templates/RPuzzle'
7
+ import Transaction from '../../transaction/Transaction'
8
+ import LockingScript from '../../script/LockingScript'
9
+ import UnlockingScript from '../../script/UnlockingScript'
10
10
 
11
11
  import spendValid from './spend.valid.vectors'
12
12
 
@@ -19,15 +19,29 @@ describe('Spend', () => {
19
19
  const lockingScript = p2pkh.lock(hash)
20
20
  const satoshis = 1
21
21
  const unlockingTemplate = p2pkh.unlock(privateKey)
22
- const sourceTx = new Transaction(1, [], [{
23
- lockingScript,
24
- satoshis
25
- }], 0)
26
- const spendTx = new Transaction(1, [{
27
- sourceTransaction: sourceTx,
28
- sourceOutputIndex: 0,
29
- sequence: 0xffffffff
30
- }], [], 0)
22
+ const sourceTx = new Transaction(
23
+ 1,
24
+ [],
25
+ [
26
+ {
27
+ lockingScript,
28
+ satoshis
29
+ }
30
+ ],
31
+ 0
32
+ )
33
+ const spendTx = new Transaction(
34
+ 1,
35
+ [
36
+ {
37
+ sourceTransaction: sourceTx,
38
+ sourceOutputIndex: 0,
39
+ sequence: 0xffffffff
40
+ }
41
+ ],
42
+ [],
43
+ 0
44
+ )
31
45
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
32
46
  const spend = new Spend({
33
47
  sourceTXID: sourceTx.id('hex'),
@@ -54,15 +68,29 @@ describe('Spend', () => {
54
68
  const lockingScript = p2pkh.lock(hash)
55
69
  const satoshis = 1
56
70
  const unlockingTemplate = p2pkh.unlock(wrongPrivateKey)
57
- const sourceTx = new Transaction(1, [], [{
58
- lockingScript,
59
- satoshis
60
- }], 0)
61
- const spendTx = new Transaction(1, [{
62
- sourceTransaction: sourceTx,
63
- sourceOutputIndex: 0,
64
- sequence: 0xffffffff
65
- }], [], 0)
71
+ const sourceTx = new Transaction(
72
+ 1,
73
+ [],
74
+ [
75
+ {
76
+ lockingScript,
77
+ satoshis
78
+ }
79
+ ],
80
+ 0
81
+ )
82
+ const spendTx = new Transaction(
83
+ 1,
84
+ [
85
+ {
86
+ sourceTransaction: sourceTx,
87
+ sourceOutputIndex: 0,
88
+ sequence: 0xffffffff
89
+ }
90
+ ],
91
+ [],
92
+ 0
93
+ )
66
94
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
67
95
  const spend = new Spend({
68
96
  sourceTXID: sourceTx.id('hex'),
@@ -82,21 +110,44 @@ describe('Spend', () => {
82
110
  it('Successfully validates an R-puzzle spend', async () => {
83
111
  const k = new PrivateKey(2)
84
112
  const c = new Curve()
85
- let r = c.g.mul(k).x.umod(c.n).toArray()
86
- r = r[0] > 127 ? [0, ...r] : r
113
+ let r = c.g.mul(k).x?.umod(c.n)?.toArray()
114
+ if (r !== null && r !== undefined) {
115
+ r = r[0] > 127 ? [0, ...r] : r
116
+ }
117
+
87
118
  const puz = new RPuzzle()
88
- const lockingScript = puz.lock(r)
119
+ const lockingScript = puz.lock(r ?? [])
89
120
  const satoshis = 1
90
- const unlockingTemplate = puz.unlock(k)
91
- const sourceTx = new Transaction(1, [], [{
92
- lockingScript,
93
- satoshis
94
- }], 0)
95
- const spendTx = new Transaction(1, [{
96
- sourceTransaction: sourceTx,
97
- sourceOutputIndex: 0,
98
- sequence: 0xffffffff
99
- }], [], 0)
121
+
122
+ // Fix: Ensure privateKey is valid and within range
123
+ const privateKey = PrivateKey.fromRandom()
124
+
125
+ const unlockingTemplate = puz.unlock(k, privateKey)
126
+ const sourceTx = new Transaction(
127
+ 1,
128
+ [],
129
+ [
130
+ {
131
+ lockingScript,
132
+ satoshis
133
+ }
134
+ ],
135
+ 0
136
+ )
137
+
138
+ const spendTx = new Transaction(
139
+ 1,
140
+ [
141
+ {
142
+ sourceTransaction: sourceTx,
143
+ sourceOutputIndex: 0,
144
+ sequence: 0xffffffff
145
+ }
146
+ ],
147
+ [],
148
+ 0
149
+ )
150
+
100
151
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
101
152
  const spend = new Spend({
102
153
  sourceTXID: sourceTx.id('hex'),
@@ -111,28 +162,52 @@ describe('Spend', () => {
111
162
  inputSequence: 0xffffffff,
112
163
  lockTime: 0
113
164
  })
165
+
114
166
  const valid = spend.validate()
115
167
  expect(valid).toBe(true)
116
168
  })
169
+
117
170
  it('Successfully validates an R-puzzle spend (HASH256)', async () => {
118
171
  const k = new PrivateKey(2)
119
172
  const c = new Curve()
120
- let r = c.g.mul(k).x.umod(c.n).toArray()
121
- r = r[0] > 127 ? [0, ...r] : r
122
- r = hash256(r)
173
+ let r = c.g.mul(k).x?.umod(c.n)?.toArray()
174
+ if (r !== null && r !== undefined) {
175
+ r = r[0] > 127 ? [0, ...r] : r
176
+ r = hash256(r)
177
+ }
123
178
  const puz = new RPuzzle('HASH256')
124
- const lockingScript = puz.lock(r)
179
+ const lockingScript = puz.lock(r ?? [])
125
180
  const satoshis = 1
126
- const unlockingTemplate = puz.unlock(k)
127
- const sourceTx = new Transaction(1, [], [{
128
- lockingScript,
129
- satoshis
130
- }], 0)
131
- const spendTx = new Transaction(1, [{
132
- sourceTransaction: sourceTx,
133
- sourceOutputIndex: 0,
134
- sequence: 0xffffffff
135
- }], [], 0)
181
+
182
+ // Fix: Ensure privateKey is valid and within range
183
+ const privateKey = PrivateKey.fromRandom()
184
+
185
+ const unlockingTemplate = puz.unlock(k, privateKey)
186
+ const sourceTx = new Transaction(
187
+ 1,
188
+ [],
189
+ [
190
+ {
191
+ lockingScript,
192
+ satoshis
193
+ }
194
+ ],
195
+ 0
196
+ )
197
+
198
+ const spendTx = new Transaction(
199
+ 1,
200
+ [
201
+ {
202
+ sourceTransaction: sourceTx,
203
+ sourceOutputIndex: 0,
204
+ sequence: 0xffffffff
205
+ }
206
+ ],
207
+ [],
208
+ 0
209
+ )
210
+
136
211
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
137
212
  const spend = new Spend({
138
213
  sourceTXID: sourceTx.id('hex'),
@@ -147,29 +222,53 @@ describe('Spend', () => {
147
222
  inputSequence: 0xffffffff,
148
223
  lockTime: 0
149
224
  })
225
+
150
226
  const valid = spend.validate()
151
227
  expect(valid).toBe(true)
152
228
  })
229
+
153
230
  it('Fails to validate an R-puzzle spend with the wrong K value', async () => {
154
231
  const k = new PrivateKey(2)
155
232
  const wrongK = new PrivateKey(5)
156
233
  const c = new Curve()
157
- let r = c.g.mul(k).x.umod(c.n).toArray()
158
- r = r[0] > 127 ? [0, ...r] : r
159
- r = hash256(r)
234
+ let r = c.g.mul(k).x?.umod(c.n)?.toArray()
235
+ if (r !== null && r !== undefined) {
236
+ r = r[0] > 127 ? [0, ...r] : r
237
+ r = hash256(r)
238
+ }
160
239
  const puz = new RPuzzle('HASH256')
161
- const lockingScript = puz.lock(r)
240
+ const lockingScript = puz.lock(r ?? [])
162
241
  const satoshis = 1
163
- const unlockingTemplate = puz.unlock(wrongK)
164
- const sourceTx = new Transaction(1, [], [{
165
- lockingScript,
166
- satoshis
167
- }], 0)
168
- const spendTx = new Transaction(1, [{
169
- sourceTransaction: sourceTx,
170
- sourceOutputIndex: 0,
171
- sequence: 0xffffffff
172
- }], [], 0)
242
+
243
+ // Fix: Ensure privateKey is valid and within range
244
+ const privateKey = PrivateKey.fromRandom()
245
+
246
+ const unlockingTemplate = puz.unlock(wrongK, privateKey)
247
+ const sourceTx = new Transaction(
248
+ 1,
249
+ [],
250
+ [
251
+ {
252
+ lockingScript,
253
+ satoshis
254
+ }
255
+ ],
256
+ 0
257
+ )
258
+
259
+ const spendTx = new Transaction(
260
+ 1,
261
+ [
262
+ {
263
+ sourceTransaction: sourceTx,
264
+ sourceOutputIndex: 0,
265
+ sequence: 0xffffffff
266
+ }
267
+ ],
268
+ [],
269
+ 0
270
+ )
271
+
173
272
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
174
273
  const spend = new Spend({
175
274
  sourceTXID: sourceTx.id('hex'),
@@ -184,27 +283,51 @@ describe('Spend', () => {
184
283
  inputSequence: 0xffffffff,
185
284
  lockTime: 0
186
285
  })
286
+
187
287
  expect(() => spend.validate()).toThrow()
188
288
  })
289
+
189
290
  it('Fails to validate an R-puzzle spend with the wrong hash', async () => {
190
291
  const k = new PrivateKey(2)
191
292
  const c = new Curve()
192
- let r = c.g.mul(k).x.umod(c.n).toArray()
193
- r = r[0] > 127 ? [0, ...r] : r
194
- r = hash160(r)
293
+ let r = c.g.mul(k).x?.umod(c.n)?.toArray()
294
+ if (r !== null && r !== undefined) {
295
+ r = r[0] > 127 ? [0, ...r] : r
296
+ r = hash160(r)
297
+ }
195
298
  const puz = new RPuzzle('HASH256')
196
- const lockingScript = puz.lock(r)
299
+ const lockingScript = puz.lock(r ?? [])
197
300
  const satoshis = 1
198
- const unlockingTemplate = puz.unlock(k)
199
- const sourceTx = new Transaction(1, [], [{
200
- lockingScript,
201
- satoshis
202
- }], 0)
203
- const spendTx = new Transaction(1, [{
204
- sourceTransaction: sourceTx,
205
- sourceOutputIndex: 0,
206
- sequence: 0xffffffff
207
- }], [], 0)
301
+
302
+ // Fix: Ensure privateKey is valid and within range
303
+ const privateKey = PrivateKey.fromRandom()
304
+
305
+ const unlockingTemplate = puz.unlock(k, privateKey)
306
+ const sourceTx = new Transaction(
307
+ 1,
308
+ [],
309
+ [
310
+ {
311
+ lockingScript,
312
+ satoshis
313
+ }
314
+ ],
315
+ 0
316
+ )
317
+
318
+ const spendTx = new Transaction(
319
+ 1,
320
+ [
321
+ {
322
+ sourceTransaction: sourceTx,
323
+ sourceOutputIndex: 0,
324
+ sequence: 0xffffffff
325
+ }
326
+ ],
327
+ [],
328
+ 0
329
+ )
330
+
208
331
  const unlockingScript = await unlockingTemplate.sign(spendTx, 0)
209
332
  const spend = new Spend({
210
333
  sourceTXID: sourceTx.id('hex'),
@@ -219,6 +342,7 @@ describe('Spend', () => {
219
342
  inputSequence: 0xffffffff,
220
343
  lockTime: 0
221
344
  })
345
+
222
346
  expect(() => spend.validate()).toThrow()
223
347
  })
224
348
  for (let i = 0; i < spendValid.length; i++) {
@@ -228,7 +352,8 @@ describe('Spend', () => {
228
352
  }
229
353
  it(a[2], () => {
230
354
  const spend = new Spend({
231
- sourceTXID: '0000000000000000000000000000000000000000000000000000000000000000',
355
+ sourceTXID:
356
+ '0000000000000000000000000000000000000000000000000000000000000000',
232
357
  sourceOutputIndex: 0,
233
358
  sourceSatoshis: 1,
234
359
  lockingScript: LockingScript.fromHex(a[1]),