Skip to content

Releases: BoltzExchange/boltz-backend

v3.12.1 - Harder, Better, Faster, Stronger

09 Jan 12:21
v3.12.1
f533f6d

Choose a tag to compare

This release features:

  • CLI migration to Rust: Migrated entire CLI tooling to Rust for better performance, reliability, and parameter parsing
  • WebSocket improvements: Added queueing/caching for faster and more scalable real-time swap status updates
  • Performance optimizations: Added balance check caching and optimized Liquid transaction blinding
  • Self-payment & chain swap fixes: Resolved multiple edge cases including failed lockups, incorrect asset handling, and CLTV delta issues
  • Infrastructure upgrades: ARM64 Docker builds, Node.js v24, and swap contracts v5

Bug Fixes

Documentation

Features

  • (cln) add cln.disableMpp config option (#1153) - (955f4f4)
  • rescue index cache (#1143) - (4a5a19e)
  • sync key index at database level (#1150) - (12a6c2a)
  • add missing functionality from boltzr-cli (#1165) - (22f9b52)
  • pagination in restore endpoint (#1160) - (f56c5bb)
  • fetch referral stats in CLI (#1169) - (2edf306)
  • custom routing fee config for destination - (c4d813d)
  • allow custom s3 region - (bafee13)
  • sponsor refunds for refunds of liquid assets - (b3beb5f)
  • expose supported contracts in API - (8b0247a)

Miscellaneous Chores

Performance

Refactoring

Read more

v3.12.0 - Swap Restoration

24 Nov 16:17
v3.12.0
22f861f

Choose a tag to compare

This release features:

  • Swap restore enhancements: New /swap/restore endpoint with batch public key support and custom gap limits
  • Batch sweep improvements: Added interval and amount-based triggers for automated batch claiming of swaps
  • Self-payment support: Allow submarine and reverse swaps with the same preimage for self-payments
  • Magic Routing Hints (MRH) watcher: Automated monitoring to inform clients of magic routing hint payments
  • RBF bumping engine: Naive Replace-By-Fee engine with mempool.space WebSocket client integration

Bug Fixes

  • (config) update certificate path to follow datadir (#1078) - (d8fbd5d)
  • expose invoice payment hook (#940) - (1534001)
  • invoice payment hook with no preference (#952) - (2740fc4)
  • sanitize ZMQ wildcards (#965) - (b773b79)
  • check invoice of self payments - (c27b9ed)
  • handle pending payments in self payment client - (5e435c6)
  • check for blindingKey being defined (#967) - (0c003e6)
  • ZMQ channel warnings in sidecar (#969) - (5002ce9)
  • only allow submarine and reverse swaps with same preimage (#966) - (240e8d7)
  • use second routing hint in MRH (#975) - (dd8fa94)
  • exit handle for MRH watcher (#982) - (9f57672)
  • swap failed on double lockup (#984) - (31e3a92)
  • reset pending sweeps gauges to zero (#987) - (e762674)
  • encoding of MRH in swapinfo responses (#988) - (95b5c97)
  • API docs URL (#990) - (ab9d541)
  • cancel of reverse swap invoices for self payments (#995) - (7bab357)
  • honor cancellation in mempool reconnection loop - (ecb07b7)
  • handling of two lockups in same transaction (#1002) - (6f030a9)
  • abandon webhook when no status in database (#1003) - (24003ae)
  • fail self payments when reverse swap is refunded (#1006) - (501355b)
  • add database triggers for preimage hash checks (#1011) - (7d5a4de)
  • parsing of referral id for chain swaps (#1024) - (b315f12)
  • swap rescue key drift - (1defe13)
  • exclude RSK swaps from rescue endpoints - (5e53c98)
  • bump ZMQ inactivity timeout (#1038) - (f22546f)
  • flaky Elements transaction tests - (ff5ecf7)
  • harden Mattermost WebSocket - (8d5b502)
  • run Bitcoin transaction tests in serial - (c19f1b6)
  • make node selection optional in invoice payment hook (#1069) - (1f62409)
  • Docker version build args (#1074) - (e9dcd80)
  • lower quote output amount in EVM quote test (#1098) - (67a8456)
  • sidecar span exporter - (082fb93)
  • use Node v22 for docker images - (3e7398a)
  • do not fail self payment when invoice cannot be cancelled (#1111) - (19f63f6)
  • setInvoice race condition (#1117) - (f47ab4f)
  • include swaps to RSK in restore endpoint (#1124) - (b340d15)
  • only settle confirmed lockups when invoice is set (#1125) - (0106e8b)
  • parent propagation of OTEL spans (#1126) - (55806a2)
  • gap limit for public key iterators - (584240b)

Documentation

Read more

v3.11.0 - Counteroffer

20 May 18:09
v3.11.0
3a0e716

Choose a tag to compare

This release contains:

  • support for Reverse Swaps to BOLT12 offers
  • gRPC hooks to change the behaviour of the backend
  • lots of bug fixes and miscellaneous improvements

Bug Fixes

  • drop B-Tree indexes on invoices column of swaps (#872) - (c86144f)
  • tests broken by BOLT12 reverse swaps - (6b741f4)
  • Docker build with new hold invoice plugin - (9293318)
  • missing status of chain swaps for mempool rescans (#873) - (165df3f)
  • prevent webhook channel send when no subscribers exist (#889) - (be45461)
  • magic routing hints for BOLT12 invoices (#904) - (23b4c2c)
  • GrpcServer test on MacOS (#914) - (84a5674)
  • blinding key parsing in CLI (#923) - (e4fa5b1)
  • avoid blocking onion messages with webhook calls - (ad72fb2)
  • consistent data directory paths in EthereumUtils (#932) - (23f05dd)
  • events being sent twice for multiple WS connections (#930) - (71f9306)

Documentation

  • Swagger API spec for BOLT12 offer endpoints - (fab56f4)
  • fix gitbook integration, make prettier ignore docs folder - (0ed75d6)
  • #545 #685, minor rewording - (a255e4c)
  • BOLT12 invoice subscription WebSocket - (3032015)
  • remove boltz-python from library section (#920) - (debc497)

Features

  • invoice timeout (#856) - (dc0434c)
  • configurable LND gRPC SSL name override - (0a22370)
  • generic Webhook caller - (a263a5a)
  • confirmation status in transaction endpoint (#869) - (3710c9c)
  • log failed HTTP requests in sidecar (#871) - (2961f0c)
  • BOLT12 invoice request webhooks - (954c739)
  • allow reverse swap creation with BOLT12 invoices - (bc2f175)
  • magic routing hints support for bolt12 - (25f1553)
  • allow updating BOLT12 offer webhook URL - (e59bc62)
  • check network of BOLT12 offers and invoices - (a492ae4)
  • BOLT12 fetch shortcut for registered offers - (953776b)
  • continue onion message hooks for unknown offers - (018f870)
  • allow empty reverse swap descriptions - (59a825b)
  • batch only submarine swaps (#880) - (0e3eb1f)
  • add offer to invoice requests - (2c8c856)
  • endpoint to delete BOLT12 offers - (0291937)
  • Email notifications for swaps (#893) - (108f952)
  • Webhook IP safety checks (#902) - (0924d72)
  • transaction hook action hold - (4a481f0)
  • gRPC method to check transaction - (b00600b)
  • BOLT12 invoice requests via WebSocket - (89a9a16)
  • fuzzy search for lightning node alias (#908) - (c82e4c9)
  • allow removing url when updating offer (#909) - (2f7fbc0)
  • add swap id to transaction hook (#913) - (581e334)
  • add swap type to transaction hook (#917) - (b316f09)
  • submarine payment retry timeout (#918) - (38facc3)
  • endpoint for lightning channel policies - (eef814b)
  • broadcast Elements transactions via all clients (#919) - (c80e096)
  • allow returning BOLT12 invoice errors (#921) - (2c34a12)
  • return MRH in BOLT12 fetch response (#922) - (fd8a287)
  • dynamic CLN invoice thresholds - (82a8119)
  • metrics for CLN invoice thresholds (#927) - (6ba3ddf)
  • invoice payment hook (#925) - (1433ada)
  • allow BOLT12 invoice request payer notes - (d53bf3d)

Miscellaneous Chores

Read more

v3.10.0 - Rescue mission

12 Mar 14:35
v3.10.0
b23af19

Choose a tag to compare

This release features:

  • support for rescue files that allow swaps to be refunded with only the refund keys
  • nested fee premiums to allow referrals to add extra fees
  • Discount CT on Liquid mainnet

Bug Fixes

  • blinding key derivation of wallet stub in CLI (#832) - (2219654)
  • skip mempool acceptance check on regtest (#848) - (8a8e45c)
  • successful swaps reverting status transaction.confirmed (#851) - (569cee7)

Documentation

  • add rescue endpoint to swagger - (fef5b5a)

Features

  • nested extra fees (#826) - (64fba5a)
  • add lockup tx param to refund-cooperative CLI (#828) - (3f47be3)
  • swap recovery rescan - (34ffa9d)
  • gRPC method to get pending EVM transactions - (7df8c87)
  • add EVM address to swapinfo command (#830) - (7048767)
  • swap creation hook - (b75863a)
  • add index on refund public key columns - (116bf9f)
  • directional premiums for referrals (#837) - (036923e)
  • 0-conf tool Prometheus metrics (#846) - (46149c2)
  • gRPC method to clear swap update cache (#849) - (454ff7f)
  • WebSocket JSON ping/pong (#850) - (c52fbf3)
  • add overpayment check for actual > expected * 2 - (e99d388)

Miscellaneous Chores

Refactoring

v3.9.1 - Still swarming

13 Feb 16:27
v3.9.1
2c3ab1e

Choose a tag to compare

This release includes:

  • custom fees and limits based on referrals
  • RSK swap fixes
  • Fixes for handling CLN xpay payment failures
  • Lightning network information API

Bug Fixes

  • throw error in cli when no swap output can be found (#764) - (efe6b8a)
  • round max routing to 4 decimal places (#778) - (7dd78ef)
  • timeout of submarine swaps without invoice (#786) - (a47bd78)
  • failure rates for custom expirations - (6818345)
  • correct version for EVM reverse swaps - (7cd3b9b)
  • failure rates for custom expirations in metrics - (e7d802f)
  • throw error when all CLN payment attempts failed - (2735e21)
  • forbid fetching 0 amount bolt12 invoices - (02783ec)
  • detect replaced rejected chain swap lockup txs (#800) - (6b9533e)
  • clippy on Rust nightly (#801) - (4d51493)
  • make xpay exit handling more reliable (#802) - (9c92159)
  • always watch temporarily failed xpay payments (#806) - (f79d53a)
  • Alchemy support on RSK - (6e3eb23)
  • 0-conf endpoint schema update (#822) - (79acc58)

Documentation

Features

  • custom fees for referrals (#749) - (9713f2f)
  • gRPC method to calculate transaction fees (#760) - (b151680)
  • try all possible key extraction functions in CLI (#765) - (730e26b)
  • check submarine swaps for expired invoices (#762) - (9161e6a)
  • configurable referral values - (94356ff)
  • database migration to new referral premiums - (198902b)
  • gRPC methods to update referral configs - (d3eb0da)
  • make transaction optional in reverse claim endpoint (#771) - (3ed922d)
  • include max routing fee in submarine pairs when queried with ref (#774) - (9dd6d50)
  • expose pair details in metrics (#775) - (3c6a22a)
  • CPU profiling in sidecar (#783) - (9c442f1)
  • custom expiration for submarine swaps (#779) - (5d16749)
  • be gentler to xpay (#792) - (a13b5fe)
  • do not fail lightning payment when node disconnects (#793) - (15e15af)
  • API endpoints to query historical pair data (#791) - (6620d59)
  • Lightning channels API - (60337e5)
  • Lightning node info API - (343e961)
  • select node to pay invoices based on routing hints (#799) - (5fabaac)
  • different CLN amount switch for swap types (#807) - (ea4e60e)
  • rescan for missed RSK claims on interval (#808) - (1b2123f)
  • WebSocket inactivity timeout (#814) - (b7034db)
  • sanity check referral config values (#811) - (5771b32)
  • periodically rescan all EVM events - (8c5c7cc)
  • avoid EVM nonce reuse by checking db - (ab91169)
  • sequential EVM signer - (7b61162)

Miscellaneous Chores

Read more

v3.9.0 - Swarm of Swaps

19 Dec 15:10
v3.9.0
e45053f

Choose a tag to compare

This release features:

  • batch claim support for Chain Swaps
  • and batch claiming on EVM based chains
  • many tiny little fixes for CLN

Bug Fixes

  • skip transaction confirmed swap update when succeeded - (9098457)
  • valid use of required swagger properties - (f766714)
  • set failureReason to null when invoice is paid (#733) - (a5bdb00)
  • CLN routing hints (#736) - (2adbe5e)
  • CLN invoice payment fee (#742) - (51e03ca)

Documentation

  • add library and referral section (#745) - (30f34d0)
  • minor rewording of library section description (#750) - (8a03aa8)

Features

Miscellaneous Chores

v3.8.1 - Offer still stands

28 Nov 08:49
v3.8.1
46b591c

Choose a tag to compare

Some bug fixes and minor features are included in this patch release.

Bug Fixes

  • config parsing with defaults - (c0886a9)
  • Core wallet unconfirmed classification - (09c70c5)
  • wording of limit exceeded error - (be0786b)
  • abandon failed Webhooks when status is not included (#717) - (54223af)
  • bolt12 invoice pay status (#722) - (8dca13c)
  • chunk batch claim transactions (#725) - (c1372b9)

Documentation

Features

  • gzip compression for CLN SCB backups (#706) - (42d1330)
  • 0-conf Prometheus metrics (#713) - (bb1a42f)
  • get status of pending CLN invoices on startup (#714) - (776613d)
  • save preimage of Submarine Swaps in database - (2357297)
  • preimage endpoint for Submarine Swaps - (2638f0a)
  • Liquid 0-conf checks via API (#721) - (69511de)
  • un-route-able nodes config - (43e5c48)
  • allow cooperative refunds with pending payments - (ea4c827)

Miscellaneous Chores

  • update changelog for v3.8.0 - (6131ab9)
  • fix fee clalculation for BOLT12 invoices - (2aa6820)
  • more verbose logging in ElementsWrapper - (3408300)
  • relax sidecar production version check - (26262e4)
  • trace deprecations in Docker container - (607331c)
  • minor logging improvements - (3c9e311)
  • bump cross-spawn from 7.0.3 to 7.0.6 (#726) - (41979d9)
  • fix minor logging typo - (c6b0f09)

v3.8.0 - An offer you can't refuse

04 Nov 15:05
v3.8.0
5131797

Choose a tag to compare

This release features:

  • support for a new CLN hold invoice plugin rewritten from scratch with a focus on performance
  • amounts for Chain Swap can be renegotiated in case they are over- or underpaid. Also, the creation of Chain Swaps without an amount
  • paying BOLT 12 invoices in submarine swaps and an API endpoint for fetching invoices for offers

Bug Fixes

  • mattermost alert channel selection - (14c9791)
  • revert axum prometheus collector update - (ba95034)
  • show lockup failure details only when status is lockup failed (#683) - (6433170)
  • set rate for Taproot only pairs (#686) - (ebb3a18)
  • 0-conf disabled alerts triggering every block (#689) - (3b7344c)
  • race condition sending chain swap lockup twice - (cefe35b)
  • do not crash when leftover batch claim fails - (94aa167)
  • CLN bolt12 invoice and offer destination parsing (#697) - (9661cf0)

Documentation

Features

  • (mpay) add pagination to mpay-list (#650) - (000fd5c)
  • add profiling for Node.js (#649) - (23f5315)
  • save full pending lockup transactions (#651) - (28b2343)
  • check 0-conf transaction is accepted by all nodes - (fba735c)
  • pending sweeps CLI command (#655) - (df32696)
  • get paystatus from mpay plugin - (5bc07c7)
  • add open SSE streams metric - (7358989)
  • renegotiation of over- and underpaid chain swaps (#657) - (b93f0e8)
  • chain swap creation with no amount (#659) - (b4c4447)
  • check balance before creating swap (#663) - (ce479fd)
  • different seed for EVM based chains (#667) - (c560000)
  • custom invoice expiry for reverse swaps (#669) - (d61eb05)
  • bolt12 support in submarine swaps (#664) - (e6d9318)
  • alerts via webhook call (#675) - (4c98b7f)
  • buffer fetching swap updates before backend connects - (4d4ee00)
  • allow configuring pairs as legacy - (1dec7eb)
  • improve deferred claim sweep commands (#684) - (3a98e1b)
  • max 0-conf risk tolerance (#690) - (d270edf)
  • mempool rescan - (cd4f4fb)
  • Discount CT support (#691) - (95e0f98)
  • gRPC to change log level (#693) - (5c95151)
  • check mempool acceptance of public node for 0-conf - (41fb616)
  • mempool.space liveliness check (#699) - (823e05c)
  • nicer invoice network check error (#704) - (5719736)
  • retry failed LND SCB backups - (f602da4)

Miscellaneous Chores

Read more

v3.7.3 - Rewrite in Rust

16 Aug 15:19
v3.7.3
aad3f28

Choose a tag to compare

To address performance problems, this release improves observability by adding OpenTelemetry tracing, more Prometheus metrics and introduces the sidecar which is run as child process of the Node.js application.

Other notable changes are:

  • Webhooks for swap status updates
  • custom description hashes for invoices of Reverse Swaps (used for LNURL LUD-06 compatibility)
  • custom Bitcoin Core and Elements wallet names
  • labels for transactions on EVM chains

Bug Fixes

  • (cli) certificates type - (b86f475)
  • non lowball 0-conf broadcasts through API (#610) - (e38eb51)
  • enforce correct limit for chain swaps (#613) - (0d6f871)
  • make preimage optional in chain swap claim endpoint (#614) - (ffde577)
  • match logger job name with tracing service - (9e4f6f4)
  • try connect loop of sidecar - (b42f684)
  • persist swap failure reason (#621) - (a5b52eb)
  • coalesce sidecar certificate path - (2eb0746)
  • nicer error when chain swap already claimed - (d04f520)
  • lint errors for unused caught exceptions - (cea5974)
  • use TEXT column type for BIP-21 in magic routing hints (#644) - (4aa1955)
  • missing subscription ack message in WebSocket (#645) - (3f26a68)

Documentation

  • add webhook documentation - (f37091f)
  • add swap status change info (#618) - (fc3cfc3)
  • update description of how preimages are revealed with taproot swaps (#639) - (9c37770)

Features

  • open WebSocket and streams metrics - (546b202)
  • add OpenTelemetry - (084f701)
  • WebHook caller - (319205a)
  • implement WebHooks in API - (9cef596)
  • tracing in sidecar - (3b0ab89)
  • CLN backups to S3 compatible API - (7b578ae)
  • send notification when invoice fails to settle - (0d5698e)
  • custom Core RPC wallet names - (ae1a009)
  • Webhook status include list (#632) - (c9358b0)
  • configurable RSK network name (#633) - (12d8876)
  • EVM transaction labels (#637) - (ce5b487)
  • command to query transaction labels (#641) - (0fc173e)
  • description hashes for reverse swap invoices - (10c926f)
  • sign cooperative EVM refund by preimage hash (#643) - (96410c3)
  • include timestamp in WebSocket swap updates - (9a44944)

Miscellaneous Chores

  • add CHANGELOG for v3.7.2 - (f7ef24e)
  • move swap related non lowball tx logging - (a34d0d7)
  • update sidecar to changed config keys - (d683b8f)
  • allow slight version mismatch in dev - (a12561f)
  • bump openssl from 0.10.64 to 0.10.66 in /boltzr (#615) - (99deedb)
  • use prettier for Markdown files (#619) - (20027c1)
  • trace commands from mattermost - (0deaf40)
  • remove WebDav backup provider - (ca61096)
  • update dependencies - (9c52375)
  • make webhook config of sidecar optional - (b72aca4)
  • disable ARM64 builds in CI again - (c42a756)
  • bump fast-xml-parser from 4.3.2 to 4.4.1 (#629) - (9707526)
  • bump max custom invoice description length (#630) - (b488a3a)
  • change regtest chain id to 33 - (2954dbf)
  • remove disk usage checker - (8edc1b9)
  • get rid of dyn-clone - (fb9eef8)
  • bump axios to v1.7.4 - (c1819d0)
  • bump LND to v0.18.3 - (3b079df)
  • bump version to v3.7.3 - (aad3f28)

Refactoring

  • move sidecar child process logic - (a376a78)
  • improve API tracing - (beb6bc5)
  • remove Discord - (4b20209)
  • remove SQLite database backend - (e7f988e)
  • remove unused getWalletInfo method - (6663858)
  • remove WebDAV CLN backups - (22d08c6)
  • move EIP-712 signing to sidecar (#631) - (d86ea12)
  • move Mattermost to sidecar - (aa1cac3)
  • move WebSockets to sidecar - (69566b5)

Tests

  • sidecar database interactions and gRPC service - (815d60d)
  • Webhook integration in backend - (0de07fe)

v3.7.2 - Stability is boring

16 Jul 15:30
v3.7.2
b06443f

Choose a tag to compare

This release fixes some edge case bugs, improves the tooling for operating the backend and also includes two new features for API clients:

  • overpayment protection which means swaps that send too much onchain will be failed
  • custom descriptions for invoices created for Reverse Swaps

Bug Fixes

  • failed notitication for swap without invoice - (e1d3d6c)
  • failed Chain Swap notifications - (e781bc2)
  • brute force key order combinations in CLI (#603) - (a131e66)

Documentation

  • add TypeScript examples for Liquid swaps - (02532ab)
  • add Bitcoin -> Liquid Chain swap example - (291cdcb)
  • add chain swap lifecycle and transaction details - (1cc27fc)
  • add common problems page (#606) - (b06443f)

Features

  • sanity check invoice memos - (5f95d82)
  • custom reverse swap invoice description - (d218794)
  • gRPC server SSL encryption and authentication (#591) - (75a2037)
  • allow lowball lockup transactions in API (#598) - (f8ce827)
  • onchain overpayment protection (#599) - (61a3d91)
  • S3 compatible backup provider - (e24f2bf)
  • ListSwaps gRPC method (#607) - (c6e2e4b)

Miscellaneous Chores

  • add CHANGELOG for v3.7.1 - (a8b37c0)
  • bump certifi from 2024.6.2 to 2024.7.4 in /tools (#597) - (2261aa4)
  • remove Google Cloud bucket backup provider - (bc5af96)
  • optimize backend Dockerfile (#604) - (ee4c77b)
  • include swap id in invoice settlement error log (#608) - (3b652be)
  • minor dependency updates - (bbb992c)
  • bump Docker image versions - (08ed479)
  • apply docs review feedback - (f4260f5)