ccxt 4.2.18 → 4.2.20

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 (446) hide show
  1. package/README.md +100 -100
  2. package/dist/ccxt.browser.js +34240 -33297
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +12 -1
  5. package/dist/cjs/src/alpaca.js +18 -18
  6. package/dist/cjs/src/ascendex.js +13 -6
  7. package/dist/cjs/src/base/Exchange.js +276 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +165 -35
  10. package/dist/cjs/src/binanceus.js +25 -0
  11. package/dist/cjs/src/bingx.js +185 -42
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +84 -47
  14. package/dist/cjs/src/bitmart.js +5 -5
  15. package/dist/cjs/src/bitmex.js +4 -6
  16. package/dist/cjs/src/bitpanda.js +5 -1991
  17. package/dist/cjs/src/bitstamp.js +8 -0
  18. package/dist/cjs/src/bitteam.js +1 -1
  19. package/dist/cjs/src/bybit.js +27 -75
  20. package/dist/cjs/src/coinbase.js +176 -26
  21. package/dist/cjs/src/coincheck.js +1 -0
  22. package/dist/cjs/src/coinex.js +3 -0
  23. package/dist/cjs/src/coinlist.js +13 -6
  24. package/dist/cjs/src/coinone.js +2 -2
  25. package/dist/cjs/src/coinsph.js +4 -5
  26. package/dist/cjs/src/delta.js +7 -19
  27. package/dist/cjs/src/deribit.js +17 -4
  28. package/dist/cjs/src/gate.js +151 -194
  29. package/dist/cjs/src/gemini.js +1 -1
  30. package/dist/cjs/src/hitbtc.js +2 -3
  31. package/dist/cjs/src/htx.js +157 -7
  32. package/dist/cjs/src/huobijp.js +2 -3
  33. package/dist/cjs/src/independentreserve.js +7 -5
  34. package/dist/cjs/src/kraken.js +86 -54
  35. package/dist/cjs/src/kucoin.js +5 -0
  36. package/dist/cjs/src/kucoinfutures.js +140 -86
  37. package/dist/cjs/src/lbank.js +60 -33
  38. package/dist/cjs/src/luno.js +84 -2
  39. package/dist/cjs/src/mexc.js +3 -3
  40. package/dist/cjs/src/oceanex.js +1 -1
  41. package/dist/cjs/src/okx.js +23 -29
  42. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  43. package/dist/cjs/src/phemex.js +37 -27
  44. package/dist/cjs/src/poloniexfutures.js +1 -0
  45. package/dist/cjs/src/pro/binance.js +66 -25
  46. package/dist/cjs/src/pro/bitget.js +1 -1
  47. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  48. package/dist/cjs/src/pro/coinbase.js +4 -1
  49. package/dist/cjs/src/pro/hitbtc.js +5 -4
  50. package/dist/cjs/src/pro/htx.js +6 -1
  51. package/dist/cjs/src/pro/kraken.js +1 -1
  52. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  53. package/dist/cjs/src/pro/kucoin.js +46 -36
  54. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  55. package/dist/cjs/src/pro/lbank.js +881 -0
  56. package/dist/cjs/src/pro/okx.js +52 -2
  57. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  58. package/dist/cjs/src/pro/poloniex.js +2 -2
  59. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  60. package/dist/cjs/src/pro/woo.js +126 -0
  61. package/dist/cjs/src/probit.js +4 -2
  62. package/dist/cjs/src/upbit.js +12 -12
  63. package/dist/cjs/src/wavesexchange.js +1 -1
  64. package/dist/cjs/src/whitebit.js +1 -0
  65. package/dist/cjs/src/woo.js +56 -0
  66. package/js/ccxt.d.ts +11 -2
  67. package/js/ccxt.js +8 -2
  68. package/js/src/abstract/binance.d.ts +1 -0
  69. package/js/src/abstract/binancecoinm.d.ts +1 -0
  70. package/js/src/abstract/binanceus.d.ts +1 -0
  71. package/js/src/abstract/binanceusdm.d.ts +1 -0
  72. package/js/src/abstract/bitpanda.d.ts +4 -4
  73. package/js/src/abstract/bitpanda.js +3 -3
  74. package/js/src/abstract/bitstamp.d.ts +8 -0
  75. package/js/src/abstract/gate.d.ts +1 -0
  76. package/js/src/abstract/gateio.d.ts +1 -0
  77. package/js/src/abstract/htx.d.ts +3 -0
  78. package/js/src/abstract/huobi.d.ts +3 -0
  79. package/js/src/abstract/luno.d.ts +1 -0
  80. package/js/src/abstract/onetrading.d.ts +38 -0
  81. package/js/src/abstract/onetrading.js +11 -0
  82. package/js/src/ascendex.js +2 -0
  83. package/js/src/base/Exchange.d.ts +3 -0
  84. package/js/src/base/Exchange.js +10 -0
  85. package/js/src/binance.js +2 -1
  86. package/js/src/binanceus.js +17 -0
  87. package/js/src/bingx.js +3 -2
  88. package/js/src/bitget.d.ts +1 -1
  89. package/js/src/bitget.js +47 -34
  90. package/js/src/bitpanda.d.ts +2 -72
  91. package/js/src/bitpanda.js +5 -1991
  92. package/js/src/bitstamp.js +8 -0
  93. package/js/src/bitteam.js +1 -1
  94. package/js/src/bybit.d.ts +0 -1
  95. package/js/src/bybit.js +1 -29
  96. package/js/src/delta.d.ts +0 -1
  97. package/js/src/delta.js +0 -18
  98. package/js/src/deribit.js +11 -3
  99. package/js/src/gate.d.ts +1 -1
  100. package/js/src/gate.js +50 -135
  101. package/js/src/htx.js +3 -0
  102. package/js/src/kraken.d.ts +1 -0
  103. package/js/src/kraken.js +39 -38
  104. package/js/src/kucoinfutures.d.ts +6 -6
  105. package/js/src/kucoinfutures.js +9 -9
  106. package/js/src/lbank.js +1 -0
  107. package/js/src/luno.d.ts +3 -1
  108. package/js/src/luno.js +84 -2
  109. package/js/src/mexc.js +1 -2
  110. package/js/src/okx.d.ts +0 -1
  111. package/js/src/okx.js +0 -18
  112. package/js/src/onetrading.d.ts +74 -0
  113. package/js/src/onetrading.js +2003 -0
  114. package/js/src/poloniexfutures.js +1 -0
  115. package/js/src/pro/binance.js +6 -1
  116. package/js/src/pro/bitpanda.d.ts +2 -34
  117. package/js/src/pro/bitpanda.js +5 -1330
  118. package/js/src/pro/lbank.d.ts +29 -0
  119. package/js/src/pro/lbank.js +882 -0
  120. package/js/src/pro/onetrading.d.ts +36 -0
  121. package/js/src/pro/onetrading.js +1339 -0
  122. package/package.json +2 -2
  123. package/rollup.config.js +2 -0
  124. package/skip-tests.json +4 -2
  125. package/test-commonjs.cjs +25 -1
  126. package/dist/cjs/js/ccxt.js +0 -478
  127. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  128. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  129. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  130. package/dist/cjs/js/src/abstract/binance.js +0 -9
  131. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  132. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  133. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  134. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  135. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  136. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  137. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  138. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  139. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  140. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  141. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  142. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  143. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  144. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  145. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  146. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  147. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  148. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  149. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  150. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  151. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  152. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  153. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  154. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  155. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  156. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  157. package/dist/cjs/js/src/abstract/cex.js +0 -9
  158. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  159. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  160. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  161. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  162. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  163. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  164. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  165. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  166. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  167. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  168. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  169. package/dist/cjs/js/src/abstract/delta.js +0 -9
  170. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  171. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  172. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  173. package/dist/cjs/js/src/abstract/gate.js +0 -9
  174. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  175. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  176. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  177. package/dist/cjs/js/src/abstract/htx.js +0 -9
  178. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  179. package/dist/cjs/js/src/abstract/idex.js +0 -9
  180. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  181. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  182. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  183. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  184. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  185. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  186. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  187. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  188. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  189. package/dist/cjs/js/src/abstract/luno.js +0 -9
  190. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  191. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  192. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  193. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  194. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  195. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  196. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  197. package/dist/cjs/js/src/abstract/okx.js +0 -9
  198. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  199. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  200. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  201. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  202. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  203. package/dist/cjs/js/src/abstract/probit.js +0 -9
  204. package/dist/cjs/js/src/abstract/timex.js +0 -9
  205. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  206. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  207. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  208. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  209. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  210. package/dist/cjs/js/src/abstract/woo.js +0 -9
  211. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  212. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  213. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  214. package/dist/cjs/js/src/ace.js +0 -1058
  215. package/dist/cjs/js/src/alpaca.js +0 -1125
  216. package/dist/cjs/js/src/ascendex.js +0 -3365
  217. package/dist/cjs/js/src/base/Exchange.js +0 -5260
  218. package/dist/cjs/js/src/base/Precise.js +0 -263
  219. package/dist/cjs/js/src/base/errors.js +0 -299
  220. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  221. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  222. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  223. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  224. package/dist/cjs/js/src/base/functions/number.js +0 -297
  225. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  226. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  227. package/dist/cjs/js/src/base/functions/string.js +0 -48
  228. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  229. package/dist/cjs/js/src/base/functions/time.js +0 -187
  230. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  231. package/dist/cjs/js/src/base/functions/type.js +0 -162
  232. package/dist/cjs/js/src/base/functions.js +0 -157
  233. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  234. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  235. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  236. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  237. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  238. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  239. package/dist/cjs/js/src/bequant.js +0 -33
  240. package/dist/cjs/js/src/bigone.js +0 -2213
  241. package/dist/cjs/js/src/binance.js +0 -9851
  242. package/dist/cjs/js/src/binancecoinm.js +0 -45
  243. package/dist/cjs/js/src/binanceus.js +0 -92
  244. package/dist/cjs/js/src/binanceusdm.js +0 -58
  245. package/dist/cjs/js/src/bingx.js +0 -3872
  246. package/dist/cjs/js/src/bit2c.js +0 -916
  247. package/dist/cjs/js/src/bitbank.js +0 -1000
  248. package/dist/cjs/js/src/bitbay.js +0 -17
  249. package/dist/cjs/js/src/bitbns.js +0 -1220
  250. package/dist/cjs/js/src/bitcoincom.js +0 -17
  251. package/dist/cjs/js/src/bitfinex.js +0 -1670
  252. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  253. package/dist/cjs/js/src/bitflyer.js +0 -1045
  254. package/dist/cjs/js/src/bitforex.js +0 -852
  255. package/dist/cjs/js/src/bitget.js +0 -8295
  256. package/dist/cjs/js/src/bithumb.js +0 -1090
  257. package/dist/cjs/js/src/bitmart.js +0 -4454
  258. package/dist/cjs/js/src/bitmex.js +0 -2881
  259. package/dist/cjs/js/src/bitopro.js +0 -1724
  260. package/dist/cjs/js/src/bitrue.js +0 -3253
  261. package/dist/cjs/js/src/bitso.js +0 -1753
  262. package/dist/cjs/js/src/bitstamp.js +0 -2188
  263. package/dist/cjs/js/src/bitteam.js +0 -2309
  264. package/dist/cjs/js/src/bitvavo.js +0 -1968
  265. package/dist/cjs/js/src/bl3p.js +0 -447
  266. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  267. package/dist/cjs/js/src/btcalpha.js +0 -929
  268. package/dist/cjs/js/src/btcbox.js +0 -565
  269. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  270. package/dist/cjs/js/src/btcturk.js +0 -929
  271. package/dist/cjs/js/src/bybit.js +0 -7624
  272. package/dist/cjs/js/src/cex.js +0 -1693
  273. package/dist/cjs/js/src/coinbase.js +0 -3424
  274. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  275. package/dist/cjs/js/src/coincheck.js +0 -844
  276. package/dist/cjs/js/src/coinex.js +0 -5417
  277. package/dist/cjs/js/src/coinlist.js +0 -2337
  278. package/dist/cjs/js/src/coinmate.js +0 -989
  279. package/dist/cjs/js/src/coinone.js +0 -1185
  280. package/dist/cjs/js/src/coinsph.js +0 -1933
  281. package/dist/cjs/js/src/coinspot.js +0 -548
  282. package/dist/cjs/js/src/cryptocom.js +0 -3007
  283. package/dist/cjs/js/src/currencycom.js +0 -2015
  284. package/dist/cjs/js/src/delta.js +0 -3262
  285. package/dist/cjs/js/src/deribit.js +0 -3310
  286. package/dist/cjs/js/src/digifinex.js +0 -4307
  287. package/dist/cjs/js/src/exmo.js +0 -2645
  288. package/dist/cjs/js/src/fmfwio.js +0 -34
  289. package/dist/cjs/js/src/gate.js +0 -7077
  290. package/dist/cjs/js/src/gateio.js +0 -16
  291. package/dist/cjs/js/src/gemini.js +0 -1801
  292. package/dist/cjs/js/src/hitbtc.js +0 -3660
  293. package/dist/cjs/js/src/hitbtc3.js +0 -19
  294. package/dist/cjs/js/src/hollaex.js +0 -1882
  295. package/dist/cjs/js/src/htx.js +0 -9174
  296. package/dist/cjs/js/src/huobi.js +0 -16
  297. package/dist/cjs/js/src/huobijp.js +0 -1918
  298. package/dist/cjs/js/src/idex.js +0 -1770
  299. package/dist/cjs/js/src/independentreserve.js +0 -761
  300. package/dist/cjs/js/src/indodax.js +0 -1069
  301. package/dist/cjs/js/src/kraken.js +0 -2891
  302. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  303. package/dist/cjs/js/src/kucoin.js +0 -4494
  304. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  305. package/dist/cjs/js/src/kuna.js +0 -1949
  306. package/dist/cjs/js/src/latoken.js +0 -1729
  307. package/dist/cjs/js/src/lbank.js +0 -2851
  308. package/dist/cjs/js/src/luno.js +0 -1044
  309. package/dist/cjs/js/src/lykke.js +0 -1303
  310. package/dist/cjs/js/src/mercado.js +0 -897
  311. package/dist/cjs/js/src/mexc.js +0 -5407
  312. package/dist/cjs/js/src/ndax.js +0 -2450
  313. package/dist/cjs/js/src/novadax.js +0 -1556
  314. package/dist/cjs/js/src/oceanex.js +0 -964
  315. package/dist/cjs/js/src/okcoin.js +0 -3115
  316. package/dist/cjs/js/src/okx.js +0 -7331
  317. package/dist/cjs/js/src/p2b.js +0 -1243
  318. package/dist/cjs/js/src/paymium.js +0 -597
  319. package/dist/cjs/js/src/phemex.js +0 -4725
  320. package/dist/cjs/js/src/poloniex.js +0 -2356
  321. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  322. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  323. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  324. package/dist/cjs/js/src/pro/bequant.js +0 -33
  325. package/dist/cjs/js/src/pro/binance.js +0 -2796
  326. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  327. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  328. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  329. package/dist/cjs/js/src/pro/bingx.js +0 -944
  330. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  331. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  332. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  333. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  334. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  335. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  336. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  337. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  338. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  339. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  340. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  341. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  342. package/dist/cjs/js/src/pro/cex.js +0 -1510
  343. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  344. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  345. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  346. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  347. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  348. package/dist/cjs/js/src/pro/deribit.js +0 -825
  349. package/dist/cjs/js/src/pro/exmo.js +0 -658
  350. package/dist/cjs/js/src/pro/gate.js +0 -1316
  351. package/dist/cjs/js/src/pro/gateio.js +0 -16
  352. package/dist/cjs/js/src/pro/gemini.js +0 -649
  353. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  354. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  355. package/dist/cjs/js/src/pro/htx.js +0 -2388
  356. package/dist/cjs/js/src/pro/huobi.js +0 -16
  357. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  358. package/dist/cjs/js/src/pro/idex.js +0 -714
  359. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  360. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  361. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  362. package/dist/cjs/js/src/pro/kucoin.js +0 -1062
  363. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -989
  364. package/dist/cjs/js/src/pro/luno.js +0 -322
  365. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  366. package/dist/cjs/js/src/pro/ndax.js +0 -545
  367. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  368. package/dist/cjs/js/src/pro/okx.js +0 -1608
  369. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  370. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  371. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1022
  372. package/dist/cjs/js/src/pro/probit.js +0 -586
  373. package/dist/cjs/js/src/pro/upbit.js +0 -234
  374. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  375. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  376. package/dist/cjs/js/src/pro/woo.js +0 -895
  377. package/dist/cjs/js/src/probit.js +0 -1867
  378. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  379. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  380. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  381. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  382. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  383. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  384. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  385. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  386. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  387. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  388. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  389. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  390. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  391. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  392. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  393. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  394. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  395. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  396. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  397. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  398. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  399. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  400. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  401. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  402. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  403. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  404. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  405. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  406. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  407. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  408. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  409. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  410. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  411. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  412. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  413. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  414. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  415. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  416. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  417. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  418. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  419. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  420. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  421. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  422. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  423. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  424. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  425. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  426. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  427. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  428. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  429. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  430. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  431. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  432. package/dist/cjs/js/src/timex.js +0 -1562
  433. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  434. package/dist/cjs/js/src/upbit.js +0 -1844
  435. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  436. package/dist/cjs/js/src/wazirx.js +0 -953
  437. package/dist/cjs/js/src/whitebit.js +0 -2310
  438. package/dist/cjs/js/src/woo.js +0 -2769
  439. package/dist/cjs/js/src/yobit.js +0 -1314
  440. package/dist/cjs/js/src/zaif.js +0 -736
  441. package/dist/cjs/js/src/zonda.js +0 -1883
  442. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  443. package/test.ts +0 -0
  444. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  445. /package/dist/cjs/{js/src → src}/pro/coincheck.js +0 -0
  446. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
