@bsv/sdk 1.3.13 → 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 (1251) hide show
  1. package/dist/cjs/mod.js +15 -15
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +7 -3
  4. package/dist/cjs/src/auth/Peer.js +71 -61
  5. package/dist/cjs/src/auth/Peer.js.map +1 -1
  6. package/dist/cjs/src/auth/SessionManager.js +10 -5
  7. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/Certificate.js +33 -30
  9. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/MasterCertificate.js +36 -36
  11. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +9 -9
  13. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  14. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +45 -29
  15. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  16. package/dist/cjs/src/auth/certificates/index.js +5 -5
  17. package/dist/cjs/src/auth/certificates/index.js.map +1 -1
  18. package/dist/cjs/src/auth/clients/AuthFetch.js +65 -74
  19. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  20. package/dist/cjs/src/auth/clients/index.js +1 -1
  21. package/dist/cjs/src/auth/clients/index.js.map +1 -1
  22. package/dist/cjs/src/auth/index.js +7 -7
  23. package/dist/cjs/src/auth/index.js.map +1 -1
  24. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +99 -80
  25. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  26. package/dist/cjs/src/auth/transports/index.js +1 -1
  27. package/dist/cjs/src/auth/transports/index.js.map +1 -1
  28. package/dist/cjs/src/auth/utils/createNonce.js +6 -5
  29. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  30. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js +2 -2
  31. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  32. package/dist/cjs/src/auth/utils/index.js +4 -4
  33. package/dist/cjs/src/auth/utils/index.js.map +1 -1
  34. package/dist/cjs/src/auth/utils/validateCertificates.js +7 -4
  35. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  36. package/dist/cjs/src/auth/utils/verifyNonce.js +5 -4
  37. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  38. package/dist/cjs/src/compat/BSM.js +16 -26
  39. package/dist/cjs/src/compat/BSM.js.map +1 -1
  40. package/dist/cjs/src/compat/ECIES.js +50 -52
  41. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  42. package/dist/cjs/src/compat/HD.js +36 -46
  43. package/dist/cjs/src/compat/HD.js.map +1 -1
  44. package/dist/cjs/src/compat/Mnemonic.js +30 -39
  45. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  46. package/dist/cjs/src/compat/Utxo.js +5 -5
  47. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  48. package/dist/cjs/src/compat/index.js +16 -26
  49. package/dist/cjs/src/compat/index.js.map +1 -1
  50. package/dist/cjs/src/messages/EncryptedMessage.js +14 -14
  51. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  52. package/dist/cjs/src/messages/SignedMessage.js +21 -20
  53. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  54. package/dist/cjs/src/messages/index.js +9 -19
  55. package/dist/cjs/src/messages/index.js.map +1 -1
  56. package/dist/cjs/src/overlay-tools/LookupResolver.js +44 -32
  57. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  58. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +12 -12
  59. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  60. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +11 -10
  61. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  62. package/dist/cjs/src/overlay-tools/index.js +8 -8
  63. package/dist/cjs/src/overlay-tools/index.js.map +1 -1
  64. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  65. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  66. package/dist/cjs/src/primitives/BasePoint.js +2 -2
  67. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  68. package/dist/cjs/src/primitives/BigNumber.js +5 -4
  69. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  70. package/dist/cjs/src/primitives/Curve.js +70 -36
  71. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  72. package/dist/cjs/src/primitives/DRBG.js +6 -6
  73. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  74. package/dist/cjs/src/primitives/ECDSA.js +71 -55
  75. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  76. package/dist/cjs/src/primitives/Hash.js +115 -105
  77. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  78. package/dist/cjs/src/primitives/JacobianPoint.js +25 -15
  79. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  80. package/dist/cjs/src/primitives/K256.js +2 -2
  81. package/dist/cjs/src/primitives/K256.js.map +1 -1
  82. package/dist/cjs/src/primitives/Mersenne.js +4 -4
  83. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  84. package/dist/cjs/src/primitives/MontgomoryMethod.js +5 -5
  85. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  86. package/dist/cjs/src/primitives/Point.js +114 -87
  87. package/dist/cjs/src/primitives/Point.js.map +1 -1
  88. package/dist/cjs/src/primitives/Polynomial.js +14 -14
  89. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  90. package/dist/cjs/src/primitives/PrivateKey.js +48 -58
  91. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  92. package/dist/cjs/src/primitives/PublicKey.js +23 -23
  93. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  94. package/dist/cjs/src/primitives/Random.js +2 -1
  95. package/dist/cjs/src/primitives/Random.js.map +1 -1
  96. package/dist/cjs/src/primitives/ReductionContext.js +10 -10
  97. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  98. package/dist/cjs/src/primitives/Schnorr.js +8 -8
  99. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  100. package/dist/cjs/src/primitives/Signature.js +23 -23
  101. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  102. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  103. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  104. package/dist/cjs/src/primitives/TransactionSignature.js +38 -38
  105. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  106. package/dist/cjs/src/primitives/index.js +34 -44
  107. package/dist/cjs/src/primitives/index.js.map +1 -1
  108. package/dist/cjs/src/primitives/utils.js +38 -37
  109. package/dist/cjs/src/primitives/utils.js.map +1 -1
  110. package/dist/cjs/src/script/LockingScript.js +2 -2
  111. package/dist/cjs/src/script/LockingScript.js.map +1 -1
  112. package/dist/cjs/src/script/OP.js +3 -3
  113. package/dist/cjs/src/script/OP.js.map +1 -1
  114. package/dist/cjs/src/script/Script.js +47 -47
  115. package/dist/cjs/src/script/Script.js.map +1 -1
  116. package/dist/cjs/src/script/Spend.js +304 -311
  117. package/dist/cjs/src/script/Spend.js.map +1 -1
  118. package/dist/cjs/src/script/UnlockingScript.js +2 -2
  119. package/dist/cjs/src/script/UnlockingScript.js.map +1 -1
  120. package/dist/cjs/src/script/index.js +11 -11
  121. package/dist/cjs/src/script/index.js.map +1 -1
  122. package/dist/cjs/src/script/templates/P2PKH.js +55 -47
  123. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  124. package/dist/cjs/src/script/templates/PushDrop.js +57 -51
  125. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  126. package/dist/cjs/src/script/templates/RPuzzle.js +49 -48
  127. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  128. package/dist/cjs/src/script/templates/index.js +6 -6
  129. package/dist/cjs/src/script/templates/index.js.map +1 -1
  130. package/dist/cjs/src/totp/index.js +1 -1
  131. package/dist/cjs/src/totp/index.js.map +1 -1
  132. package/dist/cjs/src/totp/totp.js +9 -8
  133. package/dist/cjs/src/totp/totp.js.map +1 -1
  134. package/dist/cjs/src/transaction/Beef.js +78 -67
  135. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  136. package/dist/cjs/src/transaction/BeefParty.js +5 -5
  137. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  138. package/dist/cjs/src/transaction/BeefTx.js +39 -33
  139. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  140. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  141. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  142. package/dist/cjs/src/transaction/MerklePath.js +60 -38
  143. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  144. package/dist/cjs/src/transaction/Transaction.js +127 -85
  145. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  146. package/dist/cjs/src/transaction/broadcasters/ARC.js +48 -43
  147. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  148. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +4 -3
  149. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  150. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +15 -15
  151. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  152. package/dist/cjs/src/transaction/broadcasters/index.js +6 -6
  153. package/dist/cjs/src/transaction/broadcasters/index.js.map +1 -1
  154. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +4 -3
  155. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  156. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +11 -11
  157. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  158. package/dist/cjs/src/transaction/chaintrackers/index.js +4 -4
  159. package/dist/cjs/src/transaction/chaintrackers/index.js.map +1 -1
  160. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +3 -3
  161. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  162. package/dist/cjs/src/transaction/fee-models/index.js +2 -2
  163. package/dist/cjs/src/transaction/fee-models/index.js.map +1 -1
  164. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +12 -10
  165. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  166. package/dist/cjs/src/transaction/http/FetchHttpClient.js +2 -1
  167. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  168. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +8 -8
  169. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  170. package/dist/cjs/src/transaction/http/index.js +6 -6
  171. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  172. package/dist/cjs/src/transaction/index.js +12 -12
  173. package/dist/cjs/src/transaction/index.js.map +1 -1
  174. package/dist/cjs/src/wallet/CachedKeyDeriver.js +34 -11
  175. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  176. package/dist/cjs/src/wallet/KeyDeriver.js +10 -9
  177. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  178. package/dist/cjs/src/wallet/ProtoWallet.js +68 -31
  179. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  180. package/dist/cjs/src/wallet/WalletClient.js +18 -14
  181. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  182. package/dist/cjs/src/wallet/WalletError.js +2 -2
  183. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  184. package/dist/cjs/src/wallet/index.js +12 -12
  185. package/dist/cjs/src/wallet/index.js.map +1 -1
  186. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +2 -1
  187. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  188. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +11 -11
  189. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  190. package/dist/cjs/src/wallet/substrates/WalletWireCalls.js.map +1 -1
  191. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +239 -238
  192. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  193. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +311 -300
  194. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  195. package/dist/cjs/src/wallet/substrates/XDM.js +9 -7
  196. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  197. package/dist/cjs/src/wallet/substrates/index.js +12 -12
  198. package/dist/cjs/src/wallet/substrates/index.js.map +1 -1
  199. package/dist/cjs/src/wallet/substrates/window.CWI.js +32 -32
  200. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  201. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  202. package/dist/esm/mod.js +15 -31
  203. package/dist/esm/mod.js.map +1 -1
  204. package/dist/esm/src/auth/Peer.js +64 -63
  205. package/dist/esm/src/auth/Peer.js.map +1 -1
  206. package/dist/esm/src/auth/SessionManager.js +11 -10
  207. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  208. package/dist/esm/src/auth/certificates/Certificate.js +32 -34
  209. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  210. package/dist/esm/src/auth/certificates/MasterCertificate.js +36 -43
  211. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  212. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +9 -16
  213. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  214. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +46 -33
  215. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  216. package/dist/esm/src/auth/certificates/index.js +4 -25
  217. package/dist/esm/src/auth/certificates/index.js.map +1 -1
  218. package/dist/esm/src/auth/clients/AuthFetch.js +66 -79
  219. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  220. package/dist/esm/src/auth/clients/index.js +1 -17
  221. package/dist/esm/src/auth/clients/index.js.map +1 -1
  222. package/dist/esm/src/auth/index.js +7 -23
  223. package/dist/esm/src/auth/index.js.map +1 -1
  224. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +99 -85
  225. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  226. package/dist/esm/src/auth/transports/index.js +1 -17
  227. package/dist/esm/src/auth/transports/index.js.map +1 -1
  228. package/dist/esm/src/auth/types.js +1 -2
  229. package/dist/esm/src/auth/utils/createNonce.js +5 -8
  230. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  231. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +3 -7
  232. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  233. package/dist/esm/src/auth/utils/index.js +4 -20
  234. package/dist/esm/src/auth/utils/index.js.map +1 -1
  235. package/dist/esm/src/auth/utils/validateCertificates.js +8 -9
  236. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  237. package/dist/esm/src/auth/utils/verifyNonce.js +4 -7
  238. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  239. package/dist/esm/src/compat/BSM.js +14 -56
  240. package/dist/esm/src/compat/BSM.js.map +1 -1
  241. package/dist/esm/src/compat/ECIES.js +44 -75
  242. package/dist/esm/src/compat/ECIES.js.map +1 -1
  243. package/dist/esm/src/compat/HD.js +30 -69
  244. package/dist/esm/src/compat/HD.js.map +1 -1
  245. package/dist/esm/src/compat/Mnemonic.js +24 -62
  246. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  247. package/dist/esm/src/compat/Utxo.js +5 -11
  248. package/dist/esm/src/compat/Utxo.js.map +1 -1
  249. package/dist/esm/src/compat/bip-39-wordlist-en.js +1 -4
  250. package/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -1
  251. package/dist/esm/src/compat/index.js +5 -48
  252. package/dist/esm/src/compat/index.js.map +1 -1
  253. package/dist/esm/src/messages/EncryptedMessage.js +16 -24
  254. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  255. package/dist/esm/src/messages/SignedMessage.js +23 -30
  256. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  257. package/dist/esm/src/messages/index.js +2 -38
  258. package/dist/esm/src/messages/index.js.map +1 -1
  259. package/dist/esm/src/overlay-tools/LookupResolver.js +46 -43
  260. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  261. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +13 -19
  262. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  263. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +13 -20
  264. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  265. package/dist/esm/src/overlay-tools/index.js +5 -28
  266. package/dist/esm/src/overlay-tools/index.js.map +1 -1
  267. package/dist/esm/src/primitives/AESGCM.js +27 -39
  268. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  269. package/dist/esm/src/primitives/BasePoint.js +3 -9
  270. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  271. package/dist/esm/src/primitives/BigNumber.js +6 -8
  272. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  273. package/dist/esm/src/primitives/Curve.js +70 -43
  274. package/dist/esm/src/primitives/Curve.js.map +1 -1
  275. package/dist/esm/src/primitives/DRBG.js +7 -10
  276. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  277. package/dist/esm/src/primitives/ECDSA.js +72 -65
  278. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  279. package/dist/esm/src/primitives/Hash.js +131 -141
  280. package/dist/esm/src/primitives/Hash.js.map +1 -1
  281. package/dist/esm/src/primitives/JacobianPoint.js +24 -21
  282. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  283. package/dist/esm/src/primitives/K256.js +2 -8
  284. package/dist/esm/src/primitives/K256.js.map +1 -1
  285. package/dist/esm/src/primitives/Mersenne.js +5 -11
  286. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  287. package/dist/esm/src/primitives/MontgomoryMethod.js +5 -11
  288. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  289. package/dist/esm/src/primitives/Point.js +104 -93
  290. package/dist/esm/src/primitives/Point.js.map +1 -1
  291. package/dist/esm/src/primitives/Polynomial.js +16 -24
  292. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  293. package/dist/esm/src/primitives/PrivateKey.js +42 -83
  294. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  295. package/dist/esm/src/primitives/PublicKey.js +23 -29
  296. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  297. package/dist/esm/src/primitives/Random.js +4 -5
  298. package/dist/esm/src/primitives/Random.js.map +1 -1
  299. package/dist/esm/src/primitives/ReductionContext.js +11 -17
  300. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  301. package/dist/esm/src/primitives/Schnorr.js +9 -15
  302. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  303. package/dist/esm/src/primitives/Signature.js +24 -30
  304. package/dist/esm/src/primitives/Signature.js.map +1 -1
  305. package/dist/esm/src/primitives/SymmetricKey.js +13 -19
  306. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  307. package/dist/esm/src/primitives/TransactionSignature.js +29 -60
  308. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  309. package/dist/esm/src/primitives/index.js +14 -66
  310. package/dist/esm/src/primitives/index.js.map +1 -1
  311. package/dist/esm/src/primitives/utils.js +55 -74
  312. package/dist/esm/src/primitives/utils.js.map +1 -1
  313. package/dist/esm/src/script/LockingScript.js +2 -8
  314. package/dist/esm/src/script/LockingScript.js.map +1 -1
  315. package/dist/esm/src/script/OP.js +4 -6
  316. package/dist/esm/src/script/OP.js.map +1 -1
  317. package/dist/esm/src/script/Script.js +48 -54
  318. package/dist/esm/src/script/Script.js.map +1 -1
  319. package/dist/esm/src/script/ScriptChunk.js +1 -2
  320. package/dist/esm/src/script/ScriptTemplate.js +1 -2
  321. package/dist/esm/src/script/Spend.js +297 -334
  322. package/dist/esm/src/script/Spend.js.map +1 -1
  323. package/dist/esm/src/script/UnlockingScript.js +2 -8
  324. package/dist/esm/src/script/UnlockingScript.js.map +1 -1
  325. package/dist/esm/src/script/index.js +6 -31
  326. package/dist/esm/src/script/index.js.map +1 -1
  327. package/dist/esm/src/script/templates/P2PKH.js +53 -51
  328. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  329. package/dist/esm/src/script/templates/PushDrop.js +54 -52
  330. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  331. package/dist/esm/src/script/templates/RPuzzle.js +51 -55
  332. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  333. package/dist/esm/src/script/templates/index.js +3 -12
  334. package/dist/esm/src/script/templates/index.js.map +1 -1
  335. package/dist/esm/src/totp/index.js +1 -17
  336. package/dist/esm/src/totp/index.js.map +1 -1
  337. package/dist/esm/src/totp/totp.js +10 -16
  338. package/dist/esm/src/totp/totp.js.map +1 -1
  339. package/dist/esm/src/transaction/Beef.js +89 -86
  340. package/dist/esm/src/transaction/Beef.js.map +1 -1
  341. package/dist/esm/src/transaction/BeefParty.js +6 -10
  342. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  343. package/dist/esm/src/transaction/BeefTx.js +40 -40
  344. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  345. package/dist/esm/src/transaction/Broadcaster.js +2 -6
  346. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  347. package/dist/esm/src/transaction/ChainTracker.js +1 -2
  348. package/dist/esm/src/transaction/FeeModel.js +1 -2
  349. package/dist/esm/src/transaction/MerklePath.js +58 -41
  350. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  351. package/dist/esm/src/transaction/Transaction.js +121 -92
  352. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  353. package/dist/esm/src/transaction/TransactionInput.js +1 -2
  354. package/dist/esm/src/transaction/TransactionOutput.js +1 -2
  355. package/dist/esm/src/transaction/broadcasters/ARC.js +49 -50
  356. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  357. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js +3 -9
  358. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  359. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +16 -19
  360. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  361. package/dist/esm/src/transaction/broadcasters/index.js +3 -12
  362. package/dist/esm/src/transaction/broadcasters/index.js.map +1 -1
  363. package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js +3 -9
  364. package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  365. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +12 -15
  366. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  367. package/dist/esm/src/transaction/chaintrackers/index.js +2 -10
  368. package/dist/esm/src/transaction/chaintrackers/index.js.map +1 -1
  369. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +4 -7
  370. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  371. package/dist/esm/src/transaction/fee-models/index.js +1 -8
  372. package/dist/esm/src/transaction/fee-models/index.js.map +1 -1
  373. package/dist/esm/src/transaction/http/DefaultHttpClient.js +11 -13
  374. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  375. package/dist/esm/src/transaction/http/FetchHttpClient.js +2 -6
  376. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  377. package/dist/esm/src/transaction/http/HttpClient.js +1 -2
  378. package/dist/esm/src/transaction/http/NodejsHttpClient.js +9 -13
  379. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  380. package/dist/esm/src/transaction/http/index.js +3 -9
  381. package/dist/esm/src/transaction/http/index.js.map +1 -1
  382. package/dist/esm/src/transaction/index.js +6 -32
  383. package/dist/esm/src/transaction/index.js.map +1 -1
  384. package/dist/esm/src/wallet/CachedKeyDeriver.js +35 -15
  385. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  386. package/dist/esm/src/wallet/KeyDeriver.js +11 -15
  387. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  388. package/dist/esm/src/wallet/ProtoWallet.js +66 -37
  389. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  390. package/dist/esm/src/wallet/Wallet.interfaces.js +2 -5
  391. package/dist/esm/src/wallet/Wallet.interfaces.js.map +1 -1
  392. package/dist/esm/src/wallet/WalletClient.js +19 -21
  393. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  394. package/dist/esm/src/wallet/WalletError.js +4 -8
  395. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  396. package/dist/esm/src/wallet/index.js +8 -32
  397. package/dist/esm/src/wallet/index.js.map +1 -1
  398. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +3 -6
  399. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  400. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +12 -18
  401. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  402. package/dist/esm/src/wallet/substrates/WalletWire.js +1 -2
  403. package/dist/esm/src/wallet/substrates/WalletWireCalls.js +1 -3
  404. package/dist/esm/src/wallet/substrates/WalletWireCalls.js.map +1 -1
  405. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +240 -245
  406. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  407. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +305 -307
  408. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  409. package/dist/esm/src/wallet/substrates/XDM.js +10 -11
  410. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  411. package/dist/esm/src/wallet/substrates/index.js +7 -32
  412. package/dist/esm/src/wallet/substrates/index.js.map +1 -1
  413. package/dist/esm/src/wallet/substrates/window.CWI.js +33 -36
  414. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  415. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  416. package/dist/types/mod.d.ts +15 -15
  417. package/dist/types/mod.d.ts.map +1 -1
  418. package/dist/types/src/auth/Peer.d.ts +4 -4
  419. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  420. package/dist/types/src/auth/SessionManager.d.ts +1 -1
  421. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  422. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  423. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  424. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +6 -6
  425. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  426. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts +2 -2
  427. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  428. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  429. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  430. package/dist/types/src/auth/certificates/index.d.ts +4 -4
  431. package/dist/types/src/auth/certificates/index.d.ts.map +1 -1
  432. package/dist/types/src/auth/clients/AuthFetch.d.ts +9 -9
  433. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  434. package/dist/types/src/auth/clients/index.d.ts +1 -1
  435. package/dist/types/src/auth/clients/index.d.ts.map +1 -1
  436. package/dist/types/src/auth/index.d.ts +7 -7
  437. package/dist/types/src/auth/index.d.ts.map +1 -1
  438. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  439. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  440. package/dist/types/src/auth/transports/index.d.ts +1 -1
  441. package/dist/types/src/auth/transports/index.d.ts.map +1 -1
  442. package/dist/types/src/auth/types.d.ts +1 -1
  443. package/dist/types/src/auth/types.d.ts.map +1 -1
  444. package/dist/types/src/auth/utils/createNonce.d.ts +1 -1
  445. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  446. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  447. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  448. package/dist/types/src/auth/utils/index.d.ts +4 -4
  449. package/dist/types/src/auth/utils/index.d.ts.map +1 -1
  450. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  451. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  452. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  453. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  454. package/dist/types/src/compat/BSM.d.ts +4 -4
  455. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  456. package/dist/types/src/compat/ECIES.d.ts +2 -2
  457. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  458. package/dist/types/src/compat/HD.d.ts +2 -2
  459. package/dist/types/src/compat/HD.d.ts.map +1 -1
  460. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  461. package/dist/types/src/compat/Utxo.d.ts +3 -3
  462. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  463. package/dist/types/src/compat/index.d.ts +5 -5
  464. package/dist/types/src/compat/index.d.ts.map +1 -1
  465. package/dist/types/src/messages/EncryptedMessage.d.ts +2 -2
  466. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  467. package/dist/types/src/messages/SignedMessage.d.ts +2 -2
  468. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  469. package/dist/types/src/messages/index.d.ts +2 -2
  470. package/dist/types/src/messages/index.d.ts.map +1 -1
  471. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  472. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +4 -4
  473. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  474. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +2 -2
  475. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  476. package/dist/types/src/overlay-tools/index.d.ts +5 -5
  477. package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
  478. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  479. package/dist/types/src/primitives/BasePoint.d.ts +9 -9
  480. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  481. package/dist/types/src/primitives/BigNumber.d.ts +1 -1
  482. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  483. package/dist/types/src/primitives/Curve.d.ts +17 -10
  484. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  485. package/dist/types/src/primitives/DRBG.d.ts +1 -1
  486. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  487. package/dist/types/src/primitives/ECDSA.d.ts +4 -4
  488. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  489. package/dist/types/src/primitives/Hash.d.ts +11 -11
  490. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  491. package/dist/types/src/primitives/JacobianPoint.d.ts +3 -3
  492. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  493. package/dist/types/src/primitives/K256.d.ts +2 -2
  494. package/dist/types/src/primitives/K256.d.ts.map +1 -1
  495. package/dist/types/src/primitives/Mersenne.d.ts +1 -1
  496. package/dist/types/src/primitives/Mersenne.d.ts.map +1 -1
  497. package/dist/types/src/primitives/MontgomoryMethod.d.ts +2 -2
  498. package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -1
  499. package/dist/types/src/primitives/Point.d.ts +3 -3
  500. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  501. package/dist/types/src/primitives/Polynomial.d.ts +2 -2
  502. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  503. package/dist/types/src/primitives/PrivateKey.d.ts +7 -7
  504. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  505. package/dist/types/src/primitives/PublicKey.d.ts +4 -4
  506. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  507. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  508. package/dist/types/src/primitives/ReductionContext.d.ts +2 -2
  509. package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
  510. package/dist/types/src/primitives/Schnorr.d.ts +3 -3
  511. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  512. package/dist/types/src/primitives/Signature.d.ts +3 -3
  513. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  514. package/dist/types/src/primitives/SymmetricKey.d.ts +1 -1
  515. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  516. package/dist/types/src/primitives/TransactionSignature.d.ts +5 -5
  517. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  518. package/dist/types/src/primitives/index.d.ts +14 -14
  519. package/dist/types/src/primitives/index.d.ts.map +1 -1
  520. package/dist/types/src/primitives/utils.d.ts +4 -7
  521. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  522. package/dist/types/src/script/LockingScript.d.ts +1 -1
  523. package/dist/types/src/script/LockingScript.d.ts.map +1 -1
  524. package/dist/types/src/script/Script.d.ts +2 -2
  525. package/dist/types/src/script/Script.d.ts.map +1 -1
  526. package/dist/types/src/script/ScriptTemplate.d.ts +5 -5
  527. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  528. package/dist/types/src/script/Spend.d.ts +4 -4
  529. package/dist/types/src/script/Spend.d.ts.map +1 -1
  530. package/dist/types/src/script/UnlockingScript.d.ts +1 -1
  531. package/dist/types/src/script/UnlockingScript.d.ts.map +1 -1
  532. package/dist/types/src/script/index.d.ts +7 -7
  533. package/dist/types/src/script/index.d.ts.map +1 -1
  534. package/dist/types/src/script/templates/P2PKH.d.ts +7 -7
  535. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  536. package/dist/types/src/script/templates/PushDrop.d.ts +6 -7
  537. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  538. package/dist/types/src/script/templates/RPuzzle.d.ts +9 -9
  539. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  540. package/dist/types/src/script/templates/index.d.ts +3 -3
  541. package/dist/types/src/script/templates/index.d.ts.map +1 -1
  542. package/dist/types/src/totp/index.d.ts +1 -1
  543. package/dist/types/src/totp/index.d.ts.map +1 -1
  544. package/dist/types/src/totp/totp.d.ts.map +1 -1
  545. package/dist/types/src/transaction/Beef.d.ts +10 -10
  546. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  547. package/dist/types/src/transaction/BeefParty.d.ts +1 -1
  548. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  549. package/dist/types/src/transaction/BeefTx.d.ts +4 -4
  550. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  551. package/dist/types/src/transaction/Broadcaster.d.ts +1 -1
  552. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  553. package/dist/types/src/transaction/FeeModel.d.ts +1 -1
  554. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  555. package/dist/types/src/transaction/MerklePath.d.ts +2 -2
  556. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  557. package/dist/types/src/transaction/Transaction.d.ts +7 -7
  558. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  559. package/dist/types/src/transaction/TransactionInput.d.ts +2 -2
  560. package/dist/types/src/transaction/TransactionInput.d.ts.map +1 -1
  561. package/dist/types/src/transaction/TransactionOutput.d.ts +1 -1
  562. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  563. package/dist/types/src/transaction/broadcasters/ARC.d.ts +4 -4
  564. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  565. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts +2 -2
  566. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  567. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts +4 -4
  568. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  569. package/dist/types/src/transaction/broadcasters/index.d.ts +4 -4
  570. package/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -1
  571. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts +1 -1
  572. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  573. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +3 -3
  574. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  575. package/dist/types/src/transaction/chaintrackers/index.d.ts +3 -3
  576. package/dist/types/src/transaction/chaintrackers/index.d.ts.map +1 -1
  577. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +2 -2
  578. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  579. package/dist/types/src/transaction/fee-models/index.d.ts +1 -1
  580. package/dist/types/src/transaction/fee-models/index.d.ts.map +1 -1
  581. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  582. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  583. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +1 -1
  584. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  585. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  586. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +1 -1
  587. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  588. package/dist/types/src/transaction/http/index.d.ts +6 -6
  589. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  590. package/dist/types/src/transaction/index.d.ts +10 -10
  591. package/dist/types/src/transaction/index.d.ts.map +1 -1
  592. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +3 -3
  593. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  594. package/dist/types/src/wallet/KeyDeriver.d.ts +2 -2
  595. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  596. package/dist/types/src/wallet/ProtoWallet.d.ts +12 -12
  597. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  598. package/dist/types/src/wallet/Wallet.interfaces.d.ts +7 -8
  599. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  600. package/dist/types/src/wallet/WalletClient.d.ts +6 -6
  601. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  602. package/dist/types/src/wallet/index.d.ts +8 -8
  603. package/dist/types/src/wallet/index.d.ts.map +1 -1
  604. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
  605. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  606. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts +1 -1
  607. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  608. package/dist/types/src/wallet/substrates/WalletWire.d.ts.map +1 -1
  609. package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts.map +1 -1
  610. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +2 -2
  611. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  612. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +10 -10
  613. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  614. package/dist/types/src/wallet/substrates/XDM.d.ts +2 -2
  615. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  616. package/dist/types/src/wallet/substrates/index.d.ts +7 -7
  617. package/dist/types/src/wallet/substrates/index.d.ts.map +1 -1
  618. package/dist/types/src/wallet/substrates/window.CWI.d.ts +25 -25
  619. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  620. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  621. package/dist/umd/bundle.js +1 -1
  622. package/docs/auth.md +43 -37
  623. package/docs/primitives.md +97 -73
  624. package/docs/script.md +4 -4
  625. package/docs/swagger/dist/swagger-initializer.js +7 -7
  626. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  627. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  628. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  629. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  630. package/docs/swagger/dist/swagger-ui.js +2 -2
  631. package/docs/transaction.md +27 -27
  632. package/docs/wallet-substrates.md +13 -13
  633. package/docs/wallet.md +80 -82
  634. package/mod.ts +15 -15
  635. package/package.json +7 -3
  636. package/src/auth/Peer.ts +75 -70
  637. package/src/auth/SessionManager.ts +11 -6
  638. package/src/auth/__tests/Peer.test.ts +141 -114
  639. package/src/auth/__tests/SessionManager.test.ts +67 -19
  640. package/src/auth/__tests/build.test.ts +11 -0
  641. package/src/auth/certificates/Certificate.ts +15 -12
  642. package/src/auth/certificates/MasterCertificate.ts +24 -33
  643. package/src/auth/certificates/VerifiableCertificate.ts +6 -4
  644. package/src/auth/certificates/__tests/Certificate.test.ts +140 -139
  645. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +88 -74
  646. package/src/auth/certificates/__tests/MasterCertificate.test.ts +7 -15
  647. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +1 -6
  648. package/src/auth/certificates/index.ts +4 -4
  649. package/src/auth/clients/AuthFetch.ts +232 -316
  650. package/src/auth/clients/index.ts +1 -1
  651. package/src/auth/index.ts +7 -7
  652. package/src/auth/transports/SimplifiedFetchTransport.ts +185 -154
  653. package/src/auth/transports/index.ts +1 -1
  654. package/src/auth/types.ts +1 -1
  655. package/src/auth/utils/__tests/cryptononce.test.ts +7 -5
  656. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +12 -12
  657. package/src/auth/utils/__tests/validateCertificates.test.ts +113 -103
  658. package/src/auth/utils/createNonce.ts +1 -1
  659. package/src/auth/utils/getVerifiableCertificates.ts +4 -4
  660. package/src/auth/utils/index.ts +4 -4
  661. package/src/auth/utils/validateCertificates.ts +9 -5
  662. package/src/auth/utils/verifyNonce.ts +1 -1
  663. package/src/compat/BSM.ts +7 -7
  664. package/src/compat/ECIES.ts +38 -30
  665. package/src/compat/HD.ts +12 -13
  666. package/src/compat/Mnemonic.ts +16 -14
  667. package/src/compat/Utxo.ts +4 -4
  668. package/src/compat/__tests/BSM.test.ts +5 -6
  669. package/src/compat/__tests/HD.test.ts +6 -4
  670. package/src/compat/__tests/Mnemonic.test.ts +144 -145
  671. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  672. package/src/compat/index.ts +5 -5
  673. package/src/messages/EncryptedMessage.ts +5 -5
  674. package/src/messages/SignedMessage.ts +7 -6
  675. package/src/messages/__tests/EncryptedMessage.test.ts +39 -39
  676. package/src/messages/__tests/SignedMessage.test.ts +49 -49
  677. package/src/messages/index.ts +2 -2
  678. package/src/overlay-tools/LookupResolver.ts +52 -32
  679. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +9 -5
  680. package/src/overlay-tools/SHIPBroadcaster.ts +8 -7
  681. package/src/overlay-tools/index.ts +5 -5
  682. package/src/primitives/AESGCM.ts +2 -0
  683. package/src/primitives/BasePoint.ts +5 -5
  684. package/src/primitives/BigNumber.ts +8 -6
  685. package/src/primitives/Curve.ts +79 -27
  686. package/src/primitives/DRBG.ts +3 -3
  687. package/src/primitives/ECDSA.ts +62 -42
  688. package/src/primitives/Hash.ts +215 -163
  689. package/src/primitives/JacobianPoint.ts +19 -5
  690. package/src/primitives/K256.ts +2 -2
  691. package/src/primitives/Mersenne.ts +1 -1
  692. package/src/primitives/MontgomoryMethod.ts +2 -2
  693. package/src/primitives/Point.ts +98 -76
  694. package/src/primitives/Polynomial.ts +6 -6
  695. package/src/primitives/PrivateKey.ts +24 -24
  696. package/src/primitives/PublicKey.ts +8 -8
  697. package/src/primitives/Random.ts +7 -3
  698. package/src/primitives/ReductionContext.ts +3 -3
  699. package/src/primitives/Schnorr.ts +5 -5
  700. package/src/primitives/Signature.ts +14 -12
  701. package/src/primitives/SymmetricKey.ts +5 -5
  702. package/src/primitives/TransactionSignature.ts +26 -13
  703. package/src/primitives/__tests/AESGCM.test.ts +403 -403
  704. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  705. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  706. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +563 -563
  707. package/src/primitives/__tests/BigNumber.binary.test.ts +211 -211
  708. package/src/primitives/__tests/BigNumber.constructor.test.ts +8 -4
  709. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -15
  710. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  711. package/src/primitives/__tests/BigNumber.serializers.test.ts +169 -169
  712. package/src/primitives/__tests/BigNumber.utils.test.ts +328 -328
  713. package/src/primitives/__tests/Curve.unit.test.ts +152 -145
  714. package/src/primitives/__tests/DRBG.test.ts +13 -13
  715. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  716. package/src/primitives/__tests/ECDSA.test.ts +51 -51
  717. package/src/primitives/__tests/HMAC.test.ts +46 -46
  718. package/src/primitives/__tests/Hash.test.ts +83 -83
  719. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  720. package/src/primitives/__tests/PrivateKey.split.test.ts +6 -4
  721. package/src/primitives/__tests/PrivateKey.test.ts +53 -55
  722. package/src/primitives/__tests/PublicKey.test.ts +59 -57
  723. package/src/primitives/__tests/Random.test.ts +10 -10
  724. package/src/primitives/__tests/ReductionContext.test.ts +222 -222
  725. package/src/primitives/__tests/Schnorr.test.ts +150 -148
  726. package/src/primitives/__tests/SymmetricKey.test.ts +44 -44
  727. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  728. package/src/primitives/__tests/bug-31.test.ts +23 -29
  729. package/src/primitives/__tests/utils.test.ts +1 -1
  730. package/src/primitives/index.ts +14 -14
  731. package/src/primitives/utils.ts +25 -26
  732. package/src/script/LockingScript.ts +1 -1
  733. package/src/script/Script.ts +13 -11
  734. package/src/script/ScriptTemplate.ts +5 -5
  735. package/src/script/Spend.ts +27 -25
  736. package/src/script/UnlockingScript.ts +1 -1
  737. package/src/script/__tests/Script.test.ts +7 -3
  738. package/src/script/__tests/Spend.test.ts +23 -18
  739. package/src/script/__tests/SpendComplex.test.ts +27 -31
  740. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  741. package/src/script/__tests/script.valid.vectors.ts +1064 -1064
  742. package/src/script/index.ts +7 -7
  743. package/src/script/templates/P2PKH.ts +72 -61
  744. package/src/script/templates/PushDrop.ts +101 -95
  745. package/src/script/templates/RPuzzle.ts +65 -62
  746. package/src/script/templates/__tests/PushDrop.test.ts +2 -3
  747. package/src/script/templates/index.ts +3 -3
  748. package/src/totp/__tests/totp.test.ts +12 -11
  749. package/src/totp/index.ts +1 -1
  750. package/src/totp/totp.ts +5 -4
  751. package/src/transaction/Beef.ts +84 -59
  752. package/src/transaction/BeefParty.ts +9 -7
  753. package/src/transaction/BeefTx.ts +32 -26
  754. package/src/transaction/Broadcaster.ts +1 -1
  755. package/src/transaction/FeeModel.ts +1 -2
  756. package/src/transaction/MerklePath.ts +58 -37
  757. package/src/transaction/Transaction.ts +127 -103
  758. package/src/transaction/TransactionInput.ts +2 -2
  759. package/src/transaction/TransactionOutput.ts +1 -2
  760. package/src/transaction/__tests/Beef.test.ts +109 -68
  761. package/src/transaction/__tests/MerklePath.test.ts +132 -131
  762. package/src/transaction/__tests/Transaction.benchmarks.test.ts +10 -13
  763. package/src/transaction/__tests/Transaction.test.ts +20 -31
  764. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  765. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  766. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  767. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  768. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  769. package/src/transaction/broadcasters/ARC.ts +117 -112
  770. package/src/transaction/broadcasters/DefaultBroadcaster.ts +4 -4
  771. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +32 -32
  772. package/src/transaction/broadcasters/__tests/ARC.test.ts +63 -27
  773. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +9 -8
  774. package/src/transaction/broadcasters/index.ts +4 -4
  775. package/src/transaction/chaintrackers/DefaultChainTracker.ts +3 -3
  776. package/src/transaction/chaintrackers/WhatsOnChain.ts +39 -38
  777. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +99 -99
  778. package/src/transaction/chaintrackers/index.ts +3 -3
  779. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +30 -31
  780. package/src/transaction/fee-models/index.ts +1 -1
  781. package/src/transaction/http/DefaultHttpClient.ts +14 -13
  782. package/src/transaction/http/FetchHttpClient.ts +3 -3
  783. package/src/transaction/http/HttpClient.ts +20 -20
  784. package/src/transaction/http/NodejsHttpClient.ts +27 -27
  785. package/src/transaction/http/index.ts +7 -7
  786. package/src/transaction/index.ts +10 -10
  787. package/src/wallet/CachedKeyDeriver.ts +39 -16
  788. package/src/wallet/KeyDeriver.ts +4 -4
  789. package/src/wallet/ProtoWallet.ts +77 -44
  790. package/src/wallet/Wallet.interfaces.ts +10 -8
  791. package/src/wallet/WalletClient.ts +21 -24
  792. package/src/wallet/WalletError.ts +2 -2
  793. package/src/wallet/__tests/CachedKeyDeriver.test.ts +15 -12
  794. package/src/wallet/__tests/KeyDeriver.test.ts +115 -115
  795. package/src/wallet/__tests/ProtoWallet.test.ts +320 -313
  796. package/src/wallet/index.ts +8 -8
  797. package/src/wallet/substrates/HTTPWalletJSON.ts +54 -40
  798. package/src/wallet/substrates/HTTPWalletWire.ts +27 -27
  799. package/src/wallet/substrates/WalletWire.ts +1 -1
  800. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  801. package/src/wallet/substrates/WalletWireProcessor.ts +966 -967
  802. package/src/wallet/substrates/WalletWireTransceiver.ts +1012 -1007
  803. package/src/wallet/substrates/XDM.ts +18 -19
  804. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +6 -4
  805. package/src/wallet/substrates/__tests/XDM.test.ts +343 -341
  806. package/src/wallet/substrates/index.ts +7 -7
  807. package/src/wallet/substrates/window.CWI.ts +330 -330
  808. package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
  809. package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
  810. package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
  811. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
  812. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
  813. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  814. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  815. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  816. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  817. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  818. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
  819. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  820. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  821. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  822. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  823. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  824. package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
  825. package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
  826. package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
  827. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
  828. package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
  829. package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
  830. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
  831. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
  832. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
  833. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  834. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
  835. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  836. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
  837. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
  838. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  839. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  840. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  841. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  842. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  843. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  844. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
  845. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
  846. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  847. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  848. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  849. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  850. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  851. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  852. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  853. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  854. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  855. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  856. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  857. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  858. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  859. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  860. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  861. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  862. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  863. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  864. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
  865. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  866. package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
  867. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
  868. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
  869. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  870. package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
  871. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
  872. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
  873. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
  874. package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
  875. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
  876. package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
  877. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
  878. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  879. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  880. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  881. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  882. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
  883. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  884. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
  885. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
  886. package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
  887. package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
  888. package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
  889. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
  890. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
  891. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  892. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
  893. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
  894. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
  895. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  896. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  897. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  898. package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
  899. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
  900. package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
  901. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
  902. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
  903. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
  904. package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
  905. package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
  906. package/dist/cjs/src/script/__tests/Script.test.js +0 -347
  907. package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
  908. package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
  909. package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
  910. package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
  911. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
  912. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
  913. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
  914. package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
  915. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
  916. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
  917. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
  918. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
  919. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  920. package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
  921. package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
  922. package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
  923. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
  924. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
  925. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
  926. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  927. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  928. package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
  929. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
  930. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
  931. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  932. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  933. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  934. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
  935. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  936. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  937. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  938. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
  939. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  940. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  941. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  942. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  943. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  944. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  945. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  946. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  947. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  948. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
  949. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  950. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
  951. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  952. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  953. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  954. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
  955. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  956. package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
  957. package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
  958. package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
  959. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
  960. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
  961. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  962. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  963. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  964. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  965. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  966. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
  967. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  968. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  969. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  970. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  971. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  972. package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
  973. package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
  974. package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
  975. package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
  976. package/dist/esm/src/compat/__tests/HD.test.js +0 -336
  977. package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
  978. package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
  979. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
  980. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
  981. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  982. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
  983. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  984. package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
  985. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
  986. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  987. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  988. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  989. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  990. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  991. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  992. package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
  993. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
  994. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  995. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  996. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  997. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  998. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  999. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  1000. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  1001. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  1002. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  1003. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  1004. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  1005. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  1006. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  1007. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  1008. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  1009. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  1010. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  1011. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  1012. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
  1013. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  1014. package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
  1015. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
  1016. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
  1017. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  1018. package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
  1019. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
  1020. package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
  1021. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
  1022. package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
  1023. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
  1024. package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
  1025. package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
  1026. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  1027. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  1028. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  1029. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  1030. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
  1031. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  1032. package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
  1033. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
  1034. package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
  1035. package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
  1036. package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
  1037. package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
  1038. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
  1039. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  1040. package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
  1041. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
  1042. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
  1043. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  1044. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  1045. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  1046. package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
  1047. package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
  1048. package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
  1049. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
  1050. package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
  1051. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
  1052. package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
  1053. package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
  1054. package/dist/esm/src/script/__tests/Script.test.js +0 -347
  1055. package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
  1056. package/dist/esm/src/script/__tests/Spend.test.js +0 -282
  1057. package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
  1058. package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
  1059. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
  1060. package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
  1061. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
  1062. package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
  1063. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
  1064. package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
  1065. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
  1066. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
  1067. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  1068. package/dist/esm/src/totp/__tests/totp.test.js +0 -67
  1069. package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
  1070. package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
  1071. package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
  1072. package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
  1073. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
  1074. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  1075. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  1076. package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
  1077. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
  1078. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
  1079. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  1080. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  1081. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  1082. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
  1083. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  1084. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  1085. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  1086. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
  1087. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  1088. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  1089. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  1090. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  1091. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  1092. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  1093. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  1094. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  1095. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  1096. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
  1097. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  1098. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
  1099. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  1100. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  1101. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  1102. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
  1103. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  1104. package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
  1105. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
  1106. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
  1107. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
  1108. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
  1109. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
  1110. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
  1111. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
  1112. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
  1113. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
  1114. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
  1115. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
  1116. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
  1117. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
  1118. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
  1119. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
  1120. package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
  1121. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
  1122. package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
  1123. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
  1124. package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
  1125. package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
  1126. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
  1127. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
  1128. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
  1129. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
  1130. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
  1131. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
  1132. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
  1133. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
  1134. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
  1135. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
  1136. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
  1137. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
  1138. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
  1139. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
  1140. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
  1141. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
  1142. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
  1143. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
  1144. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
  1145. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
  1146. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
  1147. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
  1148. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
  1149. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
  1150. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
  1151. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
  1152. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
  1153. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
  1154. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
  1155. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
  1156. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
  1157. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
  1158. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
  1159. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
  1160. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
  1161. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
  1162. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
  1163. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
  1164. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
  1165. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
  1166. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
  1167. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
  1168. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
  1169. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
  1170. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
  1171. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
  1172. package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
  1173. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
  1174. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
  1175. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
  1176. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
  1177. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
  1178. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
  1179. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
  1180. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
  1181. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
  1182. package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
  1183. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
  1184. package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
  1185. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
  1186. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
  1187. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
  1188. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
  1189. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
  1190. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
  1191. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
  1192. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
  1193. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
  1194. package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
  1195. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
  1196. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
  1197. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
  1198. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
  1199. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
  1200. package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
  1201. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
  1202. package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
  1203. package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
  1204. package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
  1205. package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
  1206. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
  1207. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
  1208. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
  1209. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
  1210. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
  1211. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
  1212. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
  1213. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
  1214. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
  1215. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
  1216. package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
  1217. package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
  1218. package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
  1219. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
  1220. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
  1221. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
  1222. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
  1223. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
  1224. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
  1225. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
  1226. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
  1227. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
  1228. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
  1229. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
  1230. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
  1231. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
  1232. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
  1233. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
  1234. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
  1235. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
  1236. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
  1237. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
  1238. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
  1239. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
  1240. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
  1241. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
  1242. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
  1243. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
  1244. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
  1245. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
  1246. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
  1247. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
  1248. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
  1249. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
  1250. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
  1251. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
