MCPcopy Create free account
hub / github.com/ElementsProject/lightning / json_add_channel_apy

Function json_add_channel_apy

plugins/bkpr/channelsapy.c:262–386  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

260}
261
262void json_add_channel_apy(struct json_stream *res,
263 const struct channel_apy *apy)
264{
265 bool ok;
266 u32 blocks_elapsed;
267 double apy_result, utilization;
268 struct amount_msat total_fees, their_start_bal;
269
270 ok = amount_msat_sub(&their_start_bal, apy->total_start_bal,
271 apy->our_start_bal);
272 assert(ok);
273
274 json_object_start(res, NULL);
275
276 json_add_string(res, "account", apy->acct_name);
277
278 json_add_amount_msat(res, "routed_out_msat", apy->routed_out);
279 json_add_amount_msat(res, "routed_in_msat", apy->routed_in);
280 json_add_amount_msat(res, "lease_fee_paid_msat", apy->lease_out);
281 json_add_amount_msat(res, "lease_fee_earned_msat", apy->lease_in);
282 json_add_amount_msat(res, "pushed_out_msat", apy->push_out);
283 json_add_amount_msat(res, "pushed_in_msat", apy->push_in);
284
285 json_add_amount_msat(res, "our_start_balance_msat", apy->our_start_bal);
286 json_add_amount_msat(res, "channel_start_balance_msat",
287 apy->total_start_bal);
288
289 ok = amount_msat_add(&total_fees, apy->fees_in, apy->fees_out);
290 assert(ok);
291 json_add_amount_msat(res, "fees_out_msat", apy->fees_out);
292 json_add_amount_msat(res, "fees_in_msat", apy->fees_in);
293
294 /* utilization (out): routed_out/total_balance */
295 assert(!amount_msat_is_zero(apy->total_start_bal));
296 utilization = amount_msat_ratio(apy->routed_out, apy->total_start_bal);
297 json_add_string(res, "utilization_out",
298 tal_fmt(apy, "%.4f%%", utilization * 100));
299
300 if (!amount_msat_is_zero(apy->our_start_bal)) {
301 utilization = amount_msat_ratio(apy->routed_out,
302 apy->our_start_bal);
303 json_add_string(res, "utilization_out_initial",
304 tal_fmt(apy, "%.4f%%", utilization * 100));
305 }
306
307 /* utilization (in): routed_in/total_balance */
308 utilization = amount_msat_ratio(apy->routed_in, apy->total_start_bal);
309 json_add_string(res, "utilization_in",
310 tal_fmt(apy, "%.4f%%", utilization * 100));
311
312 if (!amount_msat_is_zero(their_start_bal)) {
313 utilization = amount_msat_ratio(apy->routed_in,
314 their_start_bal);
315 json_add_string(res, "utilization_in_initial",
316 tal_fmt(apy, "%.4f%%", utilization * 100));
317 }
318
319 /* Can't divide by zero */

Callers 1

getblockheight_doneFunction · 0.70

Calls 9

amount_msat_subFunction · 0.85
json_object_startFunction · 0.85
json_add_amount_msatFunction · 0.85
amount_msat_addFunction · 0.85
amount_msat_is_zeroFunction · 0.85
amount_msat_ratioFunction · 0.85
calc_apyFunction · 0.85
json_object_endFunction · 0.85
json_add_stringFunction · 0.50

Tested by

no test coverage detected