Skip to content

Commit

Permalink
Rename to CHANGELOG.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ksedgwic committed Oct 31, 2024
1 parent 97e3885 commit 66cf025
Show file tree
Hide file tree
Showing 2 changed files with 326 additions and 325 deletions.
325 changes: 325 additions & 0 deletions CHANGELOG.md
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:
Loading

0 comments on commit 66cf025

Please sign in to comment.