@btc-vision/bitcoin 6.4.10 → 6.4.11

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 (207) hide show
  1. package/.babelrc +4 -4
  2. package/.mocharc.json +13 -13
  3. package/.prettierrc.json +12 -12
  4. package/CHANGELOG.md +403 -403
  5. package/CONTRIBUTING.md +83 -83
  6. package/LICENSE +21 -21
  7. package/README.md +201 -201
  8. package/cjs/package.json +3 -3
  9. package/gulpfile.js +42 -42
  10. package/package.json +150 -150
  11. package/src/bip66.ts +107 -107
  12. package/src/block.ts +233 -233
  13. package/src/bufferutils.ts +188 -188
  14. package/src/crypto.ts +108 -108
  15. package/src/ecc_lib.ts +94 -94
  16. package/src/hooks/AdvancedSignatureManager.ts +104 -104
  17. package/src/hooks/SignatureManager.ts +84 -84
  18. package/src/index.ts +105 -105
  19. package/src/merkle.ts +31 -31
  20. package/src/opcodes.ts +280 -280
  21. package/src/payments/bip341.ts +140 -140
  22. package/src/payments/embed.ts +61 -61
  23. package/src/payments/index.ts +172 -172
  24. package/src/payments/lazy.ts +28 -28
  25. package/src/payments/p2ms.ts +156 -156
  26. package/src/payments/p2op.ts +195 -195
  27. package/src/payments/p2pk.ts +93 -93
  28. package/src/payments/p2pkh.ts +214 -214
  29. package/src/payments/p2tr.ts +309 -309
  30. package/src/psbt/bip371.ts +441 -441
  31. package/src/push_data.ts +97 -97
  32. package/src/script.ts +247 -247
  33. package/src/script_number.ts +72 -72
  34. package/src/script_signature.ts +91 -91
  35. package/src/transaction.ts +656 -656
  36. package/test/address.spec.ts +155 -155
  37. package/test/bitcoin.core.spec.ts +212 -212
  38. package/test/block.spec.ts +171 -171
  39. package/test/bufferutils.spec.ts +450 -450
  40. package/test/crypto.spec.ts +49 -49
  41. package/test/fixtures/address.json +329 -329
  42. package/test/fixtures/block.json +148 -148
  43. package/test/fixtures/bufferutils.json +102 -102
  44. package/test/fixtures/core/README.md +26 -26
  45. package/test/fixtures/core/base58_encode_decode.json +50 -50
  46. package/test/fixtures/core/base58_keys_invalid.json +152 -152
  47. package/test/fixtures/core/base58_keys_valid.json +452 -452
  48. package/test/fixtures/core/blocks.json +27 -27
  49. package/test/fixtures/core/sig_canonical.json +7 -7
  50. package/test/fixtures/core/sig_noncanonical.json +33 -33
  51. package/test/fixtures/core/sighash.json +3505 -3505
  52. package/test/fixtures/core/tx_valid.json +2023 -2023
  53. package/test/fixtures/crypto.json +43 -43
  54. package/test/fixtures/ecdsa.json +217 -217
  55. package/test/fixtures/ecpair.json +141 -141
  56. package/test/fixtures/embed.json +108 -108
  57. package/test/fixtures/p2ms.json +434 -434
  58. package/test/fixtures/p2pk.json +179 -179
  59. package/test/fixtures/p2pkh.json +276 -276
  60. package/test/fixtures/p2sh.json +508 -508
  61. package/test/fixtures/p2tr.json +1198 -1198
  62. package/test/fixtures/p2wpkh.json +290 -290
  63. package/test/fixtures/p2wsh.json +489 -489
  64. package/test/fixtures/psbt.json +924 -924
  65. package/test/fixtures/script.json +465 -465
  66. package/test/fixtures/script_number.json +225 -225
  67. package/test/fixtures/signature.json +140 -140
  68. package/test/fixtures/transaction.json +916 -916
  69. package/test/integration/_regtest.ts +6 -6
  70. package/test/integration/addresses.spec.ts +142 -142
  71. package/test/integration/bip32.spec.ts +130 -130
  72. package/test/integration/blocks.spec.ts +28 -28
  73. package/test/integration/cltv.spec.ts +241 -241
  74. package/test/integration/csv.spec.ts +452 -452
  75. package/test/integration/payments.spec.ts +110 -110
  76. package/test/integration/taproot.spec.ts +663 -663
  77. package/test/integration/transactions.spec.ts +668 -668
  78. package/test/payments.spec.ts +114 -114
  79. package/test/payments.utils.ts +165 -165
  80. package/test/psbt.spec.ts +1285 -1285
  81. package/test/script.spec.ts +186 -186
  82. package/test/script_number.spec.ts +26 -26
  83. package/test/script_signature.spec.ts +66 -66
  84. package/test/transaction.spec.ts +337 -337
  85. package/test/ts-node-register.js +7 -7
  86. package/test/tsconfig.json +48 -48
  87. package/test/types.spec.ts +53 -53
  88. package/tsconfig.base.json +27 -27
  89. package/tsconfig.json +19 -19
  90. package/tsconfig.webpack.json +18 -18
  91. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
  92. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +0 -3
  93. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +0 -962
  94. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +0 -34
  95. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +0 -24
  96. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +0 -273
  97. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +0 -2
  98. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +0 -204
  99. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +0 -138
  100. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +0 -3
  101. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +0 -28
  102. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +0 -4
  103. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +0 -12
  104. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +0 -116
  105. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +0 -46
  106. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +0 -1080
  107. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +0 -430
  108. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +0 -27
  109. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +0 -450
  110. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +0 -965
  111. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +0 -8
  112. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +0 -5
  113. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  114. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -365
  115. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  116. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1272
  117. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1547
  118. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  119. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -153
  120. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -271
  121. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -574
  122. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -692
  123. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -711
  124. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -171
  125. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -169
  126. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -113
  127. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  128. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  129. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -804
  130. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1173
  131. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1318
  132. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -127
  133. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -103
  134. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -461
  135. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -89
  136. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -57
  137. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2745
  138. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3976
  139. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  140. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2964
  141. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -67
  142. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1391
  143. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -25
  144. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3115
  145. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -98
  146. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -771
  147. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1260
  148. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  149. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  150. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -373
  151. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1938
  152. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +0 -53
  153. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -302
  154. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3198
  155. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -65
  156. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +0 -3
  157. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +0 -177
  158. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +0 -23
  159. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +0 -15
  160. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +0 -108
  161. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +0 -252
  162. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +0 -83
  163. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +0 -359
  164. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +0 -61
  165. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +0 -192
  166. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +0 -252
  167. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +0 -825
  168. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  169. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +0 -90
  170. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +0 -1030
  171. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +0 -553
  172. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +0 -172
  173. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +0 -563
  174. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +0 -120
  175. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +0 -11
  176. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +0 -261
  177. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +0 -250
  178. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +0 -227
  179. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +0 -15
  180. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +0 -328
  181. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +0 -150
  182. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +0 -39
  183. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +0 -63
  184. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +0 -310
  185. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +0 -590
  186. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +0 -415
  187. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +0 -26
  188. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +0 -168
  189. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +0 -188
  190. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +0 -146
  191. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +0 -12
  192. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +0 -43
  193. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +0 -81
  194. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +0 -21
  195. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +0 -51
  196. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +0 -40
  197. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +0 -39
  198. package/browser/ops.d.ts +0 -126
  199. package/build/ops.d.ts +0 -126
  200. package/build/ops.js +0 -127
  201. package/coverage/tmp/coverage-31752-1735543485354-0.json +0 -1
  202. package/coverage/tmp/coverage-59920-1735543484555-0.json +0 -1
  203. package/coverage/tmp/coverage-66252-1735543483919-0.json +0 -1
  204. package/coverage/tmp/coverage-68440-1735543485236-0.json +0 -1
  205. package/coverage/tmp/coverage-70588-1735543484426-0.json +0 -1
  206. package/coverage/tmp/coverage-79292-1735543485296-0.json +0 -1
  207. package/coverage/tmp/coverage-80212-1735543483980-0.json +0 -1
