@btc-vision/bitcoin 6.3.1 → 6.3.3

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 (374) hide show
  1. package/.babelrc +4 -0
  2. package/.gitattributes +2 -0
  3. package/.nyc_output/6368a5b2-daa5-4821-8ed0-b742d6fc7eab.json +1 -0
  4. package/.nyc_output/processinfo/6368a5b2-daa5-4821-8ed0-b742d6fc7eab.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -0
  6. package/.prettierrc.json +12 -0
  7. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.ready +0 -0
  8. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/.release-please-manifest.json +3 -0
  9. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CHANGELOG.md +962 -0
  10. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/CONTRIBUTING.md +34 -0
  11. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/LICENSE +24 -0
  12. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/README.md +273 -0
  13. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/SECURITY.md +2 -0
  14. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/addon.gypi +204 -0
  15. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/bin/node-gyp.js +138 -0
  16. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
  17. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/LICENSE +28 -0
  18. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
  19. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
  20. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/GypVsCMake.md +116 -0
  21. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Hacking.md +46 -0
  22. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/InputFormatReference.md +1080 -0
  23. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/LanguageSpecification.md +430 -0
  24. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/README.md +27 -0
  25. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/Testing.md +450 -0
  26. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/docs/UserDocumentation.md +965 -0
  27. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp +8 -0
  28. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp.bat +5 -0
  29. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/gyp_main.py +45 -0
  30. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
  31. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
  32. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1272 -0
  33. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1547 -0
  34. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
  35. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +153 -0
  36. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +271 -0
  37. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +574 -0
  38. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +692 -0
  39. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common.py +711 -0
  40. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +171 -0
  41. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +169 -0
  42. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
  43. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
  44. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  45. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +804 -0
  46. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1173 -0
  47. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1318 -0
  48. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +127 -0
  49. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +103 -0
  50. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
  51. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +89 -0
  52. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +57 -0
  53. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2745 -0
  54. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3976 -0
  55. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
  56. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2964 -0
  57. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +67 -0
  58. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1391 -0
  59. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +25 -0
  60. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input.py +3115 -0
  61. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +98 -0
  62. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +771 -0
  63. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1260 -0
  64. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
  65. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
  66. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +373 -0
  67. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1938 -0
  68. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +53 -0
  69. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +302 -0
  70. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3198 -0
  71. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +65 -0
  72. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
  73. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
  74. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
  75. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
  76. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +108 -0
  77. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
  78. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
  79. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
  80. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
  81. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
  82. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/markers.py +252 -0
  83. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +825 -0
  84. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  85. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
  86. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
  87. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/tags.py +553 -0
  88. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
  89. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
  90. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/pyproject.toml +120 -0
  91. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/release-please-config.json +11 -0
  92. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/gyp/test_gyp.py +261 -0
  93. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
  94. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/build.js +227 -0
  95. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/clean.js +15 -0
  96. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/configure.js +328 -0
  97. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/create-config-gypi.js +150 -0
  98. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/download.js +39 -0
  99. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-node-directory.js +63 -0
  100. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-python.js +310 -0
  101. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/find-visualstudio.js +590 -0
  102. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/install.js +415 -0
  103. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/list.js +26 -0
  104. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/log.js +168 -0
  105. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/node-gyp.js +188 -0
  106. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/process-release.js +146 -0
  107. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/rebuild.js +12 -0
  108. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/remove.js +43 -0
  109. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/lib/util.js +81 -0
  110. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
  111. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/package.json +51 -0
  112. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/release-please-config.json +40 -0
  113. package/.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/src/win_delay_load_hook.cc +39 -0
  114. package/CHANGELOG.md +403 -0
  115. package/CONTRIBUTING.md +83 -0
  116. package/browser/address.d.ts +16 -0
  117. package/{src → browser}/bip66.d.ts +6 -7
  118. package/{src → browser}/block.d.ts +29 -30
  119. package/{src → browser}/bufferutils.d.ts +34 -54
  120. package/browser/crypto/crypto.d.ts +1 -0
  121. package/{src → browser}/crypto.d.ts +13 -18
  122. package/browser/ecc_lib.d.ts +3 -0
  123. package/browser/hooks/AdvancedSignatureManager.d.ts +16 -0
  124. package/{src → browser}/hooks/HookedSigner.d.ts +4 -4
  125. package/browser/hooks/SignatureManager.d.ts +13 -0
  126. package/browser/index.d.ts +58 -0
  127. package/browser/index.js +2 -0
  128. package/browser/index.js.LICENSE.txt +14 -0
  129. package/browser/merkle.d.ts +1 -0
  130. package/browser/networks.d.ts +23 -0
  131. package/{src → browser}/ops.d.ts +126 -126
  132. package/browser/payments/bip341.d.ts +23 -0
  133. package/browser/payments/embed.d.ts +2 -0
  134. package/browser/payments/index.d.ts +43 -0
  135. package/{src → browser}/payments/lazy.d.ts +2 -2
  136. package/browser/payments/p2ms.d.ts +2 -0
  137. package/browser/payments/p2pk.d.ts +2 -0
  138. package/browser/payments/p2pkh.d.ts +2 -0
  139. package/browser/payments/p2sh.d.ts +2 -0
  140. package/browser/payments/p2tr.d.ts +2 -0
  141. package/browser/payments/p2wpkh.d.ts +2 -0
  142. package/browser/payments/p2wsh.d.ts +2 -0
  143. package/browser/psbt/bip371.d.ts +16 -0
  144. package/browser/psbt/psbtutils.d.ts +26 -0
  145. package/{src → browser}/psbt.d.ts +167 -238
  146. package/browser/push_data.d.ts +7 -0
  147. package/browser/script.d.ts +17 -0
  148. package/browser/script_number.d.ts +2 -0
  149. package/browser/script_signature.d.ts +7 -0
  150. package/{src → browser}/transaction.d.ts +48 -60
  151. package/{src → browser}/types.d.ts +37 -54
  152. package/build/address.d.ts +16 -0
  153. package/build/address.js +148 -0
  154. package/build/bip66.d.ts +6 -0
  155. package/build/bip66.js +99 -0
  156. package/build/block.d.ts +29 -0
  157. package/build/block.js +181 -0
  158. package/build/bufferutils.d.ts +34 -0
  159. package/build/bufferutils.js +141 -0
  160. package/build/crypto/crypto.d.ts +1 -0
  161. package/build/crypto/crypto.js +1 -0
  162. package/build/crypto.d.ts +13 -0
  163. package/build/crypto.js +87 -0
  164. package/build/ecc_lib.d.ts +3 -0
  165. package/build/ecc_lib.js +61 -0
  166. package/build/hooks/AdvancedSignatureManager.d.ts +16 -0
  167. package/build/hooks/AdvancedSignatureManager.js +52 -0
  168. package/build/hooks/HookedSigner.d.ts +4 -0
  169. package/build/hooks/HookedSigner.js +64 -0
  170. package/build/hooks/SignatureManager.d.ts +13 -0
  171. package/build/hooks/SignatureManager.js +45 -0
  172. package/build/index.d.ts +58 -0
  173. package/build/index.js +32 -0
  174. package/build/merkle.d.ts +1 -0
  175. package/build/merkle.js +19 -0
  176. package/build/networks.d.ts +23 -0
  177. package/build/networks.js +121 -0
  178. package/build/ops.d.ts +126 -0
  179. package/{src → build}/ops.js +127 -131
  180. package/build/payments/bip341.d.ts +23 -0
  181. package/build/payments/bip341.js +82 -0
  182. package/build/payments/embed.d.ts +2 -0
  183. package/build/payments/embed.js +39 -0
  184. package/build/payments/index.d.ts +43 -0
  185. package/build/payments/index.js +10 -0
  186. package/build/payments/lazy.d.ts +2 -0
  187. package/{src → build}/payments/lazy.js +28 -32
  188. package/build/payments/p2ms.d.ts +2 -0
  189. package/{src → build}/payments/p2ms.js +128 -158
  190. package/build/payments/p2pk.d.ts +2 -0
  191. package/build/payments/p2pk.js +68 -0
  192. package/build/payments/p2pkh.d.ts +2 -0
  193. package/build/payments/p2pkh.js +173 -0
  194. package/build/payments/p2sh.d.ts +2 -0
  195. package/build/payments/p2sh.js +176 -0
  196. package/build/payments/p2tr.d.ts +2 -0
  197. package/build/payments/p2tr.js +254 -0
  198. package/build/payments/p2wpkh.d.ts +2 -0
  199. package/build/payments/p2wpkh.js +130 -0
  200. package/build/payments/p2wsh.d.ts +2 -0
  201. package/build/payments/p2wsh.js +180 -0
  202. package/build/psbt/bip371.d.ts +16 -0
  203. package/build/psbt/bip371.js +246 -0
  204. package/build/psbt/psbtutils.d.ts +26 -0
  205. package/build/psbt/psbtutils.js +177 -0
  206. package/build/psbt.d.ts +167 -0
  207. package/build/psbt.js +1307 -0
  208. package/build/push_data.d.ts +7 -0
  209. package/build/push_data.js +57 -0
  210. package/build/script.d.ts +17 -0
  211. package/build/script.js +167 -0
  212. package/build/script_number.d.ts +2 -0
  213. package/build/script_number.js +49 -0
  214. package/build/script_signature.d.ts +7 -0
  215. package/build/script_signature.js +49 -0
  216. package/build/transaction.d.ts +48 -0
  217. package/build/transaction.js +445 -0
  218. package/build/types.d.ts +37 -0
  219. package/build/types.js +73 -0
  220. package/cjs/package.json +3 -0
  221. package/coverage/tmp/coverage-31752-1735543485354-0.json +1 -0
  222. package/coverage/tmp/coverage-59920-1735543484555-0.json +1 -0
  223. package/coverage/tmp/coverage-66252-1735543483919-0.json +1 -0
  224. package/coverage/tmp/coverage-68440-1735543485236-0.json +1 -0
  225. package/coverage/tmp/coverage-70588-1735543484426-0.json +1 -0
  226. package/coverage/tmp/coverage-79292-1735543485296-0.json +1 -0
  227. package/coverage/tmp/coverage-80212-1735543483980-0.json +1 -0
  228. package/eslint.config.js +56 -0
  229. package/gulpfile.js +42 -0
  230. package/package.json +105 -50
  231. package/src/{address.js → address.ts} +211 -191
  232. package/src/{bip66.js → bip66.ts} +23 -19
  233. package/src/{block.js → block.ts} +114 -105
  234. package/src/{bufferutils.js → bufferutils.ts} +65 -67
  235. package/src/crypto/crypto-browser.js +75 -0
  236. package/src/crypto/crypto.ts +1 -0
  237. package/src/crypto.ts +108 -0
  238. package/src/{ecc_lib.js → ecc_lib.ts} +25 -53
  239. package/src/hooks/{AdvancedSignatureManager.js → AdvancedSignatureManager.ts} +34 -18
  240. package/src/hooks/HookedSigner.ts +108 -0
  241. package/src/hooks/{SignatureManager.js → SignatureManager.ts} +26 -14
  242. package/src/index.ts +86 -0
  243. package/src/{merkle.js → merkle.ts} +8 -7
  244. package/src/{networks.js → networks.ts} +235 -220
  245. package/src/ops.ts +282 -0
  246. package/src/payments/bip341.ts +140 -0
  247. package/src/payments/embed.ts +55 -0
  248. package/src/payments/{index.d.ts → index.ts} +24 -10
  249. package/src/payments/lazy.ts +28 -0
  250. package/src/payments/p2ms.ts +150 -0
  251. package/src/payments/{p2pk.js → p2pk.ts} +85 -82
  252. package/src/payments/p2pkh.ts +206 -0
  253. package/src/payments/{p2sh.js → p2sh.ts} +206 -204
  254. package/src/payments/{p2tr.js → p2tr.ts} +114 -125
  255. package/src/payments/{p2wpkh.js → p2wpkh.ts} +51 -56
  256. package/src/payments/{p2wsh.js → p2wsh.ts} +69 -81
  257. package/src/psbt/{bip371.js → bip371.ts} +441 -424
  258. package/src/psbt/psbtutils.ts +301 -0
  259. package/src/{psbt.js → psbt.ts} +2187 -1828
  260. package/src/{push_data.js → push_data.ts} +35 -21
  261. package/src/{script.js → script.ts} +93 -77
  262. package/src/{script_number.js → script_number.ts} +15 -21
  263. package/src/{script_signature.js → script_signature.ts} +26 -14
  264. package/src/{transaction.js → transaction.ts} +247 -167
  265. package/src/types.ts +122 -0
  266. package/test/address.spec.js +124 -0
  267. package/test/address.spec.ts +177 -0
  268. package/test/bitcoin.core.spec.js +170 -0
  269. package/test/bitcoin.core.spec.ts +234 -0
  270. package/test/block.spec.js +141 -0
  271. package/test/block.spec.ts +194 -0
  272. package/test/bufferutils.spec.js +427 -0
  273. package/test/bufferutils.spec.ts +513 -0
  274. package/test/crypto.spec.js +41 -0
  275. package/test/crypto.spec.ts +55 -0
  276. package/test/fixtures/address.json +329 -0
  277. package/test/fixtures/block.json +148 -0
  278. package/test/fixtures/bufferutils.json +102 -0
  279. package/test/fixtures/core/README.md +26 -0
  280. package/test/fixtures/core/base58_encode_decode.json +50 -0
  281. package/test/fixtures/core/base58_keys_invalid.json +152 -0
  282. package/test/fixtures/core/base58_keys_valid.json +452 -0
  283. package/test/fixtures/core/blocks.json +27 -0
  284. package/test/fixtures/core/sig_canonical.json +7 -0
  285. package/test/fixtures/core/sig_noncanonical.json +33 -0
  286. package/test/fixtures/core/sighash.json +3505 -0
  287. package/test/fixtures/core/tx_valid.json +2023 -0
  288. package/test/fixtures/crypto.json +43 -0
  289. package/test/fixtures/ecdsa.json +217 -0
  290. package/test/fixtures/ecpair.json +141 -0
  291. package/test/fixtures/embed.json +108 -0
  292. package/test/fixtures/p2ms.json +434 -0
  293. package/test/fixtures/p2pk.json +179 -0
  294. package/test/fixtures/p2pkh.json +276 -0
  295. package/test/fixtures/p2sh.json +508 -0
  296. package/test/fixtures/p2tr.json +1198 -0
  297. package/test/fixtures/p2wpkh.json +290 -0
  298. package/test/fixtures/p2wsh.json +489 -0
  299. package/test/fixtures/psbt.json +924 -0
  300. package/test/fixtures/script.json +465 -0
  301. package/test/fixtures/script_number.json +225 -0
  302. package/test/fixtures/signature.json +140 -0
  303. package/test/fixtures/transaction.json +916 -0
  304. package/test/integration/_regtest.js +7 -0
  305. package/test/integration/_regtest.ts +6 -0
  306. package/test/integration/addresses.spec.js +116 -0
  307. package/test/integration/addresses.spec.ts +154 -0
  308. package/test/integration/bip32.spec.js +85 -0
  309. package/test/integration/bip32.spec.ts +151 -0
  310. package/test/integration/blocks.spec.js +26 -0
  311. package/test/integration/blocks.spec.ts +28 -0
  312. package/test/integration/cltv.spec.js +199 -0
  313. package/test/integration/cltv.spec.ts +283 -0
  314. package/test/integration/csv.spec.js +362 -0
  315. package/test/integration/csv.spec.ts +527 -0
  316. package/test/integration/payments.spec.js +98 -0
  317. package/test/integration/payments.spec.ts +135 -0
  318. package/test/integration/taproot.spec.js +532 -0
  319. package/test/integration/taproot.spec.ts +707 -0
  320. package/test/integration/transactions.spec.js +561 -0
  321. package/test/integration/transactions.spec.ts +769 -0
  322. package/test/payments.spec.js +97 -0
  323. package/test/payments.spec.ts +125 -0
  324. package/test/payments.utils.js +190 -0
  325. package/test/payments.utils.ts +208 -0
  326. package/test/psbt.spec.js +1044 -0
  327. package/test/psbt.spec.ts +1414 -0
  328. package/test/script.spec.js +151 -0
  329. package/test/script.spec.ts +210 -0
  330. package/test/script_number.spec.js +24 -0
  331. package/test/script_number.spec.ts +29 -0
  332. package/test/script_signature.spec.js +52 -0
  333. package/test/script_signature.spec.ts +66 -0
  334. package/test/transaction.spec.js +269 -0
  335. package/test/transaction.spec.ts +387 -0
  336. package/test/ts-node-register.js +5 -0
  337. package/test/tsconfig.json +45 -0
  338. package/test/types.spec.js +46 -0
  339. package/test/types.spec.ts +58 -0
  340. package/tsconfig.base.json +27 -0
  341. package/tsconfig.json +19 -0
  342. package/tsconfig.webpack.json +18 -0
  343. package/webpack.config.js +79 -0
  344. package/src/address.d.ts +0 -42
  345. package/src/crypto.js +0 -128
  346. package/src/ecc_lib.d.ts +0 -17
  347. package/src/hooks/AdvancedSignatureManager.d.ts +0 -44
  348. package/src/hooks/HookedSigner.js +0 -90
  349. package/src/hooks/SignatureManager.d.ts +0 -35
  350. package/src/index.d.ts +0 -42
  351. package/src/index.js +0 -87
  352. package/src/merkle.d.ts +0 -10
  353. package/src/networks.d.ts +0 -83
  354. package/src/payments/bip341.d.ts +0 -49
  355. package/src/payments/bip341.js +0 -124
  356. package/src/payments/embed.d.ts +0 -9
  357. package/src/payments/embed.js +0 -54
  358. package/src/payments/index.js +0 -69
  359. package/src/payments/p2ms.d.ts +0 -9
  360. package/src/payments/p2pk.d.ts +0 -10
  361. package/src/payments/p2pkh.d.ts +0 -10
  362. package/src/payments/p2pkh.js +0 -143
  363. package/src/payments/p2sh.d.ts +0 -10
  364. package/src/payments/p2tr.d.ts +0 -10
  365. package/src/payments/p2wpkh.d.ts +0 -10
  366. package/src/payments/p2wsh.d.ts +0 -10
  367. package/src/psbt/bip371.d.ts +0 -42
  368. package/src/psbt/psbtutils.d.ts +0 -64
  369. package/src/psbt/psbtutils.js +0 -191
  370. package/src/push_data.d.ts +0 -29
  371. package/src/script.d.ts +0 -42
  372. package/src/script_number.d.ts +0 -19
  373. package/src/script_signature.d.ts +0 -21
  374. package/src/types.js +0 -106
