@miradexio/client 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/README.md +57 -292
  2. package/dist/address/base58.d.ts.map +1 -1
  3. package/dist/address/base58.js +1 -2
  4. package/dist/address/base58.js.map +1 -1
  5. package/dist/address/bech32.d.ts +0 -8
  6. package/dist/address/bech32.d.ts.map +1 -1
  7. package/dist/address/bech32.js +3 -9
  8. package/dist/address/bech32.js.map +1 -1
  9. package/dist/address/evm.d.ts.map +1 -1
  10. package/dist/address/evm.js +1 -2
  11. package/dist/address/evm.js.map +1 -1
  12. package/dist/address/index.d.ts +0 -6
  13. package/dist/address/index.d.ts.map +1 -1
  14. package/dist/address/index.js +6 -9
  15. package/dist/address/index.js.map +1 -1
  16. package/dist/address/monero.d.ts +0 -10
  17. package/dist/address/monero.d.ts.map +1 -1
  18. package/dist/address/monero.js +4 -10
  19. package/dist/address/monero.js.map +1 -1
  20. package/dist/address/polkadot.d.ts +0 -5
  21. package/dist/address/polkadot.d.ts.map +1 -1
  22. package/dist/address/polkadot.js +2 -6
  23. package/dist/address/polkadot.js.map +1 -1
  24. package/dist/address/ton.d.ts +0 -6
  25. package/dist/address/ton.d.ts.map +1 -1
  26. package/dist/address/ton.js +3 -8
  27. package/dist/address/ton.js.map +1 -1
  28. package/dist/api/index.d.ts +0 -19
  29. package/dist/api/index.d.ts.map +1 -1
  30. package/dist/api/index.js +18 -37
  31. package/dist/api/index.js.map +1 -1
  32. package/dist/atomic-swap/drive.d.ts +0 -13
  33. package/dist/atomic-swap/drive.d.ts.map +1 -1
  34. package/dist/atomic-swap/drive.js +72 -114
  35. package/dist/atomic-swap/drive.js.map +1 -1
  36. package/dist/atomic-swap/extract.d.ts +0 -23
  37. package/dist/atomic-swap/extract.d.ts.map +1 -1
  38. package/dist/atomic-swap/extract.js +6 -16
  39. package/dist/atomic-swap/extract.js.map +1 -1
  40. package/dist/atomic-swap/index.d.ts +0 -7
  41. package/dist/atomic-swap/index.d.ts.map +1 -1
  42. package/dist/atomic-swap/index.js +1 -7
  43. package/dist/atomic-swap/index.js.map +1 -1
  44. package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
  45. package/dist/atomic-swap/monero-sweep/errors.js +5 -20
  46. package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
  47. package/dist/atomic-swap/monero-sweep/index.d.ts +1 -13
  48. package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
  49. package/dist/atomic-swap/monero-sweep/index.js +36 -65
  50. package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
  51. package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
  52. package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
  53. package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
  54. package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
  55. package/dist/atomic-swap/presign.d.ts +0 -63
  56. package/dist/atomic-swap/presign.d.ts.map +1 -1
  57. package/dist/atomic-swap/presign.js +30 -90
  58. package/dist/atomic-swap/presign.js.map +1 -1
  59. package/dist/atomic-swap/refund.d.ts +0 -18
  60. package/dist/atomic-swap/refund.d.ts.map +1 -1
  61. package/dist/atomic-swap/refund.js +16 -32
  62. package/dist/atomic-swap/refund.js.map +1 -1
  63. package/dist/atomic-swap/run.d.ts +0 -17
  64. package/dist/atomic-swap/run.d.ts.map +1 -1
  65. package/dist/atomic-swap/run.js +11 -25
  66. package/dist/atomic-swap/run.js.map +1 -1
  67. package/dist/atomic-swap/snapshot.d.ts +0 -30
  68. package/dist/atomic-swap/snapshot.d.ts.map +1 -1
  69. package/dist/atomic-swap/snapshot.js +8 -23
  70. package/dist/atomic-swap/snapshot.js.map +1 -1
  71. package/dist/atomic-swap/submit-encsig.d.ts +0 -7
  72. package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
  73. package/dist/atomic-swap/submit-encsig.js +8 -15
  74. package/dist/atomic-swap/submit-encsig.js.map +1 -1
  75. package/dist/atomic-swap/types.d.ts +2 -55
  76. package/dist/atomic-swap/types.d.ts.map +1 -1
  77. package/dist/atomic-swap/types.js +2 -3
  78. package/dist/atomic-swap/types.js.map +1 -1
  79. package/dist/blockchain/quorum-provider.d.ts +0 -15
  80. package/dist/blockchain/quorum-provider.d.ts.map +1 -1
  81. package/dist/blockchain/quorum-provider.js +7 -9
  82. package/dist/blockchain/quorum-provider.js.map +1 -1
  83. package/dist/cooperative-redeem.d.ts +5 -14
  84. package/dist/cooperative-redeem.d.ts.map +1 -1
  85. package/dist/cooperative-redeem.js +3 -20
  86. package/dist/cooperative-redeem.js.map +1 -1
  87. package/dist/engine/blockchain-querier.d.ts +0 -22
  88. package/dist/engine/blockchain-querier.d.ts.map +1 -1
  89. package/dist/engine/engine-state.d.ts +0 -8
  90. package/dist/engine/engine-state.d.ts.map +1 -1
  91. package/dist/engine/engine-state.js.map +1 -1
  92. package/dist/engine/flow-context.d.ts +0 -20
  93. package/dist/engine/flow-context.d.ts.map +1 -1
  94. package/dist/engine/flow-context.js +17 -41
  95. package/dist/engine/flow-context.js.map +1 -1
  96. package/dist/engine/flows/atomic-flow-state.d.ts +8 -1
  97. package/dist/engine/flows/atomic-flow-state.d.ts.map +1 -1
  98. package/dist/engine/flows/atomic-flow.d.ts +1 -28
  99. package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
  100. package/dist/engine/flows/atomic-flow.js +98 -128
  101. package/dist/engine/flows/atomic-flow.js.map +1 -1
  102. package/dist/engine/flows/error-routing.d.ts +11 -0
  103. package/dist/engine/flows/error-routing.d.ts.map +1 -0
  104. package/dist/engine/flows/error-routing.js +17 -0
  105. package/dist/engine/flows/error-routing.js.map +1 -0
  106. package/dist/engine/flows/swap-flow.d.ts +0 -19
  107. package/dist/engine/flows/swap-flow.d.ts.map +1 -1
  108. package/dist/engine/flows/swap-flow.js +41 -83
  109. package/dist/engine/flows/swap-flow.js.map +1 -1
  110. package/dist/engine/miradex-engine.d.ts +1 -62
  111. package/dist/engine/miradex-engine.d.ts.map +1 -1
  112. package/dist/engine/miradex-engine.js +18 -50
  113. package/dist/engine/miradex-engine.js.map +1 -1
  114. package/dist/engine/pipeline.d.ts +0 -11
  115. package/dist/engine/pipeline.d.ts.map +1 -1
  116. package/dist/engine/pipeline.js +11 -21
  117. package/dist/engine/pipeline.js.map +1 -1
  118. package/dist/engine/platform.d.ts +0 -160
  119. package/dist/engine/platform.d.ts.map +1 -1
  120. package/dist/engine/platform.js +2 -0
  121. package/dist/engine/platform.js.map +1 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +7 -11
  124. package/dist/index.js.map +1 -1
  125. package/dist/interfaces/blockchain.d.ts +1 -13
  126. package/dist/interfaces/blockchain.d.ts.map +1 -1
  127. package/dist/interfaces/blockchain.js +1 -0
  128. package/dist/interfaces/blockchain.js.map +1 -1
  129. package/dist/interfaces/logger.d.ts +0 -6
  130. package/dist/interfaces/logger.d.ts.map +1 -1
  131. package/dist/interfaces/logger.js.map +1 -1
  132. package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
  133. package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
  134. package/dist/lib/bitcoin/deposit-watcher.js +7 -31
  135. package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
  136. package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
  137. package/dist/lib/bitcoin/script-hash.js +2 -6
  138. package/dist/lib/bitcoin/script-hash.js.map +1 -1
  139. package/dist/lib/bitcoin/sweep.d.ts +0 -30
  140. package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
  141. package/dist/lib/bitcoin/sweep.js +11 -40
  142. package/dist/lib/bitcoin/sweep.js.map +1 -1
  143. package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
  144. package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
  145. package/dist/lib/bitcoin/tx-verify.js +20 -61
  146. package/dist/lib/bitcoin/tx-verify.js.map +1 -1
  147. package/dist/lib/bitcoin/wallet.d.ts +0 -38
  148. package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
  149. package/dist/lib/bitcoin/wallet.js +13 -38
  150. package/dist/lib/bitcoin/wallet.js.map +1 -1
  151. package/dist/lib/crypto/bytes.d.ts +0 -14
  152. package/dist/lib/crypto/bytes.d.ts.map +1 -1
  153. package/dist/lib/crypto/bytes.js +5 -14
  154. package/dist/lib/crypto/bytes.js.map +1 -1
  155. package/dist/lib/crypto/errors.d.ts +0 -5
  156. package/dist/lib/crypto/errors.d.ts.map +1 -1
  157. package/dist/lib/crypto/errors.js +2 -5
  158. package/dist/lib/crypto/errors.js.map +1 -1
  159. package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
  160. package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
  161. package/dist/lib/crypto/libp2p-identity.js +16 -28
  162. package/dist/lib/crypto/libp2p-identity.js.map +1 -1
  163. package/dist/lib/crypto/mnemonic.d.ts +0 -9
  164. package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
  165. package/dist/lib/crypto/mnemonic.js +11 -27
  166. package/dist/lib/crypto/mnemonic.js.map +1 -1
  167. package/dist/lib/crypto/platform.d.ts +0 -6
  168. package/dist/lib/crypto/platform.d.ts.map +1 -1
  169. package/dist/lib/crypto/platform.js +2 -6
  170. package/dist/lib/crypto/platform.js.map +1 -1
  171. package/dist/lib/crypto/scalars.d.ts +0 -23
  172. package/dist/lib/crypto/scalars.d.ts.map +1 -1
  173. package/dist/lib/crypto/scalars.js +10 -23
  174. package/dist/lib/crypto/scalars.js.map +1 -1
  175. package/dist/lib/crypto/types.d.ts +0 -4
  176. package/dist/lib/crypto/types.d.ts.map +1 -1
  177. package/dist/lib/crypto/wasm.d.ts +0 -23
  178. package/dist/lib/crypto/wasm.d.ts.map +1 -1
  179. package/dist/lib/crypto/wasm.js +9 -16
  180. package/dist/lib/crypto/wasm.js.map +1 -1
  181. package/dist/lib/default-config.d.ts +1 -59
  182. package/dist/lib/default-config.d.ts.map +1 -1
  183. package/dist/lib/default-config.js +22 -61
  184. package/dist/lib/default-config.js.map +1 -1
  185. package/dist/lib/errors.d.ts +0 -54
  186. package/dist/lib/errors.d.ts.map +1 -1
  187. package/dist/lib/errors.js +12 -35
  188. package/dist/lib/errors.js.map +1 -1
  189. package/dist/lib/keystore.d.ts +0 -24
  190. package/dist/lib/keystore.d.ts.map +1 -1
  191. package/dist/lib/keystore.js +3 -10
  192. package/dist/lib/keystore.js.map +1 -1
  193. package/dist/lib/monero/output-scanner.d.ts +0 -18
  194. package/dist/lib/monero/output-scanner.d.ts.map +1 -1
  195. package/dist/lib/monero/output-scanner.js +17 -40
  196. package/dist/lib/monero/output-scanner.js.map +1 -1
  197. package/dist/lib/monero/rpc.d.ts +0 -64
  198. package/dist/lib/monero/rpc.d.ts.map +1 -1
  199. package/dist/lib/monero/rpc.js +17 -59
  200. package/dist/lib/monero/rpc.js.map +1 -1
  201. package/dist/lib/monero/verify-lock.d.ts +0 -12
  202. package/dist/lib/monero/verify-lock.d.ts.map +1 -1
  203. package/dist/lib/monero/verify-lock.js +9 -24
  204. package/dist/lib/monero/verify-lock.js.map +1 -1
  205. package/dist/lib/monero/verify-sweep.d.ts +0 -20
  206. package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
  207. package/dist/lib/monero/verify-sweep.js +7 -25
  208. package/dist/lib/monero/verify-sweep.js.map +1 -1
  209. package/dist/lib/pow-solver.d.ts.map +1 -1
  210. package/dist/lib/pow-solver.js +3 -8
  211. package/dist/lib/pow-solver.js.map +1 -1
  212. package/dist/lib/retry.d.ts +7 -64
  213. package/dist/lib/retry.d.ts.map +1 -1
  214. package/dist/lib/retry.js +13 -13
  215. package/dist/lib/retry.js.map +1 -1
  216. package/dist/portable.d.ts.map +1 -1
  217. package/dist/portable.js +3 -4
  218. package/dist/portable.js.map +1 -1
  219. package/dist/quote-binding.d.ts +0 -13
  220. package/dist/quote-binding.d.ts.map +1 -1
  221. package/dist/quote-binding.js +3 -18
  222. package/dist/quote-binding.js.map +1 -1
  223. package/dist/swap-executor.d.ts +1 -5
  224. package/dist/swap-executor.d.ts.map +1 -1
  225. package/dist/swap-executor.js +1 -1
  226. package/dist/swap-executor.js.map +1 -1
  227. package/dist/types/api.d.ts +0 -6
  228. package/dist/types/api.d.ts.map +1 -1
  229. package/dist/types/api.js +6 -9
  230. package/dist/types/api.js.map +1 -1
  231. package/dist/types/errors.d.ts +0 -7
  232. package/dist/types/errors.d.ts.map +1 -1
  233. package/dist/types/errors.js +2 -7
  234. package/dist/types/errors.js.map +1 -1
  235. package/dist/types/index.js +1 -1
  236. package/dist/types/index.js.map +1 -1
  237. package/dist/types/keys.d.ts +0 -15
  238. package/dist/types/keys.d.ts.map +1 -1
  239. package/dist/types/protocol.d.ts +0 -51
  240. package/dist/types/protocol.d.ts.map +1 -1
  241. package/dist/types/protocol.js +3 -8
  242. package/dist/types/protocol.js.map +1 -1
  243. package/dist/types/status.d.ts +2 -0
  244. package/dist/types/status.d.ts.map +1 -1
  245. package/dist/types/status.js +17 -14
  246. package/dist/types/status.js.map +1 -1
  247. package/dist/types/verification.d.ts +0 -10
  248. package/dist/types/verification.d.ts.map +1 -1
  249. package/dist/types/verification.js +7 -15
  250. package/dist/types/verification.js.map +1 -1
  251. package/dist/verification/chainflip-networks.d.ts +2 -35
  252. package/dist/verification/chainflip-networks.d.ts.map +1 -1
  253. package/dist/verification/chainflip-networks.js +12 -4
  254. package/dist/verification/chainflip-networks.js.map +1 -1
  255. package/dist/verification/chainflip.d.ts +0 -40
  256. package/dist/verification/chainflip.d.ts.map +1 -1
  257. package/dist/verification/chainflip.js +49 -129
  258. package/dist/verification/chainflip.js.map +1 -1
  259. package/dist/verification/constants.d.ts +0 -40
  260. package/dist/verification/constants.d.ts.map +1 -1
  261. package/dist/verification/constants.js +14 -40
  262. package/dist/verification/constants.js.map +1 -1
  263. package/dist/verification/index.d.ts +0 -26
  264. package/dist/verification/index.d.ts.map +1 -1
  265. package/dist/verification/index.js +8 -12
  266. package/dist/verification/index.js.map +1 -1
  267. package/dist/verification/memo.d.ts +0 -15
  268. package/dist/verification/memo.d.ts.map +1 -1
  269. package/dist/verification/memo.js +9 -27
  270. package/dist/verification/memo.js.map +1 -1
  271. package/dist/verification/near-intents.d.ts +0 -63
  272. package/dist/verification/near-intents.d.ts.map +1 -1
  273. package/dist/verification/near-intents.js +25 -67
  274. package/dist/verification/near-intents.js.map +1 -1
  275. package/dist/verification/rate-oracle.d.ts +0 -22
  276. package/dist/verification/rate-oracle.d.ts.map +1 -1
  277. package/dist/verification/rate-oracle.js +6 -11
  278. package/dist/verification/rate-oracle.js.map +1 -1
  279. package/dist/verification/thorchain-networks.d.ts +0 -27
  280. package/dist/verification/thorchain-networks.d.ts.map +1 -1
  281. package/dist/verification/thorchain-networks.js +13 -15
  282. package/dist/verification/thorchain-networks.js.map +1 -1
  283. package/dist/verification/thorchain.d.ts +0 -30
  284. package/dist/verification/thorchain.d.ts.map +1 -1
  285. package/dist/verification/thorchain.js +24 -47
  286. package/dist/verification/thorchain.js.map +1 -1
  287. package/dist/wasm-pins.d.ts +3 -3
  288. package/dist/wasm-pins.js +1 -1
  289. package/dist/wire/near-intents.zod.d.ts +0 -27
  290. package/dist/wire/near-intents.zod.d.ts.map +1 -1
  291. package/dist/wire/near-intents.zod.js +15 -23
  292. package/dist/wire/near-intents.zod.js.map +1 -1
  293. package/dist/wire/server/action.zod.d.ts +0 -10
  294. package/dist/wire/server/action.zod.d.ts.map +1 -1
  295. package/dist/wire/server/action.zod.js +8 -14
  296. package/dist/wire/server/action.zod.js.map +1 -1
  297. package/dist/wire/server/common.zod.d.ts +0 -13
  298. package/dist/wire/server/common.zod.d.ts.map +1 -1
  299. package/dist/wire/server/common.zod.js +6 -14
  300. package/dist/wire/server/common.zod.js.map +1 -1
  301. package/dist/wire/server/quotes.zod.d.ts +35 -20
  302. package/dist/wire/server/quotes.zod.d.ts.map +1 -1
  303. package/dist/wire/server/quotes.zod.js +1 -0
  304. package/dist/wire/server/quotes.zod.js.map +1 -1
  305. package/dist/wire/server/swap.zod.d.ts +0 -42
  306. package/dist/wire/server/swap.zod.d.ts.map +1 -1
  307. package/dist/wire/server/swap.zod.js +12 -26
  308. package/dist/wire/server/swap.zod.js.map +1 -1
  309. package/dist/wire/thorchain.zod.d.ts +0 -8
  310. package/dist/wire/thorchain.zod.d.ts.map +1 -1
  311. package/dist/wire/thorchain.zod.js +3 -8
  312. package/dist/wire/thorchain.zod.js.map +1 -1
  313. package/package.json +4 -4
  314. package/wasm/miradex-rust/README.md +3 -4
  315. package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
  316. package/wasm/miradex-rust/miradex_rust.js +4 -6
  317. package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
