@btc-vision/bitcoin 6.5.5 → 7.0.0-alpha.0

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 (457) hide show
  1. package/AUDIT/README.md +9 -0
  2. package/HOW_TO_WRITE_GOOD_CODE.md +2436 -0
  3. package/SECURITY.md +27 -0
  4. package/benchmark/psbt-2000-inputs.bench.ts +178 -0
  5. package/benchmark/signing.bench.ts +147 -0
  6. package/browser/address.d.ts +56 -9
  7. package/browser/address.d.ts.map +1 -0
  8. package/browser/bech32utils.d.ts +9 -1
  9. package/browser/bech32utils.d.ts.map +1 -0
  10. package/browser/bip66.d.ts +11 -6
  11. package/browser/bip66.d.ts.map +1 -0
  12. package/browser/block.d.ts +117 -11
  13. package/browser/block.d.ts.map +1 -0
  14. package/browser/branded.d.ts +20 -0
  15. package/browser/branded.d.ts.map +1 -0
  16. package/browser/crypto/crypto.d.ts +1 -0
  17. package/browser/crypto/crypto.d.ts.map +1 -0
  18. package/browser/crypto.d.ts +46 -7
  19. package/browser/crypto.d.ts.map +1 -0
  20. package/browser/ecc/context.d.ts +129 -0
  21. package/browser/ecc/context.d.ts.map +1 -0
  22. package/browser/ecc/index.d.ts +11 -0
  23. package/browser/ecc/index.d.ts.map +1 -0
  24. package/browser/ecc/types.d.ts +128 -0
  25. package/browser/ecc/types.d.ts.map +1 -0
  26. package/browser/ecpair.d.ts +99 -0
  27. package/browser/errors.d.ts +124 -0
  28. package/browser/errors.d.ts.map +1 -0
  29. package/browser/index.d.ts +32 -5
  30. package/browser/index.d.ts.map +1 -0
  31. package/browser/index.js +12482 -101
  32. package/browser/io/BinaryReader.d.ts +276 -0
  33. package/browser/io/BinaryReader.d.ts.map +1 -0
  34. package/browser/io/BinaryWriter.d.ts +391 -0
  35. package/browser/io/BinaryWriter.d.ts.map +1 -0
  36. package/browser/io/MemoryPool.d.ts +220 -0
  37. package/browser/io/MemoryPool.d.ts.map +1 -0
  38. package/browser/io/base64.d.ts +13 -0
  39. package/browser/io/base64.d.ts.map +1 -0
  40. package/browser/io/hex.d.ts +67 -0
  41. package/browser/io/hex.d.ts.map +1 -0
  42. package/browser/io/index.d.ts +17 -0
  43. package/browser/io/index.d.ts.map +1 -0
  44. package/browser/io/utils.d.ts +199 -0
  45. package/browser/io/utils.d.ts.map +1 -0
  46. package/browser/merkle.d.ts +10 -1
  47. package/browser/merkle.d.ts.map +1 -0
  48. package/browser/networks.d.ts +70 -9
  49. package/browser/networks.d.ts.map +1 -0
  50. package/browser/opcodes.d.ts +1 -0
  51. package/browser/opcodes.d.ts.map +1 -0
  52. package/browser/payments/bip341.d.ts +35 -9
  53. package/browser/payments/bip341.d.ts.map +1 -0
  54. package/browser/payments/embed.d.ts +112 -1
  55. package/browser/payments/embed.d.ts.map +1 -0
  56. package/browser/payments/index.d.ts +17 -10
  57. package/browser/payments/index.d.ts.map +1 -0
  58. package/browser/payments/p2ms.d.ts +150 -0
  59. package/browser/payments/p2ms.d.ts.map +1 -0
  60. package/browser/payments/p2op.d.ts +150 -24
  61. package/browser/payments/p2op.d.ts.map +1 -0
  62. package/browser/payments/p2pk.d.ts +154 -1
  63. package/browser/payments/p2pk.d.ts.map +1 -0
  64. package/browser/payments/p2pkh.d.ts +176 -1
  65. package/browser/payments/p2pkh.d.ts.map +1 -0
  66. package/browser/payments/p2sh.d.ts +150 -1
  67. package/browser/payments/p2sh.d.ts.map +1 -0
  68. package/browser/payments/p2tr.d.ts +185 -1
  69. package/browser/payments/p2tr.d.ts.map +1 -0
  70. package/browser/payments/p2wpkh.d.ts +161 -1
  71. package/browser/payments/p2wpkh.d.ts.map +1 -0
  72. package/browser/payments/p2wsh.d.ts +146 -1
  73. package/browser/payments/p2wsh.d.ts.map +1 -0
  74. package/browser/payments/types.d.ts +94 -64
  75. package/browser/payments/types.d.ts.map +1 -0
  76. package/browser/psbt/bip371.d.ts +34 -8
  77. package/browser/psbt/bip371.d.ts.map +1 -0
  78. package/browser/psbt/psbtutils.d.ts +56 -16
  79. package/browser/psbt/psbtutils.d.ts.map +1 -0
  80. package/browser/psbt/types.d.ts +245 -0
  81. package/browser/psbt/types.d.ts.map +1 -0
  82. package/browser/psbt/utils.d.ts +64 -0
  83. package/browser/psbt/utils.d.ts.map +1 -0
  84. package/browser/psbt/validation.d.ts +84 -0
  85. package/browser/psbt/validation.d.ts.map +1 -0
  86. package/browser/psbt.d.ts +82 -118
  87. package/browser/psbt.d.ts.map +1 -0
  88. package/browser/pubkey.d.ts +27 -6
  89. package/browser/pubkey.d.ts.map +1 -0
  90. package/browser/push_data.d.ts +24 -2
  91. package/browser/push_data.d.ts.map +1 -0
  92. package/browser/script.d.ts +33 -8
  93. package/browser/script.d.ts.map +1 -0
  94. package/browser/script_number.d.ts +17 -0
  95. package/browser/script_number.d.ts.map +1 -0
  96. package/browser/script_signature.d.ts +23 -5
  97. package/browser/script_signature.d.ts.map +1 -0
  98. package/browser/transaction.d.ts +160 -18
  99. package/browser/transaction.d.ts.map +1 -0
  100. package/browser/types.d.ts +36 -38
  101. package/browser/types.d.ts.map +1 -0
  102. package/browser/workers/WorkerSigningPool.d.ts +143 -0
  103. package/browser/workers/WorkerSigningPool.d.ts.map +1 -0
  104. package/browser/workers/WorkerSigningPool.node.d.ts +116 -0
  105. package/browser/workers/WorkerSigningPool.node.d.ts.map +1 -0
  106. package/browser/workers/ecc-bundle.d.ts +25 -0
  107. package/browser/workers/ecc-bundle.d.ts.map +1 -0
  108. package/browser/workers/index.d.ts +91 -0
  109. package/browser/workers/index.d.ts.map +1 -0
  110. package/browser/workers/psbt-parallel.d.ts +88 -0
  111. package/browser/workers/psbt-parallel.d.ts.map +1 -0
  112. package/browser/workers/signing-worker.d.ts +37 -0
  113. package/browser/workers/signing-worker.d.ts.map +1 -0
  114. package/browser/workers/types.d.ts +365 -0
  115. package/browser/workers/types.d.ts.map +1 -0
  116. package/build/address.d.ts +57 -10
  117. package/build/address.d.ts.map +1 -0
  118. package/build/address.js +80 -24
  119. package/build/address.js.map +1 -0
  120. package/build/bech32utils.d.ts +9 -1
  121. package/build/bech32utils.d.ts.map +1 -0
  122. package/build/bech32utils.js +10 -2
  123. package/build/bech32utils.js.map +1 -0
  124. package/build/bip66.d.ts +11 -6
  125. package/build/bip66.d.ts.map +1 -0
  126. package/build/bip66.js +32 -3
  127. package/build/bip66.js.map +1 -0
  128. package/build/block.d.ts +117 -11
  129. package/build/block.d.ts.map +1 -0
  130. package/build/block.js +204 -72
  131. package/build/block.js.map +1 -0
  132. package/build/branded.d.ts +20 -0
  133. package/build/branded.d.ts.map +1 -0
  134. package/build/branded.js +7 -0
  135. package/build/branded.js.map +1 -0
  136. package/build/crypto/crypto.d.ts +1 -0
  137. package/build/crypto/crypto.d.ts.map +1 -0
  138. package/build/crypto/crypto.js +1 -0
  139. package/build/crypto/crypto.js.map +1 -0
  140. package/build/crypto.d.ts +46 -7
  141. package/build/crypto.d.ts.map +1 -0
  142. package/build/crypto.js +65 -20
  143. package/build/crypto.js.map +1 -0
  144. package/build/ecc/context.d.ts +135 -0
  145. package/build/ecc/context.d.ts.map +1 -0
  146. package/build/ecc/context.js +232 -0
  147. package/build/ecc/context.js.map +1 -0
  148. package/build/ecc/index.d.ts +11 -0
  149. package/build/ecc/index.d.ts.map +1 -0
  150. package/build/ecc/index.js +11 -0
  151. package/build/ecc/index.js.map +1 -0
  152. package/build/ecc/types.d.ts +134 -0
  153. package/build/ecc/types.d.ts.map +1 -0
  154. package/build/ecc/types.js +8 -0
  155. package/build/ecc/types.js.map +1 -0
  156. package/build/errors.d.ts +124 -0
  157. package/build/errors.d.ts.map +1 -0
  158. package/build/errors.js +155 -0
  159. package/build/errors.js.map +1 -0
  160. package/build/index.d.ts +32 -5
  161. package/build/index.d.ts.map +1 -0
  162. package/build/index.js +26 -3
  163. package/build/index.js.map +1 -0
  164. package/build/io/BinaryReader.d.ts +276 -0
  165. package/build/io/BinaryReader.d.ts.map +1 -0
  166. package/build/io/BinaryReader.js +425 -0
  167. package/build/io/BinaryReader.js.map +1 -0
  168. package/build/io/BinaryWriter.d.ts +391 -0
  169. package/build/io/BinaryWriter.d.ts.map +1 -0
  170. package/build/io/BinaryWriter.js +611 -0
  171. package/build/io/BinaryWriter.js.map +1 -0
  172. package/build/io/MemoryPool.d.ts +220 -0
  173. package/build/io/MemoryPool.d.ts.map +1 -0
  174. package/build/io/MemoryPool.js +309 -0
  175. package/build/io/MemoryPool.js.map +1 -0
  176. package/build/io/base64.d.ts +13 -0
  177. package/build/io/base64.d.ts.map +1 -0
  178. package/build/io/base64.js +20 -0
  179. package/build/io/base64.js.map +1 -0
  180. package/build/io/hex.d.ts +67 -0
  181. package/build/io/hex.d.ts.map +1 -0
  182. package/build/io/hex.js +138 -0
  183. package/build/io/hex.js.map +1 -0
  184. package/build/io/index.d.ts +17 -0
  185. package/build/io/index.d.ts.map +1 -0
  186. package/build/io/index.js +23 -0
  187. package/build/io/index.js.map +1 -0
  188. package/build/io/utils.d.ts +199 -0
  189. package/build/io/utils.d.ts.map +1 -0
  190. package/build/io/utils.js +271 -0
  191. package/build/io/utils.js.map +1 -0
  192. package/build/merkle.d.ts +10 -1
  193. package/build/merkle.d.ts.map +1 -0
  194. package/build/merkle.js +12 -1
  195. package/build/merkle.js.map +1 -0
  196. package/build/networks.d.ts +70 -9
  197. package/build/networks.d.ts.map +1 -0
  198. package/build/networks.js +90 -4
  199. package/build/networks.js.map +1 -0
  200. package/build/opcodes.d.ts +1 -0
  201. package/build/opcodes.d.ts.map +1 -0
  202. package/build/opcodes.js +1 -0
  203. package/build/opcodes.js.map +1 -0
  204. package/build/payments/bip341.d.ts +36 -9
  205. package/build/payments/bip341.d.ts.map +1 -0
  206. package/build/payments/bip341.js +35 -15
  207. package/build/payments/bip341.js.map +1 -0
  208. package/build/payments/embed.d.ts +120 -1
  209. package/build/payments/embed.d.ts.map +1 -0
  210. package/build/payments/embed.js +215 -34
  211. package/build/payments/embed.js.map +1 -0
  212. package/build/payments/index.d.ts +17 -10
  213. package/build/payments/index.d.ts.map +1 -0
  214. package/build/payments/index.js +20 -10
  215. package/build/payments/index.js.map +1 -0
  216. package/build/payments/p2ms.d.ts +159 -1
  217. package/build/payments/p2ms.d.ts.map +1 -0
  218. package/build/payments/p2ms.js +427 -108
  219. package/build/payments/p2ms.js.map +1 -0
  220. package/build/payments/p2op.d.ts +158 -24
  221. package/build/payments/p2op.d.ts.map +1 -0
  222. package/build/payments/p2op.js +379 -93
  223. package/build/payments/p2op.js.map +1 -0
  224. package/build/payments/p2pk.d.ts +162 -1
  225. package/build/payments/p2pk.d.ts.map +1 -0
  226. package/build/payments/p2pk.js +327 -58
  227. package/build/payments/p2pk.js.map +1 -0
  228. package/build/payments/p2pkh.d.ts +185 -1
  229. package/build/payments/p2pkh.d.ts.map +1 -0
  230. package/build/payments/p2pkh.js +467 -114
  231. package/build/payments/p2pkh.js.map +1 -0
  232. package/build/payments/p2sh.d.ts +159 -1
  233. package/build/payments/p2sh.d.ts.map +1 -0
  234. package/build/payments/p2sh.js +500 -152
  235. package/build/payments/p2sh.js.map +1 -0
  236. package/build/payments/p2tr.d.ts +193 -1
  237. package/build/payments/p2tr.d.ts.map +1 -0
  238. package/build/payments/p2tr.js +592 -174
  239. package/build/payments/p2tr.js.map +1 -0
  240. package/build/payments/p2wpkh.d.ts +170 -1
  241. package/build/payments/p2wpkh.d.ts.map +1 -0
  242. package/build/payments/p2wpkh.js +429 -104
  243. package/build/payments/p2wpkh.js.map +1 -0
  244. package/build/payments/p2wsh.d.ts +155 -1
  245. package/build/payments/p2wsh.d.ts.map +1 -0
  246. package/build/payments/p2wsh.js +466 -144
  247. package/build/payments/p2wsh.js.map +1 -0
  248. package/build/payments/types.d.ts +98 -64
  249. package/build/payments/types.d.ts.map +1 -0
  250. package/build/payments/types.js +17 -13
  251. package/build/payments/types.js.map +1 -0
  252. package/build/psbt/bip371.d.ts +35 -9
  253. package/build/psbt/bip371.d.ts.map +1 -0
  254. package/build/psbt/bip371.js +113 -28
  255. package/build/psbt/bip371.js.map +1 -0
  256. package/build/psbt/psbtutils.d.ts +56 -16
  257. package/build/psbt/psbtutils.d.ts.map +1 -0
  258. package/build/psbt/psbtutils.js +71 -16
  259. package/build/psbt/psbtutils.js.map +1 -0
  260. package/build/psbt/types.d.ts +249 -0
  261. package/build/psbt/types.d.ts.map +1 -0
  262. package/build/psbt/types.js +6 -0
  263. package/build/psbt/types.js.map +1 -0
  264. package/build/psbt/utils.d.ts +68 -0
  265. package/build/psbt/utils.d.ts.map +1 -0
  266. package/build/psbt/utils.js +171 -0
  267. package/build/psbt/utils.js.map +1 -0
  268. package/build/psbt/validation.d.ts +88 -0
  269. package/build/psbt/validation.d.ts.map +1 -0
  270. package/build/psbt/validation.js +149 -0
  271. package/build/psbt/validation.js.map +1 -0
  272. package/build/psbt.d.ts +84 -120
  273. package/build/psbt.d.ts.map +1 -0
  274. package/build/psbt.js +411 -412
  275. package/build/psbt.js.map +1 -0
  276. package/build/pubkey.d.ts +27 -6
  277. package/build/pubkey.d.ts.map +1 -0
  278. package/build/pubkey.js +37 -13
  279. package/build/pubkey.js.map +1 -0
  280. package/build/push_data.d.ts +24 -2
  281. package/build/push_data.d.ts.map +1 -0
  282. package/build/push_data.js +44 -12
  283. package/build/push_data.js.map +1 -0
  284. package/build/script.d.ts +33 -8
  285. package/build/script.d.ts.map +1 -0
  286. package/build/script.js +100 -36
  287. package/build/script.js.map +1 -0
  288. package/build/script_number.d.ts +17 -0
  289. package/build/script_number.d.ts.map +1 -0
  290. package/build/script_number.js +19 -0
  291. package/build/script_number.js.map +1 -0
  292. package/build/script_signature.d.ts +23 -5
  293. package/build/script_signature.d.ts.map +1 -0
  294. package/build/script_signature.js +48 -15
  295. package/build/script_signature.js.map +1 -0
  296. package/build/transaction.d.ts +160 -18
  297. package/build/transaction.d.ts.map +1 -0
  298. package/build/transaction.js +443 -176
  299. package/build/transaction.js.map +1 -0
  300. package/build/tsconfig.build.tsbuildinfo +1 -0
  301. package/build/types.d.ts +36 -38
  302. package/build/types.d.ts.map +1 -0
  303. package/build/types.js +175 -57
  304. package/build/types.js.map +1 -0
  305. package/build/workers/WorkerSigningPool.d.ts +174 -0
  306. package/build/workers/WorkerSigningPool.d.ts.map +1 -0
  307. package/build/workers/WorkerSigningPool.js +553 -0
  308. package/build/workers/WorkerSigningPool.js.map +1 -0
  309. package/build/workers/WorkerSigningPool.node.d.ts +124 -0
  310. package/build/workers/WorkerSigningPool.node.d.ts.map +1 -0
  311. package/build/workers/WorkerSigningPool.node.js +753 -0
  312. package/build/workers/WorkerSigningPool.node.js.map +1 -0
  313. package/build/workers/ecc-bundle.d.ts +25 -0
  314. package/build/workers/ecc-bundle.d.ts.map +1 -0
  315. package/build/workers/ecc-bundle.js +25 -0
  316. package/build/workers/ecc-bundle.js.map +1 -0
  317. package/build/workers/index.d.ts +91 -0
  318. package/build/workers/index.d.ts.map +1 -0
  319. package/build/workers/index.js +114 -0
  320. package/build/workers/index.js.map +1 -0
  321. package/build/workers/psbt-parallel.d.ts +117 -0
  322. package/build/workers/psbt-parallel.d.ts.map +1 -0
  323. package/build/workers/psbt-parallel.js +233 -0
  324. package/build/workers/psbt-parallel.js.map +1 -0
  325. package/build/workers/signing-worker.d.ts +37 -0
  326. package/build/workers/signing-worker.d.ts.map +1 -0
  327. package/build/workers/signing-worker.js +350 -0
  328. package/build/workers/signing-worker.js.map +1 -0
  329. package/build/workers/types.d.ts +365 -0
  330. package/build/workers/types.d.ts.map +1 -0
  331. package/build/workers/types.js +60 -0
  332. package/build/workers/types.js.map +1 -0
  333. package/package.json +83 -25
  334. package/scripts/bundle-ecc.ts +111 -0
  335. package/src/address.ts +81 -44
  336. package/src/bech32utils.ts +3 -3
  337. package/src/bip66.ts +34 -24
  338. package/src/block.ts +196 -84
  339. package/src/branded.ts +18 -0
  340. package/src/crypto.ts +64 -26
  341. package/src/ecc/context.ts +277 -0
  342. package/src/ecc/index.ts +14 -0
  343. package/src/ecc/types.ts +154 -0
  344. package/src/ecpair.d.ts +99 -0
  345. package/src/errors.ts +163 -0
  346. package/src/index.ts +113 -9
  347. package/src/io/BinaryReader.ts +461 -0
  348. package/src/io/BinaryWriter.ts +696 -0
  349. package/src/io/MemoryPool.ts +343 -0
  350. package/src/io/base64.ts +20 -0
  351. package/src/io/hex.ts +155 -0
  352. package/src/io/index.ts +41 -0
  353. package/src/io/utils.ts +283 -0
  354. package/src/merkle.ts +14 -9
  355. package/src/networks.ts +9 -9
  356. package/src/payments/bip341.ts +34 -33
  357. package/src/payments/embed.ts +244 -41
  358. package/src/payments/index.ts +12 -10
  359. package/src/payments/p2ms.ts +490 -118
  360. package/src/payments/p2op.ts +431 -133
  361. package/src/payments/p2pk.ts +370 -72
  362. package/src/payments/p2pkh.ts +524 -130
  363. package/src/payments/p2sh.ts +572 -172
  364. package/src/payments/p2tr.ts +686 -194
  365. package/src/payments/p2wpkh.ts +484 -107
  366. package/src/payments/p2wsh.ts +526 -164
  367. package/src/payments/types.ts +80 -66
  368. package/src/psbt/bip371.ts +68 -51
  369. package/src/psbt/psbtutils.ts +39 -40
  370. package/src/psbt/types.ts +331 -0
  371. package/src/psbt/utils.ts +188 -0
  372. package/src/psbt/validation.ts +192 -0
  373. package/src/psbt.ts +566 -809
  374. package/src/pubkey.ts +24 -25
  375. package/src/push_data.ts +18 -16
  376. package/src/script.ts +82 -64
  377. package/src/script_number.ts +6 -6
  378. package/src/script_signature.ts +33 -36
  379. package/src/transaction.ts +458 -238
  380. package/src/types.ts +231 -100
  381. package/src/workers/WorkerSigningPool.node.ts +887 -0
  382. package/src/workers/WorkerSigningPool.ts +670 -0
  383. package/src/workers/ecc-bundle.ts +26 -0
  384. package/src/workers/index.ts +165 -0
  385. package/src/workers/psbt-parallel.ts +332 -0
  386. package/src/workers/signing-worker.ts +353 -0
  387. package/src/workers/types.ts +413 -0
  388. package/test/address.spec.ts +9 -6
  389. package/test/bitcoin.core.spec.ts +16 -17
  390. package/test/block.spec.ts +8 -7
  391. package/test/bufferutils.spec.ts +228 -214
  392. package/test/crypto.spec.ts +19 -11
  393. package/test/fixtures/p2pk.json +0 -8
  394. package/test/fixtures/p2pkh.json +1 -1
  395. package/test/fixtures/p2sh.json +1 -1
  396. package/test/fixtures/script.json +1 -1
  397. package/test/fixtures/transaction.json +2 -2
  398. package/test/integration/_regtest.ts +25 -0
  399. package/test/integration/addresses.spec.ts +4 -3
  400. package/test/integration/bip32.spec.ts +2 -1
  401. package/test/integration/blocks.spec.ts +1 -1
  402. package/test/integration/cltv.spec.ts +18 -16
  403. package/test/integration/csv.spec.ts +37 -64
  404. package/test/integration/payments.spec.ts +5 -3
  405. package/test/integration/taproot.spec.ts +76 -83
  406. package/test/integration/transactions.spec.ts +38 -35
  407. package/test/payments.spec.ts +35 -13
  408. package/test/payments.utils.ts +17 -16
  409. package/test/psbt.spec.ts +111 -100
  410. package/test/script.spec.ts +11 -10
  411. package/test/script_signature.spec.ts +9 -11
  412. package/test/taproot-cache.spec.ts +694 -0
  413. package/test/transaction.spec.ts +32 -40
  414. package/test/types.spec.ts +74 -29
  415. package/test/workers-pool.spec.ts +963 -0
  416. package/test/workers-signing.spec.ts +635 -0
  417. package/test/workers.spec.ts +1390 -0
  418. package/tsconfig.base.json +34 -18
  419. package/tsconfig.browser.json +15 -0
  420. package/tsconfig.build.json +5 -0
  421. package/tsconfig.json +5 -14
  422. package/vite.config.browser.ts +3 -42
  423. package/vitest.config.integration.ts +11 -0
  424. package/browser/bufferutils.d.ts +0 -34
  425. package/browser/chunks/crypto-BhCpKpek.js +0 -2033
  426. package/browser/chunks/payments-yjA0Evsv.js +0 -1089
  427. package/browser/chunks/psbt-URK2hBFc.js +0 -4039
  428. package/browser/chunks/script-DyPItFEl.js +0 -318
  429. package/browser/chunks/transaction-C_UbhMGn.js +0 -432
  430. package/browser/chunks/utils-DNZi-T5W.js +0 -761
  431. package/browser/ecc_lib.d.ts +0 -3
  432. package/browser/hooks/AdvancedSignatureManager.d.ts +0 -16
  433. package/browser/hooks/HookedSigner.d.ts +0 -4
  434. package/browser/hooks/SignatureManager.d.ts +0 -13
  435. package/browser/payments/lazy.d.ts +0 -2
  436. package/browser/typeforce.d.ts +0 -38
  437. package/build/bufferutils.d.ts +0 -34
  438. package/build/bufferutils.js +0 -141
  439. package/build/ecc_lib.d.ts +0 -3
  440. package/build/ecc_lib.js +0 -61
  441. package/build/hooks/AdvancedSignatureManager.d.ts +0 -16
  442. package/build/hooks/AdvancedSignatureManager.js +0 -52
  443. package/build/hooks/HookedSigner.d.ts +0 -4
  444. package/build/hooks/HookedSigner.js +0 -64
  445. package/build/hooks/SignatureManager.d.ts +0 -13
  446. package/build/hooks/SignatureManager.js +0 -45
  447. package/build/payments/lazy.d.ts +0 -2
  448. package/build/payments/lazy.js +0 -28
  449. package/build/tsconfig.tsbuildinfo +0 -1
  450. package/src/bufferutils.ts +0 -188
  451. package/src/ecc_lib.ts +0 -94
  452. package/src/hooks/AdvancedSignatureManager.ts +0 -104
  453. package/src/hooks/HookedSigner.ts +0 -108
  454. package/src/hooks/SignatureManager.ts +0 -84
  455. package/src/payments/lazy.ts +0 -28
  456. package/src/typeforce.d.ts +0 -38
  457. package/tsconfig.webpack.json +0 -18