@@ -1,155 +1,155 @@
1
- import assert from 'assert';
2
- import { describe, it } from 'mocha';
3
- import * as ecc from 'tiny-secp256k1';
4
- import * as baddress from '../src/address.js';
5
- import * as bscript from '../src/script.js';
6
- import fixtures from './fixtures/address.json' with { type: 'json' };
7
-
8
- import { initEccLib, Network } from '../src/index.js';
9
-
10
- import * as networks from '../src/networks.js';
11
-
12
- const NETWORKS: Record<string, Network> = Object.assign(
13
- {
14
- litecoin: {
15
- messagePrefix: '\x19Litecoin Signed Message:\n',
16
- bip32: {
17
- public: 0x019da462,
18
- private: 0x019d9cfe,
19
- },
20
- pubKeyHash: 0x30,
21
- scriptHash: 0x32,
22
- wif: 0xb0,
23
- },
24
- },
25
- networks,
26
- );
27
-
28
- describe('address', () => {
29
- describe('fromBase58Check', () => {
30
- fixtures.standard.forEach((f) => {
31
- if (!f.base58check) return;
32
-
33
- it('decodes ' + f.base58check, () => {
34
- const decode = baddress.fromBase58Check(f.base58check);
35
-
36
- assert.strictEqual(decode.version, f.version);
37
- assert.strictEqual(decode.hash.toString('hex'), f.hash);
38
- });
39
- });
40
-
41
- fixtures.invalid.fromBase58Check.forEach((f) => {
42
- it('throws on ' + f.exception, () => {
43
- assert.throws(
44
- () => {
45
- baddress.fromBase58Check(f.address);
46
- },
47
- new RegExp(f.address + ' ' + f.exception),
48
- );
49
- });
50
- });
51
- });
52
-
53
- describe('fromBech32', () => {
54
- fixtures.standard.forEach((f) => {
55
- if (!f.bech32) return;
56
-
57
- it('decodes ' + f.bech32, () => {
58
- const actual = baddress.fromBech32(f.bech32);
59
-
60
- assert.strictEqual(actual.version, f.version);
61
- assert.strictEqual(actual.prefix, NETWORKS[f.network].bech32);
62
- assert.strictEqual(actual.data.toString('hex'), f.data);
63
- });
64
- });
65
-
66
- fixtures.invalid.bech32.forEach((f) => {
67
- it('decode fails for ' + f.address + '(' + f.exception + ')', () => {
68
- assert.throws(() => {
69
- baddress.fromBech32(f.address);
70
- }, new RegExp(f.exception));
71
- });
72
- });
73
- });
74
-
75
- describe('fromOutputScript', () => {
76
- initEccLib(ecc);
77
- fixtures.standard.forEach((f) => {
78
- it('encodes ' + f.script.slice(0, 30) + '... (' + f.network + ')', () => {
79
- const script = bscript.fromASM(f.script);
80
- const address = baddress.fromOutputScript(script, NETWORKS[f.network]);
81
-
82
- assert.strictEqual(address, f.base58check || f.bech32!.toLowerCase());
83
- });
84
- });
85
-
86
- fixtures.invalid.fromOutputScript.forEach((f) => {
87
- it('throws when ' + f.script.slice(0, 30) + '... ' + f.exception, () => {
88
- const script = bscript.fromASM(f.script);
89
-
90
- assert.throws(() => {
91
- baddress.fromOutputScript(script, undefined);
92
- }, new RegExp(f.exception));
93
- });
94
- });
95
- });
96
-
97
- describe('toBase58Check', () => {
98
- fixtures.standard.forEach((f) => {
99
- if (!f.base58check) return;
100
-
101
- it('encodes ' + f.hash + ' (' + f.network + ')', () => {
102
- const address = baddress.toBase58Check(Buffer.from(f.hash, 'hex'), f.version);
103
-
104
- assert.strictEqual(address, f.base58check);
105
- });
106
- });
107
- });
108
-
109
- describe('toBech32', () => {
110
- fixtures.bech32.forEach((f) => {
111
- if (!f.address) return;
112
- const data = Buffer.from(f.data, 'hex');
113
-
114
- it('encode ' + f.address, () => {
115
- assert.deepStrictEqual(
116
- baddress.toBech32(data, f.version, f.prefix),
117
- f.address.toLowerCase(),
118
- );
119
- });
120
- });
121
-
122
- // TODO: These fixtures (according to TypeScript) have none of the data used below
123
- fixtures.invalid.bech32.forEach((f: any) => {
124
- if (!f.prefix || f.version === undefined || f.data === undefined) return;
125
-
126
- it('encode fails (' + f.exception, () => {
127
- assert.throws(() => {
128
- baddress.toBech32(Buffer.from(f.data, 'hex'), f.version, f.prefix);
129
- }, new RegExp(f.exception));
130
- });
131
- });
132
- });
133
-
134
- describe('toOutputScript', () => {
135
- fixtures.standard.forEach((f) => {
136
- it('decodes ' + f.script.slice(0, 30) + '... (' + f.network + ')', () => {
137
- const script = baddress.toOutputScript(
138
- (f.base58check || f.bech32)!,
139
- NETWORKS[f.network],
140
- );
141
-
142
- assert.strictEqual(bscript.toASM(script), f.script);
143
- });
144
- });
145
-
146
- fixtures.invalid.toOutputScript.forEach((f) => {
147
- it('throws when ' + (f.exception || f.paymentException), () => {
148
- const exception = f.paymentException || `${f.address} ${f.exception}`;
149
- assert.throws(() => {
150
- baddress.toOutputScript(f.address, f.network as any);
151
- }, new RegExp(exception));
152
- });
153
- });
154
- });
155
- });
1
+ import assert from 'assert';
2
+ import { describe, it } from 'mocha';
3
+ import * as ecc from 'tiny-secp256k1';
4
+ import * as baddress from '../src/address.js';
5
+ import * as bscript from '../src/script.js';
6
+ import fixtures from './fixtures/address.json' with { type: 'json' };
7
+
8
+ import { initEccLib, Network } from '../src/index.js';
9
+
10
+ import * as networks from '../src/networks.js';
11
+
12
+ const NETWORKS: Record<string, Network> = Object.assign(
13
+ {
14
+ litecoin: {
15
+ messagePrefix: '\x19Litecoin Signed Message:\n',
16
+ bip32: {
17
+ public: 0x019da462,
18
+ private: 0x019d9cfe,
19
+ },
20
+ pubKeyHash: 0x30,
21
+ scriptHash: 0x32,
22
+ wif: 0xb0,
23
+ },
24
+ },
25
+ networks,
26
+ );
27
+
28
+ describe('address', () => {
29
+ describe('fromBase58Check', () => {
30
+ fixtures.standard.forEach((f) => {
31
+ if (!f.base58check) return;
32
+
33
+ it('decodes ' + f.base58check, () => {
34
+ const decode = baddress.fromBase58Check(f.base58check);
35
+
36
+ assert.strictEqual(decode.version, f.version);
37
+ assert.strictEqual(decode.hash.toString('hex'), f.hash);
38
+ });
39
+ });
40
+
41
+ fixtures.invalid.fromBase58Check.forEach((f) => {
42
+ it('throws on ' + f.exception, () => {
43
+ assert.throws(
44
+ () => {
45
+ baddress.fromBase58Check(f.address);
46
+ },
47
+ new RegExp(f.address + ' ' + f.exception),
48
+ );
49
+ });
50
+ });
51
+ });
52
+
53
+ describe('fromBech32', () => {
54
+ fixtures.standard.forEach((f) => {
55
+ if (!f.bech32) return;
56
+
57
+ it('decodes ' + f.bech32, () => {
58
+ const actual = baddress.fromBech32(f.bech32);
59
+
60
+ assert.strictEqual(actual.version, f.version);
61
+ assert.strictEqual(actual.prefix, NETWORKS[f.network].bech32);
62
+ assert.strictEqual(actual.data.toString('hex'), f.data);
63
+ });
64
+ });
65
+
66
+ fixtures.invalid.bech32.forEach((f) => {
67
+ it('decode fails for ' + f.address + '(' + f.exception + ')', () => {
68
+ assert.throws(() => {
69
+ baddress.fromBech32(f.address);
70
+ }, new RegExp(f.exception));
71
+ });
72
+ });
73
+ });
74
+
75
+ describe('fromOutputScript', () => {
76
+ initEccLib(ecc);
77
+ fixtures.standard.forEach((f) => {
78
+ it('encodes ' + f.script.slice(0, 30) + '... (' + f.network + ')', () => {
79
+ const script = bscript.fromASM(f.script);
80
+ const address = baddress.fromOutputScript(script, NETWORKS[f.network]);
81
+
82
+ assert.strictEqual(address, f.base58check || f.bech32!.toLowerCase());
83
+ });
84
+ });
85
+
86
+ fixtures.invalid.fromOutputScript.forEach((f) => {
87
+ it('throws when ' + f.script.slice(0, 30) + '... ' + f.exception, () => {
88
+ const script = bscript.fromASM(f.script);
89
+
90
+ assert.throws(() => {
91
+ baddress.fromOutputScript(script, undefined);
92
+ }, new RegExp(f.exception));
93
+ });
94
+ });
95
+ });
96
+
97
+ describe('toBase58Check', () => {
98
+ fixtures.standard.forEach((f) => {
99
+ if (!f.base58check) return;
100
+
101
+ it('encodes ' + f.hash + ' (' + f.network + ')', () => {
102
+ const address = baddress.toBase58Check(Buffer.from(f.hash, 'hex'), f.version);
103
+
104
+ assert.strictEqual(address, f.base58check);
105
+ });
106
+ });
107
+ });
108
+
109
+ describe('toBech32', () => {
110
+ fixtures.bech32.forEach((f) => {
111
+ if (!f.address) return;
112
+ const data = Buffer.from(f.data, 'hex');
113
+
114
+ it('encode ' + f.address, () => {
115
+ assert.deepStrictEqual(
116
+ baddress.toBech32(data, f.version, f.prefix),
117
+ f.address.toLowerCase(),
118
+ );
119
+ });
120
+ });
121
+
122
+ // TODO: These fixtures (according to TypeScript) have none of the data used below
123
+ fixtures.invalid.bech32.forEach((f: any) => {
124
+ if (!f.prefix || f.version === undefined || f.data === undefined) return;
125
+
126
+ it('encode fails (' + f.exception, () => {
127
+ assert.throws(() => {
128
+ baddress.toBech32(Buffer.from(f.data, 'hex'), f.version, f.prefix);
129
+ }, new RegExp(f.exception));
130
+ });
131
+ });
132
+ });
133
+
134
+ describe('toOutputScript', () => {
135
+ fixtures.standard.forEach((f) => {
136
+ it('decodes ' + f.script.slice(0, 30) + '... (' + f.network + ')', () => {
137
+ const script = baddress.toOutputScript(
138
+ (f.base58check || f.bech32)!,
139
+ NETWORKS[f.network],
140
+ );
141
+
142
+ assert.strictEqual(bscript.toASM(script), f.script);
143
+ });
144
+ });
145
+
146
+ fixtures.invalid.toOutputScript.forEach((f) => {
147
+ it('throws when ' + (f.exception || f.paymentException), () => {
148
+ const exception = f.paymentException || `${f.address} ${f.exception}`;
149
+ assert.throws(() => {
150
+ baddress.toOutputScript(f.address, f.network as any);
151
+ }, new RegExp(exception));
152
+ });
153
+ });
154
+ });
155
+ });