@bsv/sdk 1.6.9 → 1.6.10

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 (647) hide show
  1. package/README.md +9 -4
  2. package/dist/cjs/package.json +4 -2
  3. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  4. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  5. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  6. package/docs/concepts/beef.md +84 -0
  7. package/docs/concepts/chain-tracking.md +122 -0
  8. package/docs/concepts/decentralized-identity.md +184 -0
  9. package/docs/concepts/fees.md +217 -0
  10. package/docs/concepts/identity-certificates.md +255 -0
  11. package/docs/concepts/index.md +62 -0
  12. package/docs/concepts/key-management.md +176 -0
  13. package/docs/concepts/script-templates.md +163 -0
  14. package/docs/concepts/sdk-philosophy.md +72 -0
  15. package/docs/concepts/signatures.md +179 -0
  16. package/docs/concepts/spv-verification.md +106 -0
  17. package/docs/concepts/transaction-encoding.md +148 -0
  18. package/docs/concepts/transaction-structure.md +63 -0
  19. package/docs/concepts/trust-model.md +123 -0
  20. package/docs/concepts/verification.md +219 -0
  21. package/docs/concepts/wallet-integration.md +95 -0
  22. package/docs/guides/direct-transaction-creation.md +137 -0
  23. package/docs/guides/http-client-configuration.md +414 -0
  24. package/docs/guides/index.md +30 -0
  25. package/docs/guides/transaction-signing-methods.md +268 -0
  26. package/docs/index.md +74 -0
  27. package/docs/reference/arc-config.md +698 -0
  28. package/docs/reference/brc-100.md +33 -0
  29. package/docs/reference/configuration.md +829 -0
  30. package/docs/reference/debugging.md +700 -0
  31. package/docs/reference/errors.md +547 -0
  32. package/docs/reference/index.md +98 -0
  33. package/docs/reference/network-config.md +914 -0
  34. package/docs/reference/op-codes.md +306 -0
  35. package/docs/reference/transaction-signatures.md +94 -0
  36. package/docs/requirements.txt +3 -0
  37. package/docs/tutorials/advanced-transaction.md +575 -0
  38. package/docs/tutorials/aes-encryption.md +947 -0
  39. package/docs/tutorials/authfetch-tutorial.md +957 -0
  40. package/docs/tutorials/ecdh-key-exchange.md +547 -0
  41. package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
  42. package/docs/tutorials/error-handling.md +1215 -0
  43. package/docs/tutorials/first-transaction-low-level.md +204 -0
  44. package/docs/tutorials/first-transaction.md +278 -0
  45. package/docs/tutorials/hashes-and-hmacs.md +814 -0
  46. package/docs/tutorials/identity-management.md +702 -0
  47. package/docs/tutorials/index.md +182 -0
  48. package/docs/tutorials/key-management.md +536 -0
  49. package/docs/tutorials/protowallet-development.md +716 -0
  50. package/docs/tutorials/script-construction.md +690 -0
  51. package/docs/tutorials/spv-merkle-proofs.md +682 -0
  52. package/docs/tutorials/testnet-transactions-low-level.md +352 -0
  53. package/docs/tutorials/transaction-broadcasting.md +535 -0
  54. package/docs/tutorials/transaction-types.md +419 -0
  55. package/docs/tutorials/type-42.md +582 -0
  56. package/docs/tutorials/uhrp-storage.md +579 -0
  57. package/package.json +4 -2
  58. package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
  59. package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
  60. package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
  61. package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
  62. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
  63. package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  64. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  65. package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  66. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  67. package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  68. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
  69. package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  70. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  71. package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  72. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  73. package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  74. package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
  75. package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
  76. package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
  77. package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
  78. package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
  79. package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
  80. package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
  81. package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
  82. package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
  83. package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
  84. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
  85. package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  86. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
  87. package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  88. package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
  89. package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
  90. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  91. package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  92. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  93. package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  94. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  95. package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  96. package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
  97. package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
  98. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  99. package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  100. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  101. package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  102. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  103. package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  104. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  105. package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  106. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  107. package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  108. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  109. package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  110. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  111. package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  112. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  113. package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  114. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  115. package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  116. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
  117. package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  118. package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
  119. package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
  120. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
  121. package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  122. package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
  123. package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
  124. package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
  125. package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
  126. package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
  127. package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
  128. package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
  129. package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
  130. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  131. package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  132. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  133. package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  134. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
  135. package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  136. package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
  137. package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
  138. package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
  139. package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
  140. package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
  141. package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
  142. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
  143. package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  144. package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
  145. package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
  146. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
  147. package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  148. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  149. package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  150. package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
  151. package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
  152. package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
  153. package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
  154. package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
  155. package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
  156. package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
  157. package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
  158. package/dist/cjs/src/script/__tests/Script.test.js +0 -347
  159. package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
  160. package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
  161. package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
  162. package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
  163. package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
  164. package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
  165. package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
  166. package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
  167. package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
  168. package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
  169. package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
  170. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
  171. package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  172. package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
  173. package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
  174. package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
  175. package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
  176. package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
  177. package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
  178. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  179. package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  180. package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
  181. package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
  182. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
  183. package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  184. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  185. package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  186. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
  187. package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  188. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  189. package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  190. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
  191. package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  192. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  193. package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  194. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  195. package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  196. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  197. package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  198. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
  199. package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  200. package/dist/cjs/src/wallet/WalletSigner.js +0 -260
  201. package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
  202. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  203. package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  204. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
  205. package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  206. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
  207. package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  208. package/dist/cjs/src/wallet/createActionSdk.js +0 -230
  209. package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
  210. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  211. package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  212. package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
  213. package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
  214. package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
  215. package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
  216. package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
  217. package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
  218. package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
  219. package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
  220. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
  221. package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  222. package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
  223. package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
  224. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
  225. package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  226. package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
  227. package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
  228. package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
  229. package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
  230. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
  231. package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  232. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
  233. package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  234. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
  235. package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  236. package/dist/cjs/src/wallet/sdk/index.js +0 -31
  237. package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
  238. package/dist/cjs/src/wallet/sdk/types.js +0 -11
  239. package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
  240. package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
  241. package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
  242. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  243. package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  244. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
  245. package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  246. package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
  247. package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
  248. package/dist/cjs/src/wallet/validationHelpers.js +0 -601
  249. package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
  250. package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
  251. package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
  252. package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
  253. package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
  254. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
  255. package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
  256. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
  257. package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
  258. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
  259. package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
  260. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
  261. package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
  262. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
  263. package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
  264. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
  265. package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
  266. package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
  267. package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
  268. package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
  269. package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
  270. package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
  271. package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
  272. package/dist/esm/src/compat/__tests/HD.test.js +0 -336
  273. package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
  274. package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
  275. package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
  276. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
  277. package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
  278. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
  279. package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
  280. package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
  281. package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
  282. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
  283. package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
  284. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
  285. package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
  286. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
  287. package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
  288. package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
  289. package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
  290. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
  291. package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
  292. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
  293. package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
  294. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
  295. package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
  296. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
  297. package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
  298. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
  299. package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
  300. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
  301. package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
  302. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
  303. package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
  304. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
  305. package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
  306. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
  307. package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
  308. package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
  309. package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
  310. package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
  311. package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
  312. package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
  313. package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
  314. package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
  315. package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
  316. package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
  317. package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
  318. package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
  319. package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
  320. package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
  321. package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
  322. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
  323. package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
  324. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
  325. package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
  326. package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
  327. package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
  328. package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
  329. package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
  330. package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
  331. package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
  332. package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
  333. package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
  334. package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
  335. package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
  336. package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
  337. package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
  338. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
  339. package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
  340. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
  341. package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
  342. package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
  343. package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
  344. package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
  345. package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
  346. package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
  347. package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
  348. package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
  349. package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
  350. package/dist/esm/src/script/__tests/Script.test.js +0 -347
  351. package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
  352. package/dist/esm/src/script/__tests/Spend.test.js +0 -282
  353. package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
  354. package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
  355. package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
  356. package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
  357. package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
  358. package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
  359. package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
  360. package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
  361. package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
  362. package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
  363. package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
  364. package/dist/esm/src/totp/__tests/totp.test.js +0 -67
  365. package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
  366. package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
  367. package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
  368. package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
  369. package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
  370. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
  371. package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
  372. package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
  373. package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
  374. package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
  375. package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
  376. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
  377. package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
  378. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
  379. package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
  380. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
  381. package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
  382. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
  383. package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
  384. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
  385. package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
  386. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
  387. package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
  388. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
  389. package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
  390. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
  391. package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
  392. package/dist/esm/src/wallet/WalletSigner.js +0 -263
  393. package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
  394. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
  395. package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
  396. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
  397. package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
  398. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
  399. package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
  400. package/dist/esm/src/wallet/createActionSdk.js +0 -223
  401. package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
  402. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
  403. package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
  404. package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
  405. package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
  406. package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
  407. package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
  408. package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
  409. package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
  410. package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
  411. package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
  412. package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
  413. package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
  414. package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
  415. package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
  416. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
  417. package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
  418. package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
  419. package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
  420. package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
  421. package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
  422. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
  423. package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
  424. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
  425. package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
  426. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
  427. package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
  428. package/dist/esm/src/wallet/sdk/index.js +0 -15
  429. package/dist/esm/src/wallet/sdk/index.js.map +0 -1
  430. package/dist/esm/src/wallet/sdk/types.js +0 -8
  431. package/dist/esm/src/wallet/sdk/types.js.map +0 -1
  432. package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
  433. package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
  434. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
  435. package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
  436. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
  437. package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
  438. package/dist/esm/src/wallet/utilityHelpers.js +0 -275
  439. package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
  440. package/dist/esm/src/wallet/validationHelpers.js +0 -566
  441. package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
  442. package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
  443. package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
  444. package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
  445. package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
  446. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
  447. package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
  448. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
  449. package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
  450. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
  451. package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
  452. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
  453. package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
  454. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
  455. package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
  456. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
  457. package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
  458. package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
  459. package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
  460. package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
  461. package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
  462. package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
  463. package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
  464. package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
  465. package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
  466. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
  467. package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
  468. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
  469. package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
  470. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
  471. package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
  472. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
  473. package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
  474. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
  475. package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
  476. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
  477. package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
  478. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
  479. package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
  480. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
  481. package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
  482. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
  483. package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
  484. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
  485. package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
  486. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
  487. package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
  488. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
  489. package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
  490. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
  491. package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
  492. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
  493. package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
  494. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
  495. package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
  496. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
  497. package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
  498. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
  499. package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
  500. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
  501. package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
  502. package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
  503. package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
  504. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
  505. package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
  506. package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
  507. package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
  508. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
  509. package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
  510. package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
  511. package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
  512. package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
  513. package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
  514. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
  515. package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
  516. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
  517. package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
  518. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
  519. package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
  520. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
  521. package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
  522. package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
  523. package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
  524. package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
  525. package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
  526. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
  527. package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
  528. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
  529. package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
  530. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
  531. package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
  532. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
  533. package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
  534. package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
  535. package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
  536. package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
  537. package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
  538. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
  539. package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
  540. package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
  541. package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
  542. package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
  543. package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
  544. package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
  545. package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
  546. package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
  547. package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
  548. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
  549. package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
  550. package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
  551. package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
  552. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
  553. package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
  554. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
  555. package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
  556. package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
  557. package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
  558. package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
  559. package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
  560. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
  561. package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
  562. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
  563. package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
  564. package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
  565. package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
  566. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
  567. package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
  568. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
  569. package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
  570. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
  571. package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
  572. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
  573. package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
  574. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
  575. package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
  576. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
  577. package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
  578. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
  579. package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
  580. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
  581. package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
  582. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
  583. package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
  584. package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
  585. package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
  586. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
  587. package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
  588. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
  589. package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
  590. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
  591. package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
  592. package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
  593. package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
  594. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
  595. package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
  596. package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
  597. package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
  598. package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
  599. package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
  600. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
  601. package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
  602. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
  603. package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
  604. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
  605. package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
  606. package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
  607. package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
  608. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
  609. package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
  610. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
  611. package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
  612. package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
  613. package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
  614. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
  615. package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
  616. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
  617. package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
  618. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
  619. package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
  620. package/dist/types/src/wallet/sdk/index.d.ts +0 -15
  621. package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
  622. package/dist/types/src/wallet/sdk/types.d.ts +0 -56
  623. package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
  624. package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
  625. package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
  626. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
  627. package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
  628. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
  629. package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
  630. package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
  631. package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
  632. package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
  633. package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
  634. package/docs/README.md +0 -21
  635. /package/docs/{auth.md → reference/auth.md} +0 -0
  636. /package/docs/{compat.md → reference/compat.md} +0 -0
  637. /package/docs/{identity.md → reference/identity.md} +0 -0
  638. /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
  639. /package/docs/{messages.md → reference/messages.md} +0 -0
  640. /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
  641. /package/docs/{primitives.md → reference/primitives.md} +0 -0
  642. /package/docs/{registry.md → reference/registry.md} +0 -0
  643. /package/docs/{script.md → reference/script.md} +0 -0
  644. /package/docs/{storage.md → reference/storage.md} +0 -0
  645. /package/docs/{totp.md → reference/totp.md} +0 -0
  646. /package/docs/{transaction.md → reference/transaction.md} +0 -0
  647. /package/docs/{wallet.md → reference/wallet.md} +0 -0
