Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
C-Otto committed Jul 29, 2021
1 parent 8d3fb34 commit 4526f46
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 32 deletions.
57 changes: 35 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,9 @@ Please make sure to set realistic fee rates, which at best are already known to

### Command line arguments
```
usage: rebalance.py [-h] [--lnddir LNDDIR] [--grpc GRPC] [-l] [--show-all | --show-only CHANNEL] [-o | -i] [-f CHANNEL] [-t CHANNEL] [-a AMOUNT | -p PERCENTAGE]
[--min-amount MIN_AMOUNT] [--min-local MIN_LOCAL] [--min-remote MIN_REMOTE] [-e EXCLUDE] [--reckless]
usage: rebalance.py [-h] [--lnddir LNDDIR] [--grpc GRPC] [-l] [--show-all | --show-only CHANNEL | -c] [-o | -i]
[-f CHANNEL] [-t CHANNEL] [-a AMOUNT | -p PERCENTAGE] [--min-amount MIN_AMOUNT]
[--min-local MIN_LOCAL] [--min-remote MIN_REMOTE] [-e EXCLUDE] [--reckless]
[--fee-factor FEE_FACTOR | --fee-limit FEE_LIMIT | --fee-ppm-limit FEE_PPM_LIMIT]
optional arguments:
Expand All @@ -254,43 +255,55 @@ list candidates:
-l, --list-candidates
list candidate channels for rebalance
--show-all also show channels with zero rebalance amount
--show-only SHOW_ONLY
only show information about the given channel
--show-only CHANNEL only show information about the given channel
-c, --compact Shows a compact list of all channels, one per line including ID, inbound/outbound
liquidity, and alias
-o, --outgoing lists channels with less than 1,500,00 satoshis inbound liquidity
-i, --incoming (default) lists channels with less than 1,500,00 satoshis outbound liquidity
rebalance:
Rebalance a channel. You need to specify at least the 'from' channel (-f) or the 'to' channel (-t).
-f CHANNEL, --from CHANNEL
Channel ID of the outgoing channel (funds will be taken from this channel). You may also specify the ID using the colon notation (12345:12:1), or the x
notation (12345x12x1). You may also use -1 to choose a random candidate.
Channel ID of the outgoing channel (funds will be taken from this channel). You may also
specify the ID using the colon notation (12345:12:1), or the x notation (12345x12x1).
You may also use -1 to choose a random candidate.
-t CHANNEL, --to CHANNEL
Channel ID of the incoming channel (funds will be sent to this channel). You may also specify the ID using the colon notation (12345:12:1), or the x
notation (12345x12x1). You may also use -1 to choose a random candidate.
Channel ID of the incoming channel (funds will be sent to this channel). You may also
specify the ID using the colon notation (12345:12:1), or the x notation (12345x12x1).
You may also use -1 to choose a random candidate.
-a AMOUNT, --amount AMOUNT
Amount of the rebalance, in satoshis. If not specified, the amount computed for a perfect rebalance will be used (up to the maximum of 4,294,967
satoshis)
Amount of the rebalance, in satoshis. If not specified, the amount computed for a
perfect rebalance will be used (up to the maximum of 4,294,967 satoshis)
-p PERCENTAGE, --percentage PERCENTAGE
Set the amount to a percentage of the computed amount. As an example, if this is set to 50, half of the computed amount will be used. See --amount.
Set the amount to a percentage of the computed amount. As an example, if this is set to
50, half of the computed amount will be used. See --amount.
--min-amount MIN_AMOUNT
(Default: 10,000) If the given or computed rebalance amount is below this limit, nothing is done.
(Default: 10,000) If the given or computed rebalance amount is below this limit, nothing
is done.
--min-local MIN_LOCAL
(Default: 1,000,000) Ensure that the channels have at least this amount as outbound liquidity.
(Default: 1,000,000) Ensure that the channels have at least this amount as outbound
liquidity.
--min-remote MIN_REMOTE
(Default: 1,000,000) Ensure that the channels have at least this amount as inbound liquidity.
(Default: 1,000,000) Ensure that the channels have at least this amount as inbound
liquidity.
-e EXCLUDE, --exclude EXCLUDE
Exclude the given channel ID as the outgoing channel (no funds will be taken out of excluded channels)
--reckless Allow rebalance transactions that are not economically viable. You might also want to set --min-local 0 and --min-local 0. If set, you also need to set
--amount and either --fee-limit or --fee-ppm-limit.
Exclude the given channel ID as the outgoing channel (no funds will be taken out of
excluded channels)
--reckless Allow rebalance transactions that are not economically viable. You might also want to
set --min-local 0 and --min-local 0. If set, you also need to set --amount and either
--fee-limit or --fee-ppm-limit.
--fee-factor FEE_FACTOR
(default: 1.0) Compare the costs against the expected income, scaled by this factor. As an example, with --fee-factor 1.5, routes that cost at most
150% of the expected earnings are tried. Use values smaller than 1.0 to restrict routes to only consider those earning more/costing less. This factor
is ignored with --reckless.
(default: 1.0) Compare the costs against the expected income, scaled by this factor. As
an example, with --fee-factor 1.5, routes that cost at most 150% of the expected
earnings are tried. Use values smaller than 1.0 to restrict routes to only consider
those earning more/costing less. This factor is ignored with --reckless.
--fee-limit FEE_LIMIT
If set, only consider rebalance transactions that cost up to the given number of satoshis.
If set, only consider rebalance transactions that cost up to the given number of
satoshis.
--fee-ppm-limit FEE_PPM_LIMIT
If set, only consider rebalance transactions that cost up to the given number of satoshis per 1M satoshis sent.
If set, only consider rebalance transactions that cost up to the given number of
satoshis per 1M satoshis sent.
```