@@ -1,383 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var sha512 = require('../noble-hashes/sha512.js');
6
- var utils = require('../noble-hashes/utils.js');
7
- var edwards = require('./abstract/edwards.js');
8
- var montgomery = require('./abstract/montgomery.js');
9
- var modular = require('./abstract/modular.js');
10
- var utils$1 = require('./abstract/utils.js');
11
- var hashToCurve = require('./abstract/hash-to-curve.js');
12
-
13
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
14
- /**
15
- * ed25519 Twisted Edwards curve with following addons:
16
- * - X25519 ECDH
17
- * - Ristretto cofactor elimination
18
- * - Elligator hash-to-group / point indistinguishability
19
- */
20
- const ED25519_P = BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949');
21
- // √(-1) aka √(a) aka 2^((p-1)/4)
22
- const ED25519_SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');
23
- // prettier-ignore
24
- const _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _5n = BigInt(5);
25
- // prettier-ignore
26
- const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);
27
- function ed25519_pow_2_252_3(x) {
28
- const P = ED25519_P;
29
- const x2 = (x * x) % P;
30
- const b2 = (x2 * x) % P; // x^3, 11
31
- const b4 = (modular.pow2(b2, _2n, P) * b2) % P; // x^15, 1111
32
- const b5 = (modular.pow2(b4, _1n, P) * x) % P; // x^31
33
- const b10 = (modular.pow2(b5, _5n, P) * b5) % P;
34
- const b20 = (modular.pow2(b10, _10n, P) * b10) % P;
35
- const b40 = (modular.pow2(b20, _20n, P) * b20) % P;
36
- const b80 = (modular.pow2(b40, _40n, P) * b40) % P;
37
- const b160 = (modular.pow2(b80, _80n, P) * b80) % P;
38
- const b240 = (modular.pow2(b160, _80n, P) * b80) % P;
39
- const b250 = (modular.pow2(b240, _10n, P) * b10) % P;
40
- const pow_p_5_8 = (modular.pow2(b250, _2n, P) * x) % P;
41
- // ^ To pow to (p+3)/8, multiply it by x.
42
- return { pow_p_5_8, b2 };
43
- }
44
- function adjustScalarBytes(bytes) {
45
- // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,
46
- // set the three least significant bits of the first byte
47
- bytes[0] &= 248; // 0b1111_1000
48
- // and the most significant bit of the last to zero,
49
- bytes[31] &= 127; // 0b0111_1111
50
- // set the second most significant bit of the last byte to 1
51
- bytes[31] |= 64; // 0b0100_0000
52
- return bytes;
53
- }
54
- // sqrt(u/v)
55
- function uvRatio(u, v) {
56
- const P = ED25519_P;
57
- const v3 = modular.mod(v * v * v, P); // v³
58
- const v7 = modular.mod(v3 * v3 * v, P); // v⁷
59
- // (p+3)/8 and (p-5)/8
60
- const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;
61
- let x = modular.mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8
62
- const vx2 = modular.mod(v * x * x, P); // vx²
63
- const root1 = x; // First root candidate
64
- const root2 = modular.mod(x * ED25519_SQRT_M1, P); // Second root candidate
65
- const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root
66
- const useRoot2 = vx2 === modular.mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)
67
- const noRoot = vx2 === modular.mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)
68
- if (useRoot1)
69
- x = root1;
70
- if (useRoot2 || noRoot)
71
- x = root2; // We return root2 anyway, for const-time
72
- if (modular.isNegativeLE(x, P))
73
- x = modular.mod(-x, P);
74
- return { isValid: useRoot1 || useRoot2, value: x };
75
- }
76
- const Fp = modular.Fp(ED25519_P, undefined, true);
77
- const ED25519_DEF = {
78
- // Param: a
79
- a: BigInt(-1),
80
- // Equal to -121665/121666 over finite field.
81
- // Negative number is P - number, and division is invert(number, P)
82
- d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),
83
- // Finite field 𝔽p over which we'll do calculations; 2n ** 255n - 19n
84
- Fp,
85
- // Subgroup order: how many points ed25519 has
86
- // 2n ** 252n + 27742317777372353535851937790883648493n;
87
- n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),
88
- // Cofactor
89
- h: BigInt(8),
90
- // Base point (x, y) aka generator point
91
- Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),
92
- Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),
93
- hash: sha512.sha512,
94
- randomBytes: utils.randomBytes,
95
- adjustScalarBytes,
96
- // dom2
97
- // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.
98
- // Constant-time, u/√v
99
- uvRatio,
100
- };
101
- const ed25519 = edwards.twistedEdwards(ED25519_DEF);
102
- function ed25519_domain(data, ctx, phflag) {
103
- if (ctx.length > 255)
104
- throw new Error('Context is too big');
105
- return utils.concatBytes(utils.utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);
106
- }
107
- edwards.twistedEdwards({ ...ED25519_DEF, domain: ed25519_domain });
108
- edwards.twistedEdwards({
109
- ...ED25519_DEF,
110
- domain: ed25519_domain,
111
- preHash: sha512.sha512,
112
- });
113
- montgomery.montgomery({
114
- P: ED25519_P,
115
- a: BigInt(486662),
116
- montgomeryBits: 255,
117
- nByteLength: 32,
118
- Gu: BigInt(9),
119
- powPminus2: (x) => {
120
- const P = ED25519_P;
121
- // x^(p-2) aka x^(2^255-21)
122
- const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);
123
- return modular.mod(modular.pow2(pow_p_5_8, BigInt(3), P) * b2, P);
124
- },
125
- adjustScalarBytes,
126
- randomBytes: utils.randomBytes,
127
- });
128
- // Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)
129
- // NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since
130
- // SageMath returns different root first and everything falls apart
131
- const ELL2_C1 = (Fp.ORDER + BigInt(3)) / BigInt(8); // 1. c1 = (q + 3) / 8 # Integer arithmetic
132
- const ELL2_C2 = Fp.pow(_2n, ELL2_C1); // 2. c2 = 2^c1
133
- const ELL2_C3 = Fp.sqrt(Fp.neg(Fp.ONE)); // 3. c3 = sqrt(-1)
134
- const ELL2_C4 = (Fp.ORDER - BigInt(5)) / BigInt(8); // 4. c4 = (q - 5) / 8 # Integer arithmetic
135
- const ELL2_J = BigInt(486662);
136
- // prettier-ignore
137
- function map_to_curve_elligator2_curve25519(u) {
138
- let tv1 = Fp.sqr(u); // 1. tv1 = u^2
139
- tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1
140
- let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not
141
- let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)
142
- let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2
143
- let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3
144
- let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd
145
- gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd
146
- gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2
147
- gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2
148
- let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2
149
- tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4
150
- tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3
151
- tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3
152
- tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7
153
- let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)
154
- y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)
155
- let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3
156
- tv2 = Fp.sqr(y11); // 19. tv2 = y11^2
157
- tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd
158
- let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1
159
- let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt
160
- let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd
161
- let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u
162
- y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2
163
- let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3
164
- let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)
165
- tv2 = Fp.sqr(y21); // 28. tv2 = y21^2
166
- tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd
167
- let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2
168
- let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt
169
- tv2 = Fp.sqr(y1); // 32. tv2 = y1^2
170
- tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd
171
- let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1
172
- let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2
173
- let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2
174
- let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y
175
- y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)
176
- return { xMn: xn, xMd: xd, yMn: y, yMd: 1n }; // 39. return (xn, xd, y, 1)
177
- }
178
- const ELL2_C1_EDWARDS = modular.FpSqrtEven(Fp, Fp.neg(BigInt(486664))); // sgn0(c1) MUST equal 0
179
- function map_to_curve_elligator2_edwards25519(u) {
180
- const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) = map_to_curve_elligator2_curve25519(u)
181
- let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd
182
- xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1
183
- let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM
184
- let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd
185
- let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)
186
- let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd
187
- let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0
188
- xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)
189
- xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)
190
- yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)
191
- yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)
192
- const inv = Fp.invertBatch([xd, yd]); // batch division
193
- return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)
194
- }
195
- hashToCurve.createHasher(ed25519.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {
196
- DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',
197
- encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',
198
- p: Fp.ORDER,
199
- m: 1,
200
- k: 128,
201
- expand: 'xmd',
202
- hash: sha512.sha512,
203
- });
204
- function assertRstPoint(other) {
205
- if (!(other instanceof RistrettoPoint))
206
- throw new Error('RistrettoPoint expected');
207
- }
208
- // √(-1) aka √(a) aka 2^((p-1)/4)
209
- const SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');
210
- // √(ad - 1)
211
- const SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');
212
- // 1 / √(a-d)
213
- const INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');
214
- // 1-d²
215
- const ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');
216
- // (d-1)²
217
- const D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');
218
- // Calculates 1/√(number)
219
- const invertSqrt = (number) => uvRatio(_1n, number);
220
- const MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
221
- const bytes255ToNumberLE = (bytes) => ed25519.CURVE.Fp.create(utils$1.bytesToNumberLE(bytes) & MAX_255B);
222
- // Computes Elligator map for Ristretto
223
- // https://ristretto.group/formulas/elligator.html
224
- function calcElligatorRistrettoMap(r0) {
225
- const { d } = ed25519.CURVE;
226
- const P = ed25519.CURVE.Fp.ORDER;
227
- const mod = ed25519.CURVE.Fp.create;
228
- const r = mod(SQRT_M1 * r0 * r0); // 1
229
- const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2
230
- let c = BigInt(-1); // 3
231
- const D = mod((c - d * r) * mod(r + d)); // 4
232
- let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5
233
- let s_ = mod(s * r0); // 6
234
- if (!modular.isNegativeLE(s_, P))
235
- s_ = mod(-s_);
236
- if (!Ns_D_is_sq)
237
- s = s_; // 7
238
- if (!Ns_D_is_sq)
239
- c = r; // 8
240
- const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9
241
- const s2 = s * s;
242
- const W0 = mod((s + s) * D); // 10
243
- const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11
244
- const W2 = mod(_1n - s2); // 12
245
- const W3 = mod(_1n + s2); // 13
246
- return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));
247
- }
248
- /**
249
- * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be
250
- * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.
251
- * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,
252
- * but it should work in its own namespace: do not combine those two.
253
- * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448
254
- */
255
- class RistrettoPoint {
256
- // Private property to discourage combining ExtendedPoint + RistrettoPoint
257
- // Always use Ristretto encoding/decoding instead.
258
- constructor(ep) {
259
- this.ep = ep;
260
- }
261
- static fromAffine(ap) {
262
- return new RistrettoPoint(ed25519.ExtendedPoint.fromAffine(ap));
263
- }
264
- /**
265
- * Takes uniform output of 64-bit hash function like sha512 and converts it to `RistrettoPoint`.
266
- * The hash-to-group operation applies Elligator twice and adds the results.
267
- * **Note:** this is one-way map, there is no conversion from point to hash.
268
- * https://ristretto.group/formulas/elligator.html
269
- * @param hex 64-bit output of a hash function
270
- */
271
- static hashToCurve(hex) {
272
- hex = utils$1.ensureBytes('ristrettoHash', hex, 64);
273
- const r1 = bytes255ToNumberLE(hex.slice(0, 32));
274
- const R1 = calcElligatorRistrettoMap(r1);
275
- const r2 = bytes255ToNumberLE(hex.slice(32, 64));
276
- const R2 = calcElligatorRistrettoMap(r2);
277
- return new RistrettoPoint(R1.add(R2));
278
- }
279
- /**
280
- * Converts ristretto-encoded string to ristretto point.
281
- * https://ristretto.group/formulas/decoding.html
282
- * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding
283
- */
284
- static fromHex(hex) {
285
- hex = utils$1.ensureBytes('ristrettoHex', hex, 32);
286
- const { a, d } = ed25519.CURVE;
287
- const P = ed25519.CURVE.Fp.ORDER;
288
- const mod = ed25519.CURVE.Fp.create;
289
- const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';
290
- const s = bytes255ToNumberLE(hex);
291
- // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.
292
- // 3. Check that s is non-negative, or else abort
293
- if (!utils$1.equalBytes(utils$1.numberToBytesLE(s, 32), hex) || modular.isNegativeLE(s, P))
294
- throw new Error(emsg);
295
- const s2 = mod(s * s);
296
- const u1 = mod(_1n + a * s2); // 4 (a is -1)
297
- const u2 = mod(_1n - a * s2); // 5
298
- const u1_2 = mod(u1 * u1);
299
- const u2_2 = mod(u2 * u2);
300
- const v = mod(a * d * u1_2 - u2_2); // 6
301
- const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7
302
- const Dx = mod(I * u2); // 8
303
- const Dy = mod(I * Dx * v); // 9
304
- let x = mod((s + s) * Dx); // 10
305
- if (modular.isNegativeLE(x, P))
306
- x = mod(-x); // 10
307
- const y = mod(u1 * Dy); // 11
308
- const t = mod(x * y); // 12
309
- if (!isValid || modular.isNegativeLE(t, P) || y === _0n)
310
- throw new Error(emsg);
311
- return new RistrettoPoint(new ed25519.ExtendedPoint(x, y, _1n, t));
312
- }
313
- /**
314
- * Encodes ristretto point to Uint8Array.
315
- * https://ristretto.group/formulas/encoding.html
316
- */
317
- toRawBytes() {
318
- let { ex: x, ey: y, ez: z, et: t } = this.ep;
319
- const P = ed25519.CURVE.Fp.ORDER;
320
- const mod = ed25519.CURVE.Fp.create;
321
- const u1 = mod(mod(z + y) * mod(z - y)); // 1
322
- const u2 = mod(x * y); // 2
323
- // Square root always exists
324
- const u2sq = mod(u2 * u2);
325
- const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3
326
- const D1 = mod(invsqrt * u1); // 4
327
- const D2 = mod(invsqrt * u2); // 5
328
- const zInv = mod(D1 * D2 * t); // 6
329
- let D; // 7
330
- if (modular.isNegativeLE(t * zInv, P)) {
331
- let _x = mod(y * SQRT_M1);
332
- let _y = mod(x * SQRT_M1);
333
- x = _x;
334
- y = _y;
335
- D = mod(D1 * INVSQRT_A_MINUS_D);
336
- }
337
- else {
338
- D = D2; // 8
339
- }
340
- if (modular.isNegativeLE(x * zInv, P))
341
- y = mod(-y); // 9
342
- let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))
343
- if (modular.isNegativeLE(s, P))
344
- s = mod(-s);
345
- return utils$1.numberToBytesLE(s, 32); // 11
346
- }
347
- toHex() {
348
- return utils$1.bytesToHex(this.toRawBytes());
349
- }
350
- toString() {
351
- return this.toHex();
352
- }
353
- // Compare one point to another.
354
- equals(other) {
355
- assertRstPoint(other);
356
- const { ex: X1, ey: Y1 } = this.ep;
357
- const { ex: X2, ey: Y2 } = other.ep;
358
- const mod = ed25519.CURVE.Fp.create;
359
- // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)
360
- const one = mod(X1 * Y2) === mod(Y1 * X2);
361
- const two = mod(Y1 * Y2) === mod(X1 * X2);
362
- return one || two;
363
- }
364
- add(other) {
365
- assertRstPoint(other);
366
- return new RistrettoPoint(this.ep.add(other.ep));
367
- }
368
- subtract(other) {
369
- assertRstPoint(other);
370
- return new RistrettoPoint(this.ep.subtract(other.ep));
371
- }
372
- multiply(scalar) {
373
- return new RistrettoPoint(this.ep.multiply(scalar));
374
- }
375
- multiplyUnsafe(scalar) {
376
- return new RistrettoPoint(this.ep.multiplyUnsafe(scalar));
377
- }
378
- }
379
- RistrettoPoint.BASE = new RistrettoPoint(ed25519.ExtendedPoint.BASE);
380
- RistrettoPoint.ZERO = new RistrettoPoint(ed25519.ExtendedPoint.ZERO);
381
-
382
- exports.RistrettoPoint = RistrettoPoint;
383
- exports.ed25519 = ed25519;
@@ -1,258 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var sha256 = require('../noble-hashes/sha256.js');
6
- var utils$1 = require('../noble-hashes/utils.js');
7
- var modular = require('./abstract/modular.js');
8
- var weierstrass = require('./abstract/weierstrass.js');
9
- var utils = require('./abstract/utils.js');
10
- var hashToCurve = require('./abstract/hash-to-curve.js');
11
- var _shortw_utils = require('./_shortw_utils.js');
12
-
13
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
14
- const secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');
15
- const secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');
16
- const _1n = BigInt(1);
17
- const _2n = BigInt(2);
18
- const divNearest = (a, b) => (a + b / _2n) / b;
19
- /**
20
- * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.
21
- * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]
22
- */
23
- function sqrtMod(y) {
24
- const P = secp256k1P;
25
- // prettier-ignore
26
- const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);
27
- // prettier-ignore
28
- const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);
29
- const b2 = (y * y * y) % P; // x^3, 11
30
- const b3 = (b2 * b2 * y) % P; // x^7
31
- const b6 = (modular.pow2(b3, _3n, P) * b3) % P;
32
- const b9 = (modular.pow2(b6, _3n, P) * b3) % P;
33
- const b11 = (modular.pow2(b9, _2n, P) * b2) % P;
34
- const b22 = (modular.pow2(b11, _11n, P) * b11) % P;
35
- const b44 = (modular.pow2(b22, _22n, P) * b22) % P;
36
- const b88 = (modular.pow2(b44, _44n, P) * b44) % P;
37
- const b176 = (modular.pow2(b88, _88n, P) * b88) % P;
38
- const b220 = (modular.pow2(b176, _44n, P) * b44) % P;
39
- const b223 = (modular.pow2(b220, _3n, P) * b3) % P;
40
- const t1 = (modular.pow2(b223, _23n, P) * b22) % P;
41
- const t2 = (modular.pow2(t1, _6n, P) * b2) % P;
42
- const root = modular.pow2(t2, _2n, P);
43
- if (!Fp.eql(Fp.sqr(root), y))
44
- throw new Error('Cannot find square root');
45
- return root;
46
- }
47
- const Fp = modular.Fp(secp256k1P, undefined, undefined, { sqrt: sqrtMod });
48
- const secp256k1 = _shortw_utils.createCurve({
49
- a: BigInt(0),
50
- b: BigInt(7),
51
- Fp,
52
- n: secp256k1N,
53
- // Base point (x, y) aka generator point
54
- Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),
55
- Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),
56
- h: BigInt(1),
57
- lowS: true,
58
- /**
59
- * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.
60
- * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.
61
- * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.
62
- * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066
63
- */
64
- endo: {
65
- beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),
66
- splitScalar: (k) => {
67
- const n = secp256k1N;
68
- const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');
69
- const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');
70
- const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');
71
- const b2 = a1;
72
- const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)
73
- const c1 = divNearest(b2 * k, n);
74
- const c2 = divNearest(-b1 * k, n);
75
- let k1 = modular.mod(k - c1 * a1 - c2 * a2, n);
76
- let k2 = modular.mod(-c1 * b1 - c2 * b2, n);
77
- const k1neg = k1 > POW_2_128;
78
- const k2neg = k2 > POW_2_128;
79
- if (k1neg)
80
- k1 = n - k1;
81
- if (k2neg)
82
- k2 = n - k2;
83
- if (k1 > POW_2_128 || k2 > POW_2_128) {
84
- throw new Error('splitScalar: Endomorphism failed, k=' + k);
85
- }
86
- return { k1neg, k1, k2neg, k2 };
87
- },
88
- },
89
- }, sha256.sha256);
90
- // Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.
91
- // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
92
- const _0n = BigInt(0);
93
- const fe = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1P;
94
- const ge = (x) => typeof x === 'bigint' && _0n < x && x < secp256k1N;
95
- /** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */
96
- const TAGGED_HASH_PREFIXES = {};
97
- function taggedHash(tag, ...messages) {
98
- let tagP = TAGGED_HASH_PREFIXES[tag];
99
- if (tagP === undefined) {
100
- const tagH = sha256.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));
101
- tagP = utils.concatBytes(tagH, tagH);
102
- TAGGED_HASH_PREFIXES[tag] = tagP;
103
- }
104
- return sha256.sha256(utils.concatBytes(tagP, ...messages));
105
- }
106
- // ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03
107
- const pointToBytes = (point) => point.toRawBytes(true).slice(1);
108
- const numTo32b = (n) => utils.numberToBytesBE(n, 32);
109
- const modP = (x) => modular.mod(x, secp256k1P);
110
- const modN = (x) => modular.mod(x, secp256k1N);
111
- const Point = secp256k1.ProjectivePoint;
112
- const GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);
113
- // Calculate point, scalar and bytes
114
- function schnorrGetExtPubKey(priv) {
115
- let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey
116
- let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside
117
- const scalar = p.hasEvenY() ? d_ : modN(-d_);
118
- return { scalar: scalar, bytes: pointToBytes(p) };
119
- }
120
- /**
121
- * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.
122
- * @returns valid point checked for being on-curve
123
- */
124
- function lift_x(x) {
125
- if (!fe(x))
126
- throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.
127
- const xx = modP(x * x);
128
- const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.
129
- let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.
130
- if (y % 2n !== 0n)
131
- y = modP(-y); // Return the unique point P such that x(P) = x and
132
- const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.
133
- p.assertValidity();
134
- return p;
135
- }
136
- /**
137
- * Create tagged hash, convert it to bigint, reduce modulo-n.
138
- */
139
- function challenge(...args) {
140
- return modN(utils.bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));
141
- }
142
- /**
143
- * Schnorr public key is just `x` coordinate of Point as per BIP340.
144
- */
145
- function schnorrGetPublicKey(privateKey) {
146
- return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)
147
- }
148
- /**
149
- * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.
150
- * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
151
- */
152
- function schnorrSign(message, privateKey, auxRand = utils$1.randomBytes(32)) {
153
- const m = utils.ensureBytes('message', message);
154
- const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder
155
- const a = utils.ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
156
- const t = numTo32b(d ^ utils.bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
157
- const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)
158
- const k_ = modN(utils.bytesToNumberBE(rand)); // Let k' = int(rand) mod n
159
- if (k_ === _0n)
160
- throw new Error('sign failed: k is zero'); // Fail if k' = 0.
161
- const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.
162
- const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.
163
- const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).
164
- sig.set(rx, 0);
165
- sig.set(numTo32b(modN(k + e * d)), 32);
166
- // If Verify(bytes(P), m, sig) (see below) returns failure, abort
167
- if (!schnorrVerify(sig, m, px))
168
- throw new Error('sign: Invalid signature produced');
169
- return sig;
170
- }
171
- /**
172
- * Verifies Schnorr signature.
173
- * Will swallow errors & return false except for initial type validation of arguments.
174
- */
175
- function schnorrVerify(signature, message, publicKey) {
176
- const sig = utils.ensureBytes('signature', signature, 64);
177
- const m = utils.ensureBytes('message', message);
178
- const pub = utils.ensureBytes('publicKey', publicKey, 32);
179
- try {
180
- const P = lift_x(utils.bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails
181
- const r = utils.bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.
182
- if (!fe(r))
183
- return false;
184
- const s = utils.bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.
185
- if (!ge(s))
186
- return false;
187
- const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n
188
- const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P
189
- if (!R || !R.hasEvenY() || R.toAffine().x !== r)
190
- return false; // -eP == (n-e)P
191
- return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.
192
- }
193
- catch (error) {
194
- return false;
195
- }
196
- }
197
- ({
198
- getPublicKey: schnorrGetPublicKey,
199
- sign: schnorrSign,
200
- verify: schnorrVerify,
201
- utils: {
202
- randomPrivateKey: secp256k1.utils.randomPrivateKey,
203
- lift_x,
204
- pointToBytes,
205
- numberToBytesBE: utils.numberToBytesBE,
206
- bytesToNumberBE: utils.bytesToNumberBE,
207
- taggedHash,
208
- mod: modular.mod,
209
- },
210
- });
211
- const isoMap = hashToCurve.isogenyMap(Fp, [
212
- // xNum
213
- [
214
- '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',
215
- '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',
216
- '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',
217
- '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',
218
- ],
219
- // xDen
220
- [
221
- '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',
222
- '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',
223
- '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
224
- ],
225
- // yNum
226
- [
227
- '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',
228
- '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',
229
- '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',
230
- '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',
231
- ],
232
- // yDen
233
- [
234
- '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',
235
- '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',
236
- '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',
237
- '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
238
- ],
239
- ].map((i) => i.map((j) => BigInt(j))));
240
- const mapSWU = weierstrass.mapToCurveSimpleSWU(Fp, {
241
- A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),
242
- B: BigInt('1771'),
243
- Z: Fp.create(BigInt('-11')),
244
- });
245
- hashToCurve.createHasher(secp256k1.ProjectivePoint, (scalars) => {
246
- const { x, y } = mapSWU(Fp.create(scalars[0]));
247
- return isoMap(x, y);
248
- }, {
249
- DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',
250
- encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',
251
- p: Fp.ORDER,
252
- m: 1,
253
- k: 128,
254
- expand: 'xmd',
255
- hash: sha256.sha256,
256
- });
257
-
258
- exports.secp256k1 = secp256k1;