|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). |
| 6 | + |
| 7 | +## [0.14.1] - 2024-10-31: "Hand at the Grindstone" |
| 8 | + |
| 9 | +### Added |
| 10 | + |
| 11 | +- **Contrib Script Enhancements**: |
| 12 | + - Added `--lightning-dir` option to the contrib scripts: |
| 13 | + - `clboss-earnings-history` |
| 14 | + - `clboss-recent-earnings` |
| 15 | + - `clboss-routing-stats` |
| 16 | + |
| 17 | + This allows users with non-default configurations to specify their |
| 18 | + `lightning-dir` when running these scripts. ([#243]) |
| 19 | + |
| 20 | + - **Nix Support**: |
| 21 | + - Introduced `contrib-shell.nix` to facilitate running contrib |
| 22 | + scripts within Nix environments. Users can now execute |
| 23 | + `nix-shell contrib-shell.nix` and run any Python scripts in |
| 24 | + `contrib/`. ([#241]) |
| 25 | + - Updated `contrib/README.md` with detailed instructions for |
| 26 | + Python dependencies installation, including a section on using |
| 27 | + Nix. |
| 28 | + |
| 29 | +- **Stack Unwinding Support**: |
| 30 | + - Implemented `libunwind` for stack unwinding. This replaces the use |
| 31 | + of `backtrace()`, which is not available on Alpine Linux. This |
| 32 | + improves compatibility with Alpine and other systems lacking |
| 33 | + `backtrace()`. ([#245], [#249]) |
| 34 | + - Replaced the use of `program_invocation_name` (only available on |
| 35 | + Linux) with a custom global variable to store the program name, |
| 36 | + improving portability to systems like FreeBSD and other Unix-like |
| 37 | + systems. ([#242]) |
| 38 | + |
| 39 | +### Fixed |
| 40 | + |
| 41 | +- **Build System**: |
| 42 | + - Fixed issues when building CLBOSS as a git submodule. ([#247], [#250]) |
| 43 | + - Improved diagnostic messages for missing `commit_hash.h` in |
| 44 | + tarball builds. This helps users identify and resolve build issues |
| 45 | + when `commit_hash.h` is not present. ([#244]), [#251]) |
| 46 | + |
| 47 | +## [0.14.0] - 2024-09-25: "Hand at the Grindstone" |
| 48 | + |
| 49 | +### Added |
| 50 | + |
| 51 | +- **EarningsTracker Upgrade**: Upgraded `EarningsTracker` to a time |
| 52 | + bucket schema, allowing storage and access to earnings and |
| 53 | + expenditure data over specific time ranges. This prepares for future |
| 54 | + enhancements in balancing strategies based on time-based data. Note |
| 55 | + that this update includes automatic database schema changes; |
| 56 | + downgrading to previous versions will require manual database |
| 57 | + migration. |
| 58 | + |
| 59 | +- **Exception Backtraces**: Added `Util::BacktraceException` which |
| 60 | + captures backtraces where an exception is thrown and then formats |
| 61 | + them for debugging when they are displayed with `what()`. The |
| 62 | + backtraces are more useful if the following configuration is used: |
| 63 | + `./configure CXXFLAGS="-g -Og"` but this results in larger, less |
| 64 | + optimized binaries. |
| 65 | + |
| 66 | +- **New Scripts in Contrib**: |
| 67 | + - `clboss-routing-stats`: A script that summarizes routing |
| 68 | + performance of channels, displaying PeerID, SCID, and Alias. It |
| 69 | + sorts channels by net fees (income - expenses), success per day, |
| 70 | + and age. |
| 71 | + - `clboss-earnings-history` and `clboss-recent-earnings`: Scripts to |
| 72 | + display historical and recent earnings. |
| 73 | + |
| 74 | + - Added `contrib/README.md` to provide information about the scripts |
| 75 | + and tools available in the `contrib` directory. |
| 76 | + - Introduced a Poetry project to manage Python dependencies in `contrib`. |
| 77 | + |
| 78 | +- **Testing and Debugging Enhancements**: |
| 79 | + - Added `get_now()` and `mock_get_now()` functions to |
| 80 | + `EarningsTracker` and its tests to support time-based |
| 81 | + functionalities. |
| 82 | + - Implemented `Either::operator<<` and `Jsmn::Object::operator==` to |
| 83 | + facilitate debugging and writing test cases. |
| 84 | + - Factored `parse_json` into a `Jsmn::Object` static method to |
| 85 | + simplify test case generation using literal JSON. |
| 86 | + |
| 87 | +### Changed |
| 88 | + |
| 89 | +- **Build System**: |
| 90 | + - Updated `configure` to use the C++17 standard, fixing compilation |
| 91 | + issues on platforms like Raspiblitz. |
| 92 | + - Improved `commit_hash.h` dependencies and generation to ensure |
| 93 | + correct regeneration when the development tree is modified. |
| 94 | + |
| 95 | +- **Contrib Script Enhancements**: |
| 96 | + - Generalized network parameter handling in `clboss-routing-stats` |
| 97 | + to support multiple networks. |
| 98 | + - Updated `clboss-routing-stats` to utilize an alias cache for |
| 99 | + better performance. |
| 100 | + |
| 101 | +### Fixed |
| 102 | + |
| 103 | +- **Testing**: |
| 104 | + - Increased the timeout for `jsmn/test_performance` tests to prevent |
| 105 | + premature failures during testing. |
| 106 | + |
| 107 | +- **Logging Improvements**: |
| 108 | + - Inserted exception `what()` values into logging messages to |
| 109 | + enhance debugging output and provide more detailed error |
| 110 | + information. |
| 111 | + |
| 112 | +- **Miscellaneous**: |
| 113 | + - Resolved issues with the regeneration of `commit_hash.h` when the |
| 114 | + development tree is altered by Git operations. |
| 115 | + |
| 116 | +### Added |
| 117 | + |
| 118 | +## [0.13.3] - 2024-08-09: "Blinded by the Light" |
| 119 | + |
| 120 | +This point release fixes an important bug by restoring the earned fee |
| 121 | +information in CLBOSS. |
| 122 | + |
| 123 | +### Added |
| 124 | + |
| 125 | +- The version string is now logged on startup and in the |
| 126 | + `clboss-status` output ([#205]). |
| 127 | +- Added an earnings_tracker diagram. |
| 128 | + |
| 129 | +### Fixed |
| 130 | + |
| 131 | +- The `ForwardFeeMonitor` (and subsequently the `EarningsTracker`) have |
| 132 | + restored ability see fee income ([#222], [#223]). |
| 133 | +- A possible vector out of bounds access was removed ([#219]). |
| 134 | +- Added totals to clboss-status offchain_earnings_tracker ([#223]). |
| 135 | + |
| 136 | +## [0.13.2] - 2024-07-18: "Bwahaha's Dominion" |
| 137 | + |
| 138 | +### Added |
| 139 | + |
| 140 | +- Added `signet` support ([#148]). |
| 141 | +- Updated the seeds list ([#208], |
| 142 | +- Added module diagrams for channel creation, offchain to onchain |
| 143 | + swaps, and channel balancing ([#200], [#203]). |
| 144 | + |
| 145 | +### Changed |
| 146 | + |
| 147 | +- testnet: Reduce the `min_nodes_to_process` because testnet is shrinking ([#209]). |
| 148 | +- Improve listpeers handling diagnostics ([#214], [#215]). |
| 149 | +- Improve Initialization of OnchainFeeMonitor with Conservative |
| 150 | + Synthetic History ([#210]). |
| 151 | + |
| 152 | +### Fixed |
| 153 | + |
| 154 | +- Converted deprecated listpeer usage to listpeerchannels ([#213], [#198]). |
| 155 | +- Recognize `--developer` CLI flag and don't exit giving usage ([#185], [#216])). |
| 156 | + |
| 157 | +## [0.13.1] - 2024-04-16: "E Street Fix" |
| 158 | + |
| 159 | +### Fixed |
| 160 | + |
| 161 | +- CLN `v24.02` deprecated the RPC `msatoshi` fields which needed to be |
| 162 | + converted to `amount_msat` instead. This caused channel candidates |
| 163 | + to not be found ([#189]) (and maybe other problems). Fixed in |
| 164 | + ([#190]). |
| 165 | +- CLN `v24.02` deprecated the RPC `private` field in the channel info |
| 166 | + RPC data because private channels are no longer present. Remove |
| 167 | + references to the field because we only want to skip these channels |
| 168 | + anyway. Fixes ([192]) |
| 169 | + |
| 170 | +### Changed |
| 171 | + |
| 172 | +- The minimum number of network nodes seen before initiating certain |
| 173 | + actions is 800 in the bitcoin network. ([#173]) changes this |
| 174 | + threshold for the testnet (300) and other networks (10). The new |
| 175 | + thresholds should allow CLBOSS to act when there are fewer available |
| 176 | + nodes. The bitcoin limit remains 800. |
| 177 | + |
| 178 | +## [0.13] - 2023-09-08: "Born to Run" |
| 179 | + |
| 180 | +### Added |
| 181 | + |
| 182 | +- Continuous Integration (CI) for pull requests! |
| 183 | +- Support string "id" fields in the plugin interface. |
| 184 | +- Enable SQLITE3 extended error codes. |
| 185 | + |
| 186 | +### Changed |
| 187 | + |
| 188 | +- Disable compiling debug information by default; if you need this, |
| 189 | + explicitly include `-g` in your `configure` command, like so: |
| 190 | + `./configure CXXFLAGS="-O2 -g"`. This reduces binary size by 20x. |
| 191 | +- Avoid parameters/commands deprecated in Core Lightning 0.11.0. |
| 192 | + |
| 193 | +### Fixed |
| 194 | + |
| 195 | +- Can now handle JSON-RPC amounts in either the old convention |
| 196 | + (string, "msat" suffix) or the post 23.05 convention (json number). ([#157], [#164]) |
| 197 | +- Fixed non-integer blockheights (testnet) ([#170]) |
| 198 | +- Upgraded libraries and compiler to fix build. ([#169]) |
| 199 | + |
| 200 | + |
| 201 | +## Prior `ChangeLog` entries [formatting change] |
| 202 | + |
| 203 | +- Support string "id" fields in the plugin interface. |
| 204 | +- Disable compiling debug information by default; if you need this, explicitly include `-g` in your `configure` command, like so: `./configure CXXFLAGS="-O2 -g"`. This reduces binary size by 20x. |
| 205 | +- Enable SQLITE3 extended error codes. |
| 206 | +- Avoid parameters/commands deprecated in Core Lightning 0.11.0. |
| 207 | + |
| 208 | +0.13A |
| 209 | +- Disable `InitialRebalancer`, as it is not based on economic rationality. |
| 210 | +- You can now disable rebalancing to or from specific peers by using `clboss-unmanage` with the key `balance`. |
| 211 | +- Use a single giant `listchannels` call in `FeeModderBySize`. This should now make CLBOSS usable on nodes with >100 channels. |
| 212 | +- Limit the number of concurrent RPC calls we make, to prevent overloading the poor Core Lightning daemon. |
| 213 | +- Make `PeerCompetitorFeeMonitor::Surveyor` more efficient by using a new parameter for `listchannels` that was introduced in C-Lightning 0.10.1. Fall back to the old inefficient algo if the C-Lightning node is < 0.10.1. |
| 214 | + |
| 215 | +0.12 Not Completely Useless |
| 216 | +0.11E |
| 217 | +- Fix a bug which *removed* `--clboss-min-onchain` instead of adding `--clboss-min-channel` and `--clboss-max-channel`. LOL. |
| 218 | + |
| 219 | +0.11D |
| 220 | +- We now check dowsed channel sizes during preinvestigation and investigation as well, making sure the minimum channel size is respected. |
| 221 | +- Add `--clboss-min-channel` and `--clboss-max-channel` settings. |
| 222 | +- Make sure `ChannelFinderByPopularity` becomes aggressive at least once, to handle the case where the node was previously (poorly?) managed by a human and might not have good liquidity to the network. |
| 223 | +- If our total funds is increased by +25% or more, have `ChannelFinderByPopularity` become more aggressive. |
| 224 | +- Support `--clboss-zerobasefee=<require|allow|disallow>`. |
| 225 | +- Fix incompatibility with C-Lightning 0.11.x by explicitly using "style": "tlv" instead of "legacy". |
| 226 | +- Record offchain-to-onchain swaps, accessible via new `clboss-swaps` command. |
| 227 | + |
| 228 | +0.11C |
| 229 | +- Disable `ChannelComplainerByLowSuccessPerDay` for now. |
| 230 | +- Adjust our judgment of "low onchain fee" downward (i.e. cheaper) slightly, from 25% +/-5% to 20% +/-3%. |
| 231 | +- `ActiveProber` now only does a 2-hop probe always. |
| 232 | +- `ChannelComplainerByLowSuccessPerDay` logs a little more on debug prints. |
| 233 | +- Tweak parameters for auto-close slightly, being more lenient. |
| 234 | +- Fix FreeBSD compile. |
| 235 | + |
| 236 | +0.11B |
| 237 | +- `ActiveProber` now also has a background cleaner of its payments. |
| 238 | +- `ChannelCreationDecider` now holds off on creating channels if the onchain amount is small relative to all your funds and is small for a "large" channel (~0.16777215 BTC). This should prevent CLBOSS from making lots of 10mBTC channels when your node is well-funded. |
| 239 | +- CLBOSS can now close bad channels. Enable this ***EXPERIMENTAL*** feature by passing `--clboss-auto-close=true` option to `lightningd`. If enabled, the `clboss-unmanage` command can disable this for particular peers using the `close` key. |
| 240 | +- Remove `libsodium` library, instead use SHA256 implementation from Bitcoin and our own code for basic securtiy issues. |
| 241 | +- Add `clboss-unmanage` command to suppress certain aspects of auto-management. |
| 242 | +- Fix `InitialRebalancer` bug (introduced in 0.11A) which completely disables it instead of throttling it. |
| 243 | + |
| 244 | +0.11A |
| 245 | +- Make `FundsMover` much less willing to pay extra for more private randomized routes. |
| 246 | +- New `EarningsRebalancer` is now the primary rebalancer to replace the role of `InitialRebalancer` in previous releases; it will base its rebalancing decisions on earnings of each channel. |
| 247 | +- `InitialRebalancer` will now limit how much it will spend on rebalances, as it is intended for the *initial* rebalancing of new channels. |
| 248 | +- `FundsMover` is now more parsimonious about its fee budget when it splits moved funding attempts. |
| 249 | +- Avoid making multiple channels to nodes with the same IP bin. |
| 250 | +- Fix MacOS compile. |
| 251 | +- Use `dig -v` to check for `dig` install, instead of `dig localhost`, as the latter may trigger a "real" lookup that will inevitably fail. |
| 252 | + |
| 253 | +0.10 Made of Explodium |
| 254 | +0.9A |
| 255 | +- Avoid `DELETE ... ORDER BY`, which might not be enabled on the SQLITE3 available on some systems. |
| 256 | +- Fix a roundoff error with command `id`s, which would lead to `clboss` eventually crashing after a few days or weeks. |
| 257 | + |
| 258 | +0.8 Facepalm of Doom |
| 259 | +0.7D |
| 260 | +- Fix latent `printf`-formatting bugs in `SendpayResultMonitor`, which would crash on 32-bit systems. |
| 261 | + |
| 262 | +0.7C |
| 263 | +- `FundsMover` now deletes its failing payments immediately instead of letting them languish in your db until the cleanup process gets to them. |
| 264 | + |
| 265 | +0.7B |
| 266 | +- Ensure `InitialRebalancer` does not put the destination node at the edge of triggering `InitialRebalancer` again in the next cycle, which was causing multiple rebalances in sequence. |
| 267 | +- New option `--clboss-min-onchain=<satoshi>` to indicate how much to leave onchain; defaults to 30000 satoshi, which is suggested to leave onchain in preparation for anchor commitments, but you can leave more (or less) now. |
| 268 | +- Document `clboss-status` and `clboss-externpay` commands. |
| 269 | +- New commands `clboss-ignore-onchain` and `clboss-notice-onchain` let you temporarily manage onchain funds manually. |
| 270 | +- Change onchain fee judgment to use percentile based on the previous 2 weeks of feerates. |
| 271 | +- Support MacOS compilation, also checked FreeBSD compilation still works. |
| 272 | +- Correct calculation of spendable vs receivable in `NodeBalanceSwapper`. |
| 273 | + |
| 274 | +0.7A |
| 275 | +- Properly consider direction of flow when estimating capacities of nodes. |
| 276 | +- Properly rebalance channels greater than 42.94mBTC payment limit. |
| 277 | +- Use `payment_secret` in rebalances. |
| 278 | +- Work around a timing bug in Tor SOCKS5 implementation. |
| 279 | +- CLBOSS can now be started and stopped with the `lightningd` `plugin` command. |
| 280 | +- Do not use `proxy` if `always-use-proxy` is not `true`. |
| 281 | +- New `ChannelFinderByEarnedFee` module proposes peers of our most lucrative peers, to improve alternate routes to popular destinations. |
| 282 | + |
| 283 | +0.6 Nice Job Breaking It, Hero! |
| 284 | +0.5E |
| 285 | +- Remove busy-wait loop in `FeeModderBySize`. |
| 286 | + |
| 287 | +0.5D |
| 288 | +- Tone down `FundsMover` payment cleanup. |
| 289 | +- Batch up RPC socket response parsing. |
| 290 | + |
| 291 | +0.5C |
| 292 | +- `FundsMover` now has a backup process to clean up its payments. |
| 293 | +- `ChannelFinderByListpays` now ignores self-payments instead of possibly proposing self. |
| 294 | +- Optimize traversing JSON results for channel finders. |
| 295 | +- Reduce processing load when printing really long RPC logs. |
| 296 | +- Correctly handle sudden death of `lightningd` process. |
| 297 | +- Really, do not delay response to `init`, for reals. |
| 298 | + |
| 299 | +0.5B |
| 300 | +- Do not delay response to `init`. |
| 301 | + |
| 302 | +0.5A |
| 303 | +- Handle `rpc_command` specially for better RPC response times even when CLBOSS is busy. |
| 304 | +- Make compilable on FreeBSD. |
| 305 | +- Print more debug logs for internet connection monitoring. |
| 306 | +- Limit resources used by rebalancing attempts. |
| 307 | +- Long-running processes (channel finders, peer fee competitor measuring) now print progress reports. |
| 308 | +- Lowered execution priority of RPC socket reading and parsing, hopefully this will make us more responsive to our hooks. |
| 309 | + |
| 310 | +0.4 Failed a Spot Check |
| 311 | +0.3B |
| 312 | +- `ChannelFinderByPopularity` now reduces its participation instead of not participating if we have many channels already. |
| 313 | +- Channel finders now ensure they only run once even if multiple triggers occur while they are running. |
| 314 | + |
| 315 | +0.3A |
| 316 | +- Fixed missing initializations and some checks. |
| 317 | +- Fixed build errors in Debian. |
| 318 | + |
| 319 | +0.2 TV Tropes Will Ruin Your Life |
| 320 | + |
| 321 | +0.1A Initial Alpha Release |
| 322 | + |
| 323 | +Local Variables: |
| 324 | +mode: markdown |
| 325 | +End: |
0 commit comments