This release features:
- Arkade swaps: full Arkade protocol support
- EVM commitment swaps: new EVM commitment lockup flow
- Multi-LND support: backend and sidecar can now drive multiple LND nodes
Bug Fixes
- (evm) validate commitment claim address (#1319) - (91abbe4)
- EIP refund signer cannot convert BigInt (#1195) - (66846a2)
- network name for contracts - (21c2cd0)
- round Elements balance (#1200) - (d8b8ab5)
- token block times in sidecar - (c5203e8)
- boltzr-cli Docker build (#1207) - (e355fdb)
- encoding of calldata for token inputs (#1222) - (bd42986)
- replace hard-coded fee with feeFloor variable (#1221) - (94e1b2b)
- missing server public key for ark chain swaps (#1225) - (a31ebdc)
- swagger return type for chain swap claims (#1227) - (a1bdac0)
- routing fee config (#1229) - (95356e8)
- prevent submarine from going back in time (#1235) - (b36852d)
- quoter tests (#1245) - (a60be30)
- settle after invoice is set for confirmed swap - (fbb875f)
- mempool.space startup race - (c98d7d8)
- Docker build on branches with / (#1274) - (459c684)
- EVM chain swap double lockups - (4a58a5e)
- wait for confirmations for commitment swaps (#1281) - (619de84)
- skip commitments migration if the table does not exist (#1292) - (9a7ebc1)
- do not crash when no tokens are configured - (2375d47)
- only expiry swaps of own manager in nursery - (d71920a)
- ignore undefined min wallet balance (#1299) - (47c537c)
- ignore undefined min token balance (#1304) - (615a22e)
- ARK chain swap restore (#1307) - (9254db7)
- use same EVM derivation path in sidecar (#1310) - (c811525)
- ARK submarine swap expiration (#1321) - (0eddd03)
- Arbitrum rescan storms (#1328) - (dd6dbe4)
- chain swaps between EVM chains (#1333) - (1a2b41f)
- tolerate unavailable nodes for reverse swaps (#1335) - (0defcc6)
- bump EVM tx gas limits by 25% (#1340) - (43ffd92)
- Docker builds - (b68451c)
- macaroon support in boltzr-cli - (43b40a6)
- cap swap restore pagination - (d1f25dc)
- exclude paid swaps from invoice expiry - (a72b208)
- recompute zero-conf on chain swap renegotiation - (9a113da)
- prevent expiry from overwriting paid swaps - (4bd233b)
- round Bitcoin fee estimations to one decimal - (b5aeb83)
- deduplicate mempool.space instances - (78a6629)
- tolerate positive slippage (#1372) - (94c260b)
- normalize address case when matching tx.to (#1382) - (ce18517)
- racy renegotiation (#1383) - (4a9c282)
- sync linked swap and commitment on cooperative refund (#1385) - (980b589)
- skip commitment lookup for server lockups (#1394) - (4c7d601)
Documentation
- add transaction.claim.pending status to Chain Swap (#1212) - (0e5f690)
- update regtest config (#1213) - (35c3271)
- add unit for reverse swap expiration limits (#1230) - (4007740)
- chain swap renegotiating - (569b5c5)
- fee and limit calculations - (0ac2f63)
- asset rescue (#1241) - (443af29)
- rename referral program to partner program (#1247) - (f937662)
- add overview for enforcement (#1259) - (cfb4ff2)
- fix broken regtest GitHub link (#1303) - (dbb5c87)
- switch to currency abbreviations (#1369) - (6134e71)
- expose Markdown in docs (#1373) - (342ceca)
- use vitepress-plugin-llms - (00fc88c)
- include index.md in llms.txt (#1378) - (ef4e31e)
- document cooperative claim/refund states (#1380) - (6ba692a)
- add Boltz Mini (#1390) - (a95db55)
Features
- Ark swaps (#1181) - (6412528)
- save chain of pending EVM transaction - (afcb34e)
- trace EVM requests - (12fd769)
- ethers.js WebSocket reconnect - (c924739)
- BTC-like token network fees - (f5a6818)
- L1 block events for Arbitrum - (32b525a)
- ERC20Swap CLI (#1205) - (adf266c)
- ARK lockup renegotiation - (a76e888)
- improve EVM quoter to route via one hop (#1214) - (58892e3)
- sub-sat fee estimations (#1210) - (792c9e5)
- EVM commitment swaps (#1226) - (3579ccc)
- handle unbroadcastable sent transactions (#1242) - (87e7d7f)
- CLI to sign EIP-712 refunds (#1250) - (46f6ad9)
- webhookinfo command - (8040f0d)
- support contracts v6 - (80e68c6)
- ERC20Swap support in locked-in-contract CLI - (c746667)
- support multiple lnds (#1277) - (728510f)
- allow refunding commitments before linking (#1290) - (77a7d39)
- add multi-lnd sidecar support (#1291) - (4ea4477)
- include MRH address in swapinfo command (#1293) - (a82a5e6)
- custom EVM derivation paths (#1296) - (6046cac)
- hide pairs in list endpoints (#1300) - (41254fe)
- hide pair for a referral - (1ab7aed)
- return invoice in rescue endpoint (#1315) - (dd840bc)
- use required confirmations for refunds (#1331) - (d340924)
- add InvoiceCreationHook (#1325) - (b6e2e13)
- add tx to transaction.refunded event (#1330) - (1d8925e)
- rate limit websocket messages (#1337) - (b5bf456)
- swap update WebSocket CLI tool - (6cb942f)
- limit swap.update subscribe ids (#1341) - (41d8591)
- specify outpoint for fulmine vHTLC calls (#1345) - (1c0e4cf)
- improve HTTP status codes (#1351) - (2dd5d31)
- CLI tool to rotate referral API keys (#1358) - (840a496)
- add fulmine macaroon support (#1360) - (4eb225a)
- store found claim transactions ids (#1371) - (c3045d3)
- EVM 0-amount commitments (#1389) - (f028d1b)
Miscellaneous Chores
- bump to Bitcoin Core v30.2 - (505d902)
- bump dependencies - (63859a1)
- bump aws-sdk-kms from 1.43.0 to 1.97.0 (#1190) - (68b4640)
- minor logging improvements (#1194) - (a1fb0f1)
- configure alloy WebSocket reconnect - (77d89d9)
- bump urllib3 from 2.5.0 to 2.6.3 in /tools (#1198) - (a4c7270)
- bump CLN to v25.12.1 - (48efcbf)
- bump dependencies - (2ed43d5)
- simplify sidecar metrics - (89a0f4a)
- relax invoice description regex (#1203) - (f152f37)
- warn when ARK node is missing on startup (#1206) - (475b933)
- harden ARK spentBy handling - (233e2f5)
- make fee optional for SendCoins gRPC (#1215) - (b7506f8)
- bump lodash from 4.17.21 to 4.17.23 (#1216) - (2241532)
- bump lodash-es from 4.17.22 to 4.17.23 (#1217) - (5112b04)
- make Elements tx test less flaky in CI (#1218) - (7fd4db8)
- add timeouts to CI jobs (#1219) - (bc58809)
- fix swagger for chain swap pairs (#1223) - (9d2e3e9)
- add full config sample (#1224) - (ad98bbc)
- explicit S3 names in setup errors (#1232) - (22a0f9d)
- remove Discord link from docs (#1234) - (2de6c83)
- update dependencies (#1237) - (7248cb1)
- bump bytes from 1.11.0 to 1.11.1 (#1240) - (1019152)
- SQL formatting with prettier (#1243) - (746da5d)
- bump git2 from 0.20.0 to 0.20.4 (#1244) - (91d8054)
- bump time from 0.3.36 to 0.3.47 (#1246) - (6fbd6c5)
- bump axios from 1.13.4 to 1.13.5 (#1249) - (2d80a61)
- remove Telegram link from resources (#1248) - (6014f1f)
- bump qs from 6.14.1 to 6.14.2 (#1255) - (7f14803)
- bump LND to v0.20.1 (#1257) - (80f58c3)
- update dependencies - (32b7cae)
- bump Elements to v23.3.2 (#1264) - (f1e7ebb)
- get rid of openssl-sys in dependencies - (9854bfc)
- update dependencies - (07dc3d0)
- bump max sidecar connection retries - (7a4d2d1)
- check generated protos in CI - (752f9d2)
- remove channel creation swaps (#1269) - (0b95d64)
- minor fixes for running on Arbitrum (#1275) - (4d33fbb)
- improve pending EVM transaction CLI output - (448c787)
- bump dottie from 2.0.6 to 2.0.7 (#1284) - (11f44e9)
- bump minimatch from 3.1.3 to 3.1.5 (#1286) - (00f8972)
- remove togglereverse command (#1289) - (06685d5)
- bump underscore from 1.13.7 to 1.13.8 (#1294) - (cb69ed1)
- update link to Boltz Client Pro docs (#1295) - (ea54a09)
- add debug logging for regtest start (#1298) - (038b273)
- CLI to derive EVM addresses - (0b709b2)
- update dependencies (#1301) - (d312710)
- bump sequelize from 6.37.7 to 6.37.8 (#1314) - (55f2852)
- bump quinn-proto from 0.11.13 to 0.11.14 (#1313) - (86f599a)
- BOLTZ_REGTEST env var for overriding regtest (#1316) - (04c25fb)
- remove stubbed routing hint (#1318) - (73b908b)
- update Arkade stack - (46f7af6)
- update dependencies - (54a913b)
- harden exchange tests - (b1194d6)
- bump yaml from 2.8.2 to 2.8.3 (#1338) - (c2e49ff)
- bump picomatch from 2.3.1 to 2.3.2 (#1339) - (eaa3215)
- bump nodemailer from 8.0.3 to 8.0.4 (#1342) - (6b76a7e)
- bump node-forge from 1.3.3 to 1.4.0 (#1343) - (4be863f)
- bump path-to-regexp from 8.3.0 to 8.4.0 (#1344) - (196571b)
- update dependencies - (78888ae)
- update to TypeScript v6 - (0297b06)
- fix vulnerable Cargo dependencies (#1349) - (ba4bd7b)
- update vulnerable dependencies (#1352) - (dbad7e0)
- bump nodemailer (#1355) - (51f972c)
- bump dependencies - (3a4ccfb)
- bump Elements to v23.3.3 - (463f965)
- bump follow-redirects from 1.15.11 to 1.16.0 (#1359) - (6c1772b)
- fix docs publish action (#1361) - (688494d)
- fix clippy on Rust 1.95.0 - (9a6a813)
- use stable RPC for Arbitrum tests - (9eb7e62)
- bump Bitcoin Core to v31.0 - (b92f887)
- bump CLN to v26.04 - (ab04e2a)
- bump protobufjs to v7.5.5 - (7376b34)
- bump vulnerable Rust dependencies - (4e2a890)
- bump postcss from 8.5.6 to 8.5.10 (#1376) - (3a232c8)
- bump CLN to v26.04.1 (#1377) - (49751eb)
- add comments to boltz-core exports - (815c9af)
- separate CI job for boltz-core features - (725e691)
- make LLM docs discoverable (#1386) - (84646bf)
- bump axios (#1388) - (ff1e9fb)
- bump regtest (#1391) - (85fd54d)
- .gitignore .boltz-local (#1392) - (4bc60b4)
- bump ip-address from 10.1.0 to 10.2.0 (#1393) - (33669dd)
- fix metrics in sidecar (#1395) - (40b0eba)
Performance
Refactoring
- remove diesel-tracing dependency - (126ae10)
- move transaction check to sidecar (#1192) - (d6d54a9)
- EVM chain configuration - (cba72c9)
- remove contract refund subscriptions (#1202) - (b849cc7)
- remove fee estimations from Node.js (#1231) - (6191291)
- move cache into own crate (#1256) - (aac0927)
- relax amount checks for setting invoices - (24f701e)
- use actual amounts for commitment signatures (#1263) - (2dd301e)
- move EVM into own crate - (937d276)
- move backup into own crate (#1261) - (6c972de)
- EVM configurable confirmation requirement (#1266) - (e9a07e5)
- check confirmation of EVM transactions by receipt - (9a365bd)
- add timeout to S3 initialization - (4e103f7)
- clean shutdown of EVM block listener - (f45a7cf)
- avoid swaps going back in time - (9a5b61d)
- deduplicate pending EVM lockups - (7d1a2d0)
- use multicall for EVM quotes - (6bcfd8d)
- get rid of ctrlc dependency - (de43109)
- improve commitment lookup (#1309) - (2c7fe75)
- handling of non JSON Core RPC responses (#1332) - (3a664b8)
- modernize gRPC protos - (0648b4a)
- use Fulmine ListVHTLCs (#1353) - (deff90f)
- optimize fulmine calls on startup - (c2289a3)
- sanitze referral ids - (ba97d32)
- harden BOLT12 offer handling - (ee7392c)
- harden mempool.space integration - (c2c8521)
- do not use anyhow in boltz-core - (8d5dcd7)
- cleanup exports of boltz-core - (a236a47)
- set Ark lockup tx before checks (#1381) - (a490fd8)