The only time underscores aren't special in Markdown is when they appear
in preformatted text. We have gotten away with not escaping underscores
where an asterisk-enclosed span or the paragraph ends before the next
underscore appears, but this is fragile and bad practice. Conversely,
there are many places where we have not escaped underscores but needed
to.
Escape all underscores that do not appear in preformatted blocks or
preformatted spans and are not themselves delineating emphasized spans.
The changes in this commit are exactly the result of executing the
following Bash code:
```bash
e=':x;' # begin loop
e+='s/^' # anchor match at beginning of line
e+='(' # begin capturing subexpression
e+='(' # begin list of alternatives
e+='[^`_\\]|' # any mundane character, or
e+='`([^`\\]|\\.)*`|' # backtick-enclosed span, or
e+='\b_|_\b|' # underscore at boundary, or
e+='\\.' # backslash-escaped character
e+=')*' # any number of the preceding alternatives
e+=')' # end capturing subexpression
e+='\B_\B/\1\\_/;' # escape non-formatting underscore
e+='tx' # repeat loop if we escaped an underscore
escape_underscores=(
sed
# use extended regular expressions
-E
# skip over indented blocks (following an empty line)
-e '/^$/{:i;n;/^( {4,}|\t)/bi}'
# skip over preformatted blocks
-e '/^\s*```/,/^\s*```/{p;d}'
# skip over generated sections
-e '/GENERATE-FROM-SCHEMA-START/,/GENERATE-FROM-SCHEMA-END/{p;d}'
# escape underscores
-e "${e}"
)
"${escape_underscores[@]}" -i doc/*.[0-9].md
```
Changelog-None
3.7 KiB
lightning-bkpr-channelsapy -- Command to list stats on channel earnings
SYNOPSIS
bkpr-channelsapy [start_time] [end_time]
DESCRIPTION
The bkpr-channelsapy RPC command lists stats on routing income, leasing income, and various calculated APYs for channel routed funds.
The start_time is a UNIX timestamp (in seconds) that filters events after the provided timestamp. Defaults to zero.
The end_time is a UNIX timestamp (in seconds) that filters events up to and at the provided timestamp. Defaults to max-int.
RETURN VALUE
On success, an object containing channels_apy is returned. It is an array of objects, where each object contains:
- account (string): The account name. If the account is a channel, the channel_id. The 'net' entry is the rollup of all channel accounts
- routed_out_msat (msat): Sats routed (outbound)
- routed_in_msat (msat): Sats routed (inbound)
- lease_fee_paid_msat (msat): Sats paid for leasing inbound (liquidity ads)
- lease_fee_earned_msat (msat): Sats earned for leasing outbound (liquidity ads)
- pushed_out_msat (msat): Sats pushed to peer at open
- pushed_in_msat (msat): Sats pushed in from peer at open
- our_start_balance_msat (msat): Starting balance in channel at funding. Note that if our start ballance is zero, any _initial field will be omitted (can't divide by zero)
- channel_start_balance_msat (msat): Total starting balance at funding
- fees_out_msat (msat): Fees earned on routed outbound
- utilization_out (string): Sats routed outbound / total start balance
- utilization_in (string): Sats routed inbound / total start balance
- apy_out (string): Fees earned on outbound routed payments / total start balance for the length of time this channel has been open amortized to a year (APY)
- apy_in (string): Fees earned on inbound routed payments / total start balance for the length of time this channel has been open amortized to a year (APY)
- apy_total (string): Total fees earned on routed payments / total start balance for the length of time this channel has been open amortized to a year (APY)
- fees_in_msat (msat, optional): Fees earned on routed inbound
- utilization_out_initial (string, optional): Sats routed outbound / our start balance
- utilization_in_initial (string, optional): Sats routed inbound / our start balance
- apy_out_initial (string, optional): Fees earned on outbound routed payments / our start balance for the length of time this channel has been open amortized to a year (APY)
- apy_in_initial (string, optional): Fees earned on inbound routed payments / our start balance for the length of time this channel has been open amortized to a year (APY)
- apy_total_initial (string, optional): Total fees earned on routed payments / our start balance for the length of time this channel has been open amortized to a year (APY)
- apy_lease (string, optional): Lease fees earned over total amount leased for the lease term, amortized to a year (APY). Only appears if channel was leased out by us
AUTHOR
niftynei niftynei@gmail.com is mainly responsible.
SEE ALSO
lightning-bkpr-listincome(7), lightning-bkpr-listfunds(7), lightning-bkpr-listaccountevents(7), lightning-bkpr-dumpincomecsv(7), lightning-listpeers(7).
RESOURCES
Main web site: https://github.com/ElementsProject/lightning