@@ -1,191 +1,211 @@
1
- 'use strict';
2
- Object.defineProperty(exports, '__esModule', { value: true });
3
- exports.toOutputScript =
4
- exports.fromOutputScript =
5
- exports.toBech32 =
6
- exports.toBase58Check =
7
- exports.fromBech32 =
8
- exports.fromBase58Check =
9
- void 0;
10
- /**
11
- * bitcoin address decode and encode tools, include base58、bech32 and output script
12
- *
13
- * networks support bitcoin、bitcoin testnet and bitcoin regtest
14
- *
15
- * addresses support P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
16
- *
17
- * @packageDocumentation
18
- */
19
- const networks = require('./networks');
20
- const payments = require('./payments');
21
- const bscript = require('./script');
22
- const types_1 = require('./types');
23
- const bech32_1 = require('bech32');
24
- const bs58check = require('bs58check');
25
- const FUTURE_SEGWIT_MAX_SIZE = 40;
26
- const FUTURE_SEGWIT_MIN_SIZE = 2;
27
- const FUTURE_SEGWIT_MAX_VERSION = 16;
28
- const FUTURE_SEGWIT_MIN_VERSION = 2;
29
- const FUTURE_SEGWIT_VERSION_DIFF = 0x50;
30
- const FUTURE_SEGWIT_VERSION_WARNING =
31
- 'WARNING: Sending to a future segwit version address can lead to loss of funds. ' +
32
- 'End users MUST be warned carefully in the GUI and asked if they wish to proceed ' +
33
- 'with caution. Wallets should verify the segwit version from the output of fromBech32, ' +
34
- 'then decide when it is safe to use which version of segwit.';
35
- function _toFutureSegwitAddress(output, network) {
36
- const data = output.slice(2);
37
- if (
38
- data.length < FUTURE_SEGWIT_MIN_SIZE ||
39
- data.length > FUTURE_SEGWIT_MAX_SIZE
40
- )
41
- throw new TypeError('Invalid program length for segwit address');
42
- const version = output[0] - FUTURE_SEGWIT_VERSION_DIFF;
43
- if (
44
- version < FUTURE_SEGWIT_MIN_VERSION ||
45
- version > FUTURE_SEGWIT_MAX_VERSION
46
- )
47
- throw new TypeError('Invalid version for segwit address');
48
- if (output[1] !== data.length)
49
- throw new TypeError('Invalid script for segwit address');
50
- console.warn(FUTURE_SEGWIT_VERSION_WARNING);
51
- return toBech32(data, version, network.bech32);
52
- }
53
- /**
54
- * decode address with base58 specification, return address version and address hash if valid
55
- */
56
- function fromBase58Check(address) {
57
- const payload = Buffer.from(bs58check.decode(address));
58
- // TODO: 4.0.0, move to "toOutputScript"
59
- if (payload.length < 21) throw new TypeError(address + ' is too short');
60
- if (payload.length > 21) throw new TypeError(address + ' is too long');
61
- const version = payload.readUInt8(0);
62
- const hash = payload.slice(1);
63
- return { version, hash };
64
- }
65
- exports.fromBase58Check = fromBase58Check;
66
- /**
67
- * decode address with bech32 specification, return address version、address prefix and address data if valid
68
- */
69
- function fromBech32(address) {
70
- let result;
71
- let version;
72
- try {
73
- result = bech32_1.bech32.decode(address);
74
- } catch (e) {}
75
- if (result) {
76
- version = result.words[0];
77
- if (version !== 0)
78
- throw new TypeError(address + ' uses wrong encoding');
79
- } else {
80
- result = bech32_1.bech32m.decode(address);
81
- version = result.words[0];
82
- if (version === 0)
83
- throw new TypeError(address + ' uses wrong encoding');
84
- }
85
- const data = bech32_1.bech32.fromWords(result.words.slice(1));
86
- return {
87
- version,
88
- prefix: result.prefix,
89
- data: Buffer.from(data),
90
- };
91
- }
92
- exports.fromBech32 = fromBech32;
93
- /**
94
- * encode address hash to base58 address with version
95
- */
96
- function toBase58Check(hash, version) {
97
- (0, types_1.typeforce)(
98
- (0, types_1.tuple)(types_1.Hash160bit, types_1.UInt8),
99
- arguments,
100
- );
101
- const payload = Buffer.allocUnsafe(21);
102
- payload.writeUInt8(version, 0);
103
- hash.copy(payload, 1);
104
- return bs58check.encode(payload);
105
- }
106
- exports.toBase58Check = toBase58Check;
107
- /**
108
- * encode address hash to bech32 address with version and prefix
109
- */
110
- function toBech32(data, version, prefix) {
111
- const words = bech32_1.bech32.toWords(data);
112
- words.unshift(version);
113
- return version === 0
114
- ? bech32_1.bech32.encode(prefix, words)
115
- : bech32_1.bech32m.encode(prefix, words);
116
- }
117
- exports.toBech32 = toBech32;
118
- /**
119
- * decode address from output script with network, return address if matched
120
- */
121
- function fromOutputScript(output, network) {
122
- // TODO: Network
123
- network = network || networks.bitcoin;
124
- try {
125
- return payments.p2pkh({ output, network }).address;
126
- } catch (e) {}
127
- try {
128
- return payments.p2sh({ output, network }).address;
129
- } catch (e) {}
130
- try {
131
- return payments.p2wpkh({ output, network }).address;
132
- } catch (e) {}
133
- try {
134
- return payments.p2wsh({ output, network }).address;
135
- } catch (e) {}
136
- try {
137
- return payments.p2tr({ output, network }).address;
138
- } catch (e) {}
139
- try {
140
- return _toFutureSegwitAddress(output, network);
141
- } catch (e) {}
142
- throw new Error(bscript.toASM(output) + ' has no matching Address');
143
- }
144
- exports.fromOutputScript = fromOutputScript;
145
- /**
146
- * encodes address to output script with network, return output script if address matched
147
- */
148
- function toOutputScript(address, network) {
149
- network = network || networks.bitcoin;
150
- let decodeBase58;
151
- let decodeBech32;
152
- try {
153
- decodeBase58 = fromBase58Check(address);
154
- } catch (e) {}
155
- if (decodeBase58) {
156
- if (decodeBase58.version === network.pubKeyHash)
157
- return payments.p2pkh({ hash: decodeBase58.hash }).output;
158
- if (decodeBase58.version === network.scriptHash)
159
- return payments.p2sh({ hash: decodeBase58.hash }).output;
160
- } else {
161
- try {
162
- decodeBech32 = fromBech32(address);
163
- } catch (e) {}
164
- if (decodeBech32) {
165
- if (decodeBech32.prefix !== network.bech32)
166
- throw new Error(address + ' has an invalid prefix');
167
- if (decodeBech32.version === 0) {
168
- if (decodeBech32.data.length === 20)
169
- return payments.p2wpkh({ hash: decodeBech32.data }).output;
170
- if (decodeBech32.data.length === 32)
171
- return payments.p2wsh({ hash: decodeBech32.data }).output;
172
- } else if (decodeBech32.version === 1) {
173
- if (decodeBech32.data.length === 32)
174
- return payments.p2tr({ pubkey: decodeBech32.data }).output;
175
- } else if (
176
- decodeBech32.version >= FUTURE_SEGWIT_MIN_VERSION &&
177
- decodeBech32.version <= FUTURE_SEGWIT_MAX_VERSION &&
178
- decodeBech32.data.length >= FUTURE_SEGWIT_MIN_SIZE &&
179
- decodeBech32.data.length <= FUTURE_SEGWIT_MAX_SIZE
180
- ) {
181
- console.warn(FUTURE_SEGWIT_VERSION_WARNING);
182
- return bscript.compile([
183
- decodeBech32.version + FUTURE_SEGWIT_VERSION_DIFF,
184
- decodeBech32.data,
185
- ]);
186
- }
187
- }
188
- }
189
- return Buffer.from(address, 'hex');
190
- }
191
- exports.toOutputScript = toOutputScript;
1
+ /**
2
+ * bitcoin address decode and encode tools, include base58、bech32 and output script
3
+ *
4
+ * networks support bitcoin、bitcoin testnet and bitcoin regtest
5
+ *
6
+ * addresses support P2PKH、P2SH、P2WPKH、P2WSH、P2TR and so on
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { bech32, bech32m } from 'bech32';
11
+ import * as bs58check from 'bs58check';
12
+ import { payments } from './index.js';
13
+ import * as networks from './networks.js';
14
+ import { Network } from './networks.js';
15
+ import * as bscript from './script.js';
16
+ import { Hash160bit, tuple, typeforce, UInt8 } from './types.js';
17
+
18
+ /** base58check decode result */
19
+ export interface Base58CheckResult {
20
+ /** address hash */
21
+ hash: Buffer;
22
+ /** address version: 0x00 for P2PKH, 0x05 for P2SH */
23
+ version: number;
24
+ }
25
+
26
+ /** bech32 decode result */
27
+ export interface Bech32Result {
28
+ /** address version: 0x00 for P2WPKH、P2WSH, 0x01 for P2TR*/
29
+ version: number;
30
+ /** address prefix: bc for P2WPKH、P2WSH、P2TR */
31
+ prefix: string;
32
+ /** address data:20 bytes for P2WPKH, 32 bytes for P2WSH、P2TR */
33
+ data: Buffer;
34
+ }
35
+
36
+ const FUTURE_SEGWIT_MAX_SIZE: number = 40;
37
+ const FUTURE_SEGWIT_MIN_SIZE: number = 2;
38
+ const FUTURE_SEGWIT_MAX_VERSION: number = 16;
39
+ const FUTURE_SEGWIT_MIN_VERSION: number = 2;
40
+ const FUTURE_SEGWIT_VERSION_DIFF: number = 0x50;
41
+ const FUTURE_SEGWIT_VERSION_WARNING: string =
42
+ 'WARNING: Sending to a future segwit version address can lead to loss of funds. ' +
43
+ 'End users MUST be warned carefully in the GUI and asked if they wish to proceed ' +
44
+ 'with caution. Wallets should verify the segwit version from the output of fromBech32, ' +
45
+ 'then decide when it is safe to use which version of segwit.';
46
+
47
+ function _toFutureSegwitAddress(output: Buffer, network: Network): string {
48
+ const data = output.slice(2);
49
+
50
+ if (data.length < FUTURE_SEGWIT_MIN_SIZE || data.length > FUTURE_SEGWIT_MAX_SIZE)
51
+ throw new TypeError('Invalid program length for segwit address');
52
+
53
+ const version = output[0] - FUTURE_SEGWIT_VERSION_DIFF;
54
+
55
+ if (version < FUTURE_SEGWIT_MIN_VERSION || version > FUTURE_SEGWIT_MAX_VERSION)
56
+ throw new TypeError('Invalid version for segwit address');
57
+
58
+ if (output[1] !== data.length) throw new TypeError('Invalid script for segwit address');
59
+
60
+ console.warn(FUTURE_SEGWIT_VERSION_WARNING);
61
+
62
+ return toBech32(data, version, network.bech32);
63
+ }
64
+
65
+ /**
66
+ * decode address with base58 specification, return address version and address hash if valid
67
+ */
68
+ export function fromBase58Check(address: string): Base58CheckResult {
69
+ const payload = Buffer.from(bs58check.default.decode(address));
70
+
71
+ // TODO: 4.0.0, move to "toOutputScript"
72
+ if (payload.length < 21) throw new TypeError(address + ' is too short');
73
+ if (payload.length > 21) throw new TypeError(address + ' is too long');
74
+
75
+ const version = payload.readUInt8(0);
76
+ const hash = payload.slice(1);
77
+
78
+ return { version, hash };
79
+ }
80
+
81
+ /**
82
+ * decode address with bech32 specification, return address version、address prefix and address data if valid
83
+ */
84
+ export function fromBech32(address: string): Bech32Result {
85
+ let result;
86
+ let version;
87
+ try {
88
+ result = bech32.decode(address);
89
+ } catch (e) {}
90
+
91
+ if (result) {
92
+ version = result.words[0];
93
+ if (version !== 0) throw new TypeError(address + ' uses wrong encoding');
94
+ } else {
95
+ result = bech32m.decode(address);
96
+ version = result.words[0];
97
+ if (version === 0) throw new TypeError(address + ' uses wrong encoding');
98
+ }
99
+
100
+ const data = bech32.fromWords(result.words.slice(1));
101
+
102
+ return {
103
+ version,
104
+ prefix: result.prefix,
105
+ data: Buffer.from(data),
106
+ };
107
+ }
108
+
109
+ /**
110
+ * encode address hash to base58 address with version
111
+ */
112
+ export function toBase58Check(hash: Buffer, version: number): string {
113
+ typeforce(tuple(Hash160bit, UInt8), arguments);
114
+
115
+ const payload = Buffer.allocUnsafe(21);
116
+ payload.writeUInt8(version, 0);
117
+ hash.copy(payload, 1);
118
+
119
+ return bs58check.default.encode(payload);
120
+ }
121
+
122
+ /**
123
+ * encode address hash to bech32 address with version and prefix
124
+ */
125
+ export function toBech32(data: Buffer, version: number, prefix: string): string {
126
+ const words = bech32.toWords(data);
127
+ words.unshift(version);
128
+
129
+ return version === 0 ? bech32.encode(prefix, words) : bech32m.encode(prefix, words);
130
+ }
131
+
132
+ /**
133
+ * decode address from output script with network, return address if matched
134
+ */
135
+ export function fromOutputScript(output: Buffer, network?: Network): string {
136
+ // TODO: Network
137
+ network = network || networks.bitcoin;
138
+
139
+ try {
140
+ return payments.p2pkh({ output, network }).address as string;
141
+ } catch (e) {}
142
+ try {
143
+ return payments.p2sh({ output, network }).address as string;
144
+ } catch (e) {}
145
+ try {
146
+ return payments.p2wpkh({ output, network }).address as string;
147
+ } catch (e) {}
148
+ try {
149
+ return payments.p2wsh({ output, network }).address as string;
150
+ } catch (e) {}
151
+ try {
152
+ return payments.p2tr({ output, network }).address as string;
153
+ } catch (e) {}
154
+ try {
155
+ return _toFutureSegwitAddress(output, network);
156
+ } catch (e) {}
157
+
158
+ throw new Error(bscript.toASM(output) + ' has no matching Address');
159
+ }
160
+
161
+ /**
162
+ * encodes address to output script with network, return output script if address matched
163
+ */
164
+ export function toOutputScript(address: string, network?: Network): Buffer {
165
+ network = network || networks.bitcoin;
166
+
167
+ let decodeBase58: Base58CheckResult | undefined;
168
+ let decodeBech32: Bech32Result | undefined;
169
+ try {
170
+ decodeBase58 = fromBase58Check(address);
171
+ } catch (e) {}
172
+
173
+ if (decodeBase58) {
174
+ if (decodeBase58.version === network.pubKeyHash)
175
+ return payments.p2pkh({ hash: decodeBase58.hash }).output as Buffer;
176
+ if (decodeBase58.version === network.scriptHash)
177
+ return payments.p2sh({ hash: decodeBase58.hash }).output as Buffer;
178
+ } else {
179
+ try {
180
+ decodeBech32 = fromBech32(address);
181
+ } catch (e) {}
182
+
183
+ if (decodeBech32) {
184
+ if (decodeBech32.prefix !== network.bech32)
185
+ throw new Error(address + ' has an invalid prefix');
186
+ if (decodeBech32.version === 0) {
187
+ if (decodeBech32.data.length === 20)
188
+ return payments.p2wpkh({ hash: decodeBech32.data }).output as Buffer;
189
+ if (decodeBech32.data.length === 32)
190
+ return payments.p2wsh({ hash: decodeBech32.data }).output as Buffer;
191
+ } else if (decodeBech32.version === 1) {
192
+ if (decodeBech32.data.length === 32)
193
+ return payments.p2tr({ pubkey: decodeBech32.data }).output as Buffer;
194
+ } else if (
195
+ decodeBech32.version >= FUTURE_SEGWIT_MIN_VERSION &&
196
+ decodeBech32.version <= FUTURE_SEGWIT_MAX_VERSION &&
197
+ decodeBech32.data.length >= FUTURE_SEGWIT_MIN_SIZE &&
198
+ decodeBech32.data.length <= FUTURE_SEGWIT_MAX_SIZE
199
+ ) {
200
+ console.warn(FUTURE_SEGWIT_VERSION_WARNING);
201
+
202
+ return bscript.compile([
203
+ decodeBech32.version + FUTURE_SEGWIT_VERSION_DIFF,
204
+ decodeBech32.data,
205
+ ]);
206
+ }
207
+ }
208
+ }
209
+
210
+ return Buffer.from(address, 'hex');
211
+ }
@@ -1,58 +1,62 @@
1
- 'use strict';
2
1
  // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
