Skip to content

Commit 66cf025

Browse files
committed
Rename to CHANGELOG.md
1 parent 97e3885 commit 66cf025

File tree

2 files changed

+326
-325
lines changed

2 files changed

+326
-325
lines changed

Diff for: CHANGELOG.md

+325
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,325 @@
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

Comments
 (0)