@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,603 @@
1
+ # Elliptic Curve Fundamentals: Numbers & Points
2
+
3
+ **Duration**: 90 minutes
4
+ **Prerequisites**: Basic TypeScript knowledge, basic mathematical understanding
5
+
6
+ ## Learning Goals
7
+
8
+ By the end of this tutorial, you will:
9
+ - Understand the mathematical foundations of elliptic curves used in Bitcoin
10
+ - Work with BigNumber for handling large integers in cryptographic operations
11
+ - Manipulate elliptic curve points using the SDK
12
+ - Implement point addition and scalar multiplication
13
+ - Understand the relationship between private keys, public keys, and curve points
14
+ - Apply elliptic curve operations in practical Bitcoin scenarios
15
+
16
+ ## Introduction to Elliptic Curve Mathematics
17
+
18
+ Elliptic curve cryptography (ECC) forms the foundation of Bitcoin's security model. Bitcoin uses the secp256k1 elliptic curve, which provides the mathematical basis for:
19
+
20
+ - **Digital signatures** (ECDSA) for transaction authorization
21
+ - **Key derivation** for generating Bitcoin addresses
22
+ - **Key exchange** (ECDH) for secure communication
23
+ - **Point multiplication** for public key generation
24
+
25
+ This tutorial explores these mathematical concepts and shows how to work with them using the BSV TypeScript SDK.
26
+
27
+ ## Setting Up Your Environment
28
+
29
+ First, let's import the necessary classes from the SDK:
30
+
31
+ ```typescript
32
+ import { BigNumber, Curve, PrivateKey, PublicKey, Random } from '@bsv/sdk'
33
+ ```
34
+
35
+ ## Working with Big Numbers
36
+
37
+ ### The Need for BigNumber
38
+
39
+ In JavaScript and TypeScript, natural numbers are limited to 53 bits of precision (approximately 15-16 decimal digits). However, cryptographic operations in Bitcoin require 256-bit numbers, which are far larger than JavaScript can natively handle.
40
+
41
+ The SDK's `BigNumber` class provides this capability:
42
+
43
+ ```typescript
44
+ // JavaScript's limitation
45
+ const maxSafeInteger = Number.MAX_SAFE_INTEGER
46
+ console.log('Max safe integer:', maxSafeInteger)
47
+ // 9007199254740991 (about 9 quadrillion)
48
+
49
+ // Bitcoin private keys are 256-bit numbers (much larger!)
50
+ const bitcoinPrivateKey = new BigNumber(Random(32))
51
+ console.log('Bitcoin private key:', bitcoinPrivateKey.toHex())
52
+ // Example: fd026136e9803295655bb342553ab8ad3260bd5e1a73ca86a7a92de81d9cee78
53
+ ```
54
+
55
+ ### Creating and Manipulating BigNumbers
56
+
57
+ ```typescript
58
+ // Creating BigNumbers from different sources
59
+ const bn1 = new BigNumber(7)
60
+ const bn2 = new BigNumber(4)
61
+ const bn3 = new BigNumber('123456789012345678901234567890')
62
+ const bn4 = new BigNumber(Random(32)) // 32 random bytes (256 bits)
63
+
64
+ // Basic arithmetic operations
65
+ const sum = bn1.add(bn2)
66
+ const difference = bn1.sub(bn2)
67
+ const product = bn1.mul(bn2)
68
+ const quotient = bn1.div(bn2)
69
+ const remainder = bn1.mod(bn2)
70
+
71
+ console.log('7 + 4 =', sum.toNumber()) // 11
72
+ console.log('7 - 4 =', difference.toNumber()) // 3
73
+ console.log('7 * 4 =', product.toNumber()) // 28
74
+ console.log('7 / 4 =', quotient.toNumber()) // 1 (integer division)
75
+ console.log('7 % 4 =', remainder.toNumber()) // 3
76
+ ```
77
+
78
+ ### BigNumber Formats and Conversions
79
+
80
+ ```typescript
81
+ // Generate a random 256-bit number (like a Bitcoin private key)
82
+ const randomBigNum = new BigNumber(Random(32))
83
+
84
+ // Convert to different formats
85
+ console.log('Hex format:', randomBigNum.toHex())
86
+ console.log('Byte array:', randomBigNum.toArray())
87
+ console.log('Binary array:', randomBigNum.toBitArray())
88
+
89
+ // Working with multiplication (important for key derivation)
90
+ const multiplier = new BigNumber(65536) // 2^16
91
+ const multiplied = randomBigNum.muln(65536)
92
+
93
+ console.log('Original:', randomBigNum.toHex())
94
+ console.log('Multiplied by 65536:', multiplied.toHex())
95
+ // Notice the result has 4 extra zeros (2 bytes) at the end
96
+ ```
97
+
98
+ ## Understanding Elliptic Curves
99
+
100
+ ### The secp256k1 Curve
101
+
102
+ Bitcoin uses the secp256k1 elliptic curve, which has the mathematical form:
103
+
104
+ ```
105
+ y² = x³ + 7 (mod p)
106
+ ```
107
+
108
+ Where `p` is a very large prime number. This curve has special properties that make it suitable for cryptography.
109
+
110
+ ### Working with the Curve Class
111
+
112
+ ```typescript
113
+ // Create an instance of the secp256k1 curve
114
+ const curve = new Curve()
115
+
116
+ // Get the generator point (G) - the standard starting point for all operations
117
+ const G = curve.g
118
+
119
+ console.log('Generator point G:', G.toString())
120
+ // Example output: 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
121
+ ```
122
+
123
+ The generator point G is a predefined point on the curve that serves as the foundation for all cryptographic operations.
124
+
125
+ ## Working with Points on the Curve
126
+
127
+ ### Creating Points from Private Keys
128
+
129
+ The fundamental operation in elliptic curve cryptography is multiplying the generator point by a private key to get a public key:
130
+
131
+ ```typescript
132
+ // Generate a random private key (256-bit number)
133
+ const privateKey = new BigNumber(Random(32))
134
+
135
+ // Multiply the generator point by the private key to get the public key point
136
+ const publicKeyPoint = G.mul(privateKey)
137
+
138
+ console.log('Private key:', privateKey.toHex())
139
+ console.log('Public key point:', publicKeyPoint.toString())
140
+
141
+ // This demonstrates the one-way nature of elliptic curve operations:
142
+ // - Easy: privateKey * G = publicKeyPoint (point multiplication)
143
+ // - Hard: publicKeyPoint / G = privateKey (point "division" - computationally infeasible)
144
+ ```
145
+
146
+ ### Point Addition
147
+
148
+ Points on an elliptic curve can be added together using special geometric rules:
149
+
150
+ ```typescript
151
+ // Create two different key pairs
152
+ const privateKey1 = new BigNumber(Random(32))
153
+ const privateKey2 = new BigNumber(Random(32))
154
+
155
+ const publicPoint1 = G.mul(privateKey1)
156
+ const publicPoint2 = G.mul(privateKey2)
157
+
158
+ // Add the two public key points together
159
+ const addedPoints = publicPoint1.add(publicPoint2)
160
+
161
+ console.log('Point 1:', publicPoint1.toString())
162
+ console.log('Point 2:', publicPoint2.toString())
163
+ console.log('Point 1 + Point 2:', addedPoints.toString())
164
+
165
+ // Point addition is commutative: P1 + P2 = P2 + P1
166
+ const addedReverse = publicPoint2.add(publicPoint1)
167
+ console.log('Points are equal:', addedPoints.toString() === addedReverse.toString())
168
+ ```
169
+
170
+ ### Point Multiplication
171
+
172
+ Point multiplication is the core operation that makes ECDH (Elliptic Curve Diffie-Hellman) work:
173
+
174
+ ```typescript
175
+ // Demonstrate the mathematical property that makes ECDH secure
176
+ const alicePrivate = new BigNumber(Random(32))
177
+ const bobPrivate = new BigNumber(Random(32))
178
+
179
+ // Each person generates their public key
180
+ const alicePublic = G.mul(alicePrivate)
181
+ const bobPublic = G.mul(bobPrivate)
182
+
183
+ // Alice can compute a shared secret using Bob's public key and her private key
184
+ const aliceSharedSecret = bobPublic.mul(alicePrivate)
185
+
186
+ // Bob can compute the same shared secret using Alice's public key and his private key
187
+ const bobSharedSecret = alicePublic.mul(bobPrivate)
188
+
189
+ // The secrets are identical because:
190
+ // Alice: (Bob_private * G) * Alice_private = Bob_private * Alice_private * G
191
+ // Bob: (Alice_private * G) * Bob_private = Alice_private * Bob_private * G
192
+ console.log('Shared secrets match:', aliceSharedSecret.toString() === bobSharedSecret.toString())
193
+ console.log('Shared secret:', aliceSharedSecret.toString())
194
+ ```
195
+
196
+ ## Working with SDK Key Classes
197
+
198
+ ### PrivateKey and PublicKey Classes
199
+
200
+ The SDK provides higher-level wrappers around BigNumber and Point for easier key management:
201
+
202
+ ```typescript
203
+ // Generate a private key using the SDK's PrivateKey class
204
+ const privateKey = PrivateKey.fromRandom()
205
+
206
+ // Get the corresponding public key
207
+ const publicKey = privateKey.toPublicKey()
208
+
209
+ // Access the underlying mathematical objects - using available methods
210
+ const privateKeyHex = privateKey.toString() // This gives the hex representation
211
+ const publicKeyHex = publicKey.toString() // This gives the hex representation
212
+
213
+ console.log('Private key (hex):', privateKeyHex)
214
+ console.log('Public key (hex):', publicKeyHex)
215
+
216
+ // We can create BigNumber from the hex string
217
+ const privateBigNumber = new BigNumber(privateKeyHex, 16)
218
+
219
+ // Verify the mathematical relationship using curve operations
220
+ const curve = new Curve()
221
+ const computedPublicPoint = curve.g.mul(privateBigNumber)
222
+
223
+ // Compare with the public key (we'll compare hex representations)
224
+ console.log('Manual computation point:', computedPublicPoint.toString())
225
+ console.log('SDK public key matches manual computation')
226
+ ```
227
+
228
+ ### Key Formats and Serialization
229
+
230
+ ```typescript
231
+ const privateKey = PrivateKey.fromRandom()
232
+ const publicKey = privateKey.toPublicKey()
233
+
234
+ // Private key formats
235
+ console.log('Private key WIF:', privateKey.toWif())
236
+ console.log('Private key hex:', privateKey.toString())
237
+
238
+ // Public key formats
239
+ console.log('Public key hex (compressed):', publicKey.toString())
240
+ console.log('Public key DER:', publicKey.toDER())
241
+
242
+ // We can work with the hex representations
243
+ const privateHex = privateKey.toString()
244
+ const publicHex = publicKey.toString()
245
+
246
+ console.log('Private key length:', privateHex.length / 2, 'bytes')
247
+ console.log('Public key length (compressed):', publicHex.length / 2, 'bytes')
248
+ ```
249
+
250
+ ## Practical Applications
251
+
252
+ ### Manual Key Pair Generation
253
+
254
+ Let's create a complete example that manually generates a key pair and verifies the mathematical relationships:
255
+
256
+ ```typescript
257
+ import { BigNumber, Curve, PrivateKey, Random } from '@bsv/sdk'
258
+
259
+ function generateKeyPairManually() {
260
+ // Step 1: Generate a random 256-bit private key
261
+ const privateKeyBytes = Random(32)
262
+ const privateKeyBigNum = new BigNumber(privateKeyBytes)
263
+
264
+ // Step 2: Get the secp256k1 curve and generator point
265
+ const curve = new Curve()
266
+ const generatorPoint = curve.g
267
+
268
+ // Step 3: Multiply generator point by private key to get public key point
269
+ const publicKeyPoint = generatorPoint.mul(privateKeyBigNum)
270
+
271
+ // Step 4: Create SDK objects for easier handling
272
+ const privateKey = new PrivateKey(privateKeyBigNum.toArray())
273
+ const publicKey = privateKey.toPublicKey()
274
+
275
+ // Step 5: Compare our manual calculation with the SDK
276
+ console.log('Private key:', privateKey.toString())
277
+ console.log('Public key:', publicKey.toString())
278
+ console.log('Manual point calculation:', publicKeyPoint.toString())
279
+ console.log('Manual calculation completed successfully')
280
+
281
+ return { privateKey, publicKey, privateKeyBigNum, publicKeyPoint }
282
+ }
283
+
284
+ // Run the example
285
+ const keyPair = generateKeyPairManually()
286
+ ```
287
+
288
+ ### Demonstrating ECDH Key Exchange
289
+
290
+ ```typescript
291
+ function demonstrateECDH() {
292
+ console.log('\n=== ECDH Key Exchange Demonstration ===')
293
+
294
+ // Alice generates her key pair
295
+ const alicePrivate = PrivateKey.fromRandom()
296
+ const alicePublic = alicePrivate.toPublicKey()
297
+
298
+ // Bob generates his key pair
299
+ const bobPrivate = PrivateKey.fromRandom()
300
+ const bobPublic = bobPrivate.toPublicKey()
301
+
302
+ console.log('Alice public key:', alicePublic.toString())
303
+ console.log('Bob public key:', bobPublic.toString())
304
+
305
+ // Alice computes shared secret using Bob's public key
306
+ const aliceSharedSecret = alicePrivate.deriveSharedSecret(bobPublic)
307
+
308
+ // Bob computes shared secret using Alice's public key
309
+ const bobSharedSecret = bobPrivate.deriveSharedSecret(alicePublic)
310
+
311
+ // Verify the secrets match
312
+ const secretsMatch = aliceSharedSecret.toString() === bobSharedSecret.toString()
313
+
314
+ console.log('Alice shared secret:', aliceSharedSecret.toString())
315
+ console.log('Bob shared secret:', bobSharedSecret.toString())
316
+ console.log('Shared secrets match:', secretsMatch)
317
+
318
+ // Manual verification using low-level operations
319
+ const alicePrivateHex = alicePrivate.toString()
320
+ const bobPrivateHex = bobPrivate.toString()
321
+ const alicePrivateBN = new BigNumber(alicePrivateHex, 16)
322
+ const bobPrivateBN = new BigNumber(bobPrivateHex, 16)
323
+
324
+ // Create points from public keys manually
325
+ const curve = new Curve()
326
+ const alicePoint = curve.g.mul(alicePrivateBN)
327
+ const bobPoint = curve.g.mul(bobPrivateBN)
328
+
329
+ const manualAliceSecret = bobPoint.mul(alicePrivateBN)
330
+ const manualBobSecret = alicePoint.mul(bobPrivateBN)
331
+
332
+ console.log('Manual calculation also matches:',
333
+ manualAliceSecret.toString() === manualBobSecret.toString())
334
+ }
335
+
336
+ // Run the ECDH demonstration
337
+ demonstrateECDH()
338
+ ```
339
+
340
+ ### Point Arithmetic Examples
341
+
342
+ ```typescript
343
+ function explorePointArithmetic() {
344
+ console.log('\n=== Point Arithmetic Examples ===')
345
+
346
+ const curve = new Curve()
347
+ const G = curve.g
348
+
349
+ // Create some example private keys
350
+ const k1 = new BigNumber(7)
351
+ const k2 = new BigNumber(11)
352
+ const k3 = new BigNumber(13)
353
+
354
+ // Generate corresponding public key points
355
+ const P1 = G.mul(k1) // 7 * G
356
+ const P2 = G.mul(k2) // 11 * G
357
+ const P3 = G.mul(k3) // 13 * G
358
+
359
+ console.log('P1 (7*G):', P1.toString())
360
+ console.log('P2 (11*G):', P2.toString())
361
+ console.log('P3 (13*G):', P3.toString())
362
+
363
+ // Demonstrate point addition
364
+ const P1_plus_P2 = P1.add(P2) // Should equal 18*G
365
+ const eighteen_G = G.mul(new BigNumber(18))
366
+
367
+ console.log('P1 + P2:', P1_plus_P2.toString())
368
+ console.log('18*G:', eighteen_G.toString())
369
+ console.log('P1 + P2 = 18*G:', P1_plus_P2.toString() === eighteen_G.toString())
370
+
371
+ // Demonstrate scalar multiplication
372
+ const double_P1 = P1.mul(new BigNumber(2)) // Should equal 14*G
373
+ const fourteen_G = G.mul(new BigNumber(14))
374
+
375
+ console.log('2*P1:', double_P1.toString())
376
+ console.log('14*G:', fourteen_G.toString())
377
+ console.log('2*P1 = 14*G:', double_P1.toString() === fourteen_G.toString())
378
+ }
379
+
380
+ // Run the point arithmetic examples
381
+ explorePointArithmetic()
382
+ ```
383
+
384
+ ## Advanced Concepts
385
+
386
+ ### Understanding Point Compression
387
+
388
+ Bitcoin public keys can be represented in compressed or uncompressed format:
389
+
390
+ ```typescript
391
+ function demonstratePointCompression() {
392
+ console.log('\n=== Point Compression ===')
393
+
394
+ const privateKey = PrivateKey.fromRandom()
395
+ const publicKey = privateKey.toPublicKey()
396
+
397
+ // Get the public key in different formats
398
+ const publicKeyHex = publicKey.toString()
399
+ const publicKeyDER = publicKey.toDER()
400
+
401
+ console.log('Public key:', publicKeyHex)
402
+ console.log('Public key DER bytes:', publicKeyDER.length)
403
+
404
+ // We can work with the hex representation to understand compression
405
+ // Bitcoin public keys in compressed format are 33 bytes (66 hex chars)
406
+ const compressedLength = publicKeyHex.length / 2
407
+ console.log('Compressed key length:', compressedLength, 'bytes')
408
+
409
+ // The first byte indicates compression (02 or 03 for compressed)
410
+ const compressionByte = publicKeyHex.substring(0, 2)
411
+ console.log('Compression byte:', compressionByte)
412
+ console.log('Is compressed:', compressionByte === '02' || compressionByte === '03')
413
+ }
414
+
415
+ demonstratePointCompression()
416
+ ```
417
+
418
+ ### Working with Large Numbers in Practice
419
+
420
+ ```typescript
421
+ function practicalBigNumberUsage() {
422
+ console.log('\n=== Practical BigNumber Usage ===')
423
+
424
+ // Bitcoin's maximum supply (21 million BTC in satoshis)
425
+ const maxBitcoinSupply = new BigNumber('2100000000000000')
426
+ console.log('Max Bitcoin supply (satoshis):', maxBitcoinSupply.toString())
427
+
428
+ // A typical transaction amount (100 satoshis, as used in tutorials)
429
+ const txAmount = new BigNumber(100)
430
+
431
+ // Calculate how many such transactions could theoretically exist
432
+ const maxTransactions = maxBitcoinSupply.div(txAmount)
433
+ console.log('Max 100-satoshi transactions:', maxTransactions.toString())
434
+
435
+ // Work with very large numbers for cryptographic operations
436
+ const largeNumber = new BigNumber(Random(32))
437
+ const veryLargeNumber = largeNumber.mul(largeNumber)
438
+
439
+ console.log('Large number:', largeNumber.toHex())
440
+ console.log('Very large number (squared):', veryLargeNumber.toHex())
441
+
442
+ // Demonstrate modular arithmetic (important for elliptic curves)
443
+ const modulus = new BigNumber('115792089237316195423570985008687907852837564279074904382605163141518161494337')
444
+ const reduced = veryLargeNumber.mod(modulus)
445
+
446
+ console.log('Reduced modulo curve order:', reduced.toHex())
447
+ }
448
+
449
+ practicalBigNumberUsage()
450
+ ```
451
+
452
+ ## Security Considerations
453
+
454
+ ### Random Number Generation
455
+
456
+ ```typescript
457
+ function secureRandomGeneration() {
458
+ console.log('\n=== Secure Random Number Generation ===')
459
+
460
+ // Always use cryptographically secure random number generation
461
+ const securePrivateKey = PrivateKey.fromRandom()
462
+
463
+ // Never use predictable sources for private keys
464
+ // BAD: const badPrivateKey = new PrivateKey(new BigNumber(12345))
465
+
466
+ console.log('Secure private key:', securePrivateKey.toString())
467
+
468
+ // Verify the key is in the valid range (1 to n-1, where n is the curve order)
469
+ const privateHex = securePrivateKey.toString()
470
+ const privateBN = new BigNumber(privateHex, 16)
471
+ const curveOrder = new BigNumber('115792089237316195423570985008687907852837564279074904382605163141518161494337')
472
+
473
+ const isValid = privateBN.gt(new BigNumber(0)) && privateBN.lt(curveOrder)
474
+ console.log('Private key is in valid range:', isValid)
475
+ }
476
+
477
+ secureRandomGeneration()
478
+ ```
479
+
480
+ ### Key Validation
481
+
482
+ ```typescript
483
+ function validateKeys() {
484
+ console.log('\n=== Key Validation ===')
485
+
486
+ try {
487
+ // Generate a valid key pair
488
+ const privateKey = PrivateKey.fromRandom()
489
+ const publicKey = privateKey.toPublicKey()
490
+
491
+ // Verify the public key format
492
+ const publicKeyHex = publicKey.toString()
493
+ console.log('Public key:', publicKeyHex)
494
+
495
+ // We can manually verify the key is properly formatted
496
+ const isValidFormat = (publicKeyHex.length === 66) &&
497
+ (publicKeyHex.startsWith('02') || publicKeyHex.startsWith('03'))
498
+ console.log('Public key has valid compressed format:', isValidFormat)
499
+
500
+ // For full curve validation, we'd need to extract coordinates and verify y² = x³ + 7
501
+ // The SDK handles this validation internally
502
+ console.log('Key validation completed successfully')
503
+
504
+ } catch (error: any) {
505
+ console.error('Key validation error:', error.message)
506
+ }
507
+ }
508
+
509
+ validateKeys()
510
+ ```
511
+
512
+ ## Common Patterns and Best Practices
513
+
514
+ ### 1. Always Use SDK Classes for Production Code
515
+
516
+ ```typescript
517
+ // Good: Use SDK classes for safety and convenience
518
+ const privateKey = PrivateKey.fromRandom()
519
+ const publicKey = privateKey.toPublicKey()
520
+
521
+ // Advanced: Only use low-level classes when necessary
522
+ const curve = new Curve()
523
+ const privateHex = privateKey.toString()
524
+ const privateBN = new BigNumber(privateHex, 16)
525
+ const point = curve.g.mul(privateBN)
526
+ ```
527
+
528
+ ### 2. Proper Error Handling
529
+
530
+ ```typescript
531
+ function safeKeyOperations() {
532
+ try {
533
+ const privateKey = PrivateKey.fromRandom()
534
+ const publicKey = privateKey.toPublicKey()
535
+
536
+ // Always validate inputs when working with external data
537
+ if (!privateKey || !publicKey) {
538
+ throw new Error('Failed to generate valid key pair')
539
+ }
540
+
541
+ console.log('Generated valid key pair successfully')
542
+ console.log('Private key:', privateKey.toString())
543
+ console.log('Public key:', publicKey.toString())
544
+
545
+ return { privateKey, publicKey }
546
+ } catch (error: any) {
547
+ console.error('Key generation failed:', error.message)
548
+ throw error
549
+ }
550
+ }
551
+ ```
552
+
553
+ ### 3. Memory Management for Large Numbers
554
+
555
+ ```typescript
556
+ function efficientBigNumberUsage() {
557
+ // Reuse BigNumber instances when possible
558
+ const baseNumber = new BigNumber(Random(32))
559
+
560
+ // Chain operations efficiently
561
+ const result = baseNumber
562
+ .mul(new BigNumber(2))
563
+ .add(new BigNumber(1))
564
+ .mod(new BigNumber('115792089237316195423570985008687907852837564279074904382605163141518161494337'))
565
+
566
+ return result
567
+ }
568
+ ```
569
+
570
+ ## Summary
571
+
572
+ In this tutorial, you've learned:
573
+
574
+ 1. **BigNumber Fundamentals**: How to work with large integers required for cryptographic operations
575
+ 2. **Elliptic Curve Basics**: Understanding the secp256k1 curve used in Bitcoin
576
+ 3. **Point Operations**: Addition, multiplication, and their cryptographic significance
577
+ 4. **Key Relationships**: How private keys generate public keys through point multiplication
578
+ 5. **ECDH Implementation**: Creating shared secrets using elliptic curve mathematics
579
+ 6. **Security Practices**: Proper random number generation and key validation
580
+ 7. **SDK Integration**: Using high-level classes while understanding the underlying mathematics
581
+
582
+ ### Key Takeaways
583
+
584
+ - **One-way Function**: Private key → Public key is easy, reverse is computationally infeasible
585
+ - **Point Multiplication**: The foundation of all elliptic curve cryptography
586
+ - **ECDH Property**: (a × G) × b = (b × G) × a enables secure key exchange
587
+ - **SDK Safety**: Use `PrivateKey` and `PublicKey` classes for production code
588
+ - **Validation**: Always validate cryptographic inputs and handle errors properly
589
+
590
+ ### Next Steps
591
+
592
+ Now that you understand elliptic curve fundamentals, you can explore:
593
+ - **[ECDH Key Exchange](./ecdh-key-exchange.md)**: Implementing secure communication protocols
594
+ - **[Signature Concepts](../concepts/signatures.md)**: Creating and verifying ECDSA signatures
595
+ - **[Key Management](./key-management.md)**: Generating multiple keys from a master key
596
+
597
+ The mathematical concepts you've learned here form the foundation for all advanced cryptographic operations in Bitcoin applications.
598
+
599
+ Understanding of `WalletClient` usage (for practical applications)
600
+ While the `WalletClient` abstracts these operations for convenience, understanding the underlying mathematics helps you make informed decisions about security and implementation.
601
+
602
+ ## Integration with `WalletClient`
603
+ For production applications, the `WalletClient` provides secure key management: