Releases: ElementsProject/peerswap
v5.0.0
Major Updates
Protocol Version Upgrade
- The protocol version has been upgraded to v5.
- Important: As before, swaps are only supported between peers running the same protocol version. Make sure all peers upgrade to v5 to maintain compatibility.
Premium Feature
- A Premium feature has been added to allow more flexible handling of fees and pricing structures for swaps (PR #264, #371).
- Note: This feature is still in the testing phase and may be refined in future releases.
Other Fixes
-
Migrated Protocol Buffers to Buf
- Replaced the traditional
protoc
workflow with Buf to unify and automate linting and formatting. - This provides consistent formatting and a more efficient workflow, though contributors need to learn the new toolchain.
- Replaced the traditional
-
Documented Minimum Version for
elementsd
- PR #345 clarifies the minimum required version of Elements when running a local Elements node.
- Ensure your
elementsd
version meets or exceeds this requirement.
-
Dependency Updates
- Multiple libraries, including LND (
v0.18.0-beta.rc3
), have been updated (PR #297). nixpkgs
and flake dependencies have also been refreshed to improve maintainability.
- Multiple libraries, including LND (
-
Fix for
amount_msat
Exceeding Cases- Addresses scenarios where swap amounts could inadvertently exceed set limits (PR #356).
-
Added
acceptdiscountctIsEnabled
Check- A new step checks for
acceptdiscountctIsEnabled
during setup, helping to avoid misconfiguration (PR #348).
- A new step checks for
-
Minor Improvements
Notes
- Active Swaps: As with previous releases, ensure you have no active swaps before upgrading.
- Upgrade Procedure: Refer to the Upgrade Guide for detailed instructions.
- LWK Beta Status: LWK support remains in beta; please report any issues or feedback to improve its reliability.
Release Status
Most PeerSwap features are stable; however, newly added components like LWK and the Premium feature remain in early or beta stages. Feedback is highly encouraged to further enhance upcoming releases.
Special thanks
Special thanks to @yuyaogawa for Premium Feature specification review a while ago.
What's Changed
- liquid: ct discount by @YusukeShimizu in #304
- swap: bump protocol version to 4 by @grubles in #250
- nix: nixpkgs input to the latest revision by @YusukeShimizu in #334
- ci: nix-flake update workflow by @YusukeShimizu in #335
- test: replace t.TempDir() by @YusukeShimizu in #342
- other: configuration for devcontainer by @YusukeShimizu in #341
- ci: update nix-flake schedule monthly[skip ci] by @YusukeShimizu in #340
- docs: minimum version for elementsd by @YusukeShimizu in #345
- multi: acceptdiscountctIsEnabled check in setup by @YusukeShimizu in #348
- deps: glightning version reference by @YusukeShimizu in #349
- peerswaprpc: typo. correct in gen_protos.sh by @YusukeShimizu in #351
- multi: migrate protoc to buf by @shelter2759 in #350
- remove gen_protos.sh script by @YusukeShimizu in #352
- chore: fix some function names in comment[skip ci] by @finaltrip in #353
- multi: Modify buf.yaml for Buf lint and Format with Buf CLI Comamnd("buf format -w") by @shelter2759 in #354
- Fix "exceeding amount_msat" check by @Impa10r in #356
- refine triggers by @YusukeShimizu in #357
- conf: remove golangci configuration file by @YusukeShimizu in #360
- chore: remove redundant words in comment[skip ci] by @kevincatty in #362
- Premium by @YusukeShimizu in #264
- Update flake.lock by @github-actions[bot] in #337
- mod: update package lnd v0.18.0-beta.rc3 by @YusukeShimizu in #297
- Use the peerswaprpc proto file for shared serialization by @YusukeShimizu in #231
- rpc: return raw peerswaprpc.PremiumRate pointers by @YusukeShimizu in #371
- mod: bump go-elements to v0.5.1 by @YusukeShimizu in #363
- chore: fix some function names in comment[skip ci] by @pengqiseven in #376
- Add testnet4 support by @Impa10r in #369
- refactor: use the built-in max/min to simplify the code by @todaymoon in #367
- chore: fix struct field name in comment[skip ci] by @coderwander in #378
- chore: fix some minor issues in the comments[skip ci] by @shandongzhejiang in #380
- refactor: use slices.Contains to simplify code by @jinjingroad in #379
- chore: fix some minor issues in the comments[skip ci] by @mountdisk in #382
- chore: make function comment match function name[skip ci] by @rustfix in #388
- ci: improve caching by @YusukeShimizu in #385
- refactor: use the built-in max/min by @bytetigers in #389
New Contributors
- @shelter2759 made their first contribution in #350
- @finaltrip made their first contribution in #353
- @kevincatty made their first contribution in #362
- @github-actions[bot] made their first contribution in #337
- @pengqiseven made their first contribution in #376
- @todaymoon made their first contribution in #367
- @coderwander made their first contribution in #378
- @shandongzhejiang made their first contribution in #380
- @jinjingroad made their first contribution in #379
- @mountdisk made their first contribution in #382
- @rustfix made their first contribution in #388
- @bytetigers made their first contribution in #389
Full Changelog: v3.99...v5.0.0
v5.0.0-rc2
Major Updates
Protocol Version Upgrade
- The protocol version has been upgraded to v5.
- Important: As before, swaps are only supported between peers running the same protocol version. Make sure all peers upgrade to v5 to maintain compatibility.
Premium Feature
- A Premium feature has been added to allow more flexible handling of fees and pricing structures for swaps (PR #264, #371).
- Note: This feature is still in the testing phase and may be refined in future releases.
Other Fixes
-
Migrated Protocol Buffers to Buf
- Replaced the traditional
protoc
workflow with Buf to unify and automate linting and formatting. - This provides consistent formatting and a more efficient workflow, though contributors need to learn the new toolchain.
- Replaced the traditional
-
Documented Minimum Version for
elementsd
- PR #345 clarifies the minimum required version of Elements when running a local Elements node.
- Ensure your
elementsd
version meets or exceeds this requirement.
-
Dependency Updates
- Multiple libraries, including LND (
v0.18.0-beta.rc3
), have been updated (PR #297). nixpkgs
and flake dependencies have also been refreshed to improve maintainability.
- Multiple libraries, including LND (
-
Fix for
amount_msat
Exceeding Cases- Addresses scenarios where swap amounts could inadvertently exceed set limits (PR #356).
-
Added
acceptdiscountctIsEnabled
Check- A new step checks for
acceptdiscountctIsEnabled
during setup, helping to avoid misconfiguration (PR #348).
- A new step checks for
-
Minor Improvements
Notes
- Active Swaps: As with previous releases, ensure you have no active swaps before upgrading.
- Upgrade Procedure: Refer to the Upgrade Guide for detailed instructions.
- LWK Beta Status: LWK support remains in beta; please report any issues or feedback to improve its reliability.
Release Status
Most PeerSwap features are stable; however, newly added components like LWK and the Premium feature remain in early or beta stages. Feedback is highly encouraged to further enhance upcoming releases.
What's Changed
- nix: nixpkgs input to the latest revision by @YusukeShimizu in #334
- ci: nix-flake update workflow by @YusukeShimizu in #335
- test: replace t.TempDir() by @YusukeShimizu in #342
- other: configuration for devcontainer by @YusukeShimizu in #341
- ci: update nix-flake schedule monthly[skip ci] by @YusukeShimizu in #340
- docs: minimum version for elementsd by @YusukeShimizu in #345
- multi: acceptdiscountctIsEnabled check in setup by @YusukeShimizu in #348
- deps: glightning version reference by @YusukeShimizu in #349
- peerswaprpc: typo. correct in gen_protos.sh by @YusukeShimizu in #351
- multi: migrate protoc to buf by @shelter2759 in #350
- remove gen_protos.sh script by @YusukeShimizu in #352
- chore: fix some function names in comment[skip ci] by @finaltrip in #353
- multi: Modify buf.yaml for Buf lint and Format with Buf CLI Comamnd("buf format -w") by @shelter2759 in #354
- Fix "exceeding amount_msat" check by @Impa10r in #356
- refine triggers by @YusukeShimizu in #357
- conf: remove golangci configuration file by @YusukeShimizu in #360
- chore: remove redundant words in comment[skip ci] by @kevincatty in #362
- Premium by @YusukeShimizu in #264
- Update flake.lock by @github-actions in #337
- mod: update package lnd v0.18.0-beta.rc3 by @YusukeShimizu in #297
- Use the peerswaprpc proto file for shared serialization by @YusukeShimizu in #231
- rpc: return raw peerswaprpc.PremiumRate pointers by @YusukeShimizu in #371
- mod: bump go-elements to v0.5.1 by @YusukeShimizu in #363
New Contributors
- @shelter2759 made their first contribution in #350
- @finaltrip made their first contribution in #353
- @kevincatty made their first contribution in #362
- @github-actions made their first contribution in #337
Full Changelog: v5.0.0-rc...v5.0.0-rc2
v5.0.0-rc
Major Updates
Protocol Version Upgrade
- The protocol version has been upgraded to v5.
- Important: As before, swaps are only supported between peers running the same protocol version. Make sure all peers upgrade to v5 to maintain compatibility.
Premium Feature
- A Premium feature has been added to allow more flexible handling of fees and pricing structures for swaps (PR #264, #371).
- Note: This feature is still in the testing phase and may be refined in future releases.
Other Fixes
-
Migrated Protocol Buffers to Buf
- Replaced the traditional
protoc
workflow with Buf to unify and automate linting and formatting. - This provides consistent formatting and a more efficient workflow, though contributors need to learn the new toolchain.
- Replaced the traditional
-
Documented Minimum Version for
elementsd
- PR #345 clarifies the minimum required version of Elements when running a local Elements node.
- Ensure your
elementsd
version meets or exceeds this requirement.
-
Dependency Updates
- Multiple libraries, including LND (
v0.18.0-beta.rc3
), have been updated (PR #297). nixpkgs
and flake dependencies have also been refreshed to improve maintainability.
- Multiple libraries, including LND (
-
Fix for
amount_msat
Exceeding Cases- Addresses scenarios where swap amounts could inadvertently exceed set limits (PR #356).
-
Added
acceptdiscountctIsEnabled
Check- A new step checks for
acceptdiscountctIsEnabled
during setup, helping to avoid misconfiguration (PR #348).
- A new step checks for
-
Minor Improvements
Notes
- Active Swaps: As with previous releases, ensure you have no active swaps before upgrading.
- Upgrade Procedure: Refer to the Upgrade Guide for detailed instructions.
- LWK Beta Status: LWK support remains in beta; please report any issues or feedback to improve its reliability.
Release Status
Most PeerSwap features are stable; however, newly added components like LWK and the Premium feature remain in early or beta stages. Feedback is highly encouraged to further enhance upcoming releases.
What's Changed
- nix: nixpkgs input to the latest revision by @YusukeShimizu in #334
- ci: nix-flake update workflow by @YusukeShimizu in #335
- test: replace t.TempDir() by @YusukeShimizu in #342
- other: configuration for devcontainer by @YusukeShimizu in #341
- ci: update nix-flake schedule monthly[skip ci] by @YusukeShimizu in #340
- docs: minimum version for elementsd by @YusukeShimizu in #345
- multi: acceptdiscountctIsEnabled check in setup by @YusukeShimizu in #348
- deps: glightning version reference by @YusukeShimizu in #349
- peerswaprpc: typo. correct in gen_protos.sh by @YusukeShimizu in #351
- multi: migrate protoc to buf by @shelter2759 in #350
- remove gen_protos.sh script by @YusukeShimizu in #352
- chore: fix some function names in comment[skip ci] by @finaltrip in #353
- multi: Modify buf.yaml for Buf lint and Format with Buf CLI Comamnd("buf format -w") by @shelter2759 in #354
- Fix "exceeding amount_msat" check by @Impa10r in #356
- refine triggers by @YusukeShimizu in #357
- conf: remove golangci configuration file by @YusukeShimizu in #360
- chore: remove redundant words in comment[skip ci] by @kevincatty in #362
- Premium by @YusukeShimizu in #264
- Update flake.lock by @github-actions in #337
- mod: update package lnd v0.18.0-beta.rc3 by @YusukeShimizu in #297
- Use the peerswaprpc proto file for shared serialization by @YusukeShimizu in #231
- rpc: return raw peerswaprpc.PremiumRate pointers by @YusukeShimizu in #371
New Contributors
- @shelter2759 made their first contribution in #350
- @finaltrip made their first contribution in #353
- @kevincatty made their first contribution in #362
- @github-actions made their first contribution in #337
Full Changelog: v4.0rc1...v5.0.0rc
v4.0rc1
Key Updates
1. Protocol Version Upgrade
- The protocol version has been upgraded to v4.
- Important: Swaps are now exclusively supported between peers using the same protocol version. To maintain compatibility, all peers must update to v4.
2. LBTC Swap Support via LWK
- Added support for LBTC swaps through
lwk
, removing the dependency onelementsd
. - This update reduces memory requirements for deploying Peerswap by approximately 3–4 GB, making it more lightweight and efficient.
Pros
- Lightweight: Minimal RAM and storage space needed.
- Ease of Setup: Simplifies deployment by eliminating the need for a full Elements node.
Cons
- Beta Software: LWK is currently in beta, which may result in reduced stability or reliability compared to elementsd.
- Outsourced Verification: Utilizes third-party services for blockchain verification instead of self-verification.
- Shared Public Service: By default, connects to a public service shared with other users, potentially impacting performance.
3. Confidential Transaction Discounts
- Implemented support for confidential transaction discounts, significantly lowering costs associated with LBTC swaps.
4. Stability Improvements
- This release includes various fixes and optimizations aimed at improving stability and reliability.
Note
Please refer to the upgrade procedure guide for detailed instructions on upgrading safely.
It is especially important to ensure you have no active swaps before upgrading. Following this procedure will help prevent potential issues during the transition.
Release Status
While most aspects of PeerSwap are considered stable, support for LWK remains experimental/beta in this release(v4.0rc1
).
Users exploring LWK as a backend option are encouraged to report any issues or provide feedback to aid in refining future releases.
Changelog
For a comprehensive list of changes and improvements, please refer to the detailed changelog below.
- Adjust liquid flat swapout fee by @nepet in #147
- Update lnd version by @nepet in #148
- Fix version comparison by @nepet in #156
- Add version log by @nepet in #158
- swap: Fix one swap per channel race by @nepet in #154
- Add nil check on gettxout by @nepet in #155
- Log errors from "main scope" by @nepet in #160
- bump LND version in setup doc to latest by @grubles in #164
- Reduce unconnected peer log spam by @nepet in #163
- Change oreder of parameters in cln swap commands by @nepet in #162
- Replace MPP with single-part
sendpay
by @nepet in #159 - More descriptive
--large-channel
error message by @nepet in #169 - Docker related changes by @grubles in #172
- Update dependencies and fix broken CI by @nepet in #175
- fix markdown in README and docs/docker.md by @grubles in #174
- Rename peerswap-plugin by @grubles in #173
- cln plugin config file by @nepet in #153
- tests: fix race condition in RemoveUnseen test by @JssDWt in #179
- cln: make Dup3 platform independent by @JssDWt in #176
- Fix timeout race in tests by @nepet in #184
- Update dev dependencies by @nepet in #180
- Glightning msat purge by @nepet in #183
- Fix
listpeers
response by @nepet in #188 - docs: Clean up docs regarding restarting CLN peerswap [skip ci] by @wtogami in #191
- Remove passwords from logs by @nepet in #190
- Silence noisy poll log by @nepet in #189
- docs: polished up LND and usage docs. fixed markdown typo in README. by @grubles in #193
- docs: add elementsd setup + manual usage guide by @grubles in #196
- Rework recovery by @nepet in #192
- Revert "Rework recovery" by @wtogami in #198
- docs: polishing up readme and setup guides [skip ci] by @grubles in #197
- docs: fixing a few errors [skip ci] by @grubles in #202
- Improve Logs by @nepet in #203
- Remove payload from log messages by @grubles in #205
- Wait for Elementsd to be synced by @nepet in #206
- add elements guide, update FAQ [skip ci] by @grubles in #209
- Update readme by @grubles in #210
- remove local_percentage from listpeers by @grubles in #208
- Fix Possible Polling Deadlock by @nepet in #213
- improve payment notifier log message by @grubles in #212
- Fix stuck recovery by @nepet in #215
- Fix test flake by @nepet in #218
- txwatcher: log once then exit if auth fails by @grubles in #219
- txwatcher: rework StartBlockchainWatcher() exits by @grubles in #220
- Add CLN config option to disable BTC swaps, fixup LND swap config by @grubles in #217
- Add new lnd error message to the
retry
middleware by @nepet in #227 - cln: bitcoin-rpcport is now an int in CLN 23.08 by @grubles in #226
- delete the comment of old issue link by @YusukeShimizu in #229
- Fix broken log message by @nepet in #234
- config: add function to detect allow-deprecated-apis=false in CLN config by @grubles in #230
- test: Change log output of mixedSetup by @YusukeShimizu in #236
- Wait for swap in State_SwapInSender_AwaitAgreement if it exists by @YusukeShimizu in #241
- Bump nixpkgs by @YusukeShimizu in #240
- test: the amount of the fee invoice is taken into account when testing by @YusukeShimizu in #242
- Fix CLN 23.08 crashing on NixOS by @chrisguida in #243
- Fix invoice description flake by @nepet in #244
- Docs: Fix sequence swapin by @YusukeShimizu in #245
- Add additional sanity checks before starting a swap by @nepet in #235
- makefile: make go fmt executable by @YusukeShimizu in #237
- Sanity check max htlc amount msat by @YusukeShimizu in #246
- ensures that the invoice is payed via the direct channel by @YusukeShimizu in #247
- cln: Sanity check max htlc amount msat by @YusukeShimizu in #248
- to make linter available for source code checking by @YusukeShimizu in #251
- compile protobufs in docker by @YusukeShimizu in #252
- swap: automatically add to the suspicious list If csv recovery by @YusukeShimizu in #253
- rpcwallet: change getaddress to request a blech32 address by @delta1 in #257
- cancel swap on recovery by @YusukeShimizu in #255
- liquid: return more accurate errors in createSpendingTransaction by @jamesdorfman in #258
- probe payment as sanity check by @YusukeShimizu in #260
- Update setup_cln.md - simple typo fix by @singlebeam in #265
- cln: remove wumbo check because CLN >=v23.11 defaults to enabling it by @grubles in #269
- docs: fix typos by @cristiantroy in #270
- [skip ci] Update signetguide_...
Practice run for protocol upgrades (version 3)
PeerSwap for the past 9 months remained compatible. This version doesn't yet introduce any protocol breaking changes but we use this opportunity to bump the protocol version as a practice run for future protocol upgrades.