@@ -0,0 +1,535 @@
1
+ # Transaction Broadcasting
2
+
3
+ **Duration**: 25 minutes
4
+ **Prerequisites**: Completed "Your First BSV Transaction" tutorial, Node.js, basic TypeScript knowledge
5
+
6
+ ## Learning Goals
7
+ - Understand how transaction broadcasting works in BSV
8
+ - Learn the difference between `WalletClient` and direct broadcasting approaches
9
+ - Configure broadcasting for testnet vs mainnet
10
+ - Implement custom broadcasters for different services (ARC, WhatsOnChain)
11
+ - Handle broadcasting errors and responses
12
+
13
+ > **📚 Related Concepts**: Review [Chain Tracking](../concepts/chain-tracking.md), [Transaction Fees](../concepts/fees.md), and [Wallet Integration](../concepts/wallet-integration.md) for background on network interaction.
14
+
15
+ ## Introduction
16
+
17
+ Transaction broadcasting is the process of submitting your signed transaction to the Bitcoin SV network so it can be included in a block. The BSV TypeScript SDK provides multiple approaches for broadcasting transactions, each suited for different use cases and deployment scenarios.
18
+
19
+ In this tutorial, you'll learn about the two main broadcasting approaches:
20
+
21
+ 1. **WalletClient Broadcasting**: Uses a BRC-100 compliant wallet as a proxy (such as the MetaNet Desktop Wallet)
22
+ 2. **Direct Broadcasting**: Connects directly to mining services and APIs
23
+
24
+ ## Understanding Broadcasting Architecture
25
+
26
+ ### WalletClient Broadcasting Flow
27
+
28
+ When you use `WalletClient`, the broadcasting flow looks like this:
29
+
30
+ ```
31
+ Your App → WalletClient → Wallet → Mining Services → BSV Network
32
+ ```
33
+
34
+ The Wallet acts as a proxy that:
35
+ - Manages your broadcasting preferences
36
+ - Handles fallback logic between different services
37
+ - Provides a consistent API regardless of the underlying service
38
+
39
+ Due to its simplicity, this is the recommended approach.
40
+
41
+ ### Direct Broadcasting Flow
42
+
43
+ With direct broadcasting, your application connects directly to mining services:
44
+
45
+ ```
46
+ Your App → Custom Broadcaster → Mining Service API → BSV Network
47
+ ```
48
+
49
+ This approach gives you:
50
+ - Full control over which service to use
51
+ - Direct error handling and response processing
52
+ - Ability to implement custom retry logic
53
+ - No dependency on external wallet software
54
+
55
+ Due to its complexity and need to handle the low-level details of the broadcasting process, this is the less recommended approach.
56
+
57
+ ## Step 1: WalletClient Broadcasting
58
+
59
+ Let's start with the `WalletClient` approach, which is the simplest for most applications. This is the same approach we have seen in the previous tutorials, where we used the `WalletClient` to create and broadcast transactions.
60
+
61
+ ### Basic WalletClient Setup
62
+
63
+ First, create a new project for our broadcasting examples:
64
+
65
+ ```bash
66
+ # Create a new directory
67
+ mkdir bsv-broadcasting-tutorial
68
+ cd bsv-broadcasting-tutorial
69
+
70
+ # Initialize project
71
+ npm init -y
72
+
73
+ # Install dependencies
74
+ npm install typescript ts-node @types/node --save-dev
75
+ npm install @bsv/sdk
76
+ ```
77
+
78
+ Create a basic TypeScript configuration (`tsconfig.json`):
79
+
80
+ ```json
81
+ {
82
+ "compilerOptions": {
83
+ "target": "es2020",
84
+ "module": "commonjs",
85
+ "esModuleInterop": true,
86
+ "strict": true,
87
+ "outDir": "./dist"
88
+ }
89
+ }
90
+ ```
91
+
92
+ ### WalletClient Broadcasting Example
93
+
94
+ Create `wallet-broadcasting.ts`:
95
+
96
+ ```typescript
97
+ import { WalletClient } from '@bsv/sdk'
98
+
99
+ async function walletClientBroadcasting() {
100
+ try {
101
+ // Initialize the `WalletClient`, using localhost as wallet substrate
102
+ const wallet = new WalletClient('auto', 'localhost')
103
+
104
+ // Check if we're authenticated with the wallet
105
+ const { authenticated } = await wallet.isAuthenticated()
106
+ if (!authenticated) {
107
+ console.log('Please authenticate with your wallet')
108
+ await wallet.waitForAuthentication()
109
+ console.log('Successfully authenticated!')
110
+ }
111
+
112
+ // Get wallet version
113
+ const { version } = await wallet.getVersion()
114
+ console.log(`Wallet version: ${version}`)
115
+
116
+ // For this tutorial, we'll create a transaction with a simple OP_RETURN data output
117
+ // The wallet will handle input selection, change outputs and fees
118
+ console.log('\n🚀 Creating transaction...')
119
+ const actionResult = await wallet.createAction({
120
+ description: 'Broadcasting tutorial transaction',
121
+ outputs: [
122
+ {
123
+ satoshis: 100, // Amount in satoshis (very small amount)
124
+ // For this basic example, we'll use a standard OP_RETURN script
125
+ // Here we use a pre-defined script for simplicity (OP_RETURN with simple data)
126
+ lockingScript: '006a0461626364', // OP_RETURN with data 'abcd'
127
+ outputDescription: 'Broadcasting tutorial data'
128
+ }
129
+ ]
130
+ })
131
+
132
+ console.log('Transaction created:')
133
+
134
+ if (actionResult.txid) {
135
+ // If the wallet auto-signed and broadcast the transaction
136
+ console.log('Full action result:', JSON.stringify(actionResult, null, 2))
137
+ console.log(`Transaction ID: ${actionResult.txid}`)
138
+ console.log(`View on explorer: https://whatsonchain.com/tx/${actionResult.txid}`)
139
+ console.log('Transaction was automatically signed and broadcast!')
140
+ }
141
+ else if (actionResult.signableTransaction) {
142
+ console.log('Created transaction that needs signing')
143
+ // Get the reference needed for signing
144
+ const txReference = actionResult.signableTransaction.reference
145
+
146
+ // Now sign the transaction
147
+ // Note: In a real application, you might prompt the user to sign
148
+ const signResult = await wallet.signAction({
149
+ // The wallet knows which inputs need to be spent based on the reference
150
+ spends: {},
151
+ // Use the reference from the createAction result
152
+ reference: txReference,
153
+ options: {
154
+ acceptDelayedBroadcast: true
155
+ }
156
+ })
157
+
158
+ console.log(`Transaction signed and broadcast!`)
159
+ console.log(`Transaction ID: ${signResult.txid}`)
160
+ console.log(`View on explorer: https://whatsonchain.com/tx/${signResult.txid}`)
161
+ }
162
+ else {
163
+ console.log('Transaction created but no actionable result returned')
164
+ }
165
+
166
+ } catch (error) {
167
+ console.error('❌ Broadcasting failed:', error)
168
+ console.log('Note: Make sure you have a compatible wallet running and are authenticated.')
169
+ }
170
+ }
171
+
172
+ // Run the example
173
+ walletClientBroadcasting()
174
+ ```
175
+
176
+ ### How `WalletClient` Broadcasting Works
177
+
178
+ When you use `WalletClient`:
179
+
180
+ 1. **Connection**: Your app connects to the BRC-100 wallet's local HTTP API (usually `http://localhost:3321` for MetaNet Desktop Wallet)
181
+ 2. **Transaction Creation**: The wallet helps construct the transaction using your available UTXOs
182
+ 3. **Signing**: The wallet signs the transaction with your private keys
183
+ 4. **Broadcasting**: The wallet submits the transaction to whatever broadcast service is configured in its settings
184
+ 5. **Response**: You receive either a transaction ID (success) or an error message
185
+
186
+ The key advantage is that **you don't control the broadcasting directly** - the BRC-100 wallet handles it based on its configuration. This means:
187
+ - ✅ Easy to use - no need to manage API keys or endpoints
188
+ - ✅ Fallback logic built-in
189
+ - ✅ User can configure preferred services through the wallet UI
190
+
191
+
192
+
193
+ ## Step 2: Direct Broadcasting with Custom Broadcasters
194
+
195
+ The `WalletClient` approach in step 1 is the recommended approach. However, if you need more control, you can broadcast transactions directly using custom broadcaster implementations. We will demonstrate the main broadcaster implementations in the SDK: ARC and WhatsOnChain.
196
+
197
+ ### Automatic vs Manual Broadcasting
198
+
199
+ **Important**: By default, `wallet.createAction()` automatically broadcasts transactions through the wallet's configured broadcaster. To demonstrate manual broadcasting with specific services, you need to:
200
+
201
+ 1. **Prevent automatic broadcast**: Use `options: { noSend: true }` in `createAction()`
202
+ 2. **Convert to Transaction**: Convert the returned `AtomicBEEF` to a `Transaction` object
203
+ 3. **Manual broadcast**: Use your chosen broadcaster to submit the transaction
204
+
205
+ This approach is useful when you need to:
206
+ - Use a specific broadcasting service (ARC, WhatsOnChain, etc.)
207
+ - Implement custom retry logic or error handling
208
+ - Broadcast to multiple services for redundancy
209
+ - Control exactly when and how transactions are broadcast
210
+
211
+ ### Understanding Broadcaster Interface
212
+
213
+ All broadcasters in the SDK implement the `Broadcaster` interface:
214
+
215
+ ```typescript
216
+ interface Broadcaster {
217
+ broadcast(tx: Transaction): Promise<BroadcastResponse | BroadcastFailure>
218
+ }
219
+ ```
220
+
221
+ The response types are:
222
+
223
+ ```typescript
224
+ interface BroadcastResponse {
225
+ status: 'success'
226
+ txid: string
227
+ message?: string
228
+ }
229
+
230
+ interface BroadcastFailure {
231
+ status: 'error'
232
+ code: string
233
+ description: string
234
+ }
235
+ ```
236
+
237
+ ### ARC Broadcasting
238
+
239
+ ARC (Application Resource Component) is TAAL's enterprise-grade transaction processing service. Create `arc-broadcasting.ts`:
240
+
241
+ ```typescript
242
+ import { WalletClient, ARC, NodejsHttpClient, Transaction } from '@bsv/sdk'
243
+ import https from 'https'
244
+
245
+ async function arcBroadcasting() {
246
+ try {
247
+ // 1. Set up wallet connection
248
+ const wallet = new WalletClient('auto', 'localhost')
249
+
250
+ // Check if wallet is connected
251
+ const isAuthenticated = await wallet.isAuthenticated()
252
+ if (!isAuthenticated) {
253
+ console.log('Please authenticate with your BRC-100 wallet first')
254
+ return
255
+ }
256
+
257
+ // 2. Create a transaction action WITHOUT automatic broadcasting
258
+ const actionResult = await wallet.createAction({
259
+ description: 'ARC broadcasting tutorial transaction',
260
+ outputs: [
261
+ {
262
+ satoshis: 100, // Small payment amount
263
+ lockingScript: '76a914f1c075a01882ae0972f95d3a4177c86c852b7d9188ac', // P2PKH script to a test address
264
+ outputDescription: 'ARC broadcasting tutorial payment'
265
+ }
266
+ ],
267
+ options: {
268
+ noSend: true // Prevent automatic broadcasting - we'll broadcast manually with ARC
269
+ }
270
+ })
271
+
272
+ console.log('Transaction created successfully (not broadcast yet)')
273
+ console.log(`Transaction ID: ${actionResult.txid}`)
274
+
275
+ // 3. Convert AtomicBEEF to Transaction for manual broadcasting
276
+ if (!actionResult.tx) {
277
+ throw new Error('Transaction creation failed - no transaction returned')
278
+ }
279
+ const tx = Transaction.fromAtomicBEEF(actionResult.tx)
280
+
281
+ // 4. Set up ARC broadcaster for testnet
282
+ // You need to provide your Taal API key here
283
+ // Get it by signing up at https://console.taal.com
284
+ const apiKey = process.env.TAAL_API_KEY || 'your_taal_api_key_here'
285
+ const httpClient = new NodejsHttpClient(https)
286
+
287
+ const arc = new ARC('https://arc.taal.com', {
288
+ apiKey,
289
+ httpClient,
290
+ deploymentId: 'broadcasting-tutorial'
291
+ })
292
+
293
+ // 5. Manually broadcast the transaction using ARC
294
+ console.log('Broadcasting transaction with ARC...')
295
+ const result = await tx.broadcast(arc)
296
+
297
+ if (result.status === 'success') {
298
+ console.log('✅ Transaction broadcast successful!')
299
+ console.log(`Transaction ID: ${result.txid}`)
300
+ console.log(`View on explorer: https://www.whatsonchain.com/tx/${result.txid}`)
301
+ } else {
302
+ console.log('❌ Broadcasting failed:', result)
303
+ }
304
+
305
+ } catch (error: any) {
306
+ console.error('❌ Error during ARC broadcasting:', error)
307
+
308
+ // Common troubleshooting
309
+ if (error.message?.includes('Insufficient funds')) {
310
+ console.log('💡 Make sure your wallet has sufficient testnet coins')
311
+ } else if (error.message?.includes('no header should have returned false')) {
312
+ console.log('💡 Try restarting your wallet application and ensure it is fully synced')
313
+ }
314
+ }
315
+ }
316
+
317
+ // Run the example
318
+ arcBroadcasting()
319
+ ```
320
+
321
+ ### WhatsOnChain Broadcasting
322
+
323
+ WhatsOnChain provides a free broadcasting service. Create `whatsonchain-broadcasting.ts`:
324
+
325
+ ```typescript
326
+ import { WalletClient, WhatsOnChainBroadcaster, NodejsHttpClient, Transaction } from '@bsv/sdk'
327
+ import https from 'https'
328
+
329
+ async function whatsOnChainBroadcasting() {
330
+ try {
331
+ // 1. Set up wallet connection
332
+ const wallet = new WalletClient('auto', 'localhost')
333
+
334
+ // Check if wallet is connected
335
+ const isAuthenticated = await wallet.isAuthenticated()
336
+ if (!isAuthenticated) {
337
+ console.log('Please authenticate with your BRC-100 wallet first')
338
+ return
339
+ }
340
+
341
+ // 2. Create a transaction action WITHOUT automatic broadcasting
342
+ const actionResult = await wallet.createAction({
343
+ description: 'WhatsOnChain broadcasting tutorial transaction',
344
+ outputs: [
345
+ {
346
+ satoshis: 100, // Small payment amount
347
+ lockingScript: '76a914f1c075a01882ae0972f95d3a4177c86c852b7d9188ac', // P2PKH script to a test address
348
+ outputDescription: 'WhatsOnChain broadcasting tutorial payment'
349
+ }
350
+ ],
351
+ options: {
352
+ noSend: true // Prevent automatic broadcasting - we'll broadcast manually with WhatsOnChain
353
+ }
354
+ })
355
+
356
+ console.log('Transaction created successfully (not broadcast yet)')
357
+ console.log(`Transaction ID: ${actionResult.txid}`)
358
+
359
+ // 3. Convert AtomicBEEF to Transaction for manual broadcasting
360
+ if (!actionResult.tx) {
361
+ throw new Error('Transaction creation failed - no transaction returned')
362
+ }
363
+ const tx = Transaction.fromAtomicBEEF(actionResult.tx)
364
+
365
+ // 4. Set up WhatsOnChain broadcaster for mainnet
366
+ const httpClient = new NodejsHttpClient(https)
367
+ const broadcaster = new WhatsOnChainBroadcaster('main', httpClient)
368
+
369
+ // 5. Manually broadcast the transaction using WhatsOnChain
370
+ console.log('Broadcasting transaction with WhatsOnChain...')
371
+ const result = await tx.broadcast(broadcaster)
372
+
373
+ if (result.status === 'success') {
374
+ console.log('✅ Transaction broadcast successful!')
375
+ console.log(`Transaction ID: ${result.txid}`)
376
+ console.log(`View on explorer: https://www.whatsonchain.com/tx/${result.txid}`)
377
+ } else {
378
+ console.log('❌ Broadcasting failed:', result)
379
+ }
380
+
381
+ } catch (error: any) {
382
+ console.error('❌ Error during WhatsOnChain broadcasting:', error)
383
+
384
+ // Common troubleshooting
385
+ if (error.message?.includes('Insufficient funds')) {
386
+ console.log('💡 Make sure your wallet has sufficient mainnet coins')
387
+ } else if (error.message?.includes('no header should have returned false')) {
388
+ console.log('💡 Try restarting your wallet application and ensure it is fully synced')
389
+ }
390
+ }
391
+ }
392
+
393
+ // Run the example
394
+ whatsOnChainBroadcasting()
395
+ ```
396
+
397
+ ## Step 3: Network Configuration (Testnet vs Mainnet)
398
+
399
+ For advanced broadcasting scenarios like custom broadcaster implementations, see the [Custom Broadcasters Guide](../guides/custom-broadcasters.md).
400
+
401
+ **Important**: When using manual broadcasting, ensure your wallet and broadcasters are configured for the same network. If your BRC-100 wallet is connected to testnet, use testnet broadcasters. If it's on mainnet, use mainnet broadcasters. Mismatched networks will cause broadcasting failures.
402
+
403
+ Different networks require different broadcaster configurations:
404
+
405
+ ```typescript
406
+ import { ARC, WhatsOnChainBroadcaster, Broadcaster } from '@bsv/sdk'
407
+
408
+ interface NetworkConfig {
409
+ name: string
410
+ arc: Broadcaster
411
+ whatsOnChain: Broadcaster
412
+ }
413
+
414
+ // Network configurations
415
+ const networks: Record<string, NetworkConfig> = {
416
+ testnet: {
417
+ name: 'BSV Testnet',
418
+ arc: new ARC('https://arc-test.taal.com'),
419
+ whatsOnChain: new WhatsOnChainBroadcaster('test')
420
+ },
421
+
422
+ mainnet: {
423
+ name: 'BSV Mainnet',
424
+ arc: new ARC('https://arc.taal.com', {
425
+ apiKey: process.env.TAAL_API_KEY // Use environment variable for production
426
+ }),
427
+ whatsOnChain: new WhatsOnChainBroadcaster('main')
428
+ }
429
+ }
430
+ ```
431
+
432
+ ## Step 4: Monitoring and Verification
433
+
434
+ After broadcasting, you should verify that your transaction was accepted:
435
+
436
+ ```typescript
437
+ import { Transaction } from '@bsv/sdk'
438
+
439
+ async function verifyTransaction(txid: string, network: 'test' | 'main' = 'test') {
440
+ const baseUrl = network === 'test'
441
+ ? 'https://api.whatsonchain.com/v1/bsv/test'
442
+ : 'https://api.whatsonchain.com/v1/bsv/main'
443
+
444
+ try {
445
+ // Check if transaction exists
446
+ const response = await fetch(`${baseUrl}/tx/${txid}`)
447
+
448
+ if (response.ok) {
449
+ const txData = await response.json()
450
+
451
+ console.log('✅ Transaction found on network')
452
+ console.log('Transaction ID:', txData.txid)
453
+ console.log('Block height:', txData.blockheight || 'Unconfirmed')
454
+ console.log('Confirmations:', txData.confirmations || 0)
455
+
456
+ return txData
457
+ } else if (response.status === 404) {
458
+ console.log('⏳ Transaction not yet visible on network')
459
+ return null
460
+ } else {
461
+ throw new Error(`API error: ${response.status}`)
462
+ }
463
+
464
+ } catch (error) {
465
+ console.error('❌ Error verifying transaction:', error)
466
+ throw error
467
+ }
468
+ }
469
+
470
+ async function waitForTransaction(
471
+ txid: string,
472
+ network: 'test' | 'main' = 'test',
473
+ timeoutMs: number = 30000
474
+ ): Promise<any> {
475
+ const startTime = Date.now()
476
+
477
+ while (Date.now() - startTime < timeoutMs) {
478
+ const txData = await verifyTransaction(txid, network)
479
+
480
+ if (txData) {
481
+ return txData
482
+ }
483
+
484
+ // Transactions can take a few seconds to show up in WhatsOnChain
485
+ // Wait 2 seconds before checking again
486
+ await new Promise(resolve => setTimeout(resolve, 2000))
487
+ }
488
+
489
+ throw new Error(`Transaction ${txid} not found within ${timeoutMs}ms`)
490
+ }
491
+
492
+ // Example usage
493
+ async function monitoringExample(txid: string) {
494
+ try {
495
+ console.log('Waiting for transaction to appear on network...')
496
+ const txData = await waitForTransaction(txid, 'main')
497
+
498
+ console.log('✅ Transaction confirmed:', txData)
499
+
500
+ } catch (error) {
501
+ console.error('❌ Transaction monitoring failed:', error)
502
+ }
503
+ }
504
+
505
+ // Run the example
506
+ monitoringExample('your-transaction-id-here')
507
+ ```
508
+
509
+ ## Summary
510
+
511
+ In this tutorial, you learned about the two main approaches to transaction broadcasting in BSV:
512
+
513
+ ### `WalletClient` Approach
514
+ - ✅ **Simple**: Easy to use with BRC-100 wallets
515
+ - ✅ **Managed**: Wallet handles service selection and fallbacks
516
+ - ✅ **User Control**: Users can configure preferred services
517
+
518
+
519
+ ### Direct Broadcasting Approach
520
+ - ✅ **Full Control**: Choose exactly which service to use
521
+ - ✅ **No Dependencies**: Works without external wallet software
522
+ - ✅ **Custom Logic**: Implement your own retry and fallback logic
523
+ - ✅ **Error Handling**: Direct access to service responses
524
+ - ❌ **More Complex**: Requires more setup and configuration
525
+
526
+
527
+ ### Next Steps
528
+
529
+ - Experiment with different broadcaster configurations
530
+ - Implement custom broadcasters for other services
531
+ - Build monitoring dashboards for your applications
532
+ - Explore advanced features like batch broadcasting
533
+ - Implement robust error handling: See the [Error Handling and Edge Cases Tutorial](./error-handling.md) for comprehensive patterns and the [Custom Broadcasters Guide](../guides/custom-broadcasters.md) for advanced retry logic and failover strategies
534
+
535
+ The broadcasting approach you choose depends on your application's requirements, deployment environment, and control needs. Both approaches are valid and can be used effectively in different scenarios.