@@ -1,23 +1,8 @@
1
- /**
2
- * Retry classification for the sweep path. Patterns matched here cause
3
- * `sweepMonero` to re-run the scan decoys → sign → broadcast loop with a
4
- * fresh ring.
5
- *
6
- * Two classes of error are retryable:
7
- *
8
- * 1. **Transient transport** — `fetch failed`, `timeout`, multi-node
9
- * exhaustion, HTTP 5xx. These resolve when the upstream node recovers
10
- * or another node is reached.
11
- *
12
- * 2. **Daemon-rejected `invalid_input` / `failed` flags** — monerod sets
13
- * these when a ring member is locked, has torsion, or fails the
14
- * key-image quorum check. Re-rolling the ring (which our retry path
15
- * does) typically fixes the next attempt.
16
- *
17
- * Permanent client-side errors (commitment mismatch, schema invalid,
18
- * verification failures) deliberately stay non-retryable — they will never
19
- * resolve by re-trying with a different ring.
20
- */
1
+ // Retry classifier for sweepMonero. Two classes count as retryable:
2
+ // 1. transient transport (fetch/timeout/5xx/multi-node exhaustion)
3
+ // 2. monerod invalid_input / failed (locked ring member, torsion, key-image
4
+ // quorum) - a fresh ring typically resolves these
5
+ // Commitment / schema / verification errors stay non-retryable.
21
6
  const RETRYABLE_PATTERNS = [
22
7
  'fetch failed',
23
8
  'terminated',
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,cAAc;IACd,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/errors.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,qEAAqE;AACrE,8EAA8E;AAC9E,uDAAuD;AACvD,gEAAgE;AAChE,MAAM,kBAAkB,GAAsB;IAC5C,cAAc;IACd,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -4,25 +4,13 @@ export interface SweepParams {
4
4
  readonly swapId: string;
5
5
  readonly s_b: Uint8Array;
6
6
  readonly receiveAddress: string;
7
- /**
8
- * Alice's 32-byte ed25519 public spend key (hex), used to prove sidecar
9
- * honesty: `s_a * G == S_a_monero` must hold before sweep begins (Fix 3 /
10
- * AV-invariant C.5).
11
- */
12
7
  readonly expectedSAMonero: string;
13
8
  /** Override the monerod nodes used for RPC calls. */
14
9
  readonly monerodNodes?: readonly string[];
15
- /**
16
- * Override the unlock window passed to the gamma decoy picker. Defaults
17
- * to wallet2's `DEFAULT_LOCK_WINDOW` of 10 blocks, which matches mainnet
18
- * behaviour and lets the post-pick `unlocked` validation re-roll the rare
19
- * locked-coinbase decoy. Set to 60 (`CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW`)
20
- * on chains where every output is a coinbase (regtest, freshly-bootstrapped
21
- * testnets) so the picker stays entirely inside the unlocked region.
22
- */
23
10
  readonly unlockWindowBlocks?: number;
24
11
  readonly onProgress?: (stage: string, detail?: string) => void;
25
12
  readonly logger?: Logger;
13
+ readonly signal?: AbortSignal;
26
14
  }
27
15
  export interface SweepResult {
28
16
  readonly txHash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAiEpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAuBD,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CA+H3F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA+DpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAGhC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAI1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAoBD,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAwH3F"}
@@ -1,30 +1,19 @@
1
- /**
2
- * Monero sweep protocol for atomic swaps fully client-side.
3
- *
4
- * After the maker redeems BTC, the server reveals s_a (its key share).
5
- * This module combines s_a + s_b to derive the full Monero spend key,
6
- * fetches the lock transaction directly from public monerod nodes,
7
- * selects decoys, builds construction data, signs via WASM, and
8
- * broadcasts the raw transaction — all without server involvement
9
- * beyond the initial key share retrieval.
10
- *
11
- * The private key s_b never leaves this process.
12
- */
1
+ // XMR sweep, fully client-side. Server gives us s_a after Alice redeems BTC;
2
+ // we combine s_a + s_b for the spend key, scan + decoy + sign + broadcast
3
+ // against a public monerod quorum. s_b never leaves the process.
13
4
  import { Point } from '@noble/ed25519';
14
5
  import { bytesToHex } from '@noble/hashes/utils.js';
15
6
  import { noopLogger } from '../../interfaces/logger.js';
16
7
  import { delay } from '../../lib/delay.js';
17
8
  import { VerificationError } from '../../types/index.js';
9
+ import { SwapCancelledError } from '../types.js';
18
10
  import { addScalars, hexToBytes, bytesToHex as scalarBytesToHex, bytesToBigInt, } from '../../lib/crypto/scalars.js';
19
11
  import { wipe } from '../../lib/crypto/bytes.js';
20
12
  import { ensureWasm, deriveKeyImages, signSweepTx, selectDecoys, computeCommitmentMask, decryptAmount, verifyCommitment, } from '../../lib/crypto/wasm.js';
21
13
  import { verifySweepTx } from '../../lib/monero/verify-sweep.js';
22
14
  import { scanTransactionOutputs, hexToScalar } from '../../lib/monero/output-scanner.js';
23
15
  import { fetchTransaction, fetchOutputKeys, fetchOutputDistribution, fetchFeeEstimate, broadcastTransaction, MAINNET_NODES, STAGENET_NODES, } from '../../lib/monero/rpc.js';
24
- /**
25
- * Normalise both the snake_case (s_a_hex) and camelCase (sAHex) shapes the
26
- * sidecar may emit into one strongly-typed record. Unknown fields are dropped.
27
- */
16
+ // Sidecar emits both snake_case and camelCase; pick whichever is present.
28
17
  function parseSweepOutputs(pd) {
29
18
  if (!pd || typeof pd !== 'object') {
30
19
  return { sAHex: undefined, vHex: undefined, lockTxHash: undefined, lockAddress: undefined, serverReceiveAddr: undefined };
@@ -46,40 +35,38 @@ function parseSweepOutputs(pd) {
46
35
  serverReceiveAddr: pick('receive_address', 'receiveAddress'),
47
36
  };
48
37
  }
49
- const SWEEP_SYNC_TIMEOUT_MS = 120_000;
50
38
  const SWEEP_RETRY_INTERVAL_MS = 15_000;
51
39
  const SWEEP_ACTION_TIMEOUT_MS = 120_000;
52
- /** Max attempts for the full sweep (scan → decoys → sign → broadcast).
53
- * Retries cover transient monerod failures and intermittent `invalid_input`
54
- * caused by unlucky decoy selection. */
40
+ // Covers transient monerod failures and intermittent invalid_input from
41
+ // unlucky decoy selection.
55
42
  const SWEEP_MAX_ATTEMPTS = 15;
56
- /** Backoff between sweep retries (doubles each attempt, capped at 60s). */
43
+ // Doubles per attempt, capped at 60s.
57
44
  const SWEEP_RETRY_BASE_MS = 5_000;
58
- /** Estimated tx size for fee calculation (1-in/2-out CLSAG + BP+, ring size 16).
59
- * Measured from actual signed transactions: ~3200 bytes. */
45
+ // 1-in/2-out CLSAG + BP+, ring size 16. Measured ~3200 bytes from real txs.
60
46
  const ESTIMATED_TX_SIZE = 3200;
61
- /** Fallback fee per byte if get_fee_estimate RPC is unavailable.
62
- * Uses the Monero default normal priority from cryptonote_config.h. */
47
+ // Monero "normal" priority default from cryptonote_config.h; used when
48
+ // get_fee_estimate RPC is unavailable.
63
49
  const FALLBACK_FEE_PER_BYTE = 23_000;
64
- /** Ring size for CLSAG + Bulletproofs+ (current Monero network). */
50
+ // CLSAG + BP+ on current mainnet.
65
51
  const RING_SIZE = 16;
66
52
  import { validateRingMembers } from './ring-select.js';
67
53
  import { isRetryableSweepError } from './errors.js';
68
54
  export async function sweepMonero(api, params) {
69
- const { swapId, s_b, receiveAddress, onProgress, logger: log = noopLogger } = params;
55
+ const { swapId, s_b, receiveAddress, onProgress, logger: log = noopLogger, signal } = params;
70
56
  onProgress?.('Loading sweep module...');
71
57
  log.info({ swapId }, 'Sweep: loading monero-sweep-wasm');
72
58
  await ensureWasm();
73
59
  log.info({ swapId }, 'Sweep: WASM module loaded');
74
60
  onProgress?.('Loading sweep data from server...');
75
61
  log.info({ swapId }, 'Sweep step 1: requesting redemption keys from server');
76
- const syncStart = Date.now();
77
62
  let sAHex;
78
63
  let vHex;
79
64
  let lockTxHash;
80
65
  let lockAddress;
81
66
  let serverReceiveAddr;
82
67
  while (true) {
68
+ if (signal?.aborted)
69
+ throw new SwapCancelledError();
83
70
  const outputsAction = await api.executeAction(swapId, { type: 'get-outputs' }, SWEEP_ACTION_TIMEOUT_MS);
84
71
  const sweepData = parseSweepOutputs(outputsAction.protocolData);
85
72
  sAHex = sweepData.sAHex;
@@ -89,13 +76,9 @@ export async function sweepMonero(api, params) {
89
76
  serverReceiveAddr = sweepData.serverReceiveAddr;
90
77
  if (sAHex && vHex && lockTxHash)
91
78
  break;
92
- if (Date.now() - syncStart >= SWEEP_SYNC_TIMEOUT_MS) {
93
- log.error({ swapId, elapsed: Date.now() - syncStart }, 'Sweep key retrieval timed out');
94
- throw new Error('Sweep key retrieval timed out');
95
- }
96
79
  onProgress?.('Waiting for sweep data...');
97
- log.debug({ swapId, elapsed: Date.now() - syncStart, hasSA: !!sAHex, hasV: !!vHex, hasHash: !!lockTxHash }, 'Not ready, retrying');
98
- await delay(SWEEP_RETRY_INTERVAL_MS);
80
+ log.debug({ swapId, hasSA: !!sAHex, hasV: !!vHex, hasHash: !!lockTxHash }, 'Not ready, retrying');
81
+ await delay(SWEEP_RETRY_INTERVAL_MS, signal);
99
82
  }
100
83
  if (!lockAddress)
101
84
  throw new Error('Server did not return monero_lock_address');
@@ -103,9 +86,8 @@ export async function sweepMonero(api, params) {
103
86
  throw new Error('Receive address mismatch — keystore and server disagree on XMR destination');
104
87
  }
105
88
  const s_a = hexToBytes(sAHex);
106
- // AV-invariant C.5: the sidecar's s_a must multiply to S_a_monero before
107
- // we combine it with s_b. Wrong s_a signs the sweep with a wrong key and
108
- // silently produces a tx that cannot spend the joint output.
89
+ // AV-C.5: sidecar's s_a must multiply to S_a_monero before we combine with
90
+ // s_b. Wrong s_a silently signs an unspendable sweep.
109
91
  {
110
92
  const s_aScalar = bytesToBigInt(s_a);
111
93
  const s_aPoint = Point.BASE.multiply(s_aScalar);
@@ -124,7 +106,6 @@ export async function sweepMonero(api, params) {
124
106
  const spendPubScalar = hexToScalar(spendKeyHex);
125
107
  const spendPub = Point.BASE.multiply(spendPubScalar);
126
108
  const spendPubHex = bytesToHex(spendPub.toBytes());
127
- // Detect network from lock address prefix
128
109
  const isMainnet = lockAddress.startsWith('4');
129
110
  const monerodConfig = {
130
111
  nodes: params.monerodNodes ?? (isMainnet ? [...MAINNET_NODES] : [...STAGENET_NODES]),
@@ -137,8 +118,7 @@ export async function sweepMonero(api, params) {
137
118
  network: isMainnet ? 'mainnet' : 'stagenet',
138
119
  nodeCount: monerodConfig.nodes.length,
139
120
  }, 'Sweep step 1 complete: keys received, scanning lock tx');
140
- // Retry on transient network errors and intermittent `invalid_input`
141
- // (caused by unlucky decoy selection on stagenet).
121
+ // Retry transient network failures and the unlucky-decoy invalid_input.
142
122
  let lastSweepError;
143
123
  for (let attempt = 0; attempt < SWEEP_MAX_ATTEMPTS; attempt++) {
144
124
  try {
@@ -167,8 +147,7 @@ export async function sweepMonero(api, params) {
167
147
  }
168
148
  throw lastSweepError ?? new Error('Sweep failed after all attempts');
169
149
  }
170
- /** Errors that warrant a retry (network failures + intermittent daemon rejections). */
171
- /** Steps 2–5: fetch lock tx → select decoys → sign → broadcast. */
150
+ // Steps 2-5: fetch lock tx, select decoys, sign, broadcast.
172
151
  async function sweepScanSignBroadcast(ctx) {
173
152
  const { swapId, monerodConfig, lockTxHash, viewKeyHex, spendKeyHex, spendPubHex, receiveAddress, api, log, onProgress, unlockWindowBlocks, } = ctx;
174
153
  const buildDecoyInput = (distribution) => JSON.stringify(unlockWindowBlocks === undefined
@@ -209,10 +188,9 @@ async function sweepScanSignBroadcast(ctx) {
209
188
  }, 'Sweep step 2 complete: real output found');
210
189
  onProgress?.('Selecting decoys...');
211
190
  log.info({ swapId }, 'Sweep step 3: selecting decoys via WASM');
212
- // Fetch cumulative output distribution for gamma selection
213
191
  const distribution = await fetchOutputDistribution(monerodConfig);
214
192
  log.info({ swapId, distributionLen: distribution.length }, 'Output distribution fetched');
215
- // Select decoys via WASM (gamma distribution matching wallet2)
193
+ // wallet2-matching gamma decoy selection in WASM.
216
194
  const decoyResultJson = selectDecoys(realOutput.globalOutputIndex, buildDecoyInput(distribution), RING_SIZE);
217
195
  const decoyResult = JSON.parse(decoyResultJson);
218
196
  log.info({
@@ -221,15 +199,12 @@ async function sweepScanSignBroadcast(ctx) {
221
199
  realIndexInRing: decoyResult.real_index_in_ring,
222
200
  firstIndices: decoyResult.indices.slice(0, 4).map(String),
223
201
  }, 'Decoys selected');
224
- // Fetch ring member public keys + commitments from monerod, validating
225
- // each candidate ring is usable for CLSAG (reject torsion/identity keys
226
- // matches monero-oxide wallet2 select_n). On invalid ring, re-pick decoys
227
- // and retry. Bumped from 5 50 because regtest's auto-miner constantly
228
- // produces immature coinbase outputs at the chain tip; the gamma decoy
229
- // distribution is recency-biased so a fresh draw can land 2-5 immature
230
- // members per ring. Each retry is one monerod RPC + WASM decoy re-pick
231
- // (~5ms), so 50 attempts per outer call is still under a second. Mainnet
232
- // chains rarely need more than a couple of retries.
202
+ // Fetch ring members from monerod, validate (reject torsion/identity per
203
+ // wallet2 select_n), re-pick on any invalid slot. Cap is 50 because
204
+ // regtest's auto-miner spits out immature coinbase outputs at the chain
205
+ // tip and the gamma picker is recency-biased a fresh draw can land
206
+ // several immature members per ring. ~5ms per retry, so 50 stays under 1s.
207
+ // Mainnet rarely needs more than a few.
233
208
  onProgress?.('Fetching ring member keys...');
234
209
  const MAX_RING_RETRIES = 50;
235
210
  let currentDecoyResult = decoyResult;
@@ -254,7 +229,7 @@ async function sweepScanSignBroadcast(ctx) {
254
229
  }
255
230
  const finalDecoyResult = currentDecoyResult;
256
231
  log.info({ swapId, ringMemberCount: ringMemberKeys.length }, 'Ring member keys fetched (all valid)');
257
- // Verify our commitment matches on-chain (debug check)
232
+ // Sanity-check our commitment against on-chain.
258
233
  const realRingMember = ringMemberKeys[finalDecoyResult.real_index_in_ring];
259
234
  if (realRingMember) {
260
235
  const commitmentMatch = verifyCommitment(viewKeyHex, realOutput.txPublicKey, realOutput.outputIndex, realOutput.amount, realRingMember.mask);
@@ -272,7 +247,7 @@ async function sweepScanSignBroadcast(ctx) {
272
247
  'The sweep transaction would be rejected.');
273
248
  }
274
249
  }
275
- // Get fee estimate from monerod (adjusts based on mempool, like Feather wallet)
250
+ // Mempool-adjusted fee from monerod (Feather wallet does the same).
276
251
  let feePerByte = FALLBACK_FEE_PER_BYTE;
277
252
  let quantizationMask = 10_000;
278
253
  try {
@@ -284,7 +259,6 @@ async function sweepScanSignBroadcast(ctx) {
284
259
  catch (err) {
285
260
  log.warn({ swapId, error: err instanceof Error ? err.message : String(err) }, 'Fee estimate failed, using fallback');
286
261
  }
287
- // Fee = fee_per_byte * estimated_tx_size, rounded up to quantization mask
288
262
  let networkFee = feePerByte * ESTIMATED_TX_SIZE;
289
263
  if (quantizationMask > 0) {
290
264
  networkFee = Math.ceil(networkFee / quantizationMask) * quantizationMask;
@@ -345,14 +319,13 @@ async function sweepScanSignBroadcast(ctx) {
345
319
  fee: verification.fee,
346
320
  amountXmr: (Number(BigInt(verification.amount)) / 1e12).toFixed(12),
347
321
  }, 'Sweep tx verified — signing via WASM');
348
- // Derive key images (needed internally by sign_sweep_tx)
322
+ // sign_sweep_tx needs key images precomputed.
349
323
  onProgress?.('Signing sweep transaction...');
350
324
  const keyImagesJson = deriveKeyImages(JSON.stringify([structuredOutput]), viewKeyHex, spendKeyHex);
351
325
  log.debug({ swapId, keyImagesJson: keyImagesJson.slice(0, 60) + '...' }, 'Key images derived');
352
- // Sign
353
326
  const rawTxHex = signSweepTx(JSON.stringify(constructionData), spendKeyHex, viewKeyHex);
354
327
  log.info({ swapId, rawTxLen: rawTxHex.length, rawTxPrefix: rawTxHex.slice(0, 32) + '...' }, 'Transaction signed');
355
- // Diagnostic: dump full construction data for debugging invalid_input
328
+ // Dump full construction data so an invalid_input rejection is debuggable.
356
329
  log.info({
357
330
  swapId,
358
331
  realOutput: {
@@ -371,22 +344,20 @@ async function sweepScanSignBroadcast(ctx) {
371
344
  fee: constructionData.fee,
372
345
  destinationAmount: constructionData.destination.amount,
373
346
  }, 'Sweep diagnostic: full construction data');
374
- // Dump the full signed tx for external decoding if broadcast fails
347
+ // Full signed tx, in case broadcast fails and someone wants to decode it.
375
348
  log.debug({ swapId, rawTxHex }, 'Full signed transaction hex');
376
349
  onProgress?.('Broadcasting sweep transaction...');
377
350
  log.info({ swapId }, 'Sweep step 5: broadcasting to monerod');
378
351
  const broadcastResult = await broadcastTransaction(monerodConfig, rawTxHex);
379
352
  if (broadcastResult.alreadySpent) {
380
- // Key image already used we must have broadcast this in a previous attempt.
381
- // Only we have the spend key, so this is our own prior transaction.
353
+ // Key image is ours (only we hold the spend key); we already broadcast.
382
354
  log.info({ swapId }, 'Sweep tx already broadcast (double_spend) — prior attempt succeeded');
383
355
  }
384
356
  else {
385
357
  log.info({ swapId, txHash: broadcastResult.txHash, status: broadcastResult.status }, 'Sweep tx broadcast to network');
386
358
  }
387
- // Notify server that sweep is complete. This updates the DB status to
388
- // 'completed' so the poll loop stops triggering duplicate sweep attempts.
389
- // Retry a few times — without this the swap stays in 'sending' forever.
359
+ // Notify server so the DB status flips to 'completed' and the poll loop
360
+ // stops triggering duplicate sweeps. Without it the swap stays in 'sending'.
390
361
  const sweepTxHash = broadcastResult.txHash || `sweep-${swapId}`;
391
362
  for (let notifyAttempt = 0; notifyAttempt < 3; notifyAttempt++) {
392
363
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,5 @@ export interface InvalidRingMember {
4
4
  readonly ringIndex: number;
5
5
  readonly reason: string;
6
6
  }
7
- /**
8
- * Validate a ring's output keys, commitment points, and unlock state.
9
- * Returns the indices that must be replaced before signing.
10
- */
11
7
  export declare function validateRingMembers(members: readonly OutputKeyInfo[], log: Logger): InvalidRingMember[];
12
8
  //# sourceMappingURL=ring-select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ring-select.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,GAAG,EAAE,MAAM,GACV,iBAAiB,EAAE,CA0CrB"}
1
+ {"version":3,"file":"ring-select.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,GAAG,EAAE,MAAM,GACV,iBAAiB,EAAE,CA0CrB"}
@@ -1,26 +1,14 @@
1
- /**
2
- * Ring-member validation for CLSAG signing.
3
- *
4
- * Each ring member must satisfy three conditions before we sign with it:
5
- * 1. The output public key decompresses to a valid ed25519 point and is
6
- * not the identity.
7
- * 2. The Pedersen commitment decompresses to a valid ed25519 point.
8
- * 3. The output is *unlocked* — monerod returns `unlocked: false` for
9
- * coinbase outputs that have not yet cleared their 60-block lock window
10
- * (`CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW`) or RingCT outputs younger
11
- * than `DEFAULT_TX_SPENDABLE_AGE` blocks.
12
- *
13
- * Picking a locked ring member is the most common cause of a daemon
14
- * `[flags: invalid_input]` rejection at broadcast time. wallet2 catches this
15
- * via `get_outs.unlocked`; we do the same here, then re-roll the entire ring
16
- * if any slot is invalid.
17
- */
1
+ // CLSAG ring-member validation:
2
+ // 1. output pubkey decompresses to a valid non-identity ed25519 point
3
+ // 2. Pedersen commitment decompresses to a valid ed25519 point
4
+ // 3. output is unlocked (coinbase past CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW
5
+ // = 60, RingCT past DEFAULT_TX_SPENDABLE_AGE)
6
+ // Picking a locked member is the most common monerod [flags: invalid_input]
7
+ // rejection; wallet2 catches it via get_outs.unlocked, we mirror that and
8
+ // re-roll on any invalid slot.
18
9
  import { Point } from '@noble/ed25519';
19
10
  const IDENTITY_HEX = '01' + '00'.repeat(31);
20
- /**
21
- * Validate a ring's output keys, commitment points, and unlock state.
22
- * Returns the indices that must be replaced before signing.
23
- */
11
+ // Returns the indices that must be replaced before signing.
24
12
  export function validateRingMembers(members, log) {
25
13
  const invalid = [];
26
14
  for (let i = 0; i < members.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"ring-select.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASvC,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiC,EACjC,GAAW;IAEX,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,mCAAmC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;aACpE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CACN,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAClD,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"ring-select.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,wEAAwE;AACxE,iEAAiE;AACjE,8EAA8E;AAC9E,mDAAmD;AACnD,4EAA4E;AAC5E,0EAA0E;AAC1E,+BAA+B;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASvC,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CACjC,OAAiC,EACjC,GAAW;IAEX,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,mCAAmC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;aACpE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CACN,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAClD,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,16 +1,3 @@
1
- /**
2
- * Client-side pre-signing for non-custodial atomic swaps.
3
- *
4
- * Constructs the same Bitcoin transactions (TxCancel, TxPunish, TxEarlyRefund,
5
- * TxRedeem) that the Rust sidecar builds, computes their BIP143 segwit sighashes,
6
- * and signs them with Bob's secret key `b` — all client-side. The server never
7
- * sees `b`.
8
- *
9
- * The miniscript `c:and_v(v:pk(A),pk_k(B))` compiles to:
10
- * <A> OP_CHECKSIGVERIFY <B> OP_CHECKSIG
11
- *
12
- * This is the witness script for the 2-of-2 P2WSH used in TxLock and TxCancel.
13
- */
14
1
  import type { ProtocolParams, PreSigs, FeePolicy, AmnestyPolicy, DustPolicy } from '../types/index.js';
15
2
  export type NetworkName = 'mainnet' | 'testnet' | 'regtest' | 'regtest';
16
3
  export interface ComputePreSigsParams {
@@ -31,49 +18,13 @@ export interface ComputeRedeemDigestParams {
31
18
  readonly feePolicy?: FeePolicy;
32
19
  readonly dustPolicy?: DustPolicy;
33
20
  }
34
- /**
35
- * Derive the canonical 2-of-2 P2WSH lock address from Alice's and Bob's
36
- * compressed secp256k1 public keys. Callers must compare this against any
37
- * sidecar-claimed lock address before signing.
38
- *
39
- * @param params.aHex Alice's 33-byte compressed secp256k1 public key (hex).
40
- * @param params.bHex Bob's 33-byte compressed secp256k1 public key (hex).
41
- * @param params.network `'mainnet'` or `'testnet'`; selects the bech32 HRP.
42
- * @returns The bech32 P2WSH address derived from `(A, B)`.
43
- * @throws {VerificationError} `E_LOCK_SCRIPT` if p2wsh derivation fails.
44
- * @security Closes AV-B.1 / AV-C.1 — always prefer this over a sidecar-supplied address.
45
- */
46
21
  export declare function deriveLockAddress(params: {
47
22
  readonly aHex: string;
48
23
  readonly bHex: string;
49
24
  readonly network: NetworkName;
50
25
  }): string;
51
- /**
52
- * Build the 2-of-2 witness script: <A> OP_CHECKSIGVERIFY <B> OP_CHECKSIG
53
- *
54
- * This matches the Rust miniscript `c:and_v(v:pk(A),pk_k(B))`.
55
- * A and B are 33-byte compressed secp256k1 public keys (hex).
56
- */
57
26
  export declare function buildMultisigWitnessScript(aHex: string, bHex: string): Buffer;
58
- /**
59
- * Compute the 3 pre-signatures (TxCancel, TxPunish, TxEarlyRefund) for a client-side swap.
60
- *
61
- * These are standard ECDSA signatures that the sidecar sends to Alice in Message4.
62
- * The TxRedeem encrypted signature is computed separately (requires WASM adaptor crypto).
63
- *
64
- * @param params - All parameters needed for pre-signature computation
65
- * @returns 3 hex-encoded compact ECDSA signatures (64 bytes each)
66
- */
67
27
  export declare function computePreSigs(params: ComputePreSigsParams): PreSigs;
68
- /**
69
- * Compute the TxRedeem BIP143 sighash digest.
70
- *
71
- * The client uses this digest with WASM `encsign_digest(b, S_a_bitcoin, digest)`
72
- * to produce the adaptor-encrypted signature for Alice.
73
- *
74
- * @param params - All parameters needed for redeem digest computation
75
- * @returns Hex-encoded sighash (32 bytes)
76
- */
77
28
  export declare function computeRedeemDigest(params: ComputeRedeemDigestParams): string;
78
29
  export interface ComputeRedeemDigestFromTxHexParams {
79
30
  readonly lockTxRawHex: string;
@@ -83,19 +34,5 @@ export interface ComputeRedeemDigestFromTxHexParams {
83
34
  readonly feePolicy?: FeePolicy;
84
35
  readonly dustPolicy?: DustPolicy;
85
36
  }
86
- /**
87
- * Recompute the TxRedeem BIP143 sighash from a raw, already-broadcast TxLock
88
- * rather than a signed PSBT. Used on the resume path: when the driver comes
89
- * up after a restart, `signedPsbtBase64` is no longer in memory, but the
90
- * lock tx is permanently on-chain and any `BlockchainDataProvider` can
91
- * return its raw hex.
92
- *
93
- * Produces a byte-identical digest to `computeRedeemDigest` for the same
94
- * underlying transaction.
95
- *
96
- * @security Preserves Fix 1 / AV-B.2 guarantees on resume — the digest is
97
- * still derived independently from chain data; the caller CT-compares the
98
- * result against the sidecar's claimed digest.
99
- */
100
37
  export declare function computeRedeemDigestFromTxHex(params: ComputeRedeemDigestFromTxHexParams): string;
101
38
  //# sourceMappingURL=presign.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"presign.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/presign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkBvG,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAUxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAuED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B,GAAG,MAAM,CAQT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc7E;AA+DD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CA0PpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAa7E;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,kCAAkC,GACzC,MAAM,CAUR"}
1
+ {"version":3,"file":"presign.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/presign.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkBvG,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAUxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAsED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B,GAAG,MAAM,CAQT;AAID,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc7E;AAwDD,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAwPpE;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAa7E;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAMD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,kCAAkC,GACzC,MAAM,CAUR"}