## Contributing
Expand Down
24 changes: 14 additions & 10 deletions rebalance.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,11 @@ def list_channels_compact(self):
reverse=False
)
for candidate in candidates:
print(f"{format_boring_string(candidate.chan_id)} | {format_amount_green(get_local_available(candidate), 11)} | {format_amount(get_remote_available(candidate), 11)} | {format_alias(self.lnd.get_node_alias(candidate.remote_pubkey))}")
id_formatted = format_boring_string(candidate.chan_id)
local_formatted = format_amount_green(get_local_available(candidate), 11)
remote_formatted = format_amount(get_remote_available(candidate), 11)
alias_formatted = format_alias(self.lnd.get_node_alias(candidate.remote_pubkey))
print(f"{id_formatted} | {local_formatted} | {remote_formatted} | {alias_formatted}")

def start(self):
if self.arguments.list_candidates and self.arguments.show_only:
Expand All @@ -194,7 +198,7 @@ def start(self):
self.show_channel(channel)
sys.exit(0)

if self.arguments.listchannelscompact:
if self.arguments.listcompact:
self.list_channels_compact()
sys.exit(0)

Expand Down Expand Up @@ -296,7 +300,7 @@ def main():
first_hop_channel_id = vars(arguments)["from"]
last_hop_channel_id = arguments.to

if not arguments.listchannelscompact and not arguments.list_candidates and last_hop_channel_id is None and first_hop_channel_id is None:
if not arguments.listcompact and not arguments.list_candidates and last_hop_channel_id is None and first_hop_channel_id is None:
argument_parser.print_help()
sys.exit(1)

Expand All @@ -317,13 +321,6 @@ def get_argument_parser():
dest="grpc",
help="(default localhost:10009) lnd gRPC endpoint",
)
parser.add_argument(
"-cl",
"--compact-list",
action="store_true",
dest="listchannelscompact",
help="Shows a compact list of all channels, one per line including id, inbound/outbound liquidity and alias",
)
list_group = parser.add_argument_group(
"list candidates", "Show the unbalanced channels."
)
Expand All @@ -347,6 +344,13 @@ def get_argument_parser():
metavar="CHANNEL",
help="only show information about the given channel",
)
show_options.add_argument(
"-c",
"--compact",
action="store_true",
dest="listcompact",
help="Shows a compact list of all channels, one per line including ID, inbound/outbound liquidity, and alias",
)

direction_group = list_group.add_mutually_exclusive_group()
direction_group.add_argument(
Expand Down

0 comments on commit 4526f46

Please sign in to comment.