@bsv/sdk 2.1.0 → 2.1.1

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 (383) hide show
  1. package/README.md +7 -7
  2. package/dist/cjs/package.json +1 -1
  3. package/dist/cjs/src/auth/Peer.js +8 -13
  4. package/dist/cjs/src/auth/Peer.js.map +1 -1
  5. package/dist/cjs/src/auth/SessionManager.js +4 -7
  6. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  7. package/dist/cjs/src/auth/certificates/MasterCertificate.js +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  9. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  10. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  11. package/dist/cjs/src/auth/clients/AuthFetch.js +32 -32
  12. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  13. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  14. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  15. package/dist/cjs/src/compat/ECIES.js +29 -34
  16. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  17. package/dist/cjs/src/compat/HD.js +9 -4
  18. package/dist/cjs/src/compat/HD.js.map +1 -1
  19. package/dist/cjs/src/compat/Mnemonic.js +12 -12
  20. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  21. package/dist/cjs/src/identity/ContactsManager.js +172 -232
  22. package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
  23. package/dist/cjs/src/identity/IdentityClient.js +122 -55
  24. package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
  25. package/dist/cjs/src/kvstore/GlobalKVStore.js +30 -31
  26. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  27. package/dist/cjs/src/kvstore/LocalKVStore.js +9 -9
  28. package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
  29. package/dist/cjs/src/kvstore/kvStoreInterpreter.js +2 -2
  30. package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
  31. package/dist/cjs/src/messages/SignedMessage.js +1 -1
  32. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  33. package/dist/cjs/src/overlay-tools/Historian.js +1 -1
  34. package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
  35. package/dist/cjs/src/overlay-tools/LookupResolver.js +139 -46
  36. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  37. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +75 -146
  38. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  39. package/dist/cjs/src/primitives/AESGCM.js +2 -2
  40. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  41. package/dist/cjs/src/primitives/BigNumber.js +164 -148
  42. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  43. package/dist/cjs/src/primitives/Curve.js +17 -15
  44. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  45. package/dist/cjs/src/primitives/ECDSA.js +12 -7
  46. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  47. package/dist/cjs/src/primitives/Hash.js +140 -56
  48. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  49. package/dist/cjs/src/primitives/JacobianPoint.js +8 -8
  50. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  51. package/dist/cjs/src/primitives/K256.js +3 -3
  52. package/dist/cjs/src/primitives/K256.js.map +1 -1
  53. package/dist/cjs/src/primitives/Point.js +36 -40
  54. package/dist/cjs/src/primitives/Point.js.map +1 -1
  55. package/dist/cjs/src/primitives/PrivateKey.js +4 -4
  56. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  57. package/dist/cjs/src/primitives/PublicKey.js +4 -4
  58. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  59. package/dist/cjs/src/primitives/Random.js +10 -14
  60. package/dist/cjs/src/primitives/Random.js.map +1 -1
  61. package/dist/cjs/src/primitives/ReaderUint8Array.js +6 -6
  62. package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -1
  63. package/dist/cjs/src/primitives/Schnorr.js +2 -2
  64. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  65. package/dist/cjs/src/primitives/Secp256r1.js +2 -1
  66. package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
  67. package/dist/cjs/src/primitives/Signature.js +8 -8
  68. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  69. package/dist/cjs/src/primitives/TransactionSignature.js +20 -21
  70. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  71. package/dist/cjs/src/primitives/utils.js +39 -46
  72. package/dist/cjs/src/primitives/utils.js.map +1 -1
  73. package/dist/cjs/src/registry/RegistryClient.js +31 -23
  74. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  75. package/dist/cjs/src/remittance/RemittanceManager.js +19 -18
  76. package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -1
  77. package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -1
  78. package/dist/cjs/src/script/Script.js +93 -170
  79. package/dist/cjs/src/script/Script.js.map +1 -1
  80. package/dist/cjs/src/script/ScriptEvaluationError.js +2 -2
  81. package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -1
  82. package/dist/cjs/src/script/Spend.js +14 -12
  83. package/dist/cjs/src/script/Spend.js.map +1 -1
  84. package/dist/cjs/src/script/templates/PushDrop.js +22 -18
  85. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  86. package/dist/cjs/src/script/templates/RPuzzle.js +2 -4
  87. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  88. package/dist/cjs/src/storage/StorageDownloader.js +42 -9
  89. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
  90. package/dist/cjs/src/totp/totp.js +1 -1
  91. package/dist/cjs/src/totp/totp.js.map +1 -1
  92. package/dist/cjs/src/transaction/Beef.js +239 -192
  93. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  94. package/dist/cjs/src/transaction/BeefConstants.js +19 -0
  95. package/dist/cjs/src/transaction/BeefConstants.js.map +1 -0
  96. package/dist/cjs/src/transaction/BeefTx.js +12 -12
  97. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  98. package/dist/cjs/src/transaction/MerklePath.js +4 -4
  99. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  100. package/dist/cjs/src/transaction/Transaction.js +49 -52
  101. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  102. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  103. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  104. package/dist/cjs/src/transaction/http/BinaryFetchClient.js +9 -9
  105. package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
  106. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +9 -9
  107. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  108. package/dist/cjs/src/wallet/CachedKeyDeriver.js +1 -1
  109. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  110. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  111. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  112. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  113. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  114. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +9 -9
  115. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  116. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +92 -92
  117. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  118. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  119. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  120. package/dist/cjs/src/wallet/substrates/XDM.js +4 -4
  121. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  122. package/dist/cjs/src/wallet/substrates/window.CWI.js +2 -2
  123. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  124. package/dist/cjs/src/wallet/validationHelpers.js +9 -9
  125. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
  126. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  127. package/dist/esm/src/auth/Peer.js +25 -13
  128. package/dist/esm/src/auth/Peer.js.map +1 -1
  129. package/dist/esm/src/auth/SessionManager.js +4 -7
  130. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  131. package/dist/esm/src/auth/certificates/MasterCertificate.js +1 -1
  132. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  133. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
  134. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  135. package/dist/esm/src/auth/clients/AuthFetch.js +32 -32
  136. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  137. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +4 -4
  138. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  139. package/dist/esm/src/compat/ECIES.js +29 -34
  140. package/dist/esm/src/compat/ECIES.js.map +1 -1
  141. package/dist/esm/src/compat/HD.js +9 -4
  142. package/dist/esm/src/compat/HD.js.map +1 -1
  143. package/dist/esm/src/compat/Mnemonic.js +12 -12
  144. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  145. package/dist/esm/src/identity/ContactsManager.js +172 -232
  146. package/dist/esm/src/identity/ContactsManager.js.map +1 -1
  147. package/dist/esm/src/identity/IdentityClient.js +122 -55
  148. package/dist/esm/src/identity/IdentityClient.js.map +1 -1
  149. package/dist/esm/src/kvstore/GlobalKVStore.js +30 -31
  150. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  151. package/dist/esm/src/kvstore/LocalKVStore.js +9 -9
  152. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  153. package/dist/esm/src/kvstore/kvStoreInterpreter.js +2 -2
  154. package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
  155. package/dist/esm/src/messages/SignedMessage.js +1 -1
  156. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  157. package/dist/esm/src/overlay-tools/Historian.js +1 -1
  158. package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
  159. package/dist/esm/src/overlay-tools/LookupResolver.js +139 -46
  160. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  161. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +74 -146
  162. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  163. package/dist/esm/src/primitives/AESGCM.js +2 -2
  164. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  165. package/dist/esm/src/primitives/BigNumber.js +167 -154
  166. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  167. package/dist/esm/src/primitives/Curve.js +17 -15
  168. package/dist/esm/src/primitives/Curve.js.map +1 -1
  169. package/dist/esm/src/primitives/ECDSA.js +12 -7
  170. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  171. package/dist/esm/src/primitives/Hash.js +140 -56
  172. package/dist/esm/src/primitives/Hash.js.map +1 -1
  173. package/dist/esm/src/primitives/JacobianPoint.js +8 -8
  174. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  175. package/dist/esm/src/primitives/K256.js +3 -3
  176. package/dist/esm/src/primitives/K256.js.map +1 -1
  177. package/dist/esm/src/primitives/Point.js +36 -40
  178. package/dist/esm/src/primitives/Point.js.map +1 -1
  179. package/dist/esm/src/primitives/PrivateKey.js +4 -4
  180. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  181. package/dist/esm/src/primitives/PublicKey.js +4 -4
  182. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  183. package/dist/esm/src/primitives/Random.js +10 -14
  184. package/dist/esm/src/primitives/Random.js.map +1 -1
  185. package/dist/esm/src/primitives/ReaderUint8Array.js +6 -6
  186. package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -1
  187. package/dist/esm/src/primitives/Schnorr.js +1 -1
  188. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  189. package/dist/esm/src/primitives/Secp256r1.js +2 -1
  190. package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
  191. package/dist/esm/src/primitives/Signature.js +8 -8
  192. package/dist/esm/src/primitives/Signature.js.map +1 -1
  193. package/dist/esm/src/primitives/TransactionSignature.js +20 -21
  194. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  195. package/dist/esm/src/primitives/utils.js +39 -48
  196. package/dist/esm/src/primitives/utils.js.map +1 -1
  197. package/dist/esm/src/registry/RegistryClient.js +31 -23
  198. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  199. package/dist/esm/src/remittance/RemittanceManager.js +19 -18
  200. package/dist/esm/src/remittance/RemittanceManager.js.map +1 -1
  201. package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -1
  202. package/dist/esm/src/script/Script.js +93 -170
  203. package/dist/esm/src/script/Script.js.map +1 -1
  204. package/dist/esm/src/script/ScriptEvaluationError.js +2 -2
  205. package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -1
  206. package/dist/esm/src/script/Spend.js +14 -12
  207. package/dist/esm/src/script/Spend.js.map +1 -1
  208. package/dist/esm/src/script/templates/PushDrop.js +4 -3
  209. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  210. package/dist/esm/src/script/templates/RPuzzle.js +2 -4
  211. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  212. package/dist/esm/src/storage/StorageDownloader.js +1 -1
  213. package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
  214. package/dist/esm/src/totp/totp.js +1 -1
  215. package/dist/esm/src/totp/totp.js.map +1 -1
  216. package/dist/esm/src/transaction/Beef.js +229 -186
  217. package/dist/esm/src/transaction/Beef.js.map +1 -1
  218. package/dist/esm/src/transaction/BeefConstants.js +16 -0
  219. package/dist/esm/src/transaction/BeefConstants.js.map +1 -0
  220. package/dist/esm/src/transaction/BeefTx.js +3 -3
  221. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  222. package/dist/esm/src/transaction/MerklePath.js +4 -4
  223. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  224. package/dist/esm/src/transaction/Transaction.js +49 -52
  225. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  226. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
  227. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  228. package/dist/esm/src/transaction/http/BinaryFetchClient.js +9 -9
  229. package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
  230. package/dist/esm/src/transaction/http/DefaultHttpClient.js +9 -9
  231. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  232. package/dist/esm/src/wallet/CachedKeyDeriver.js +1 -1
  233. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  234. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  235. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  236. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -4
  237. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  238. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js +9 -9
  239. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  240. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +92 -92
  241. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  242. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +387 -711
  243. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  244. package/dist/esm/src/wallet/substrates/XDM.js +4 -4
  245. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  246. package/dist/esm/src/wallet/substrates/window.CWI.js +2 -2
  247. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  248. package/dist/esm/src/wallet/validationHelpers.js +9 -9
  249. package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
  250. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  251. package/dist/types/src/auth/Peer.d.ts +13 -0
  252. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  253. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  254. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  255. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  256. package/dist/types/src/compat/HD.d.ts.map +1 -1
  257. package/dist/types/src/identity/ContactsManager.d.ts +18 -0
  258. package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
  259. package/dist/types/src/identity/IdentityClient.d.ts +47 -8
  260. package/dist/types/src/identity/IdentityClient.d.ts.map +1 -1
  261. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  262. package/dist/types/src/overlay-tools/LookupResolver.d.ts +59 -1
  263. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  264. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +18 -3
  265. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  266. package/dist/types/src/primitives/BigNumber.d.ts +13 -3
  267. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  268. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  269. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  270. package/dist/types/src/primitives/Hash.d.ts +3 -3
  271. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  272. package/dist/types/src/primitives/JacobianPoint.d.ts +3 -1
  273. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  274. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  275. package/dist/types/src/primitives/Random.d.ts +2 -2
  276. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  277. package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -1
  278. package/dist/types/src/primitives/Schnorr.d.ts +2 -1
  279. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  280. package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
  281. package/dist/types/src/primitives/utils.d.ts +2 -4
  282. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  283. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  284. package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -1
  285. package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -1
  286. package/dist/types/src/script/Script.d.ts +15 -8
  287. package/dist/types/src/script/Script.d.ts.map +1 -1
  288. package/dist/types/src/script/Spend.d.ts.map +1 -1
  289. package/dist/types/src/script/templates/PushDrop.d.ts +3 -1
  290. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  291. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  292. package/dist/types/src/transaction/Beef.d.ts +46 -8
  293. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  294. package/dist/types/src/transaction/BeefConstants.d.ts +15 -0
  295. package/dist/types/src/transaction/BeefConstants.d.ts.map +1 -0
  296. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  297. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  298. package/dist/types/src/wallet/KeyDeriver.d.ts +1 -1
  299. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  300. package/dist/types/src/wallet/Wallet.interfaces.d.ts +2 -2
  301. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  302. package/dist/types/src/wallet/WalletClient.d.ts +7 -7
  303. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  304. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
  305. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  306. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +36 -7
  307. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  308. package/dist/types/src/wallet/substrates/window.CWI.d.ts +8 -8
  309. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  310. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  311. package/dist/umd/bundle.js +3 -3
  312. package/package.json +1 -1
  313. package/src/auth/Peer.ts +26 -13
  314. package/src/auth/SessionManager.ts +4 -7
  315. package/src/auth/certificates/MasterCertificate.ts +1 -1
  316. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +1 -1
  317. package/src/auth/clients/AuthFetch.ts +41 -41
  318. package/src/auth/transports/SimplifiedFetchTransport.ts +4 -4
  319. package/src/compat/ECIES.ts +29 -34
  320. package/src/compat/HD.ts +10 -5
  321. package/src/compat/Mnemonic.ts +11 -11
  322. package/src/compat/__tests/HD.test.ts +19 -0
  323. package/src/identity/ContactsManager.ts +194 -257
  324. package/src/identity/IdentityClient.ts +155 -66
  325. package/src/identity/__tests/IdentityClient.test.ts +25 -1
  326. package/src/kvstore/GlobalKVStore.ts +31 -32
  327. package/src/kvstore/LocalKVStore.ts +8 -8
  328. package/src/kvstore/kvStoreInterpreter.ts +2 -2
  329. package/src/messages/SignedMessage.ts +1 -1
  330. package/src/overlay-tools/Historian.ts +1 -1
  331. package/src/overlay-tools/LookupResolver.ts +182 -45
  332. package/src/overlay-tools/SHIPBroadcaster.ts +92 -168
  333. package/src/primitives/AESGCM.ts +2 -2
  334. package/src/primitives/BigNumber.ts +122 -113
  335. package/src/primitives/Curve.ts +16 -15
  336. package/src/primitives/ECDSA.ts +10 -8
  337. package/src/primitives/Hash.ts +152 -53
  338. package/src/primitives/JacobianPoint.ts +13 -11
  339. package/src/primitives/K256.ts +3 -3
  340. package/src/primitives/Point.ts +35 -38
  341. package/src/primitives/PrivateKey.ts +3 -3
  342. package/src/primitives/PublicKey.ts +3 -3
  343. package/src/primitives/Random.ts +11 -14
  344. package/src/primitives/ReaderUint8Array.ts +7 -7
  345. package/src/primitives/Schnorr.ts +2 -1
  346. package/src/primitives/Secp256r1.ts +2 -1
  347. package/src/primitives/Signature.ts +8 -8
  348. package/src/primitives/TransactionSignature.ts +16 -16
  349. package/src/primitives/utils.ts +37 -47
  350. package/src/registry/RegistryClient.ts +25 -25
  351. package/src/remittance/RemittanceManager.ts +17 -18
  352. package/src/remittance/modules/BasicBRC29.ts +2 -5
  353. package/src/script/Script.ts +114 -170
  354. package/src/script/ScriptEvaluationError.ts +2 -2
  355. package/src/script/Spend.ts +14 -15
  356. package/src/script/templates/PushDrop.ts +5 -3
  357. package/src/script/templates/RPuzzle.ts +2 -4
  358. package/src/storage/StorageDownloader.ts +1 -1
  359. package/src/totp/totp.ts +1 -1
  360. package/src/transaction/Beef.ts +241 -203
  361. package/src/transaction/BeefConstants.ts +16 -0
  362. package/src/transaction/BeefTx.ts +3 -3
  363. package/src/transaction/MerklePath.ts +4 -4
  364. package/src/transaction/Transaction.ts +48 -51
  365. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +1 -1
  366. package/src/transaction/http/BinaryFetchClient.ts +8 -8
  367. package/src/transaction/http/DefaultHttpClient.ts +8 -8
  368. package/src/wallet/CachedKeyDeriver.ts +8 -6
  369. package/src/wallet/KeyDeriver.ts +1 -1
  370. package/src/wallet/Wallet.interfaces.ts +2 -4
  371. package/src/wallet/WalletClient.ts +8 -8
  372. package/src/wallet/WalletError.ts +1 -1
  373. package/src/wallet/__tests/WalletClient.substrate.test.ts +10 -6
  374. package/src/wallet/substrates/HTTPWalletJSON.ts +22 -21
  375. package/src/wallet/substrates/ReactNativeWebView.ts +9 -9
  376. package/src/wallet/substrates/WalletWireProcessor.ts +83 -83
  377. package/src/wallet/substrates/WalletWireTransceiver.ts +528 -938
  378. package/src/wallet/substrates/XDM.ts +4 -4
  379. package/src/wallet/substrates/__tests/HTTPWalletJSON.test.ts +38 -25
  380. package/src/wallet/substrates/__tests/ReactNativeWebView.test.ts +174 -0
  381. package/src/wallet/substrates/__tests/window.CWI.test.ts +256 -0
  382. package/src/wallet/substrates/window.CWI.ts +10 -10
  383. package/src/wallet/validationHelpers.ts +9 -9
