Zhen Zhang
7 years ago
committed by
Christian Decker
4 changed files with 58 additions and 33 deletions
@ -1,32 +0,0 @@ |
|||||
#! /bin/sh -e |
|
||||
# A terrible script to make a payment. |
|
||||
|
|
||||
if [ $# -ne 3 ]; then |
|
||||
echo "Usage: <destination-id> <amount-in-milli-satoshi> <payment-hash>" >&2 |
|
||||
exit 1 |
|
||||
fi |
|
||||
DEST="$1" |
|
||||
AMOUNT="$2" |
|
||||
PHASH="$3" |
|
||||
|
|
||||
if ROUTE=`cli/lightning-cli getroute $DEST $AMOUNT 1`; then |
|
||||
# Strip down to raw array. |
|
||||
ROUTE=`echo $ROUTE | sed 's/^{ "route" : \(.*\) }$/\1/'` |
|
||||
# Get first amount. |
|
||||
PAID=`echo $ROUTE | tr , '\012' | sed -n 's/.*msatoshi[^0-9]*\([0-9]*\).*/\1/p' | head -n1` |
|
||||
echo -n "Paying fee $(($PAID - $AMOUNT)) on $AMOUNT ("`echo "scale=3; ($PAID - $AMOUNT) * 100 / $AMOUNT" | bc`"%). Send [Y/n]? " |
|
||||
read REPLY |
|
||||
case $REPLY in |
|
||||
""|y*|Y) |
|
||||
cli/lightning-cli sendpay "$ROUTE" "$PHASH" |
|
||||
exit |
|
||||
;; |
|
||||
*) |
|
||||
echo Not sending. |
|
||||
exit 1 |
|
||||
;; |
|
||||
esac |
|
||||
else |
|
||||
echo Routing failed >&2 |
|
||||
exit 1 |
|
||||
fi |
|
@ -0,0 +1,54 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
|
||||
|
import argparse |
||||
|
import os |
||||
|
import sys |
||||
|
from lightning import LightningRpc |
||||
|
|
||||
|
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) |
||||
|
parser.add_argument("bolt11_or_destination_id") |
||||
|
parser.add_argument("amount_in_milli_satoshi", default=None, type=int, nargs="?") |
||||
|
parser.add_argument("payment_hash", nargs="?") |
||||
|
args = parser.parse_args() |
||||
|
|
||||
|
|
||||
|
def default_configdir(): |
||||
|
home = os.getenv("HOME") |
||||
|
if home: |
||||
|
return os.path.join(home, ".lightning") |
||||
|
return "." |
||||
|
|
||||
|
|
||||
|
rpc_path = os.path.join(default_configdir(), "lightning-rpc") |
||||
|
ld = LightningRpc(rpc_path) |
||||
|
|
||||
|
assert len(args.bolt11_or_destination_id) > 2, "argument bolt11_or_destination_id is invalid" |
||||
|
prefix = args.bolt11_or_destination_id[:2] |
||||
|
|
||||
|
if prefix == "ln": |
||||
|
bolt11 = ld.decodepay(args.bolt11_or_destination_id) |
||||
|
id_ = bolt11["payee"] |
||||
|
payment_hash = bolt11["payment_hash"] |
||||
|
if "msatoshi" in bolt11: |
||||
|
amount = bolt11["msatoshi"] |
||||
|
else: |
||||
|
assert args.amount_in_milli_satoshi, "need argument amount_in_milli_satoshi" |
||||
|
amount = args.amount_in_milli_satoshi |
||||
|
else: |
||||
|
assert args.amount_in_milli_satoshi, "need argument amount_in_milli_satoshi" |
||||
|
assert args.payment_hash, "need argument payment_hash" |
||||
|
amount = args.amount_in_milli_satoshi |
||||
|
id_ = args.bolt11_or_destination_id |
||||
|
payment_hash = args.payment_hash |
||||
|
|
||||
|
route = ld.getroute(id_, amount, 1) |
||||
|
|
||||
|
fee = route["route"][0]["msatoshi"] - amount |
||||
|
|
||||
|
reply = input("Paying fee %s on amount %s (%.3f%%). Send [Y/n]?" % (fee, amount, fee / amount * 100.0)) |
||||
|
|
||||
|
if reply in ["y", "Y"]: |
||||
|
ld.sendpay(route["route"], payment_hash) |
||||
|
else: |
||||
|
print("Not sending.") |
||||
|
sys.exit(1) |
Loading…
Reference in new issue