@@ -1,3 +0,0 @@
1
- import { TinySecp256k1Interface } from './types.js';
2
- export declare function initEccLib(eccLib: TinySecp256k1Interface | undefined): void;
3
- export declare function getEccLib(): TinySecp256k1Interface;
@@ -1,16 +0,0 @@
1
- export interface CacheEntry {
2
- pubKey: string;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class AdvancedSignatureManager {
7
- private static instance;
8
- private cacheBySigner;
9
- private registry;
10
- private constructor();
11
- static getInstance(): AdvancedSignatureManager;
12
- addSignature(pubKey: string, data: Buffer, signature: Buffer): Buffer;
13
- getSignature(pubKey: string, data: Buffer): Buffer | undefined;
14
- clearCache(): void;
15
- clearCacheForSigner(pubKey: string): void;
16
- }
@@ -1,4 +0,0 @@
1
- import { BIP32Interface } from '@btc-vision/bip32';
2
- import { ECPairInterface } from 'ecpair';
3
- import { Signer, SignerAlternative, SignerAsync } from '../psbt.js';
4
- export declare function hookSigner(keyPair: Signer | SignerAlternative | SignerAsync | BIP32Interface | ECPairInterface): void;
@@ -1,13 +0,0 @@
1
- export interface CacheEntry {
2
- length: number;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class SignatureManager {
7
- private cacheByLength;
8
- private registry;
9
- constructor();
10
- addSignature(data: Buffer, signature: Buffer): Buffer;
11
- getSignature(data: Buffer): Buffer | undefined;
12
- clearCache(): void;
13
- }
@@ -1,2 +0,0 @@
1
- export declare function prop<T extends object>(object: T, name: string, f: () => T[keyof T]): void;
2
- export declare function value<T>(f: () => T): () => T;
@@ -1,38 +0,0 @@
1
- /**
2
- * Type definitions for typeforce library
3
- */
4
-
5
- /**
6
- * Typeforce type validator - validates that a value matches a given type.
7
- */
8
- type TypeforceValidator = (value: unknown) => boolean;
9
-
10
- /**
11
- * Interface representing the typeforce library's API.
12
- */
13
- interface TypeforceLib {
14
- (type: unknown, value: unknown): void;
15
- Number: TypeforceValidator;
16
- Array: TypeforceValidator;
17
- Boolean: TypeforceValidator;
18
- String: TypeforceValidator;
19
- Buffer: TypeforceValidator;
20
- Hex: TypeforceValidator;
21
- Null: TypeforceValidator;
22
- Function: TypeforceValidator;
23
- UInt8: TypeforceValidator;
24
- UInt32: TypeforceValidator;
25
- UInt53: TypeforceValidator;
26
- BufferN: (n: number) => TypeforceValidator;
27
- maybe: (type: unknown) => TypeforceValidator;
28
- tuple: (...types: unknown[]) => TypeforceValidator;
29
- oneOf: (...types: unknown[]) => TypeforceValidator;
30
- arrayOf: (type: unknown) => TypeforceValidator;
31
- Object: TypeforceValidator;
32
- anyOf: (...types: unknown[]) => TypeforceValidator;
33
- }
34
-
35
- declare module 'typeforce' {
36
- const typeforce: TypeforceLib;
37
- export = typeforce;
38
- }
@@ -1,34 +0,0 @@
1
- import * as varuint from 'varuint-bitcoin';
2
- export { varuint };
3
- export declare function readUInt64LE(buffer: Buffer, offset: number): number;
4
- export declare function writeUInt64LE(buffer: Buffer, value: number, offset: number): number;
5
- export declare function reverseBuffer(buffer: Buffer): Buffer;
6
- export declare function cloneBuffer(buffer: Buffer): Buffer;
7
- export declare class BufferWriter {
8
- buffer: Buffer;
9
- offset: number;
10
- constructor(buffer: Buffer, offset?: number);
11
- static withCapacity(size: number): BufferWriter;
12
- writeUInt8(i: number): void;
13
- writeInt32(i: number): void;
14
- writeUInt32(i: number): void;
15
- writeUInt64(i: number): void;
16
- writeVarInt(i: number): void;
17
- writeSlice(slice: Buffer): void;
18
- writeVarSlice(slice: Buffer): void;
19
- writeVector(vector: Buffer[]): void;
20
- end(): Buffer;
21
- }
22
- export declare class BufferReader {
23
- buffer: Buffer;
24
- offset: number;
25
- constructor(buffer: Buffer, offset?: number);
26
- readUInt8(): number;
27
- readInt32(): number;
28
- readUInt32(): number;
29
- readUInt64(): number;
30
- readVarInt(): number;
31
- readSlice(n: number): Buffer;
32
- readVarSlice(): Buffer;
33
- readVector(): Buffer[];
34
- }
@@ -1,141 +0,0 @@
1
- import * as varuint from 'varuint-bitcoin';
2
- import * as types from './types.js';
3
- const { typeforce } = types;
4
- export { varuint };
5
- function verifuint(value, max) {
6
- if (typeof value !== 'number')
7
- throw new Error('cannot write a non-number as a number');
8
- if (value < 0)
9
- throw new Error('specified a negative value for writing an unsigned value');
10
- if (value > max)
11
- throw new Error('RangeError: value out of range');
12
- if (Math.floor(value) !== value)
13
- throw new Error('value has a fractional component');
14
- }
15
- export function readUInt64LE(buffer, offset) {
16
- const a = buffer.readUInt32LE(offset);
17
- let b = buffer.readUInt32LE(offset + 4);
18
- b *= 0x100000000;
19
- verifuint(b + a, 0x001fffffffffffff);
20
- return b + a;
21
- }
22
- export function writeUInt64LE(buffer, value, offset) {
23
- verifuint(value, 0x001fffffffffffff);
24
- buffer.writeInt32LE(value & -1, offset);
25
- buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);
26
- return offset + 8;
27
- }
28
- export function reverseBuffer(buffer) {
29
- if (buffer.length < 1)
30
- return buffer;
31
- let j = buffer.length - 1;
32
- let tmp = 0;
33
- for (let i = 0; i < buffer.length / 2; i++) {
34
- tmp = buffer[i];
35
- buffer[i] = buffer[j];
36
- buffer[j] = tmp;
37
- j--;
38
- }
39
- return buffer;
40
- }
41
- export function cloneBuffer(buffer) {
42
- const clone = Buffer.allocUnsafe(buffer.length);
43
- buffer.copy(clone);
44
- return clone;
45
- }
46
- export class BufferWriter {
47
- constructor(buffer, offset = 0) {
48
- this.buffer = buffer;
49
- this.offset = offset;
50
- typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);
51
- }
52
- static withCapacity(size) {
53
- return new BufferWriter(Buffer.alloc(size));
54
- }
55
- writeUInt8(i) {
56
- this.offset = this.buffer.writeUInt8(i, this.offset);
57
- }
58
- writeInt32(i) {
59
- this.offset = this.buffer.writeInt32LE(i, this.offset);
60
- }
61
- writeUInt32(i) {
62
- this.offset = this.buffer.writeUInt32LE(i, this.offset);
63
- }
64
- writeUInt64(i) {
65
- this.offset = writeUInt64LE(this.buffer, i, this.offset);
66
- }
67
- writeVarInt(i) {
68
- const encode = varuint.encode(i, this.buffer, this.offset);
69
- this.offset += encode.bytes;
70
- }
71
- writeSlice(slice) {
72
- if (this.buffer.length < this.offset + slice.length) {
73
- throw new Error('Cannot write slice out of bounds');
74
- }
75
- this.offset += slice.copy(this.buffer, this.offset);
76
- }
77
- writeVarSlice(slice) {
78
- this.writeVarInt(slice.length);
79
- this.writeSlice(slice);
80
- }
81
- writeVector(vector) {
82
- this.writeVarInt(vector.length);
83
- vector.forEach((buf) => this.writeVarSlice(buf));
84
- }
85
- end() {
86
- if (this.buffer.length === this.offset) {
87
- return this.buffer;
88
- }
89
- throw new Error(`buffer size ${this.buffer.length}, offset ${this.offset}`);
90
- }
91
- }
92
- export class BufferReader {
93
- constructor(buffer, offset = 0) {
94
- this.buffer = buffer;
95
- this.offset = offset;
96
- typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);
97
- }
98
- readUInt8() {
99
- const result = this.buffer.readUInt8(this.offset);
100
- this.offset++;
101
- return result;
102
- }
103
- readInt32() {
104
- const result = this.buffer.readInt32LE(this.offset);
105
- this.offset += 4;
106
- return result;
107
- }
108
- readUInt32() {
109
- const result = this.buffer.readUInt32LE(this.offset);
110
- this.offset += 4;
111
- return result;
112
- }
113
- readUInt64() {
114
- const result = readUInt64LE(this.buffer, this.offset);
115
- this.offset += 8;
116
- return result;
117
- }
118
- readVarInt() {
119
- const vi = varuint.decode(this.buffer, this.offset);
120
- this.offset += vi.bytes;
121
- return vi.numberValue || 0;
122
- }
123
- readSlice(n) {
124
- if (this.buffer.length < this.offset + n) {
125
- throw new Error('Cannot read slice out of bounds');
126
- }
127
- const result = Buffer.from(this.buffer.subarray(this.offset, this.offset + n));
128
- this.offset += n;
129
- return result;
130
- }
131
- readVarSlice() {
132
- return this.readSlice(this.readVarInt());
133
- }
134
- readVector() {
135
- const count = this.readVarInt();
136
- const vector = [];
137
- for (let i = 0; i < count; i++)
138
- vector.push(this.readVarSlice());
139
- return vector;
140
- }
141
- }
@@ -1,3 +0,0 @@
1
- import { TinySecp256k1Interface } from './types.js';
2
- export declare function initEccLib(eccLib: TinySecp256k1Interface | undefined): void;
3
- export declare function getEccLib(): TinySecp256k1Interface;
package/build/ecc_lib.js DELETED
@@ -1,61 +0,0 @@
1
- const _ECCLIB_CACHE = {};
2
- export function initEccLib(eccLib) {
3
- if (!eccLib) {
4
- _ECCLIB_CACHE.eccLib = eccLib;
5
- }
6
- else if (eccLib !== _ECCLIB_CACHE.eccLib) {
7
- verifyEcc(eccLib);
8
- _ECCLIB_CACHE.eccLib = eccLib;
9
- }
10
- }
11
- export function getEccLib() {
12
- if (!_ECCLIB_CACHE.eccLib)
13
- throw new Error('No ECC Library provided. You must call initEccLib() with a valid TinySecp256k1Interface instance');
14
- return _ECCLIB_CACHE.eccLib;
15
- }
16
- const h = (hex) => Buffer.from(hex, 'hex');
17
- function verifyEcc(ecc) {
18
- assert(typeof ecc.isXOnlyPoint === 'function');
19
- assert(ecc.isXOnlyPoint(h('79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798')));
20
- assert(ecc.isXOnlyPoint(h('fffffffffffffffffffffffffffffffffffffffffffffffffffffffeeffffc2e')));
21
- assert(ecc.isXOnlyPoint(h('f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9')));
22
- assert(ecc.isXOnlyPoint(h('0000000000000000000000000000000000000000000000000000000000000001')));
23
- assert(!ecc.isXOnlyPoint(h('0000000000000000000000000000000000000000000000000000000000000000')));
24
- assert(!ecc.isXOnlyPoint(h('fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f')));
25
- assert(typeof ecc.xOnlyPointAddTweak === 'function');
26
- tweakAddVectors.forEach((t) => {
27
- const r = ecc.xOnlyPointAddTweak(h(t.pubkey), h(t.tweak));
28
- if (t.result === null) {
29
- assert(r === null);
30
- }
31
- else {
32
- assert(r !== null);
33
- assert(r.parity === t.parity);
34
- assert(Buffer.from(r.xOnlyPubkey).equals(h(t.result)));
35
- }
36
- });
37
- }
38
- function assert(bool) {
39
- if (!bool)
40
- throw new Error('ecc library invalid');
41
- }
42
- const tweakAddVectors = [
43
- {
44
- pubkey: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
45
- tweak: 'fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140',
46
- parity: -1,
47
- result: null,
48
- },
49
- {
50
- pubkey: '1617d38ed8d8657da4d4761e8057bc396ea9e4b9d29776d4be096016dbd2509b',
51
- tweak: 'a8397a935f0dfceba6ba9618f6451ef4d80637abf4e6af2669fbc9de6a8fd2ac',
52
- parity: 1,
53
- result: 'e478f99dab91052ab39a33ea35fd5e6e4933f4d28023cd597c9a1f6760346adf',
54
- },
55
- {
56
- pubkey: '2c0b7cf95324a07d05398b240174dc0c2be444d96b159aa6c7f7b1e668680991',
57
- tweak: '823c3cd2142744b075a87eade7e1b8678ba308d566226a0056ca2b7a76f86b47',
58
- parity: 0,
59
- result: '9534f8dc8c6deda2dc007655981c78b49c5d96c778fbf363462a11ec9dfd948c',
60
- },
61
- ];
@@ -1,16 +0,0 @@
1
- export interface CacheEntry {
2
- pubKey: string;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class AdvancedSignatureManager {
7
- private static instance;
8
- private cacheBySigner;
9
- private registry;
10
- private constructor();
11
- static getInstance(): AdvancedSignatureManager;
12
- addSignature(pubKey: string, data: Buffer, signature: Buffer): Buffer;
13
- getSignature(pubKey: string, data: Buffer): Buffer | undefined;
14
- clearCache(): void;
15
- clearCacheForSigner(pubKey: string): void;
16
- }
@@ -1,52 +0,0 @@
1
- export class AdvancedSignatureManager {
2
- constructor() {
3
- this.cacheBySigner = new Map();
4
- this.registry = new FinalizationRegistry((entry) => {
5
- const set = this.cacheBySigner.get(entry.pubKey);
6
- if (set) {
7
- set.delete(entry);
8
- if (set.size === 0) {
9
- this.cacheBySigner.delete(entry.pubKey);
10
- }
11
- }
12
- });
13
- }
14
- static getInstance() {
15
- if (!AdvancedSignatureManager.instance) {
16
- AdvancedSignatureManager.instance = new AdvancedSignatureManager();
17
- }
18
- return AdvancedSignatureManager.instance;
19
- }
20
- addSignature(pubKey, data, signature) {
21
- const entry = {
22
- pubKey,
23
- dataRef: new WeakRef(data),
24
- signature,
25
- };
26
- if (!this.cacheBySigner.has(pubKey)) {
27
- this.cacheBySigner.set(pubKey, new Set());
28
- }
29
- const set = this.cacheBySigner.get(pubKey);
30
- set.add(entry);
31
- this.registry.register(data, entry);
32
- return signature;
33
- }
34
- getSignature(pubKey, data) {
35
- const set = this.cacheBySigner.get(pubKey);
36
- if (!set)
37
- return undefined;
38
- for (const entry of set) {
39
- const cachedData = entry.dataRef.deref();
40
- if (cachedData && cachedData.equals(data)) {
41
- return entry.signature;
42
- }
43
- }
44
- return undefined;
45
- }
46
- clearCache() {
47
- this.cacheBySigner.clear();
48
- }
49
- clearCacheForSigner(pubKey) {
50
- this.cacheBySigner.delete(pubKey);
51
- }
52
- }
@@ -1,4 +0,0 @@
1
- import { BIP32Interface } from '@btc-vision/bip32';
2
- import { ECPairInterface } from 'ecpair';
3
- import { Signer, SignerAlternative, SignerAsync } from '../psbt.js';
4
- export declare function hookSigner(keyPair: Signer | SignerAlternative | SignerAsync | BIP32Interface | ECPairInterface): void;
@@ -1,64 +0,0 @@
1
- import { SignatureManager } from './SignatureManager.js';
2
- import { AdvancedSignatureManager } from './AdvancedSignatureManager.js';
3
- const advancedSignatureManager = AdvancedSignatureManager.getInstance();
4
- function getPublicKey(keyPair) {
5
- if (keyPair.publicKey && Buffer.isBuffer(keyPair.publicKey)) {
6
- return keyPair.publicKey.toString('hex');
7
- }
8
- }
9
- function hookKeyPair(keyPair) {
10
- const oldSign = keyPair.sign;
11
- if (oldSign) {
12
- keyPair.sign = new Proxy(oldSign, {
13
- apply: function (target, thisArg, argumentsList) {
14
- const publicKey = getPublicKey(keyPair);
15
- const hash = argumentsList[0];
16
- if (publicKey) {
17
- let possibleSignature = advancedSignatureManager.getSignature(publicKey, hash);
18
- if (!possibleSignature) {
19
- possibleSignature = advancedSignatureManager.addSignature(publicKey, hash, Reflect.apply(target, thisArg, argumentsList));
20
- }
21
- return possibleSignature;
22
- }
23
- else {
24
- let possibleSignature = keyPair.signatureManager.getSignature(hash);
25
- if (!possibleSignature) {
26
- possibleSignature = keyPair.signatureManager.addSignature(hash, Reflect.apply(target, thisArg, argumentsList));
27
- }
28
- return possibleSignature;
29
- }
30
- },
31
- });
32
- }
33
- const oldSignSchnorr = keyPair.signSchnorr;
34
- if (oldSignSchnorr) {
35
- keyPair.signSchnorr = new Proxy(oldSignSchnorr, {
36
- apply: function (target, thisArg, argumentsList) {
37
- const publicKey = getPublicKey(keyPair);
38
- const hash = argumentsList[0];
39
- if (publicKey) {
40
- let possibleSignature = advancedSignatureManager.getSignature(publicKey, hash);
41
- if (!possibleSignature) {
42
- possibleSignature = advancedSignatureManager.addSignature(publicKey, hash, Reflect.apply(target, thisArg, argumentsList));
43
- }
44
- return possibleSignature;
45
- }
46
- else {
47
- let possibleSignature = keyPair.signatureManager.getSignature(hash);
48
- if (!possibleSignature) {
49
- possibleSignature = keyPair.signatureManager.addSignature(hash, Reflect.apply(target, thisArg, argumentsList));
50
- }
51
- return possibleSignature;
52
- }
53
- },
54
- });
55
- }
56
- }
57
- export function hookSigner(keyPair) {
58
- const newKeypair = keyPair;
59
- if (!newKeypair.hasHook) {
60
- newKeypair.hasHook = true;
61
- newKeypair.signatureManager = new SignatureManager();
62
- hookKeyPair(newKeypair);
63
- }
64
- }
@@ -1,13 +0,0 @@
1
- export interface CacheEntry {
2
- length: number;
3
- dataRef: WeakRef<Buffer>;
4
- signature: Buffer;
5
- }
6
- export declare class SignatureManager {
7
- private cacheByLength;
8
- private registry;
9
- constructor();
10
- addSignature(data: Buffer, signature: Buffer): Buffer;
11
- getSignature(data: Buffer): Buffer | undefined;
12
- clearCache(): void;
13
- }
@@ -1,45 +0,0 @@
1
- export class SignatureManager {
2
- constructor() {
3
- this.cacheByLength = new Map();
4
- this.registry = new FinalizationRegistry((entry) => {
5
- const set = this.cacheByLength.get(entry.length);
6
- if (set) {
7
- set.delete(entry);
8
- if (set.size === 0) {
9
- this.cacheByLength.delete(entry.length);
10
- }
11
- }
12
- });
13
- }
14
- addSignature(data, signature) {
15
- const length = data.length;
16
- const entry = {
17
- length,
18
- dataRef: new WeakRef(data),
19
- signature,
20
- };
21
- if (!this.cacheByLength.has(length)) {
22
- this.cacheByLength.set(length, new Set());
23
- }
24
- const set = this.cacheByLength.get(length);
25
- set.add(entry);
26
- this.registry.register(data, entry);
27
- return signature;
28
- }
29
- getSignature(data) {
30
- const length = data.length;
31
- const set = this.cacheByLength.get(length);
32
- if (!set)
33
- return undefined;
34
- for (const entry of set) {
35
- const cachedData = entry.dataRef.deref();
36
- if (cachedData && cachedData.equals(data)) {
37
- return entry.signature;
38
- }
39
- }
40
- return undefined;
41
- }
42
- clearCache() {
43
- this.cacheByLength.clear();
44
- }
45
- }
@@ -1,2 +0,0 @@
1
- export declare function prop<T extends object>(object: T, name: string, f: () => T[keyof T]): void;
2
- export declare function value<T>(f: () => T): () => T;
@@ -1,28 +0,0 @@
1
- export function prop(object, name, f) {
2
- Object.defineProperty(object, name, {
3
- configurable: true,
4
- enumerable: true,
5
- get() {
6
- const _value = f.call(this);
7
- this[name] = _value;
8
- return _value;
9
- },
10
- set(_value) {
11
- Object.defineProperty(this, name, {
12
- configurable: true,
13
- enumerable: true,
14
- value: _value,
15
- writable: true,
16
- });
17
- },
18
- });
19
- }
20
- export function value(f) {
21
- let _value;
22
- return () => {
23
- if (_value !== undefined)
24
- return _value;
25
- _value = f();
26
- return _value;
27
- };
28
- }