@@ -1,4 +1,4 @@
1
- const BufferCtor = typeof globalThis !== 'undefined' ? globalThis.Buffer : undefined;
1
+ const BufferCtor = typeof globalThis === 'undefined' ? undefined : globalThis.Buffer;
2
2
  const CAN_USE_BUFFER = BufferCtor != null && typeof BufferCtor.from === 'function';
3
3
  const HEX_CHAR_TO_VALUE = new Int8Array(256).fill(-1);
4
4
  for (let i = 0; i < 10; i++) {
@@ -59,9 +59,9 @@ export default class BigNumber {
59
59
  static MIN_SAFE_INTEGER_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);
60
60
  static MAX_IMULN_ARG = 0x4000000 - 1;
61
61
  static MAX_NUMBER_CONSTRUCTOR_MAG_BIGINT = (1n << 53n) - 1n;
62
- _magnitude;
63
- _sign;
64
- _nominalWordLength;
62
+ _magnitude = 0n;
63
+ _sign = 0;
64
+ _nominalWordLength = 1;
65
65
  /**
66
66
  * Reduction context of the big number.
67
67
  *
@@ -126,7 +126,7 @@ export default class BigNumber {
126
126
  let newMagnitude = 0n;
127
127
  const len = newWords.length > 0 ? newWords.length : 1;
128
128
  for (let i = len - 1; i >= 0; i--) {
129
- const wordVal = newWords[i] === undefined ? 0 : newWords[i];
129
+ const wordVal = newWords[i] ?? 0;
130
130
  newMagnitude = (newMagnitude << BigNumber.WORD_SIZE_BIGINT) | BigInt(wordVal & Number(BigNumber.WORD_MASK));
131
131
  }
132
132
  this._magnitude = newMagnitude;
@@ -183,12 +183,8 @@ export default class BigNumber {
183
183
  * @param endian - The endianness provided. By default is 'big endian'.
184
184
  */
185
185
  constructor(number = 0, base = 10, endian = 'be') {
186
- this._magnitude = 0n;
187
- this._sign = 0;
188
- this._nominalWordLength = 1;
189
186
  this.red = null;
190
- if (number === undefined)
191
- number = 0;
187
+ number ??= 0;
192
188
  if (number === null) {
193
189
  this._initializeState(0n, 0);
194
190
  return;
@@ -213,83 +209,93 @@ export default class BigNumber {
213
209
  return;
214
210
  }
215
211
  if (typeof number === 'string') {
216
- if (effectiveBase === 'hex')
217
- effectiveBase = 16;
218
- this.assert(typeof effectiveBase === 'number' && effectiveBase === (effectiveBase | 0) && effectiveBase >= 2 && effectiveBase <= 36, 'Base must be an integer between 2 and 36');
219
- const originalNumberStr = number.toString().replace(/\s+/g, '');
220
- let start = 0;
221
- let sign = 0;
222
- if (originalNumberStr.startsWith('-')) {
223
- start++;
224
- sign = 1;
212
+ this._initFromString(number, effectiveBase, effectiveEndian);
213
+ return;
214
+ }
215
+ if (number !== 0) {
216
+ this.assert(false, 'Unsupported input type for BigNumber constructor');
217
+ }
218
+ else {
219
+ this._initializeState(0n, 0);
220
+ }
221
+ }
222
+ _initFromString(number, effectiveBase, effectiveEndian) {
223
+ if (effectiveBase === 'hex')
224
+ effectiveBase = 16;
225
+ // eslint-disable-next-line no-bitwise -- ToInt32 (ECMA-262); required for integer base validation.
226
+ this.assert(typeof effectiveBase === 'number' && effectiveBase === (effectiveBase | 0) && effectiveBase >= 2 && effectiveBase <= 36, 'Base must be an integer between 2 and 36');
227
+ const originalNumberStr = number.toString().replace(/\s+/g, '');
228
+ let start = 0;
229
+ let sign = 0;
230
+ if (originalNumberStr.startsWith('-')) {
231
+ start++;
232
+ sign = 1;
233
+ }
234
+ else if (originalNumberStr.startsWith('+')) {
235
+ start++;
236
+ }
237
+ const numStr = originalNumberStr.substring(start);
238
+ if (numStr.length === 0) {
239
+ this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0);
240
+ this.normSign();
241
+ return;
242
+ }
243
+ if (effectiveBase === 16) {
244
+ this._initFromHexString(numStr, sign, effectiveEndian);
245
+ }
246
+ else {
247
+ this._initFromNonHexString(numStr, effectiveBase, sign, effectiveEndian);
248
+ }
249
+ }
250
+ _initFromHexString(numStr, sign, effectiveEndian) {
251
+ if (effectiveEndian === 'le') {
252
+ const bytes = [];
253
+ let hexStr = numStr;
254
+ if (hexStr.length % 2 !== 0)
255
+ hexStr = '0' + hexStr;
256
+ for (let i = 0; i < hexStr.length; i += 2) {
257
+ const byteHex = hexStr.substring(i, i + 2);
258
+ const byteVal = Number.parseInt(byteHex, 16);
259
+ if (Number.isNaN(byteVal))
260
+ throw new Error('Invalid character in ' + hexStr);
261
+ bytes.push(byteVal);
225
262
  }
226
- else if (originalNumberStr.startsWith('+')) {
227
- start++;
263
+ this.initArray(bytes, 'le');
264
+ this._sign = sign;
265
+ this.normSign();
266
+ }
267
+ else {
268
+ let tempMagnitude;
269
+ try {
270
+ tempMagnitude = BigInt('0x' + numStr);
228
271
  }
229
- const numStr = originalNumberStr.substring(start);
230
- if (numStr.length === 0) {
231
- this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0);
232
- this.normSign();
233
- return;
272
+ catch (_bigIntParseError) {
273
+ throw new Error('Invalid character in ' + numStr);
234
274
  }
235
- if (effectiveBase === 16) {
236
- let tempMagnitude;
237
- if (effectiveEndian === 'le') {
238
- const bytes = [];
239
- let hexStr = numStr;
240
- if (hexStr.length % 2 !== 0)
241
- hexStr = '0' + hexStr;
242
- for (let i = 0; i < hexStr.length; i += 2) {
243
- const byteHex = hexStr.substring(i, i + 2);
244
- const byteVal = parseInt(byteHex, 16);
245
- if (isNaN(byteVal))
246
- throw new Error('Invalid character in ' + hexStr);
247
- bytes.push(byteVal);
248
- }
249
- this.initArray(bytes, 'le');
250
- this._sign = sign;
251
- this.normSign();
252
- return;
253
- }
254
- else {
255
- try {
256
- tempMagnitude = BigInt('0x' + numStr);
257
- }
258
- catch (e) {
259
- throw new Error('Invalid character in ' + numStr);
260
- }
261
- }
262
- this._initializeState(tempMagnitude, sign);
275
+ this._initializeState(tempMagnitude, sign);
276
+ this.normSign();
277
+ }
278
+ }
279
+ _initFromNonHexString(numStr, base, sign, effectiveEndian) {
280
+ try {
281
+ this._parseBaseString(numStr, base);
282
+ this._sign = sign;
283
+ this.normSign();
284
+ if (effectiveEndian === 'le') {
285
+ const currentSign = this._sign;
286
+ this.initArray(this.toArray('be'), 'le');
287
+ this._sign = currentSign;
263
288
  this.normSign();
264
289
  }
265
- else {
266
- try {
267
- this._parseBaseString(numStr, effectiveBase);
268
- this._sign = sign;
269
- this.normSign();
270
- if (effectiveEndian === 'le') {
271
- const currentSign = this._sign;
272
- this.initArray(this.toArray('be'), 'le');
273
- this._sign = currentSign;
274
- this.normSign();
275
- }
276
- }
277
- catch (err) {
278
- const error = err;
279
- if (error.message.includes('Invalid character in string') ||
280
- error.message.includes('Invalid digit for base') ||
281
- error.message.startsWith('Invalid character:')) {
282
- throw new Error('Invalid character');
283
- }
284
- throw error;
285
- }
286
- }
287
- }
288
- else if (number !== 0) {
289
- this.assert(false, 'Unsupported input type for BigNumber constructor');
290
290
  }
291
- else {
292
- this._initializeState(0n, 0);
291
+ catch (err) {
292
+ const error = err;
293
+ if (error.message.includes('Invalid character in string') ||
294
+ error.message.includes('Invalid digit for base') ||
295
+ error.message.startsWith('Invalid character:')) {
296
+ throw new Error('Invalid character');
297
+ }
298
+ throw error;
293
299
  }
294
300
  }
295
301
  _bigIntToStringInBase(num, base) {
@@ -344,7 +350,7 @@ export default class BigNumber {
344
350
  _parseBaseWord(str, base) {
345
351
  let r = 0;
346
352
  for (let i = 0; i < str.length; i++) {
347
- const charCode = str.charCodeAt(i);
353
+ const charCode = str.codePointAt(i);
348
354
  let digitVal;
349
355
  if (charCode >= 48 && charCode <= 57)
350
356
  digitVal = charCode - 48;
@@ -397,8 +403,8 @@ export default class BigNumber {
397
403
  }
398
404
  let magnitude = 0n;
399
405
  if (endian === 'be') {
400
- for (let i = 0; i < bytes.length; i++)
401
- magnitude = (magnitude << 8n) | BigInt(bytes[i] & 0xff);
406
+ for (const byte of bytes)
407
+ magnitude = (magnitude << 8n) | BigInt(byte & 0xff);
402
408
  }
403
409
  else {
404
410
  for (let i = bytes.length - 1; i >= 0; i--)
@@ -416,9 +422,10 @@ export default class BigNumber {
416
422
  return this;
417
423
  }
418
424
  strip() { this._finishInitialization(); return this.normSign(); }
419
- normSign() { if (this._magnitude === 0n)
420
- this._sign = 0; return this; }
421
- inspect() { return (this.red !== null ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>'; }
425
+ normSign() { if (this._magnitude === 0n) {
426
+ this._sign = 0;
427
+ } return this; }
428
+ inspect() { return (this.red === null ? '<BN: ' : '<BN-R: ') + this.toString(16) + '>'; }
422
429
  _getMinimalHex() {
423
430
  if (this._magnitude === 0n)
424
431
  return '0';
@@ -478,21 +485,7 @@ export default class BigNumber {
478
485
  const remainder = tempMag % groupBaseBigInt;
479
486
  tempMag /= groupBaseBigInt;
480
487
  const chunkStr = this._bigIntToStringInBase(remainder, base);
481
- if (tempMag > 0n) {
482
- const zerosToPrepend = groupSize - chunkStr.length;
483
- if (zerosToPrepend > 0 && zerosToPrepend < BigNumber.zeros.length) {
484
- out = BigNumber.zeros[zerosToPrepend] + chunkStr + out;
485
- }
486
- else if (zerosToPrepend > 0) {
487
- out = '0'.repeat(zerosToPrepend) + chunkStr + out;
488
- }
489
- else {
490
- out = chunkStr + out;
491
- }
492
- }
493
- else {
494
- out = chunkStr + out;
495
- }
488
+ out = (tempMag > 0n ? this._zeroPaddedChunk(chunkStr, groupSize) : chunkStr) + out;
496
489
  }
497
490
  if (padding > 0) {
498
491
  while (out.length < padding)
@@ -500,6 +493,15 @@ export default class BigNumber {
500
493
  }
501
494
  return (this._sign === 1 ? '-' : '') + out;
502
495
  }
496
+ /** Returns a chunk string zero-padded to groupSize (used by toBaseString for interior chunks). */
497
+ _zeroPaddedChunk(chunkStr, groupSize) {
498
+ const zerosToPrepend = groupSize - chunkStr.length;
499
+ if (zerosToPrepend <= 0)
500
+ return chunkStr;
501
+ if (zerosToPrepend < BigNumber.zeros.length)
502
+ return BigNumber.zeros[zerosToPrepend] + chunkStr;
503
+ return '0'.repeat(zerosToPrepend) + chunkStr;
504
+ }
503
505
  /**
504
506
  * Converts the BigNumber instance to a JavaScript number.
505
507
  * Please note that JavaScript numbers are only precise up to 53 bits.
@@ -579,8 +581,9 @@ export default class BigNumber {
579
581
  * @method bitLength
580
582
  * @returns The bit length of the BigNumber.
581
583
  */
582
- bitLength() { if (this._magnitude === 0n)
583
- return 0; return this._magnitude.toString(2).length; }
584
+ bitLength() { if (this._magnitude === 0n) {
585
+ return 0;
586
+ } return this._magnitude.toString(2).length; }
584
587
  /**
585
588
  * Converts a BigNumber to an array of bits.
586
589
  *
@@ -595,7 +598,7 @@ export default class BigNumber {
595
598
  const w = new Array(len);
596
599
  const mag = num._magnitude;
597
600
  for (let bit = 0; bit < len; bit++) {
598
- w[bit] = ((mag >> BigInt(bit)) & 1n) !== 0n ? 1 : 0;
601
+ w[bit] = ((mag >> BigInt(bit)) & 1n) === 0n ? 0 : 1;
599
602
  }
600
603
  return w;
601
604
  }
@@ -631,8 +634,9 @@ export default class BigNumber {
631
634
  * @method byteLength
632
635
  * @returns The byte length of the BigNumber.
633
636
  */
634
- byteLength() { if (this._magnitude === 0n)
635
- return 0; return Math.ceil(this.bitLength() / 8); }
637
+ byteLength() { if (this._magnitude === 0n) {
638
+ return 0;
639
+ } return Math.ceil(this.bitLength() / 8); }
636
640
  _getSignedValue() { return this._sign === 1 ? -this._magnitude : this._magnitude; }
637
641
  _setValueFromSigned(sVal) {
638
642
  if (sVal < 0n) {
@@ -672,8 +676,9 @@ export default class BigNumber {
672
676
  }
673
677
  isNeg() { return this._sign === 1 && this._magnitude !== 0n; }
674
678
  neg() { return this.clone().ineg(); }
675
- ineg() { if (this._magnitude !== 0n)
676
- this._sign = this._sign === 1 ? 0 : 1; return this; }
679
+ ineg() { if (this._magnitude !== 0n) {
680
+ this._sign = this._sign === 1 ? 0 : 1;
681
+ } return this; }
677
682
  _iuop(num, op, isXor = false) {
678
683
  const newMag = op(this._magnitude, num._magnitude);
679
684
  let targetNominalLength = this._nominalWordLength;
@@ -692,8 +697,9 @@ export default class BigNumber {
692
697
  ior(num) { return this._iop(num, (a, b) => a | b); }
693
698
  iand(num) { return this._iop(num, (a, b) => a & b); }
694
699
  ixor(num) { return this._iop(num, (a, b) => a ^ b, true); }
695
- _uop_new(num, opName) { if (this.length >= num.length)
696
- return this.clone()[opName](num); return num.clone()[opName](this); }
700
+ _uop_new(num, opName) { if (this.length >= num.length) {
701
+ return this.clone()[opName](num);
702
+ } return num.clone()[opName](this); }
697
703
  or(num) { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuor'); }
698
704
  uor(num) { return this._uop_new(num, 'iuor'); }
699
705
  and(num) { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuand'); }
@@ -849,26 +855,28 @@ export default class BigNumber {
849
855
  this.assert(!num.isZero(), 'Division by zero');
850
856
  if (this.isZero()) {
851
857
  const z = new BigNumber(0n);
852
- return { div: mode !== 'mod' ? z : null, mod: mode !== 'div' ? z : null };
858
+ return { div: mode === 'mod' ? null : z, mod: mode === 'div' ? null : z };
853
859
  }
854
860
  const tV = this._getSignedValue();
855
861
  const nV = num._getSignedValue();
856
- let dV = null;
857
- let mV = null;
858
- if (mode !== 'mod')
859
- dV = tV / nV;
860
- if (mode !== 'div') {
861
- mV = tV % nV;
862
- if (positive === true && mV < 0n)
863
- mV += nV < 0n ? -nV : nV;
864
- }
865
- const rd = dV !== null ? new BigNumber(0n) : null;
866
- if (rd !== null && dV !== null)
867
- rd._setValueFromSigned(dV);
868
- const rm = mV !== null ? new BigNumber(0n) : null;
869
- if (rm !== null && mV !== null)
870
- rm._setValueFromSigned(mV);
871
- return { div: rd, mod: rm };
862
+ const dV = mode !== 'mod' ? tV / nV : null;
863
+ const mV = this._computeMod(tV, nV, mode, positive);
864
+ return { div: this._bigNumberFromSigned(dV), mod: this._bigNumberFromSigned(mV) };
865
+ }
866
+ _computeMod(tV, nV, mode, positive) {
867
+ if (mode === 'div')
868
+ return null;
869
+ let mV = tV % nV;
870
+ if (positive === true && mV < 0n)
871
+ mV += nV < 0n ? -nV : nV;
872
+ return mV;
873
+ }
874
+ _bigNumberFromSigned(v) {
875
+ if (v === null)
876
+ return null;
877
+ const r = new BigNumber(0n);
878
+ r._setValueFromSigned(v);
879
+ return r;
872
880
  }
873
881
  div(num) {
874
882
  return this.divmod(num, 'div', false).div;
@@ -983,15 +991,21 @@ export default class BigNumber {
983
991
  andln(num) { this.assert(num >= 0); return Number(this._magnitude & BigInt(num)); }
984
992
  bincn(bit) { this.assert(typeof bit === 'number' && bit >= 0); const BVal = 1n << BigInt(bit); this._setValueFromSigned(this._getSignedValue() + BVal); return this; }
985
993
  isZero() { return this._magnitude === 0n; }
986
- cmpn(num) { this.assert(Math.abs(num) <= BigNumber.MAX_IMULN_ARG, 'Number is too big'); const tV = this._getSignedValue(); const nV = BigInt(num); if (tV < nV)
987
- return -1; if (tV > nV)
988
- return 1; return 0; }
989
- cmp(num) { const tV = this._getSignedValue(); const nV = num._getSignedValue(); if (tV < nV)
990
- return -1; if (tV > nV)
991
- return 1; return 0; }
992
- ucmp(num) { if (this._magnitude < num._magnitude)
993
- return -1; if (this._magnitude > num._magnitude)
994
- return 1; return 0; }
994
+ cmpn(num) { this.assert(Math.abs(num) <= BigNumber.MAX_IMULN_ARG, 'Number is too big'); const tV = this._getSignedValue(); const nV = BigInt(num); if (tV < nV) {
995
+ return -1;
996
+ } if (tV > nV) {
997
+ return 1;
998
+ } return 0; }
999
+ cmp(num) { const tV = this._getSignedValue(); const nV = num._getSignedValue(); if (tV < nV) {
1000
+ return -1;
1001
+ } if (tV > nV) {
1002
+ return 1;
1003
+ } return 0; }
1004
+ ucmp(num) { if (this._magnitude < num._magnitude) {
1005
+ return -1;
1006
+ } if (this._magnitude > num._magnitude) {
1007
+ return 1;
1008
+ } return 0; }
995
1009
  gtn(num) { return this.cmpn(num) === 1; }
996
1010
  gt(num) { return this.cmp(num) === 1; }
997
1011
  gten(num) { return this.cmpn(num) >= 0; }
@@ -1112,18 +1126,17 @@ export default class BigNumber {
1112
1126
  sign = 1;
1113
1127
  beBytes[0] &= 0x7f;
1114
1128
  }
1115
- let magnitude = 0n;
1129
+ let hexStr;
1116
1130
  if (CAN_USE_BUFFER) {
1117
- const hex = BufferCtor.from(beBytes).toString('hex');
1118
- magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex);
1131
+ hexStr = BufferCtor.from(beBytes).toString('hex');
1119
1132
  }
1120
1133
  else {
1121
- let hex = '';
1134
+ hexStr = '';
1122
1135
  for (const byte of beBytes) {
1123
- hex += byte < 16 ? '0' + byte.toString(16) : byte.toString(16);
1136
+ hexStr += byte < 16 ? '0' + byte.toString(16) : byte.toString(16);
1124
1137
  }
1125
- magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex);
1126
1138
  }
1139
+ const magnitude = hexStr.length === 0 ? 0n : BigInt('0x' + hexStr);
1127
1140
  const r = new BigNumber(0n);
1128
1141
  r._initializeState(magnitude, sign);
1129
1142
  return r;
@@ -1145,25 +1158,25 @@ export default class BigNumber {
1145
1158
  const byteLen = hex.length / 2;
1146
1159
  const bytes = new Array(byteLen);
1147
1160
  for (let i = 0, j = 0; i < hex.length; i += 2) {
1148
- const high = HEX_CHAR_TO_VALUE[hex.charCodeAt(i)];
1149
- const low = HEX_CHAR_TO_VALUE[hex.charCodeAt(i + 1)];
1161
+ const high = HEX_CHAR_TO_VALUE[hex.codePointAt(i)];
1162
+ const low = HEX_CHAR_TO_VALUE[hex.codePointAt(i + 1)];
1150
1163
  bytes[j++] = ((high & 0xf) << 4) | (low & 0xf);
1151
1164
  }
1152
1165
  let result;
1153
1166
  if (this._sign === 1) {
1154
- if ((bytes[0] & 0x80) !== 0) {
1155
- result = [0x80, ...bytes];
1156
- }
1157
- else {
1167
+ if ((bytes[0] & 0x80) === 0) {
1158
1168
  result = bytes.slice();
1159
1169
  result[0] |= 0x80;
1160
1170
  }
1171
+ else {
1172
+ result = [0x80, ...bytes];
1173
+ }
1161
1174
  }
1162
- else if ((bytes[0] & 0x80) !== 0) {
1163
- result = [0x00, ...bytes];
1175
+ else if ((bytes[0] & 0x80) === 0) {
1176
+ result = bytes.slice();
1164
1177
  }
1165
1178
  else {
1166
- result = bytes.slice();
1179
+ result = [0x00, ...bytes];
1167
1180
  }
1168
1181
  return endian === 'little' ? result.reverse() : result;
1169
1182
  }
@@ -1269,8 +1282,8 @@ export default class BigNumber {
1269
1282
  if (num.length === 0)
1270
1283
  return new BigNumber(0n);
1271
1284
  if (requireMinimal) {
1272
- if ((num[num.length - 1] & 0x7f) === 0) {
1273
- if (num.length <= 1 || (num[num.length - 2] & 0x80) === 0) {
1285
+ if ((num.at(-1) & 0x7f) === 0) {
1286
+ if (num.length <= 1 || (num.at(-2) & 0x80) === 0) {
1274
1287
  throw new Error('non-minimally encoded script number');
1275
1288
  }
1276
1289
  }