@@ -1,1073 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const BigNumber_1 = __importDefault(require("../../primitives/BigNumber"));
7
- const TransactionSignature_1 = __importDefault(require("../../primitives/TransactionSignature"));
8
- const utils_1 = require("../../primitives/utils");
9
- const Script_1 = __importDefault(require("../../script/Script"));
10
- const UnlockingScript_1 = __importDefault(require("../../script/UnlockingScript"));
11
- const LockingScript_1 = __importDefault(require("../../script/LockingScript"));
12
- const Transaction_1 = __importDefault(require("../../transaction/Transaction"));
13
- const Hash_1 = require("../../primitives/Hash");
14
- const PrivateKey_1 = __importDefault(require("../../primitives/PrivateKey"));
15
- const Curve_1 = __importDefault(require("../../primitives/Curve"));
16
- const P2PKH_1 = __importDefault(require("../../script/templates/P2PKH"));
17
- const Utxo_1 = __importDefault(require("../../compat/Utxo"));
18
- const MerklePath_1 = __importDefault(require("../../transaction/MerklePath"));
19
- const Beef_1 = require("../../transaction/Beef");
20
- const sighash_vectors_1 = __importDefault(require("../../primitives/__tests/sighash.vectors"));
21
- const tx_invalid_vectors_1 = __importDefault(require("./tx.invalid.vectors"));
22
- const tx_valid_vectors_1 = __importDefault(require("./tx.valid.vectors"));
23
- const bigtx_vectors_1 = __importDefault(require("./bigtx.vectors"));
24
- const BRC62Hex = '0100beef01fe636d0c0007021400fe507c0c7aa754cef1f7889d5fd395cf1f785dd7de98eed895dbedfe4e5bc70d1502ac4e164f5bc16746bb0868404292ac8318bbac3800e4aad13a014da427adce3e010b00bc4ff395efd11719b277694cface5aa50d085a0bb81f613f70313acd28cf4557010400574b2d9142b8d28b61d88e3b2c3f44d858411356b49a28a4643b6d1a6a092a5201030051a05fc84d531b5d250c23f4f886f6812f9fe3f402d61607f977b4ecd2701c19010000fd781529d58fc2523cf396a7f25440b409857e7e221766c57214b1d38c7b481f01010062f542f45ea3660f86c013ced80534cb5fd4c19d66c56e7e8c5d4bf2d40acc5e010100b121e91836fd7cd5102b654e9f72f3cf6fdbfd0b161c53a9c54b12c841126331020100000001cd4e4cac3c7b56920d1e7655e7e260d31f29d9a388d04910f1bbd72304a79029010000006b483045022100e75279a205a547c445719420aa3138bf14743e3f42618e5f86a19bde14bb95f7022064777d34776b05d816daf1699493fcdf2ef5a5ab1ad710d9c97bfb5b8f7cef3641210263e2dee22b1ddc5e11f6fab8bcd2378bdd19580d640501ea956ec0e786f93e76ffffffff013e660000000000001976a9146bfd5c7fbe21529d45803dbcf0c87dd3c71efbc288ac0000000001000100000001ac4e164f5bc16746bb0868404292ac8318bbac3800e4aad13a014da427adce3e000000006a47304402203a61a2e931612b4bda08d541cfb980885173b8dcf64a3471238ae7abcd368d6402204cbf24f04b9aa2256d8901f0ed97866603d2be8324c2bfb7a37bf8fc90edd5b441210263e2dee22b1ddc5e11f6fab8bcd2378bdd19580d640501ea956ec0e786f93e76ffffffff013c660000000000001976a9146bfd5c7fbe21529d45803dbcf0c87dd3c71efbc288ac0000000000';
25
- const MerkleRootFromBEEF = 'bb6f640cc4ee56bf38eb5a1969ac0c16caa2d3d202b22bf3735d10eec0ca6e00';
26
- describe('Transaction', () => {
27
- const txIn = {
28
- sourceTXID: '0000000000000000000000000000000000000000000000000000000000000000',
29
- sourceOutputIndex: 0,
30
- unlockingScript: UnlockingScript_1.default.fromHex('ae'),
31
- sequence: 0
32
- };
33
- const txOut = {
34
- satoshis: BigNumber_1.default.fromHex('05000000000000', 'big').toNumber(),
35
- lockingScript: LockingScript_1.default.fromHex('ae')
36
- };
37
- const tx = new Transaction_1.default(0, [txIn], [txOut], 0);
38
- const txhex = '000000000100000000000000000000000000000000000000000000000000000000000000000000000001ae0000000001050000000000000001ae00000000';
39
- const txbuf = (0, utils_1.toArray)(txhex, 'hex');
40
- const tx2idhex = '8c9aa966d35bfeaf031409e0001b90ccdafd8d859799eb945a3c515b8260bcf2';
41
- const tx2hex = '01000000029e8d016a7b0dc49a325922d05da1f916d1e4d4f0cb840c9727f3d22ce8d1363f000000008c493046022100e9318720bee5425378b4763b0427158b1051eec8b08442ce3fbfbf7b30202a44022100d4172239ebd701dae2fbaaccd9f038e7ca166707333427e3fb2a2865b19a7f27014104510c67f46d2cbb29476d1f0b794be4cb549ea59ab9cc1e731969a7bf5be95f7ad5e7f904e5ccf50a9dc1714df00fbeb794aa27aaff33260c1032d931a75c56f2ffffffffa3195e7a1ab665473ff717814f6881485dc8759bebe97e31c301ffe7933a656f020000008b48304502201c282f35f3e02a1f32d2089265ad4b561f07ea3c288169dedcf2f785e6065efa022100e8db18aadacb382eed13ee04708f00ba0a9c40e3b21cf91da8859d0f7d99e0c50141042b409e1ebbb43875be5edde9c452c82c01e3903d38fa4fd89f3887a52cb8aea9dc8aec7e2c9d5b3609c03eb16259a2537135a1bf0f9c5fbbcbdbaf83ba402442ffffffff02206b1000000000001976a91420bb5c3bfaef0231dc05190e7f1c8e22e098991e88acf0ca0100000000001976a9149e3e2d23973a04ec1b02be97c30ab9f2f27c3b2c88ac00000000';
42
- const tx2buf = (0, utils_1.toArray)(tx2hex, 'hex');
43
- it('should make a new transaction', () => {
44
- let tx = new Transaction_1.default();
45
- expect(tx).toBeDefined();
46
- tx = new Transaction_1.default();
47
- expect(tx).toBeDefined();
48
- expect(Transaction_1.default.fromBinary(txbuf).toHex()).toEqual(txhex);
49
- // should set known defaults
50
- expect(tx.version).toEqual(1);
51
- expect(tx.inputs.length).toEqual(0);
52
- expect(tx.outputs.length).toEqual(0);
53
- expect(tx.lockTime).toEqual(0);
54
- });
55
- describe('#constructor', () => {
56
- it('should set these known defaults', () => {
57
- const tx = new Transaction_1.default();
58
- expect(tx.version).toEqual(1);
59
- expect(tx.inputs.length).toEqual(0);
60
- expect(tx.outputs.length).toEqual(0);
61
- expect(tx.lockTime).toEqual(0);
62
- });
63
- });
64
- describe('#fromHex', () => {
65
- it('should recover from this known tx', () => {
66
- expect(Transaction_1.default.fromHex(txhex).toHex()).toEqual(txhex);
67
- });
68
- it('should recover from this known tx from the blockchain', () => {
69
- expect(Transaction_1.default.fromHex(tx2hex).toHex()).toEqual(tx2hex);
70
- });
71
- });
72
- describe('#fromBinary', () => {
73
- it('should recover from this known tx', () => {
74
- expect((0, utils_1.toHex)(Transaction_1.default.fromBinary(txbuf).toBinary())).toEqual(txhex);
75
- });
76
- it('should recover from this known tx from the blockchain', () => {
77
- expect((0, utils_1.toHex)(Transaction_1.default.fromBinary(tx2buf).toBinary())).toEqual(tx2hex);
78
- });
79
- });
80
- describe('#parseScriptOffsets', () => {
81
- it('should match sliced scripts to parsed scripts', async () => {
82
- var _a, _b;
83
- const tx = Transaction_1.default.fromBinary(tx2buf);
84
- expect(tx.id('hex')).toBe(tx2idhex);
85
- const r = Transaction_1.default.parseScriptOffsets(tx2buf);
86
- expect(r.inputs.length).toBe(2);
87
- expect(r.outputs.length).toBe(2);
88
- for (let vin = 0; vin < 2; vin++) {
89
- const i = r.inputs[vin];
90
- const script = tx2buf.slice(i.offset, i.length + i.offset);
91
- expect(script).toEqual((_a = tx.inputs[vin].unlockingScript) === null || _a === void 0 ? void 0 : _a.toBinary());
92
- }
93
- for (let vout = 0; vout < 2; vout++) {
94
- const o = r.outputs[vout];
95
- const script = tx2buf.slice(o.offset, o.length + o.offset);
96
- expect(script).toEqual((_b = tx.outputs[vout].lockingScript) === null || _b === void 0 ? void 0 : _b.toBinary());
97
- }
98
- });
99
- });
100
- describe('#toHex', () => {
101
- it('should produce this known tx', () => {
102
- expect(Transaction_1.default.fromHex(txhex).toHex()).toEqual(txhex);
103
- });
104
- });
105
- describe('#toBinary', () => {
106
- it('should produce this known tx', () => {
107
- expect((0, utils_1.toHex)(Transaction_1.default.fromBinary(txbuf).toBinary())).toEqual(txhex);
108
- });
109
- });
110
- describe('#hash', () => {
111
- it('should correctly calculate the hash of this known transaction', () => {
112
- const tx = Transaction_1.default.fromBinary(tx2buf);
113
- const hash = tx.hash();
114
- const reversedHash = Array.isArray(hash)
115
- ? hash.reverse()
116
- : (0, utils_1.toArray)(hash, 'hex').reverse();
117
- expect((0, utils_1.toHex)(reversedHash)).toEqual(tx2idhex);
118
- });
119
- });
120
- describe('#id', () => {
121
- it('should correctly calculate the txid of this known transaction', () => {
122
- const tx = Transaction_1.default.fromBinary(tx2buf);
123
- expect(tx.id('hex')).toEqual(tx2idhex);
124
- });
125
- });
126
- describe('#addInput', () => {
127
- it('should add an input', () => {
128
- const txIn = {
129
- sourceTXID: '0000000000000000000000000000000000000000000000000000000000000000',
130
- sourceOutputIndex: 0,
131
- unlockingScript: new UnlockingScript_1.default(),
132
- sequence: 0xffffffff
133
- };
134
- const tx = new Transaction_1.default();
135
- expect(tx.inputs.length).toEqual(0);
136
- tx.addInput(txIn);
137
- expect(tx.inputs.length).toEqual(1);
138
- });
139
- });
140
- describe('#addOutput', () => {
141
- it('should add an output', () => {
142
- const txOut = {
143
- lockingScript: new LockingScript_1.default(),
144
- satoshis: 1
145
- };
146
- const tx = new Transaction_1.default();
147
- expect(tx.outputs.length).toEqual(0);
148
- tx.addOutput(txOut);
149
- expect(tx.outputs.length).toEqual(1);
150
- });
151
- });
152
- describe('Signing', () => {
153
- it('Signs unlocking script templates, hydrating the scripts', async () => {
154
- const privateKey = new PrivateKey_1.default(1);
155
- const publicKey = new Curve_1.default().g.mul(privateKey);
156
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
157
- const p2pkh = new P2PKH_1.default();
158
- const sourceTx = new Transaction_1.default(1, [], [
159
- {
160
- lockingScript: p2pkh.lock(publicKeyHash),
161
- satoshis: 4000
162
- }
163
- ], 0);
164
- const spendTx = new Transaction_1.default(1, [
165
- {
166
- sourceTransaction: sourceTx,
167
- sourceOutputIndex: 0,
168
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
169
- sequence: 0xffffffff
170
- }
171
- ], [
172
- {
173
- satoshis: 1000,
174
- lockingScript: p2pkh.lock(publicKeyHash)
175
- },
176
- {
177
- lockingScript: p2pkh.lock(publicKeyHash),
178
- change: true
179
- }
180
- ], 0);
181
- expect(spendTx.inputs[0].unlockingScript).not.toBeDefined();
182
- await spendTx.fee();
183
- await spendTx.sign();
184
- expect(spendTx.inputs[0].unlockingScript).toBeDefined();
185
- // P2PKH unlocking scripts have two chunks (the signature and public key)
186
- expect(spendTx.inputs[0].unlockingScript.chunks.length).toBe(2);
187
- });
188
- it('Signs a large number of unlocking script templates in a timely manner', async () => {
189
- const privateKey = new PrivateKey_1.default(134);
190
- const publicKey = new Curve_1.default().g.mul(privateKey);
191
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
192
- const p2pkh = new P2PKH_1.default();
193
- const spendCount = 30;
194
- const output = {
195
- lockingScript: p2pkh.lock(publicKeyHash),
196
- satoshis: 4000
197
- };
198
- const manyOutputs = [output];
199
- for (let i = 1; i < spendCount; i++) {
200
- manyOutputs[i] = {
201
- lockingScript: p2pkh.lock(publicKeyHash),
202
- satoshis: 4000
203
- };
204
- }
205
- const sourceTx = new Transaction_1.default(1, [], manyOutputs, 0);
206
- const input = {
207
- sourceTransaction: sourceTx,
208
- sourceOutputIndex: 0,
209
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
210
- sequence: 0xffffffff
211
- };
212
- const manyInputs = [input];
213
- for (let i = 1; i < spendCount; i++) {
214
- manyInputs[i] = {
215
- sourceTransaction: sourceTx,
216
- sourceOutputIndex: i,
217
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
218
- sequence: 0xffffffff
219
- };
220
- }
221
- const spendTx = new Transaction_1.default(1, manyInputs, [
222
- {
223
- satoshis: 1000,
224
- lockingScript: p2pkh.lock(publicKeyHash)
225
- },
226
- {
227
- lockingScript: p2pkh.lock(publicKeyHash),
228
- change: true
229
- }
230
- ], 0);
231
- expect(spendTx.inputs[0].unlockingScript).not.toBeDefined();
232
- await spendTx.fee();
233
- await spendTx.sign();
234
- expect(spendTx.inputs[0].unlockingScript).toBeDefined();
235
- // P2PKH unlocking scripts have two chunks (the signature and public key)
236
- expect(spendTx.inputs[0].unlockingScript.chunks.length).toBe(2);
237
- });
238
- it('Throws an Error if signing before the fee is computed', async () => {
239
- const privateKey = new PrivateKey_1.default(1);
240
- const publicKey = new Curve_1.default().g.mul(privateKey);
241
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true), 'hex');
242
- const p2pkh = new P2PKH_1.default();
243
- const sourceTx = new Transaction_1.default(1, [], [
244
- {
245
- lockingScript: p2pkh.lock(publicKeyHash),
246
- satoshis: 4000
247
- }
248
- ], 0);
249
- const spendTx = new Transaction_1.default(1, [
250
- {
251
- sourceTransaction: sourceTx,
252
- sourceOutputIndex: 0,
253
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
254
- sequence: 0xffffffff
255
- }
256
- ], [
257
- {
258
- satoshis: 1000,
259
- lockingScript: p2pkh.lock(publicKeyHash)
260
- },
261
- {
262
- lockingScript: p2pkh.lock(publicKeyHash),
263
- change: true
264
- }
265
- ], 0);
266
- await expect(spendTx.sign()).rejects.toThrow();
267
- });
268
- });
269
- describe('Fees', () => {
270
- it('Computes fees with the default fee model', async () => {
271
- const privateKey = new PrivateKey_1.default(1);
272
- const publicKey = new Curve_1.default().g.mul(privateKey);
273
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
274
- const p2pkh = new P2PKH_1.default();
275
- const sourceTx = new Transaction_1.default(1, [], [
276
- {
277
- lockingScript: p2pkh.lock(publicKeyHash),
278
- satoshis: 4000
279
- }
280
- ], 0);
281
- const spendTx = new Transaction_1.default(1, [
282
- {
283
- sourceTransaction: sourceTx,
284
- sourceOutputIndex: 0,
285
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
286
- sequence: 0xffffffff
287
- }
288
- ], [
289
- {
290
- satoshis: 1000,
291
- lockingScript: p2pkh.lock(publicKeyHash)
292
- },
293
- {
294
- lockingScript: p2pkh.lock(publicKeyHash),
295
- change: true
296
- }
297
- ], 0);
298
- expect(spendTx.outputs[1].satoshis).not.toBeDefined();
299
- await spendTx.fee();
300
- // Transaction size is 225 bytes for one-input two-output P2PKH.
301
- // Default fee rate is 10 sat/kb = 2.25 sats (round up to 3).
302
- // 4000 sats in - 1000 sats out - 3 sats fee = expected 2997 sats change.
303
- expect(spendTx.outputs[1].satoshis).toEqual(2997);
304
- });
305
- it('Computes fees with a custom fee model', async () => {
306
- const privateKey = new PrivateKey_1.default(1);
307
- const publicKey = new Curve_1.default().g.mul(privateKey);
308
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
309
- const p2pkh = new P2PKH_1.default();
310
- const sourceTx = new Transaction_1.default(1, [], [
311
- {
312
- lockingScript: p2pkh.lock(publicKeyHash),
313
- satoshis: 4000
314
- }
315
- ], 0);
316
- const spendTx = new Transaction_1.default(1, [
317
- {
318
- sourceTransaction: sourceTx,
319
- sourceOutputIndex: 0,
320
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
321
- sequence: 0xffffffff
322
- }
323
- ], [
324
- {
325
- satoshis: 1000,
326
- lockingScript: p2pkh.lock(publicKeyHash)
327
- },
328
- {
329
- lockingScript: p2pkh.lock(publicKeyHash),
330
- change: true
331
- }
332
- ], 0);
333
- expect(spendTx.outputs[1].satoshis).not.toBeDefined();
334
- await spendTx.fee({
335
- // Our custom fee model will always charge 1033 sats for a tx.
336
- computeFee: async () => 1033
337
- });
338
- // 4000 sats in - 1000 sats out - 1033 sats fee = expected 1967 sats change
339
- expect(spendTx.outputs[1].satoshis).toEqual(1967);
340
- });
341
- it('Computes fee using FixedFee model', async () => {
342
- const privateKey = new PrivateKey_1.default(1);
343
- const publicKey = new Curve_1.default().g.mul(privateKey);
344
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
345
- const p2pkh = new P2PKH_1.default();
346
- const sourceTx = new Transaction_1.default(1, [], [
347
- {
348
- lockingScript: p2pkh.lock(publicKeyHash),
349
- satoshis: 4000
350
- }
351
- ], 0);
352
- const spendTx = new Transaction_1.default(1, [
353
- {
354
- sourceTransaction: sourceTx,
355
- sourceOutputIndex: 0,
356
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
357
- sequence: 0xffffffff
358
- }
359
- ], [
360
- {
361
- satoshis: 1000,
362
- lockingScript: p2pkh.lock(publicKeyHash)
363
- },
364
- {
365
- lockingScript: p2pkh.lock(publicKeyHash),
366
- change: true
367
- }
368
- ], 0);
369
- expect(spendTx.outputs[1].satoshis).not.toBeDefined();
370
- await spendTx.fee(1033);
371
- // 4000 sats in - 1000 sats out - 1033 sats fee = expected 1967 sats change
372
- expect(spendTx.outputs[1].satoshis).toEqual(1967);
373
- });
374
- it('Distributes change equally among multiple change outputs', async () => {
375
- const privateKey = new PrivateKey_1.default(1);
376
- const publicKey = new Curve_1.default().g.mul(privateKey);
377
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
378
- const p2pkh = new P2PKH_1.default();
379
- const sourceTx = new Transaction_1.default(1, [], [
380
- {
381
- lockingScript: p2pkh.lock(publicKeyHash),
382
- satoshis: 4000
383
- }
384
- ], 0);
385
- const spendTx = new Transaction_1.default(1, [
386
- {
387
- sourceTransaction: sourceTx,
388
- sourceOutputIndex: 0,
389
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
390
- sequence: 0xffffffff
391
- }
392
- ], [
393
- {
394
- satoshis: 1000,
395
- lockingScript: p2pkh.lock(publicKeyHash)
396
- },
397
- {
398
- lockingScript: p2pkh.lock(publicKeyHash),
399
- change: true
400
- },
401
- {
402
- lockingScript: p2pkh.lock(publicKeyHash),
403
- change: true
404
- },
405
- {
406
- lockingScript: p2pkh.lock(publicKeyHash),
407
- change: true
408
- },
409
- {
410
- lockingScript: p2pkh.lock(publicKeyHash),
411
- change: true
412
- }
413
- ], 0);
414
- expect(spendTx.outputs[1].satoshis).not.toBeDefined();
415
- expect(spendTx.outputs[2].satoshis).not.toBeDefined();
416
- expect(spendTx.outputs[3].satoshis).not.toBeDefined();
417
- expect(spendTx.outputs[4].satoshis).not.toBeDefined();
418
- await spendTx.fee({
419
- // Our custom fee model will always charge 1033 sats for a tx.
420
- computeFee: async () => 1032
421
- });
422
- // 4000 sats in - 1000 sats out - 1033 sats fee = expected 1967 sats change
423
- // Divide by 2 (no remainder) = 983 sats per change output
424
- expect(spendTx.outputs[0].satoshis).toEqual(1000);
425
- expect(spendTx.outputs[1].satoshis).toEqual(492);
426
- expect(spendTx.outputs[2].satoshis).toEqual(492);
427
- expect(spendTx.outputs[3].satoshis).toEqual(492);
428
- expect(spendTx.outputs[4].satoshis).toEqual(492);
429
- });
430
- it('Distributes change randomly among multiple change outputs', async () => {
431
- const privateKey = new PrivateKey_1.default(1);
432
- const publicKey = new Curve_1.default().g.mul(privateKey);
433
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
434
- const p2pkh = new P2PKH_1.default();
435
- const sourceTx = new Transaction_1.default(1, [], [
436
- {
437
- lockingScript: p2pkh.lock(publicKeyHash),
438
- satoshis: 900
439
- }
440
- ], 0);
441
- const spendTx = new Transaction_1.default(1, [
442
- {
443
- sourceTransaction: sourceTx,
444
- sourceOutputIndex: 0,
445
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
446
- sequence: 0xffffffff
447
- }
448
- ], [
449
- {
450
- satoshis: 1,
451
- lockingScript: p2pkh.lock(publicKeyHash)
452
- },
453
- {
454
- lockingScript: p2pkh.lock(publicKeyHash),
455
- change: true
456
- },
457
- {
458
- lockingScript: p2pkh.lock(publicKeyHash),
459
- change: true
460
- },
461
- {
462
- lockingScript: p2pkh.lock(publicKeyHash),
463
- change: true
464
- },
465
- {
466
- lockingScript: p2pkh.lock(publicKeyHash),
467
- change: true
468
- },
469
- {
470
- lockingScript: p2pkh.lock(publicKeyHash),
471
- change: true
472
- },
473
- {
474
- lockingScript: p2pkh.lock(publicKeyHash),
475
- change: true
476
- }
477
- ], 0);
478
- expect(spendTx.outputs[1].satoshis).not.toBeDefined();
479
- expect(spendTx.outputs[2].satoshis).not.toBeDefined();
480
- expect(spendTx.outputs[3].satoshis).not.toBeDefined();
481
- expect(spendTx.outputs[4].satoshis).not.toBeDefined();
482
- expect(spendTx.outputs[5].satoshis).not.toBeDefined();
483
- expect(spendTx.outputs[6].satoshis).not.toBeDefined();
484
- await spendTx.fee({
485
- computeFee: async () => 3
486
- }, 'random');
487
- expect(spendTx.outputs[0].satoshis).toEqual(1);
488
- expect(spendTx.outputs.reduce((a, b) => a + b.satoshis, 0)).toEqual(897);
489
- });
490
- it('Distributes change randomly among multiple change outputs, with one set output', async () => {
491
- const privateKey = new PrivateKey_1.default(1);
492
- const publicKey = new Curve_1.default().g.mul(privateKey);
493
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
494
- const p2pkh = new P2PKH_1.default();
495
- const sourceTx = new Transaction_1.default(1, [], [
496
- {
497
- lockingScript: p2pkh.lock(publicKeyHash),
498
- satoshis: 9
499
- }
500
- ], 0);
501
- const spendTx = new Transaction_1.default(1, [
502
- {
503
- sourceTransaction: sourceTx,
504
- sourceOutputIndex: 0,
505
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
506
- sequence: 0xffffffff
507
- }
508
- ], [
509
- {
510
- satoshis: 1,
511
- lockingScript: p2pkh.lock(publicKeyHash)
512
- },
513
- {
514
- lockingScript: p2pkh.lock(publicKeyHash),
515
- change: true
516
- },
517
- {
518
- lockingScript: p2pkh.lock(publicKeyHash),
519
- change: true
520
- },
521
- {
522
- lockingScript: p2pkh.lock(publicKeyHash),
523
- change: true
524
- },
525
- {
526
- lockingScript: p2pkh.lock(publicKeyHash),
527
- change: true
528
- },
529
- {
530
- lockingScript: p2pkh.lock(publicKeyHash),
531
- change: true
532
- },
533
- {
534
- lockingScript: p2pkh.lock(publicKeyHash),
535
- change: true
536
- }
537
- ], 0);
538
- expect(spendTx.outputs[1].satoshis).not.toBeDefined();
539
- expect(spendTx.outputs[2].satoshis).not.toBeDefined();
540
- expect(spendTx.outputs[3].satoshis).not.toBeDefined();
541
- expect(spendTx.outputs[4].satoshis).not.toBeDefined();
542
- expect(spendTx.outputs[5].satoshis).not.toBeDefined();
543
- expect(spendTx.outputs[6].satoshis).not.toBeDefined();
544
- await spendTx.fee({
545
- computeFee: async () => 1
546
- }, 'random');
547
- expect(spendTx.outputs.reduce((a, b) => a + b.satoshis, 0)).toEqual(8);
548
- });
549
- it('Distributes change randomly among multiple change outputs, thinnly spread', async () => {
550
- const privateKey = new PrivateKey_1.default(1);
551
- const publicKey = new Curve_1.default().g.mul(privateKey);
552
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
553
- const p2pkh = new P2PKH_1.default();
554
- const sourceTx = new Transaction_1.default(1, [], [
555
- {
556
- lockingScript: p2pkh.lock(publicKeyHash),
557
- satoshis: 46
558
- }
559
- ], 0);
560
- const spendTx = new Transaction_1.default(1, [
561
- {
562
- sourceTransaction: sourceTx,
563
- sourceOutputIndex: 0,
564
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
565
- sequence: 0xffffffff
566
- }
567
- ], Array(21)
568
- .fill(null)
569
- .map(() => ({
570
- lockingScript: p2pkh.lock(publicKeyHash),
571
- change: true
572
- })), 0);
573
- await spendTx.fee({
574
- computeFee: async () => 1
575
- }, 'random');
576
- expect(spendTx.outputs.reduce((a, b) => a + b.satoshis, 0)).toEqual(45);
577
- });
578
- it('Calculates fee for utxo based transaction', async () => {
579
- const utxos = [
580
- // WoC format utxos
581
- {
582
- height: 1600000,
583
- tx_pos: 0,
584
- tx_hash: '672dd6a93fa5d7ba6794e0bdf8b479440b95a55ec10ad3d9e03585ecb5628d8d',
585
- value: 10000
586
- },
587
- {
588
- height: 1600000,
589
- tx_pos: 0,
590
- tx_hash: 'f33505acf37a7726cc37d391bc6f889b8684ac2a2d581c4be2a4b1c8b46609bc',
591
- value: 10000
592
- }
593
- ];
594
- const priv = PrivateKey_1.default.fromRandom();
595
- const tx = new Transaction_1.default();
596
- utxos.forEach(utxo => {
597
- const u = {
598
- txid: utxo.tx_hash,
599
- vout: utxo.tx_pos,
600
- script: new P2PKH_1.default().lock(priv.toPublicKey().toHash()).toHex(),
601
- satoshis: utxo.value
602
- };
603
- tx.addInput((0, Utxo_1.default)(u, new P2PKH_1.default().unlock(priv)));
604
- });
605
- tx.addOutput({
606
- lockingScript: new P2PKH_1.default().lock(priv.toAddress()),
607
- change: true
608
- });
609
- await tx.fee({ computeFee: async () => 10 });
610
- expect(tx.outputs[0].satoshis).toEqual(20000 - 10);
611
- expect(tx.getFee()).toEqual(10);
612
- });
613
- });
614
- describe('Broadcast', () => {
615
- it('Broadcasts with the default Broadcaster instance', async () => {
616
- const mockedFetch = jest.fn().mockResolvedValue({
617
- ok: true,
618
- status: 200,
619
- statusText: 'OK',
620
- headers: {
621
- get(key) {
622
- if (key === 'Content-Type') {
623
- return 'application/json';
624
- }
625
- }
626
- },
627
- json: async () => ({
628
- txid: 'mocked_txid',
629
- txStatus: 'success',
630
- extraInfo: 'received'
631
- })
632
- });
633
- global.window = { fetch: mockedFetch };
634
- const tx = new Transaction_1.default();
635
- const rv = await tx.broadcast();
636
- expect(mockedFetch).toHaveBeenCalled();
637
- const url = mockedFetch.mock.calls[0][0];
638
- expect(url).toEqual('https://arc.taal.com/v1/tx');
639
- expect(rv).toEqual({
640
- status: 'success',
641
- txid: 'mocked_txid',
642
- message: 'success received'
643
- });
644
- });
645
- it('Broadcasts with the provided Broadcaster instance', async () => {
646
- const mockBroadcast = jest.fn(async () => {
647
- return {
648
- status: 'success', // Explicitly matches the literal type "success"
649
- txid: 'mock_txid',
650
- message: 'Transaction successfully broadcasted.'
651
- };
652
- });
653
- const tx = new Transaction_1.default();
654
- const rv = await tx.broadcast({
655
- broadcast: mockBroadcast
656
- });
657
- // Ensure the mock function was called with the correct argument
658
- expect(mockBroadcast).toHaveBeenCalledWith(tx);
659
- // Verify the return value matches the mocked response
660
- expect(rv).toEqual({
661
- status: 'success',
662
- txid: 'mock_txid',
663
- message: 'Transaction successfully broadcasted.'
664
- });
665
- });
666
- describe('BEEF', () => {
667
- it('Serialization and deserialization', async () => {
668
- const tx = Transaction_1.default.fromBEEF((0, utils_1.toArray)(BRC62Hex, 'hex'));
669
- expect(tx.inputs[0].sourceTransaction.merklePath.blockHeight).toEqual(814435);
670
- const beef = (0, utils_1.toHex)(tx.toBEEF());
671
- expect(beef).toEqual(BRC62Hex);
672
- });
673
- it('Does not double-encode transactions', () => {
674
- // Source: https://github.com/bitcoin-sv/ts-sdk/issues/77
675
- const incorrect = '0100beef01fe76eb0c000e02c402deff5437203e0b5cb22646cbada24a60349bf45c8b280ffb755868f2955c3111c500f4076b7f48031fc467f87d5e99d9c3c0b59e4dca5e3049f58b735c59b413a8b6016300bad9c2d948e8a2ca647fdb50f2fd36641c4adf937b41134405a3e7f734b8beb201300053604a579558b5f7030e618d5c726a19229e0ff677f6edf109f41c5cfdafc93e0119005f8465c2a8d1558afbfa80c2395f3f8866a2fa5015e54fab778b0149da58376c010d00cd452b4e74f57d199cdb81b8a0e4a62dcdaf89504d6c63a5a65d5b866912b8c0010700d2ae7e2ce76da560509172066f1a1cf81faf81d73f9c0f6fd5af0904973dcfb10102006e5e077bcaa35c0240d61c1f3bba8d789223711ec035ef88b0911fc569d2b95a010000c961038959b9d404297a180c066816562dd2a34986c0960121a87ba91a51262f010100a50e381b4e8812479ea561e5bab7dcaa80078652b1b39ee5410966c515a3442b010100383ce8891ca7bf1ddefa5e0d8a1ba9ab01cb4e18046e9d7d0d438b5aaecc38b2010100c694be322b4e74acca8a5ef7703afedb708281321fd674f1221eebc743b0e01c0101000f3cc61f2b3d762cfecdd977ba768a5cbb0a4b402ad4f0d1bd3a98a582794c35010100094ad56eeea3b47edb2b298775f2efabe48172612cb3419962632251d8cdb78e010100de84bf9dd8873f37decbda1b5188e24ead978b147a63c809691702d19c47e8cb050200000001b67f1b6a6c3e70742a39b82ba45d51c983f598963ebf237101cc372da1144b83020000006b483045022100d14c3eb0c1438747c124f099bc664bf945cd27cbd96915027057e508bbc9e03302203c73f79d4e00f8018783e1008ce0fbb8e8c58bff6bd8042ab7e3966a66c8788c41210356762156ee9347c3e2ceca17d13713028d5446f453e9cbcb0ea170b4ca7fab52ffffffff037c660000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac75330100000000001976a914eb645f9ea7e4e232e54b9651474c100026698c3088acf2458005000000001976a914802737e30c85b6fe86e26fb28e03140058aca65e88ac0000000001000100000001deff5437203e0b5cb22646cbada24a60349bf45c8b280ffb755868f2955c3111000000006a473044022076da9f61380c208f43652587c219b4452a7b803a0407c2c7c0f3bc27612c4e88022021a9eb02da5529873a5986933f9c35965aa78537b9e2aef9382de33cfb1ab4bb41210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff023c330000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac3c330000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac00000000000200000001b67f1b6a6c3e70742a39b82ba45d51c983f598963ebf237101cc372da1144b83020000006b483045022100d14c3eb0c1438747c124f099bc664bf945cd27cbd96915027057e508bbc9e03302203c73f79d4e00f8018783e1008ce0fbb8e8c58bff6bd8042ab7e3966a66c8788c41210356762156ee9347c3e2ceca17d13713028d5446f453e9cbcb0ea170b4ca7fab52ffffffff037c660000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac75330100000000001976a914eb645f9ea7e4e232e54b9651474c100026698c3088acf2458005000000001976a914802737e30c85b6fe86e26fb28e03140058aca65e88ac0000000001000100000001deff5437203e0b5cb22646cbada24a60349bf45c8b280ffb755868f2955c3111000000006a473044022076da9f61380c208f43652587c219b4452a7b803a0407c2c7c0f3bc27612c4e88022021a9eb02da5529873a5986933f9c35965aa78537b9e2aef9382de33cfb1ab4bb41210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff023c330000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac3c330000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac000000000001000000022e7f69f3e1e17e22cfb8818577b3c83a4fbbbc1bab55c70ffcdd994ae30ea48b000000006b483045022100d9a2d1efea4896b36b2eb5af42cf52009982c7c31b446213fe37f26835d9d72202203e4dee0ceb068a4936e79b0bf69f72203906a00a4256cb1a7b30a40764616e8441210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff2e7f69f3e1e17e22cfb8818577b3c83a4fbbbc1bab55c70ffcdd994ae30ea48b010000006b483045022100b57a09145c57b7b5efb4b546f1b0bfb7adbc5e64d35d9d6989345d4c60c483940220280998a210a49a6efaacda6fb73670001bb7269d069be80eb14ea2227a73e82241210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff0174660000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac0000000000';
676
- const correct = '0100beef01fe76eb0c000e02c402deff5437203e0b5cb22646cbada24a60349bf45c8b280ffb755868f2955c3111c500f4076b7f48031fc467f87d5e99d9c3c0b59e4dca5e3049f58b735c59b413a8b6016300bad9c2d948e8a2ca647fdb50f2fd36641c4adf937b41134405a3e7f734b8beb201300053604a579558b5f7030e618d5c726a19229e0ff677f6edf109f41c5cfdafc93e0119005f8465c2a8d1558afbfa80c2395f3f8866a2fa5015e54fab778b0149da58376c010d00cd452b4e74f57d199cdb81b8a0e4a62dcdaf89504d6c63a5a65d5b866912b8c0010700d2ae7e2ce76da560509172066f1a1cf81faf81d73f9c0f6fd5af0904973dcfb10102006e5e077bcaa35c0240d61c1f3bba8d789223711ec035ef88b0911fc569d2b95a010000c961038959b9d404297a180c066816562dd2a34986c0960121a87ba91a51262f010100a50e381b4e8812479ea561e5bab7dcaa80078652b1b39ee5410966c515a3442b010100383ce8891ca7bf1ddefa5e0d8a1ba9ab01cb4e18046e9d7d0d438b5aaecc38b2010100c694be322b4e74acca8a5ef7703afedb708281321fd674f1221eebc743b0e01c0101000f3cc61f2b3d762cfecdd977ba768a5cbb0a4b402ad4f0d1bd3a98a582794c35010100094ad56eeea3b47edb2b298775f2efabe48172612cb3419962632251d8cdb78e010100de84bf9dd8873f37decbda1b5188e24ead978b147a63c809691702d19c47e8cb030200000001b67f1b6a6c3e70742a39b82ba45d51c983f598963ebf237101cc372da1144b83020000006b483045022100d14c3eb0c1438747c124f099bc664bf945cd27cbd96915027057e508bbc9e03302203c73f79d4e00f8018783e1008ce0fbb8e8c58bff6bd8042ab7e3966a66c8788c41210356762156ee9347c3e2ceca17d13713028d5446f453e9cbcb0ea170b4ca7fab52ffffffff037c660000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac75330100000000001976a914eb645f9ea7e4e232e54b9651474c100026698c3088acf2458005000000001976a914802737e30c85b6fe86e26fb28e03140058aca65e88ac0000000001000100000001deff5437203e0b5cb22646cbada24a60349bf45c8b280ffb755868f2955c3111000000006a473044022076da9f61380c208f43652587c219b4452a7b803a0407c2c7c0f3bc27612c4e88022021a9eb02da5529873a5986933f9c35965aa78537b9e2aef9382de33cfb1ab4bb41210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff023c330000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac3c330000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac000000000001000000022e7f69f3e1e17e22cfb8818577b3c83a4fbbbc1bab55c70ffcdd994ae30ea48b000000006b483045022100d9a2d1efea4896b36b2eb5af42cf52009982c7c31b446213fe37f26835d9d72202203e4dee0ceb068a4936e79b0bf69f72203906a00a4256cb1a7b30a40764616e8441210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff2e7f69f3e1e17e22cfb8818577b3c83a4fbbbc1bab55c70ffcdd994ae30ea48b010000006b483045022100b57a09145c57b7b5efb4b546f1b0bfb7adbc5e64d35d9d6989345d4c60c483940220280998a210a49a6efaacda6fb73670001bb7269d069be80eb14ea2227a73e82241210314793e1758db3caa7d2bce97b347ae3ced2f8a402b797ed986be63473d4644a0ffffffff0174660000000000001976a91417c85798ff61f7ec8af257f672d973b6ec6d88fd88ac0000000000';
677
- const tx1 = Transaction_1.default.fromHexBEEF(incorrect);
678
- expect(tx1.toHexBEEF()).toEqual(correct);
679
- });
680
- });
681
- describe('EF', () => {
682
- it('Serialization and deserialization', async () => {
683
- const tx = Transaction_1.default.fromBEEF((0, utils_1.toArray)(BRC62Hex, 'hex'));
684
- const ef = (0, utils_1.toHex)(tx.toEF());
685
- expect(ef).toEqual('010000000000000000ef01ac4e164f5bc16746bb0868404292ac8318bbac3800e4aad13a014da427adce3e000000006a47304402203a61a2e931612b4bda08d541cfb980885173b8dcf64a3471238ae7abcd368d6402204cbf24f04b9aa2256d8901f0ed97866603d2be8324c2bfb7a37bf8fc90edd5b441210263e2dee22b1ddc5e11f6fab8bcd2378bdd19580d640501ea956ec0e786f93e76ffffffff3e660000000000001976a9146bfd5c7fbe21529d45803dbcf0c87dd3c71efbc288ac013c660000000000001976a9146bfd5c7fbe21529d45803dbcf0c87dd3c71efbc288ac00000000');
686
- });
687
- });
688
- describe('Verification', () => {
689
- it('Verifies the transaction from the BEEF spec', async () => {
690
- const tx = Transaction_1.default.fromHexBEEF(BRC62Hex);
691
- const alwaysYesChainTracker = {
692
- currentHeight: async () => 1631619, // Mocked current height
693
- isValidRootForHeight: async () => true // Always returns true
694
- };
695
- const verified = await tx.verify(alwaysYesChainTracker);
696
- expect(verified).toBe(true);
697
- });
698
- });
699
- it('Verifies the transaction from the BEEF spec with a default chain tracker', async () => {
700
- const mockFetch = jest.fn().mockResolvedValue({
701
- ok: true,
702
- status: 200,
703
- statusText: 'OK',
704
- headers: {
705
- get(key) {
706
- if (key === 'Content-Type') {
707
- return 'application/json';
708
- }
709
- }
710
- },
711
- json: async () => ({
712
- merkleroot: MerkleRootFromBEEF
713
- })
714
- });
715
- global.window = { fetch: mockFetch };
716
- const tx = Transaction_1.default.fromHexBEEF(BRC62Hex);
717
- const verified = await tx.verify();
718
- expect(mockFetch).toHaveBeenCalled();
719
- expect(verified).toBe(true);
720
- });
721
- it('Verifies the transaction from the BEEF spec with a scripts only', async () => {
722
- const BEEF = 'AQC+7wH+kQYNAAcCVAIKXThHm90iVbs15AIfFQEYl5xesbHCXMkYy9SqoR1vNVUAAZFHZkdkWeD0mUHP/kCkyoVXXC15rMA8tMP/F6738iwBKwCAMYdbLFfXFlvz5q0XXwDZnaj73hZrOJxESFgs2kfYPQEUAMDiGktI+c5Wzl35XNEk7phXeSfEVmAhtulujP3id36UAQsAkekX7uvGTir5i9nHAbRcFhvi88/9WdjHwIOtAc76PdsBBACO8lHRXtRZK+tuXsbAPfOuoK/bG7uFPgcrbV7cl/ckYQEDAAjyH0EYt9rEd4TrWj6/dQPX9pBJnulm6TDNUSwMRJGBAQAA2IGpOsjMdZ6u69g4z8Q0X/Hb58clIDz8y4Mh7gjQHrsJAQAAAAGiNgu1l9P6UBCiEHYC6f6lMy+Nfh9pQGklO/1zFv04AwIAAABqRzBEAiBt6+lIB2/OSNzOrB8QADEHwTvl/O9Pd9TMCLmV8K2mhwIgC6fGUaZSC17haVpGJEcc0heGxmu6zm9tOHiRTyytPVtBIQLGxNeyMZsFPL4iTn7yT4S0XQPnoGKOJTtPv4+5ktq77v////8DAQAAAAAAAAB/IQOb9SFSZlaZ4kwQGL9bSOV13jFvhElip52zK5O34yi/cawSYmVuY2htYXJrVG9rZW5fOTk5RzBFAiEA0KG8TGPpoWTh3eNZu8WhUH/eL8D/TA8GC9Tfs5TIGDMCIBIZ4Vxoj5WY6KM/bH1a8RcbOWxumYZsnMU/RthviWFDbcgAAAAAAAAAGXapFHpPGSoGhmZHz0NwEsNKYTuHopeTiKw1SQAAAAAAABl2qRQhSuHh+ETVgSwVNYwwQxE1HRMh6YisAAAAAAEAAQAAAAEKXThHm90iVbs15AIfFQEYl5xesbHCXMkYy9SqoR1vNQIAAABqRzBEAiANrOhLuR2njxZKOeUHiILC/1UUpj93aWYG1uGtMwCzBQIgP849avSAGRtTOC7hcrxKzdzgsUfFne6T6uVNehQCrudBIQOP+/6gVhpmL5mHjrpusZBqw80k46oEjQ5orkbu23kcIP////8DAQAAAAAAAAB9IQOb9SFSZlaZ4kwQGL9bSOV13jFvhElip52zK5O34yi/cawQYmVuY2htYXJrVG9rZW5fMEcwRQIhAISNx6VL+LwnZymxuS7g2bOhVO+sb2lOs7wpDJFVkQCzAiArQr3G2TZcKnyg/47OSlG7XW+h6CTkl+FF4FlO3khrdG3IAAAAAAAAABl2qRTMh3rEbc9boUbdBSu8EvwE9FpcFYisa0gAAAAAAAAZdqkUDavGkHIDei8GA14PE9pui/adYxOIrAAAAAAAAQAAAAG+I3gM0VUiDYkYn6HnijD5X1nRA6TP4M9PnS6DIiv8+gIAAABqRzBEAiBqB4v3J0nlRjJAEXf5/Apfk4Qpq5oQZBZR/dWlKde45wIgOsk3ILukmghtJ3kbGGjBkRWGzU7J+0e7RghLBLe4H79BIQJvD8752by3nrkpNKpf5Im+dmD52AxHz06mneVGeVmHJ/////8DAQAAAAAAAAB8IQOb9SFSZlaZ4kwQGL9bSOV13jFvhElip52zK5O34yi/cawQYmVuY2htYXJrVG9rZW5fMUYwRAIgYCfx4TRmBa6ZaSlwG+qfeyjwas09Ehn5+kBlMIpbjsECIDohOgL9ssMXo043vJx2RA4RwUSzic+oyrNDsvH3+GlhbcgAAAAAAAAAGXapFCR85IaVea4Lp20fQxq6wDUa+4KbiKyhRwAAAAAAABl2qRRtQlA5LLnIQE6FKAwoXWqwx1IPxYisAAAAAAABAAAAATQCyNdYMv3gisTSig8QHFSAtZogx3gJAFeCLf+T6ftKAgAAAGpHMEQCIBxDKsYb3o9/mkjqU3wkApD58TakUxcjVxrWBwb+KZCNAiA/N5mst9Y5R9z0nciIQxj6mjSDX8a48tt71WMWle2XG0EhA1bL/xbl8RY7bvQKLiLKeiTLkEogzFcLGIAKB0CJTDIt/////wMBAAAAAAAAAH0hA5v1IVJmVpniTBAYv1tI5XXeMW+ESWKnnbMrk7fjKL9xrBBiZW5jaG1hcmtUb2tlbl8yRzBFAiEAprd99c9CM86bHYxii818vfyaa+pbqQke8PMDdmWWbhgCIG095qrWtjvzGj999PrjifFtV0mNepQ82IWkgRUSYl4dbcgAAAAAAAAAGXapFFChFep+CB3Qdpssh55ZAh7Z1B9AiKzXRgAAAAAAABl2qRQI3se+hqgRme2BD/l9/VGT8fzze4isAAAAAAABAAAAATYrcW2trOWKTN66CahA2iVdmw9EoD3NRfSxicuqf2VZAgAAAGpHMEQCIGLzQtoohOruohH2N8f85EY4r07C8ef4sA1zpzhrgp8MAiB7EPTjjK6bA5u6pcEZzrzvCaEjip9djuaHNkh62Ov3lEEhA4hF47lxu8l7pDcyBLhnBTDrJg2sN73GTRqmBwvXH7hu/////wMBAAAAAAAAAH0hA5v1IVJmVpniTBAYv1tI5XXeMW+ESWKnnbMrk7fjKL9xrBBiZW5jaG1hcmtUb2tlbl8zRzBFAiEAgHsST5TSjs4SaxQo/ayAT/i9H+/K6kGqSOgiXwJ7MEkCIB/I+awNxfAbjtCXJfu8PkK3Gm17v14tUj2U4N7+kOYPbcgAAAAAAAAAGXapFESF1LKTxPR0Lp/YSAhBv1cqaB5jiKwNRgAAAAAAABl2qRRMDm8dYnq71SvC2ZW85T4wiK1d44isAAAAAAABAAAAAZlmx40ThobDzbDV92I652mrG99hHvc/z2XDZCxaFSdOAgAAAGpHMEQCIGd6FcM+jWQOI37EiQQX1vLsnNBIRpWm76gHZfmZsY0+AiAQCdssIwaME5Rm5dyhM8N8G4OGJ6U8Ec2jIdVO1fQyIkEhAj6oxrKo6ObL1GrOuwvOEpqICEgVndhRAWh1qL5awn29/////wMBAAAAAAAAAH0hA5v1IVJmVpniTBAYv1tI5XXeMW+ESWKnnbMrk7fjKL9xrBBiZW5jaG1hcmtUb2tlbl80RzBFAiEAtnby9Is30Kad+SeRR44T9vl/XgLKB83wo8g5utYnFQICIBdeBto6oVxzJRuWOBs0Dqeb0EnDLJWw/Kg0fA0wjXFUbcgAAAAAAAAAGXapFPif6YFPsfQSAsYD0phVFDdWnITziKxDRQAAAAAAABl2qRSzMU4yDCTmCoXgpH461go08jpAwYisAAAAAAABAAAAAfFifKQeabVQuUt9F1rQiVz/iZrNQ7N6Vrsqs0WrDolhAgAAAGpHMEQCIC/4j1TMcnWc4FIy65w9KoM1h+LYwwSL0g4Eg/rwOdovAiBjSYcebQ/MGhbX2/iVs4XrkPodBN/UvUTQp9IQP93BsEEhAuvPbcwwKILhK6OpY6K+XqmqmwS0hv1cH7WY8IKnWkTk/////wMBAAAAAAAAAHwhA5v1IVJmVpniTBAYv1tI5XXeMW+ESWKnnbMrk7fjKL9xrBBiZW5jaG1hcmtUb2tlbl81RjBEAiAfXkdtFBi9ugyeDKCKkeorFXRAAVOS/dGEp0DInrwQCgIgdkyqe70lCHIalzS4nFugA1EUutCh7O2aUijN6tHxGVBtyAAAAAAAAAAZdqkUTHmgM3RpBYmbWxqYgeOA8zdsyfuIrHlEAAAAAAAAGXapFOLz0OAGrxiGzBPRvLjAoDp7p/VUiKwAAAAAAAEAAAABODRQbkr3Udw6DXPpvdBncJreUkiGCWf7PrcoVL5gEdwCAAAAa0gwRQIhAIq/LOGvvMPEiVJlsJZqxp4idfs1pzj5hztUFs07tozBAiAskG+XcdLWho+Bo01qOvTNfeBwlpKG23CXxeDzoAm2OEEhAvaoHEQtzZA8eAinWr3pIXJou3BBetU4wY+1l7TFU8NU/////wMBAAAAAAAAAHwhA5v1IVJmVpniTBAYv1tI5XXeMW+ESWKnnbMrk7fjKL9xrBBiZW5jaG1hcmtUb2tlbl82RjBEAiA0yjzEkWPk1bwk9BxepGMe/UrnwkP5BMkOHbbmpV6PDgIga7AxusovxtZNpa1yLOLgcTdxjl5YCS5ez1TlL83WZKttyAAAAAAAAAAZdqkUcHY6VT1hWoFE+giJoOH5PR2NqLCIrK9DAAAAAAAAGXapFFqhL5vgEh7uVOczHY+ZX+Td7XL1iKwAAAAAAAEAAAABXCLo00qVp2GgaFuLWpmghF6fA9h9VxanNR0Ik521zZICAAAAakcwRAIgUQHyvcQAmMveGicAcaW/3VpvvvyKOKi0oa2soKb/VecCIA7FwKV8tl38aqIuaFa7TGK4mHp7n6MstgHJS1ebpn2DQSEDyL5rIX/FWTmFHigjn7v3MfmX4CatNEqp1Lc5GB/pZ0P/////AwEAAAAAAAAAfCEDm/UhUmZWmeJMEBi/W0jldd4xb4RJYqedsyuTt+Mov3GsEGJlbmNobWFya1Rva2VuXzdGMEQCIAJoCOlFP3XKH8PHuw974e+spc6mse2parfbVsUZtnkyAiB9H6Xn1UJU0hQiVpR/k6BheBKApu0kZAUkcGM6fIiNH23IAAAAAAAAABl2qRQou28gesj0t/bBxZFOFDphZVhrJIis5UIAAAAAAAAZdqkUGXy953q7y5hcpgqFwpiLKsMsVBqIrAAAAAAA';
723
- const tx = Transaction_1.default.fromBEEF((0, utils_1.toArray)(BEEF, 'base64'));
724
- // Verifies transaction with scripts only
725
- const verified = await tx.verify('scripts only');
726
- expect(verified).toBe(true);
727
- });
728
- it('Verifies tx scripts only when our input has no MerklePath.', async () => {
729
- const sourceTransaction = Transaction_1.default.fromHex('01000000013834506e4af751dc3a0d73e9bdd067709ade5248860967fb3eb72854be6011dc020000006b4830450221008abf2ce1afbcc3c4895265b0966ac69e2275fb35a738f9873b5416cd3bb68cc102202c906f9771d2d6868f81a34d6a3af4cd7de070969286db7097c5e0f3a009b638412102f6a81c442dcd903c7808a75abde9217268bb70417ad538c18fb597b4c553c354ffffffff0301000000000000007c21039bf52152665699e24c1018bf5b48e575de316f844962a79db32b93b7e328bf71ac1062656e63686d61726b546f6b656e5f36463044022034ca3cc49163e4d5bc24f41c5ea4631efd4ae7c243f904c90e1db6e6a55e8f0e02206bb031baca2fc6d64da5ad722ce2e07137718e5e58092e5ecf54e52fcdd664ab6dc8000000000000001976a91470763a553d615a8144fa0889a0e1f93d1d8da8b088acaf430000000000001976a9145aa12f9be0121eee54e7331d8f995fe4dded72f588ac00000000');
730
- const tx = Transaction_1.default.fromHex('01000000015c22e8d34a95a761a0685b8b5a99a0845e9f03d87d5716a7351d08939db5cd92020000006a47304402205101f2bdc40098cbde1a270071a5bfdd5a6fbefc8a38a8b4a1adaca0a6ff55e702200ec5c0a57cb65dfc6aa22e6856bb4c62b8987a7b9fa32cb601c94b579ba67d83412103c8be6b217fc55939851e28239fbbf731f997e026ad344aa9d4b739181fe96743ffffffff0301000000000000007c21039bf52152665699e24c1018bf5b48e575de316f844962a79db32b93b7e328bf71ac1062656e63686d61726b546f6b656e5f374630440220026808e9453f75ca1fc3c7bb0f7be1efaca5cea6b1eda96ab7db56c519b6793202207d1fa5e7d54254d2142256947f93a061781280a6ed2464052470633a7c888d1f6dc8000000000000001976a91428bb6f207ac8f4b7f6c1c5914e143a6165586b2488ace5420000000000001976a914197cbde77abbcb985ca60a85c2988b2ac32c541a88ac00000000');
731
- // Create a mock MerklePath
732
- const mockMerklePath = new MerklePath_1.default(0, [
733
- [{ offset: 0, hash: 'dummyHash' }]
734
- ]);
735
- sourceTransaction.merklePath = mockMerklePath;
736
- tx.inputs[0].sourceTransaction = sourceTransaction;
737
- const verified = await tx.verify('scripts only', undefined);
738
- expect(verified).toBe(true);
739
- });
740
- describe('vectors: a 1mb transaction', () => {
741
- it('should find the correct id of this (valid, on the blockchain) 1 mb transaction', () => {
742
- const txidhex = bigtx_vectors_1.default.txidhex;
743
- const txhex = bigtx_vectors_1.default.txhex;
744
- const tx = Transaction_1.default.fromHex(txhex);
745
- const txid = tx.id('hex');
746
- expect(txid).toEqual(txidhex);
747
- });
748
- });
749
- describe('vectors: sighash and serialization', () => {
750
- sighash_vectors_1.default.forEach((vector, i) => {
751
- if (i === 0) {
752
- return;
753
- }
754
- it(`should pass bitcoin-abc sighash test vector ${i}`, () => {
755
- const txbuf = (0, utils_1.toArray)(vector[0], 'hex');
756
- const scriptbuf = (0, utils_1.toArray)(vector[1], 'hex');
757
- const subScript = Script_1.default.fromBinary(scriptbuf);
758
- const nIn = vector[2];
759
- const nHashType = vector[3];
760
- const sighashBuf = (0, utils_1.toArray)(vector[4], 'hex');
761
- const tx = Transaction_1.default.fromBinary(txbuf);
762
- // make sure transacion to/from buffer is isomorphic
763
- expect((0, utils_1.toHex)(tx.toBinary())).toEqual((0, utils_1.toHex)(txbuf));
764
- // sighash ought to be correct
765
- const valueBn = new BigNumber_1.default(0).toNumber();
766
- const otherInputs = [...tx.inputs];
767
- const [input] = otherInputs.splice(nIn, 1);
768
- const preimage = TransactionSignature_1.default.format({
769
- sourceTXID: input.sourceTXID,
770
- sourceOutputIndex: input.sourceOutputIndex,
771
- sourceSatoshis: valueBn,
772
- transactionVersion: tx.version,
773
- otherInputs,
774
- outputs: tx.outputs,
775
- inputIndex: nIn,
776
- subscript: subScript,
777
- inputSequence: input.sequence,
778
- lockTime: tx.lockTime,
779
- scope: nHashType
780
- });
781
- const hash = (0, Hash_1.hash256)(preimage);
782
- hash.reverse();
783
- expect((0, utils_1.toHex)(hash)).toEqual((0, utils_1.toHex)(sighashBuf));
784
- });
785
- });
786
- tx_valid_vectors_1.default.forEach((vector, i) => {
787
- if (vector.length === 1) {
788
- return;
789
- }
790
- it(`should correctly serialized/deserialize tx_valid test vector ${i}`, () => {
791
- const expectedHex = vector[1];
792
- const expectedBin = (0, utils_1.toArray)(vector[1], 'hex');
793
- const actualTX = Transaction_1.default.fromBinary(expectedBin);
794
- const actualBin = actualTX.toBinary();
795
- const actualHex = (0, utils_1.toHex)(actualBin);
796
- expect(actualHex).toEqual(expectedHex);
797
- });
798
- });
799
- tx_invalid_vectors_1.default.forEach((vector, i) => {
800
- if (vector.length === 1) {
801
- return;
802
- }
803
- // 151, 142 and 25 have invalid Satoshi amounts that exceed 53 bits in length, causing exceptions that make serialization and deserialization impossible.
804
- if (i === 151 || i === 142 || i === 25) {
805
- return;
806
- }
807
- it(`should correctly serialized/deserialize tx_invalid test vector ${i}`, () => {
808
- const expectedHex = vector[1];
809
- const expectedBin = (0, utils_1.toArray)(vector[1], 'hex');
810
- const actualTX = Transaction_1.default.fromBinary(expectedBin);
811
- const actualBin = actualTX.toBinary();
812
- const actualHex = (0, utils_1.toHex)(actualBin);
813
- expect(actualHex).toEqual(expectedHex);
814
- });
815
- });
816
- });
817
- describe('Atomic BEEF', () => {
818
- it('should serialize a transaction to Atomic BEEF format correctly', async () => {
819
- const privateKey = new PrivateKey_1.default(1);
820
- const publicKey = new Curve_1.default().g.mul(privateKey);
821
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
822
- const p2pkh = new P2PKH_1.default();
823
- // Create a simple transaction
824
- const sourceTx = new Transaction_1.default(1, [], [
825
- {
826
- lockingScript: p2pkh.lock(publicKeyHash),
827
- satoshis: 10000
828
- }
829
- ], 0);
830
- const spendTx = new Transaction_1.default(1, [
831
- {
832
- sourceTransaction: sourceTx,
833
- sourceOutputIndex: 0,
834
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
835
- sequence: 0xffffffff
836
- }
837
- ], [
838
- {
839
- satoshis: 9000,
840
- lockingScript: p2pkh.lock(publicKeyHash)
841
- }
842
- ], 0);
843
- // Sign the transaction
844
- await spendTx.fee();
845
- await spendTx.sign();
846
- // Assign a MerklePath to the source transaction to simulate mined transaction
847
- const sourceTxID = sourceTx.id('hex');
848
- const merklePath = new MerklePath_1.default(1000, [
849
- [
850
- { offset: 0, hash: sourceTxID, txid: true },
851
- { offset: 1, duplicate: true }
852
- ]
853
- ]);
854
- sourceTx.merklePath = merklePath;
855
- // Serialize to Atomic BEEF
856
- const atomicBEEF = spendTx.toAtomicBEEF();
857
- expect(atomicBEEF).toBeDefined();
858
- // Verify that the Atomic BEEF starts with the correct prefix and TXID
859
- const expectedPrefix = [0x01, 0x01, 0x01, 0x01];
860
- expect(atomicBEEF.slice(0, 4)).toEqual(expectedPrefix);
861
- const txid = spendTx.id();
862
- expect(atomicBEEF.slice(4, 36)).toEqual(txid);
863
- // Deserialize from Atomic BEEF
864
- const deserializedTx = Transaction_1.default.fromAtomicBEEF(atomicBEEF);
865
- expect(deserializedTx.toHex()).toEqual(spendTx.toHex());
866
- });
867
- it('should throw an error when deserializing Atomic BEEF if subject transaction is missing', () => {
868
- // Create Atomic BEEF data with missing subject transaction
869
- const writer = new utils_1.Writer();
870
- // Write Atomic BEEF prefix
871
- writer.writeUInt32LE(0x01010101);
872
- // Write subject TXID
873
- const fakeTXID = (0, utils_1.toArray)('00'.repeat(32), 'hex');
874
- writer.write(fakeTXID);
875
- // Write empty BEEF data
876
- writer.writeUInt32LE(Beef_1.BEEF_V1); // BEEF version
877
- writer.writeVarIntNum(0); // No BUMPs
878
- writer.writeVarIntNum(0); // No transactions
879
- const atomicBEEFData = writer.toArray();
880
- expect(() => {
881
- Transaction_1.default.fromAtomicBEEF(atomicBEEFData);
882
- }).toThrow('beef must include at least one transaction.');
883
- });
884
- it('should allow selecting a specific TXID from BEEF data', async () => {
885
- // Create two transactions, one depending on the other
886
- const privateKey = new PrivateKey_1.default(1);
887
- const publicKey = new Curve_1.default().g.mul(privateKey);
888
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
889
- const p2pkh = new P2PKH_1.default();
890
- const sourceTx = new Transaction_1.default(1, [], [
891
- {
892
- lockingScript: p2pkh.lock(publicKeyHash),
893
- satoshis: 10000
894
- }
895
- ], 0);
896
- const spendTx = new Transaction_1.default(1, [
897
- {
898
- sourceTransaction: sourceTx,
899
- sourceOutputIndex: 0,
900
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
901
- sequence: 0xffffffff
902
- }
903
- ], [
904
- {
905
- satoshis: 9000,
906
- lockingScript: p2pkh.lock(publicKeyHash)
907
- }
908
- ], 0);
909
- // Sign transactions
910
- await spendTx.fee();
911
- await spendTx.sign();
912
- // Assign merkle path to source transaction
913
- const sourceTxID = sourceTx.id('hex');
914
- sourceTx.merklePath = new MerklePath_1.default(1000, [
915
- [
916
- { offset: 0, hash: sourceTxID, txid: true },
917
- { offset: 1, duplicate: true }
918
- ]
919
- ]);
920
- // Serialize to BEEF
921
- const beefData = spendTx.toBEEF();
922
- // Get TXIDs
923
- const spendTxID = spendTx.id('hex');
924
- // Deserialize the source transaction from BEEF data
925
- const deserializedSourceTx = Transaction_1.default.fromBEEF(beefData, sourceTxID);
926
- expect(deserializedSourceTx.id('hex')).toEqual(sourceTxID);
927
- // Deserialize the spend transaction from BEEF data
928
- const deserializedSpendTx = Transaction_1.default.fromBEEF(beefData, spendTxID);
929
- expect(deserializedSpendTx.id('hex')).toEqual(spendTxID);
930
- // Attempt to deserialize a non-existent transaction
931
- expect(() => {
932
- Transaction_1.default.fromBEEF(beefData, '00'.repeat(32));
933
- }).toThrowError('Transaction with TXID 0000000000000000000000000000000000000000000000000000000000000000 not found in BEEF data.');
934
- });
935
- });
936
- describe('addP2PKHOutput', () => {
937
- it('should create an output on the current transaction using an address hash or string', async () => {
938
- const privateKey = PrivateKey_1.default.fromRandom();
939
- const lockingScript = new P2PKH_1.default().lock(privateKey.toAddress());
940
- const tx = new Transaction_1.default();
941
- tx.addInput({
942
- sourceTXID: '00'.repeat(32),
943
- sourceOutputIndex: 0,
944
- unlockingScriptTemplate: new P2PKH_1.default().unlock(privateKey)
945
- });
946
- tx.addP2PKHOutput(privateKey.toAddress(), 10000);
947
- expect(tx.outputs.length).toEqual(1);
948
- expect(tx.outputs[0].satoshis).toEqual(10000);
949
- expect(tx.outputs[0].lockingScript.toHex() === lockingScript.toHex()).toBeTruthy();
950
- });
951
- });
952
- });
953
- describe('Atomic BEEF', () => {
954
- it('should serialize a transaction to Atomic BEEF format correctly', async () => {
955
- const privateKey = new PrivateKey_1.default(1);
956
- const publicKey = new Curve_1.default().g.mul(privateKey);
957
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
958
- const p2pkh = new P2PKH_1.default();
959
- // Create a simple transaction
960
- const sourceTx = new Transaction_1.default(1, [], [{
961
- lockingScript: p2pkh.lock(publicKeyHash),
962
- satoshis: 10000
963
- }], 0);
964
- const spendTx = new Transaction_1.default(1, [{
965
- sourceTransaction: sourceTx,
966
- sourceOutputIndex: 0,
967
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
968
- sequence: 0xffffffff
969
- }], [{
970
- satoshis: 9000,
971
- lockingScript: p2pkh.lock(publicKeyHash)
972
- }], 0);
973
- // Sign the transaction
974
- await spendTx.fee();
975
- await spendTx.sign();
976
- // Assign a MerklePath to the source transaction to simulate mined transaction
977
- const sourceTxID = sourceTx.id('hex');
978
- const merklePath = new MerklePath_1.default(1000, [
979
- [
980
- { offset: 0, hash: sourceTxID, txid: true },
981
- { offset: 1, duplicate: true }
982
- ]
983
- ]);
984
- sourceTx.merklePath = merklePath;
985
- // Serialize to Atomic BEEF
986
- const atomicBEEF = spendTx.toAtomicBEEF();
987
- expect(atomicBEEF).toBeDefined();
988
- // Verify that the Atomic BEEF starts with the correct prefix and TXID
989
- const expectedPrefix = [0x01, 0x01, 0x01, 0x01];
990
- expect(atomicBEEF.slice(0, 4)).toEqual(expectedPrefix);
991
- const txid = spendTx.id();
992
- expect(atomicBEEF.slice(4, 36)).toEqual(txid);
993
- // Deserialize from Atomic BEEF
994
- const deserializedTx = Transaction_1.default.fromAtomicBEEF(atomicBEEF);
995
- expect(deserializedTx.toHex()).toEqual(spendTx.toHex());
996
- });
997
- it('should throw an error when deserializing Atomic BEEF if subject transaction is missing', () => {
998
- // Create Atomic BEEF data with missing subject transaction
999
- const writer = new utils_1.Writer();
1000
- // Write Atomic BEEF prefix
1001
- writer.writeUInt32LE(0x01010101);
1002
- // Write subject TXID
1003
- const fakeTXID = (0, utils_1.toArray)('00'.repeat(32), 'hex');
1004
- writer.write(fakeTXID);
1005
- // Write empty BEEF data
1006
- writer.writeUInt32LE(Beef_1.BEEF_V1); // BEEF version
1007
- writer.writeVarIntNum(0); // No BUMPs
1008
- writer.writeVarIntNum(0); // No transactions
1009
- const atomicBEEFData = writer.toArray();
1010
- expect(() => {
1011
- Transaction_1.default.fromAtomicBEEF(atomicBEEFData);
1012
- }).toThrowError('beef must include at least one transaction.');
1013
- });
1014
- it('should allow selecting a specific TXID from BEEF data', async () => {
1015
- // Create two transactions, one depending on the other
1016
- const privateKey = new PrivateKey_1.default(1);
1017
- const publicKey = new Curve_1.default().g.mul(privateKey);
1018
- const publicKeyHash = (0, Hash_1.hash160)(publicKey.encode(true));
1019
- const p2pkh = new P2PKH_1.default();
1020
- const sourceTx = new Transaction_1.default(1, [], [{
1021
- lockingScript: p2pkh.lock(publicKeyHash),
1022
- satoshis: 10000
1023
- }], 0);
1024
- const spendTx = new Transaction_1.default(1, [{
1025
- sourceTransaction: sourceTx,
1026
- sourceOutputIndex: 0,
1027
- unlockingScriptTemplate: p2pkh.unlock(privateKey),
1028
- sequence: 0xffffffff
1029
- }], [{
1030
- satoshis: 9000,
1031
- lockingScript: p2pkh.lock(publicKeyHash)
1032
- }], 0);
1033
- // Sign transactions
1034
- await spendTx.fee();
1035
- await spendTx.sign();
1036
- // Assign merkle path to source transaction
1037
- const sourceTxID = sourceTx.id('hex');
1038
- sourceTx.merklePath = new MerklePath_1.default(1000, [
1039
- [
1040
- { offset: 0, hash: sourceTxID, txid: true },
1041
- { offset: 1, duplicate: true }
1042
- ]
1043
- ]);
1044
- // Serialize to BEEF
1045
- const beefData = spendTx.toBEEF();
1046
- // Get TXIDs
1047
- const spendTxID = spendTx.id('hex');
1048
- // Deserialize the source transaction from BEEF data
1049
- const deserializedSourceTx = Transaction_1.default.fromBEEF(beefData, sourceTxID);
1050
- expect(deserializedSourceTx.id('hex')).toEqual(sourceTxID);
1051
- // Deserialize the spend transaction from BEEF data
1052
- const deserializedSpendTx = Transaction_1.default.fromBEEF(beefData, spendTxID);
1053
- expect(deserializedSpendTx.id('hex')).toEqual(spendTxID);
1054
- // Attempt to deserialize a non-existent transaction
1055
- expect(() => {
1056
- Transaction_1.default.fromBEEF(beefData, '00'.repeat(32));
1057
- }).toThrowError('Transaction with TXID 0000000000000000000000000000000000000000000000000000000000000000 not found in BEEF data.');
1058
- });
1059
- });
1060
- describe('addP2PKHOutput', () => {
1061
- it('should create an output on the current transaction using an address hash or string', async () => {
1062
- const privateKey = PrivateKey_1.default.fromRandom();
1063
- const lockingScript = new P2PKH_1.default().lock(privateKey.toAddress());
1064
- const tx = new Transaction_1.default();
1065
- tx.addInput({
1066
- sourceTXID: '00'.repeat(32),
1067
- sourceOutputIndex: 0,
1068
- unlockingScriptTemplate: new P2PKH_1.default().unlock(privateKey),
1069
- });
1070
- });
1071
- });
1072
- });
1073
- //# sourceMappingURL=Transaction.test.js.map