-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
326 additions
and
325 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,325 @@ | ||
# Changelog | ||
|
||
All notable changes to this project will be documented in this file. | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | ||
|
||
## [0.14.1] - 2024-10-31: "Hand at the Grindstone" | ||
|
||
### Added | ||
|
||
- **Contrib Script Enhancements**: | ||
- Added `--lightning-dir` option to the contrib scripts: | ||
- `clboss-earnings-history` | ||
- `clboss-recent-earnings` | ||
- `clboss-routing-stats` | ||
|
||
This allows users with non-default configurations to specify their | ||
`lightning-dir` when running these scripts. ([#243]) | ||
|
||
- **Nix Support**: | ||
- Introduced `contrib-shell.nix` to facilitate running contrib | ||
scripts within Nix environments. Users can now execute | ||
`nix-shell contrib-shell.nix` and run any Python scripts in | ||
`contrib/`. ([#241]) | ||
- Updated `contrib/README.md` with detailed instructions for | ||
Python dependencies installation, including a section on using | ||
Nix. | ||
|
||
- **Stack Unwinding Support**: | ||
- Implemented `libunwind` for stack unwinding. This replaces the use | ||
of `backtrace()`, which is not available on Alpine Linux. This | ||
improves compatibility with Alpine and other systems lacking | ||
`backtrace()`. ([#245], [#249]) | ||
- Replaced the use of `program_invocation_name` (only available on | ||
Linux) with a custom global variable to store the program name, | ||
improving portability to systems like FreeBSD and other Unix-like | ||
systems. ([#242]) | ||
|
||
### Fixed | ||
|
||
- **Build System**: | ||
- Fixed issues when building CLBOSS as a git submodule. ([#247], [#250]) | ||
- Improved diagnostic messages for missing `commit_hash.h` in | ||
tarball builds. This helps users identify and resolve build issues | ||
when `commit_hash.h` is not present. ([#244]), [#251]) | ||
|
||
## [0.14.0] - 2024-09-25: "Hand at the Grindstone" | ||
|
||
### Added | ||
|
||
- **EarningsTracker Upgrade**: Upgraded `EarningsTracker` to a time | ||
bucket schema, allowing storage and access to earnings and | ||
expenditure data over specific time ranges. This prepares for future | ||
enhancements in balancing strategies based on time-based data. Note | ||
that this update includes automatic database schema changes; | ||
downgrading to previous versions will require manual database | ||
migration. | ||
|
||
- **Exception Backtraces**: Added `Util::BacktraceException` which | ||
captures backtraces where an exception is thrown and then formats | ||
them for debugging when they are displayed with `what()`. The | ||
backtraces are more useful if the following configuration is used: | ||
`./configure CXXFLAGS="-g -Og"` but this results in larger, less | ||
optimized binaries. | ||
|
||
- **New Scripts in Contrib**: | ||
- `clboss-routing-stats`: A script that summarizes routing | ||
performance of channels, displaying PeerID, SCID, and Alias. It | ||
sorts channels by net fees (income - expenses), success per day, | ||
and age. | ||
- `clboss-earnings-history` and `clboss-recent-earnings`: Scripts to | ||
display historical and recent earnings. | ||
|
||
- Added `contrib/README.md` to provide information about the scripts | ||
and tools available in the `contrib` directory. | ||
- Introduced a Poetry project to manage Python dependencies in `contrib`. | ||
|
||
- **Testing and Debugging Enhancements**: | ||
- Added `get_now()` and `mock_get_now()` functions to | ||
`EarningsTracker` and its tests to support time-based | ||
functionalities. | ||
- Implemented `Either::operator<<` and `Jsmn::Object::operator==` to | ||
facilitate debugging and writing test cases. | ||
- Factored `parse_json` into a `Jsmn::Object` static method to | ||
simplify test case generation using literal JSON. | ||
|
||
### Changed | ||
|
||
- **Build System**: | ||
- Updated `configure` to use the C++17 standard, fixing compilation | ||
issues on platforms like Raspiblitz. | ||
- Improved `commit_hash.h` dependencies and generation to ensure | ||
correct regeneration when the development tree is modified. | ||
|
||
- **Contrib Script Enhancements**: | ||
- Generalized network parameter handling in `clboss-routing-stats` | ||
to support multiple networks. | ||
- Updated `clboss-routing-stats` to utilize an alias cache for | ||
better performance. | ||
|
||
### Fixed | ||
|
||
- **Testing**: | ||
- Increased the timeout for `jsmn/test_performance` tests to prevent | ||
premature failures during testing. | ||
|
||
- **Logging Improvements**: | ||
- Inserted exception `what()` values into logging messages to | ||
enhance debugging output and provide more detailed error | ||
information. | ||
|
||
- **Miscellaneous**: | ||
- Resolved issues with the regeneration of `commit_hash.h` when the | ||
development tree is altered by Git operations. | ||
|
||
### Added | ||
|
||
## [0.13.3] - 2024-08-09: "Blinded by the Light" | ||
|
||
This point release fixes an important bug by restoring the earned fee | ||
information in CLBOSS. | ||
|
||
### Added | ||
|
||
- The version string is now logged on startup and in the | ||
`clboss-status` output ([#205]). | ||
- Added an earnings_tracker diagram. | ||
|
||
### Fixed | ||
|
||
- The `ForwardFeeMonitor` (and subsequently the `EarningsTracker`) have | ||
restored ability see fee income ([#222], [#223]). | ||
- A possible vector out of bounds access was removed ([#219]). | ||
- Added totals to clboss-status offchain_earnings_tracker ([#223]). | ||
|
||
## [0.13.2] - 2024-07-18: "Bwahaha's Dominion" | ||
|
||
### Added | ||
|
||
- Added `signet` support ([#148]). | ||
- Updated the seeds list ([#208], | ||
- Added module diagrams for channel creation, offchain to onchain | ||
swaps, and channel balancing ([#200], [#203]). | ||
|
||
### Changed | ||
|
||
- testnet: Reduce the `min_nodes_to_process` because testnet is shrinking ([#209]). | ||
- Improve listpeers handling diagnostics ([#214], [#215]). | ||
- Improve Initialization of OnchainFeeMonitor with Conservative | ||
Synthetic History ([#210]). | ||
|
||
### Fixed | ||
|
||
- Converted deprecated listpeer usage to listpeerchannels ([#213], [#198]). | ||
- Recognize `--developer` CLI flag and don't exit giving usage ([#185], [#216])). | ||
|
||
## [0.13.1] - 2024-04-16: "E Street Fix" | ||
|
||
### Fixed | ||
|
||
- CLN `v24.02` deprecated the RPC `msatoshi` fields which needed to be | ||
converted to `amount_msat` instead. This caused channel candidates | ||
to not be found ([#189]) (and maybe other problems). Fixed in | ||
([#190]). | ||
- CLN `v24.02` deprecated the RPC `private` field in the channel info | ||
RPC data because private channels are no longer present. Remove | ||
references to the field because we only want to skip these channels | ||
anyway. Fixes ([192]) | ||
|
||
### Changed | ||
|
||
- The minimum number of network nodes seen before initiating certain | ||
actions is 800 in the bitcoin network. ([#173]) changes this | ||
threshold for the testnet (300) and other networks (10). The new | ||
thresholds should allow CLBOSS to act when there are fewer available | ||
nodes. The bitcoin limit remains 800. | ||
|
||
## [0.13] - 2023-09-08: "Born to Run" | ||
|
||
### Added | ||
|
||
- Continuous Integration (CI) for pull requests! | ||
- Support string "id" fields in the plugin interface. | ||
- Enable SQLITE3 extended error codes. | ||
|
||
### Changed | ||
|
||
- 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. | ||
- Avoid parameters/commands deprecated in Core Lightning 0.11.0. | ||
|
||
### Fixed | ||
|
||
- Can now handle JSON-RPC amounts in either the old convention | ||
(string, "msat" suffix) or the post 23.05 convention (json number). ([#157], [#164]) | ||
- Fixed non-integer blockheights (testnet) ([#170]) | ||
- Upgraded libraries and compiler to fix build. ([#169]) | ||
|
||
|
||
## Prior `ChangeLog` entries [formatting change] | ||
|
||
- Support string "id" fields in the plugin interface. | ||
- 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. | ||
- Enable SQLITE3 extended error codes. | ||
- Avoid parameters/commands deprecated in Core Lightning 0.11.0. | ||
|
||
0.13A | ||
- Disable `InitialRebalancer`, as it is not based on economic rationality. | ||
- You can now disable rebalancing to or from specific peers by using `clboss-unmanage` with the key `balance`. | ||
- Use a single giant `listchannels` call in `FeeModderBySize`. This should now make CLBOSS usable on nodes with >100 channels. | ||
- Limit the number of concurrent RPC calls we make, to prevent overloading the poor Core Lightning daemon. | ||
- 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. | ||
|
||
0.12 Not Completely Useless | ||
0.11E | ||
- Fix a bug which *removed* `--clboss-min-onchain` instead of adding `--clboss-min-channel` and `--clboss-max-channel`. LOL. | ||
|
||
0.11D | ||
- We now check dowsed channel sizes during preinvestigation and investigation as well, making sure the minimum channel size is respected. | ||
- Add `--clboss-min-channel` and `--clboss-max-channel` settings. | ||
- 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. | ||
- If our total funds is increased by +25% or more, have `ChannelFinderByPopularity` become more aggressive. | ||
- Support `--clboss-zerobasefee=<require|allow|disallow>`. | ||
- Fix incompatibility with C-Lightning 0.11.x by explicitly using "style": "tlv" instead of "legacy". | ||
- Record offchain-to-onchain swaps, accessible via new `clboss-swaps` command. | ||
|
||
0.11C | ||
- Disable `ChannelComplainerByLowSuccessPerDay` for now. | ||
- Adjust our judgment of "low onchain fee" downward (i.e. cheaper) slightly, from 25% +/-5% to 20% +/-3%. | ||
- `ActiveProber` now only does a 2-hop probe always. | ||
- `ChannelComplainerByLowSuccessPerDay` logs a little more on debug prints. | ||
- Tweak parameters for auto-close slightly, being more lenient. | ||
- Fix FreeBSD compile. | ||
|
||
0.11B | ||
- `ActiveProber` now also has a background cleaner of its payments. | ||
- `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. | ||
- 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. | ||
- Remove `libsodium` library, instead use SHA256 implementation from Bitcoin and our own code for basic securtiy issues. | ||
- Add `clboss-unmanage` command to suppress certain aspects of auto-management. | ||
- Fix `InitialRebalancer` bug (introduced in 0.11A) which completely disables it instead of throttling it. | ||
|
||
0.11A | ||
- Make `FundsMover` much less willing to pay extra for more private randomized routes. | ||
- 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. | ||
- `InitialRebalancer` will now limit how much it will spend on rebalances, as it is intended for the *initial* rebalancing of new channels. | ||
- `FundsMover` is now more parsimonious about its fee budget when it splits moved funding attempts. | ||
- Avoid making multiple channels to nodes with the same IP bin. | ||
- Fix MacOS compile. | ||
- Use `dig -v` to check for `dig` install, instead of `dig localhost`, as the latter may trigger a "real" lookup that will inevitably fail. | ||
|
||
0.10 Made of Explodium | ||
0.9A | ||
- Avoid `DELETE ... ORDER BY`, which might not be enabled on the SQLITE3 available on some systems. | ||
- Fix a roundoff error with command `id`s, which would lead to `clboss` eventually crashing after a few days or weeks. | ||
|
||
0.8 Facepalm of Doom | ||
0.7D | ||
- Fix latent `printf`-formatting bugs in `SendpayResultMonitor`, which would crash on 32-bit systems. | ||
|
||
0.7C | ||
- `FundsMover` now deletes its failing payments immediately instead of letting them languish in your db until the cleanup process gets to them. | ||
|
||
0.7B | ||
- 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. | ||
- 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. | ||
- Document `clboss-status` and `clboss-externpay` commands. | ||
- New commands `clboss-ignore-onchain` and `clboss-notice-onchain` let you temporarily manage onchain funds manually. | ||
- Change onchain fee judgment to use percentile based on the previous 2 weeks of feerates. | ||
- Support MacOS compilation, also checked FreeBSD compilation still works. | ||
- Correct calculation of spendable vs receivable in `NodeBalanceSwapper`. | ||
|
||
0.7A | ||
- Properly consider direction of flow when estimating capacities of nodes. | ||
- Properly rebalance channels greater than 42.94mBTC payment limit. | ||
- Use `payment_secret` in rebalances. | ||
- Work around a timing bug in Tor SOCKS5 implementation. | ||
- CLBOSS can now be started and stopped with the `lightningd` `plugin` command. | ||
- Do not use `proxy` if `always-use-proxy` is not `true`. | ||
- New `ChannelFinderByEarnedFee` module proposes peers of our most lucrative peers, to improve alternate routes to popular destinations. | ||
|
||
0.6 Nice Job Breaking It, Hero! | ||
0.5E | ||
- Remove busy-wait loop in `FeeModderBySize`. | ||
|
||
0.5D | ||
- Tone down `FundsMover` payment cleanup. | ||
- Batch up RPC socket response parsing. | ||
|
||
0.5C | ||
- `FundsMover` now has a backup process to clean up its payments. | ||
- `ChannelFinderByListpays` now ignores self-payments instead of possibly proposing self. | ||
- Optimize traversing JSON results for channel finders. | ||
- Reduce processing load when printing really long RPC logs. | ||
- Correctly handle sudden death of `lightningd` process. | ||
- Really, do not delay response to `init`, for reals. | ||
|
||
0.5B | ||
- Do not delay response to `init`. | ||
|
||
0.5A | ||
- Handle `rpc_command` specially for better RPC response times even when CLBOSS is busy. | ||
- Make compilable on FreeBSD. | ||
- Print more debug logs for internet connection monitoring. | ||
- Limit resources used by rebalancing attempts. | ||
- Long-running processes (channel finders, peer fee competitor measuring) now print progress reports. | ||
- Lowered execution priority of RPC socket reading and parsing, hopefully this will make us more responsive to our hooks. | ||
|
||
0.4 Failed a Spot Check | ||
0.3B | ||
- `ChannelFinderByPopularity` now reduces its participation instead of not participating if we have many channels already. | ||
- Channel finders now ensure they only run once even if multiple triggers occur while they are running. | ||
|
||
0.3A | ||
- Fixed missing initializations and some checks. | ||
- Fixed build errors in Debian. | ||
|
||
0.2 TV Tropes Will Ruin Your Life | ||
|
||
0.1A Initial Alpha Release | ||
|
||
Local Variables: | ||
mode: markdown | ||
End: |
Oops, something went wrong.