Skip to content

v0.2.0 - Pruned tower

Latest
Compare
Choose a tag to compare
@sr-gi sr-gi released this 06 Feb 22:10
· 48 commits to master since this release
43f9971

Summary

This release packs improvements to both the tower daemon and the cln client. The highlights are:

  • The tower can now be run using pruned bitcoind node
  • CLN client does auto-register with altruistic towers once a subscription expires
  • CLN client auto-retries unreachable towers every fixed periods of time

There are also a couple of breaking changes to bear in mind:

  • The default port for the Tor interface is now set to the same as for clearnet (9814 instead of 2121)
  • The watchtower-proxy option for the CLN client has been dropped, the client now uses proxy (which is a native CLN option)

Also, some defaults have been updated:

  • The CLN client now will retry an unreachable tower up to an hour instead of the previous 15 minutes (with wait intervals of 15 minutes instead of 1 minute).

List of contributors for this release (alphabetically):

@decentralizedb
@jochemin
@JonathanPlasse
@mariocynicys
@sr-gi
@ulrichard

Release notes

Improvements

  • Builds an internal transaction index (txindex) so we don't require bitcoind to run with --txindex. This allows us to run on top of bitcoind in pruned mode, therefore significantly reducing the initial storage requirements to run a tower (from ~420 GiB disk space to ~5.5GiB plus a few dozen KiB in memory) (#132)
  • Adds network interface info to gettowerinfo. Now it will report the interfaces where the tower services are being offered (#151, #188)
  • RPC commands for the watchtower-client can now be formatted with named parameters instead of just with positional parameters. e.g. lightning-cli -k <command> arg_0=val_0...arg_n=val_n (#134)
  • Implement auto-register for the watchtower-client. Now clients do re-register with altruistic towers automatically (#164)
  • Implement auto-retry logic for watchtower-plugin. Now if a tower retry strategy is given up on due to an accumulation of transient errors the tower will be automatically retried later on (#168)
  • Adds systemd service for teosd (#176, #183)
  • Logs RPC requests (#177)

Breaking changes

  • RPC commands have been refactored from snake case to lowercase. e.g. get_tower_info -> gettowerinfo (#144)
  • The Tor default port is set to 9814 (the same port as clearnet) (#145)
  • Implements proxy and always-use-proxy logic for watchtower-plugin. This replaces the old watchtower-proxy config option with the proxy (which is the native CLN option for this purpose). Also, the client now honors the always-use-proxy logic, meaning if the flag is set, all tower data will be sent through Tor. Notice if you were using Tor you'll need to update watchtower-proxy for proxy or the client won't run! (#160)

Bug fixes

  • Fixes Tor proxy redirection. The Tor proxy assumed the HTTP API was served at localhost, which may not always be the case (especially if both clearnet and Tor interfaces were up) (#146)
  • Don't set the tower status in watchtower-plugin if a fresh register fails (#166)
  • Fix btc-network documentation for teosd, replacing bitcoin for mainnet (#171)

Misc

  • Reduce log-level severity for http errors in CLN plugin to avoid creating **BROKEN** logs when it is not necessary. This is specially intended for connection issues, which are most common (#140)
  • Slits debug flag for teosd into debug and deps-debug so we don't have to include third-party lib debug logs within ours (if we don't intend to) (#139)
  • Narrowed down SQL requests to prevent using SELECT * (#107)
  • Minimized String usage throughout the codebase (#135)
  • Replace names, defaults and descriptions by constants in watchtower-plugin (#170)
  • Defined endpoints as enum variants instead of hardcoded strings (#173)

Dev

  • Updates GitHub actions and caches (#141)
  • Track Cargo.lock (#149)
  • Simplify url formatting in watchtower-plugin tests (server.address() -> server.baseurl) in tests (#110)
  • Avoid sleep-based testing in watchtower-plugin E2E test suite. Replace it for wait_for_logs (#167)
  • Fixes random failures in test_get_appointment E2E (#169)
  • Properly defines sleeps in Retrier's tests (#184)
  • Formats strings to use inline params when possible (#185)