3
2
  // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
4
3
  // NOTE: SIGHASH byte ignored AND restricted, truncate before use
5
- Object.defineProperty(exports, '__esModule', { value: true });
6
- exports.encode = exports.decode = exports.check = void 0;
7
- function check(buffer) {
4
+
5
+ export function check(buffer: Buffer): boolean {
8
6
  if (buffer.length < 8) return false;
9
7
  if (buffer.length > 72) return false;
10
8
  if (buffer[0] !== 0x30) return false;
11
9
  if (buffer[1] !== buffer.length - 2) return false;
12
10
  if (buffer[2] !== 0x02) return false;
11
+
13
12
  const lenR = buffer[3];
14
13
  if (lenR === 0) return false;
15
14
  if (5 + lenR >= buffer.length) return false;
16
15
  if (buffer[4 + lenR] !== 0x02) return false;
16
+
17
17
  const lenS = buffer[5 + lenR];
18
18
  if (lenS === 0) return false;
19
19
  if (6 + lenR + lenS !== buffer.length) return false;
20
+
20
21
  if (buffer[4] & 0x80) return false;
21
22
  if (lenR > 1 && buffer[4] === 0x00 && !(buffer[5] & 0x80)) return false;
23
+
22
24
  if (buffer[lenR + 6] & 0x80) return false;
23
- if (lenS > 1 && buffer[lenR + 6] === 0x00 && !(buffer[lenR + 7] & 0x80))
24
- return false;
25
+ if (lenS > 1 && buffer[lenR + 6] === 0x00 && !(buffer[lenR + 7] & 0x80)) return false;
25
26
  return true;
26
27
  }
27
- exports.check = check;
28
- function decode(buffer) {
28
+
29
+ export function decode(buffer: Buffer): { r: Buffer; s: Buffer } {
29
30
  if (buffer.length < 8) throw new Error('DER sequence length is too short');
30
31
  if (buffer.length > 72) throw new Error('DER sequence length is too long');
31
32
  if (buffer[0] !== 0x30) throw new Error('Expected DER sequence');
32
- if (buffer[1] !== buffer.length - 2)
33
- throw new Error('DER sequence length is invalid');
33
+ if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid');
34
34
  if (buffer[2] !== 0x02) throw new Error('Expected DER integer');
35
+
35
36
  const lenR = buffer[3];
36
37
  if (lenR === 0) throw new Error('R length is zero');
37
38
  if (5 + lenR >= buffer.length) throw new Error('R length is too long');
38
39
  if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)');
40
+
39
41
  const lenS = buffer[5 + lenR];
40
42
  if (lenS === 0) throw new Error('S length is zero');
41
- if (6 + lenR + lenS !== buffer.length)
42
- throw new Error('S length is invalid');
43
+ if (6 + lenR + lenS !== buffer.length) throw new Error('S length is invalid');
44
+
43
45
  if (buffer[4] & 0x80) throw new Error('R value is negative');
44
46
  if (lenR > 1 && buffer[4] === 0x00 && !(buffer[5] & 0x80))
45
47
  throw new Error('R value excessively padded');
48
+
46
49
  if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative');
47
50
  if (lenS > 1 && buffer[lenR + 6] === 0x00 && !(buffer[lenR + 7] & 0x80))
48
51
  throw new Error('S value excessively padded');
52
+
49
53
  // non-BIP66 - extract R, S values
50
54
  return {
51
55
  r: buffer.slice(4, 4 + lenR),
52
56
  s: buffer.slice(6 + lenR),
53
57
  };
54
58
  }
55
- exports.decode = decode;
59
+
56
60
  /*
57
61
  * Expects r and s to be positive DER integers.
58
62
  *
@@ -75,7 +79,7 @@ exports.decode = decode;
75
79
  * 62300 => 0x00f35c
76
80
  * -62300 => 0xff0ca4
77
81
  */
78
- function encode(r, s) {
82
+ export function encode(r: Buffer, s: Buffer): Buffer {
79
83
  const lenR = r.length;
80
84
  const lenS = s.length;
81
85
  if (lenR === 0) throw new Error('R length is zero');
@@ -84,11 +88,11 @@ function encode(r, s) {
84
88
  if (lenS > 33) throw new Error('S length is too long');
85
89
  if (r[0] & 0x80) throw new Error('R value is negative');
86
90
  if (s[0] & 0x80) throw new Error('S value is negative');
87
- if (lenR > 1 && r[0] === 0x00 && !(r[1] & 0x80))
88
- throw new Error('R value excessively padded');
89
- if (lenS > 1 && s[0] === 0x00 && !(s[1] & 0x80))
90
- throw new Error('S value excessively padded');
91
+ if (lenR > 1 && r[0] === 0x00 && !(r[1] & 0x80)) throw new Error('R value excessively padded');
92
+ if (lenS > 1 && s[0] === 0x00 && !(s[1] & 0x80)) throw new Error('S value excessively padded');
93
+
91
94
  const signature = Buffer.allocUnsafe(6 + lenR + lenS);
95
+
92
96
  // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
93
97
  signature[0] = 0x30;
94
98
  signature[1] = signature.length - 2;
@@ -98,6 +102,6 @@ function encode(r, s) {
98
102
  signature[4 + lenR] = 0x02;
99
103
  signature[5 + lenR] = s.length;
100
104
  s.copy(signature, 6 + lenR);
105
+
101
106
  return signature;
102
107
  }
103
- exports.encode = encode;