Commit graph

12 commits

Author SHA1 Message Date
Ken Sedgwick
c130d9b454
EarningsTracker: attribute rebalances from the move response, not a requester-keyed map
Completed rebalances were correlated back to their (source,
destination) through an in-memory map keyed only by the
RequestMoveFunds requester pointer. When one rebalancer issues several
moves at once they share a single requester (EarningsRebalancer uses
its module pointer; JitRebalancer uses nullptr), so each request
overwrote the previous map entry. As the moves completed, the first
response consumed and erased the shared entry -- booking against
whatever pair happened to be written last -- and every later response,
including the actually-successful one, hit the not-in-our-table path
and was silently dropped.

Effect: rebalance spend and volume were under-counted and sometimes
mis-attributed to the wrong peer. That also starved the
EarningsRebalancer refusing-to-throw-good-money-after-bad guard of
accurate expenditure data. JIT-dominated periods looked fine only
because those moves complete one at a time and rarely overlap; an
EarningsRebalancer-dominated period booked almost nothing.

Fix: ResponseMoveFunds now carries source and destination
directly. FundsMover/Runner populates them and EarningsTracker books
the move straight from the response. The requester-keyed pendings map,
the RequestMoveFunds subscription, and request_move_funds are
removed. This mirrors the existing XRebalanceAttribution path, which
already passes source/destination in its message.

Tests: ResponseMoveFunds constructions updated across the rebalancer
and earnings tests; test_earningstracker now issues two moves under
the same requester and asserts both are booked and correctly
attributed -- a regression guard for the collision. Full suite 85/85.
2026-06-23 14:12:04 -07:00
Ken Sedgwick
d57277d80a
remove dead code, if by_node is set, node_id must be empty 2026-01-22 11:09:08 -08:00
Ken Sedgwick
cd2fadf80a
add "all" (by_node) mode to clboss-earnings-history API 2026-01-22 11:09:08 -08:00
Ken Sedgwick
9aeb29c541 Add associated primary volume (forwarded and rebalanced) to EarningsTracker
Addresses ([#229])

This allows effective feerates (PPM) to be computed for earnings and
expenses.

This PR updates the schema automatically.  Downgrading to previous
will require manual DB migration (but is possible).  Downgrade
commands are in a comment in EarningsTracker.c
2024-09-25 13:23:04 -05:00
Ken Sedgwick
1bd144a0f8 add clboss-recent-earnings and clboss-earnings-history 2024-09-25 13:23:04 -05:00
Ken Sedgwick
7000f970cb Upgrade EarningsTracker to time bucket schema, use old semantics
This commit modifies the schema of EarningsTracker to allow storing
and accessing earning and expenditure data in specific time ranges.

All existing strategies and reports still use all data from all time
so this PR should not change any balancing behavior.

After we've run w/ this for a while we'll have time-based data
collected and can evaluate how to improve the strategies.
2024-09-25 13:23:04 -05:00
Ken Sedgwick
65ce91578e add EarningsTracker::bucket_time quantizer and unit tests 2024-09-25 13:23:04 -05:00
Ken Sedgwick
781c4afb80 add get_now() and mock_get_now() to EarningsTracker and test_earningstracker
A time source is needed for upcoming time buckets change.
2024-09-25 13:23:04 -05:00
Ken Sedgwick
2c0dae5cd6 Add totals to clboss-status offchain_earnings_tracker 2024-08-08 13:42:52 -07:00
ZmnSCPxj jxPCSnmZ
18d1a09e9f Boss/Mod/EarningsTracker.cpp: Show offchain earnings v expenditure judgments in clboss-status. 2021-01-01 01:47:07 +00:00
ZmnSCPxj jxPCSnmZ
41bd7bc6af *: Silence clang warnings. 2020-11-02 19:02:35 +08:00
ZmnSCPxj jxPCSnmZ
0aad85d430 Boss/Mod/EarningsTracker.cpp: Module to keep track of fee earnings, for use with rebalancing decisions. 2020-10-23 23:48:07 +08:00