ThomasV
7ca64ebbd8
fix #7078
2021-03-03 15:35:38 +01:00
SomberNight
95b7c976e0
lnrouter.get_distances: fix exception due to rare race
...
if the graph is being updated while the pathfinding is running,
channel_info might be None here
2021-03-03 14:10:57 +01:00
ThomasV
3fa1aed8cd
add unit test for basic mpp
2021-03-03 12:52:52 +01:00
ThomasV
ca6ecd56f2
fix route for non-trampoline MPP
2021-03-03 12:30:29 +01:00
ThomasV
1adde4c54a
qt channels_list: use monospace font for channel capacity
2021-03-03 11:20:24 +01:00
ThomasV
6cf79dcfb2
qt: update all tabs when base_unit changes
2021-03-03 11:19:41 +01:00
ThomasV
222c70ada6
qt swap_dialog: use a single button to toggle direction
2021-03-03 10:45:46 +01:00
ThomasV
51f3c613a5
(minor) fix typos and indentation
2021-03-03 10:03:29 +01:00
SomberNight
44059ec116
lnpeer: more detailed logging in maybe_fulfill_htlc
2021-03-02 18:53:08 +01:00
SomberNight
9310e9023e
test_lnpeer: add test: multihop payment that routes around failure
...
This would have caught the overpayment bug fixed in
693583edc5
2021-03-02 18:35:07 +01:00
SomberNight
750d8cfab5
lnworker: run create_route_for_payment end-to-end, incl private edges
...
We pass the private edges to lnrouter, and let it find routes end-to-end.
Previously the edge_cost heuristics didn't apply to the private edges
and we were just randomly picking one of the route hints and use that.
So e.g. cheaper private edges were not preferred, but they are now.
PathEdge now stores both start_node and end_node; not just end_node.
2021-03-02 18:00:31 +01:00
SomberNight
4445cef033
lnutil: turn global forwarding fee params into Channel attributes
...
useful for unit testing, and it is the conceptually correct thing anyway
2021-03-02 14:54:47 +01:00
ThomasV
259dacd56f
Trampoline MPP aggregation:
...
- trampoline node is the final recipient of MPP
- each trampoline receives a bucket of HTLCs
- if a HTLC from a bucket fails, wait for the entire bucket to fail
- move trampoline route and onion code into trampoline module
2021-03-02 14:28:15 +01:00
ThomasV
2da90add8f
maybe_fulfill_htlc: add failure reason to logs
2021-03-02 14:26:16 +01:00
ThomasV
693583edc5
lnworker: amount passed in HtlcLog must be without fees
2021-03-02 10:23:30 +01:00
SomberNight
06ea06f7d3
_calc_routing_hints_for_invoice: incl max 15 chans to avoid qr overflow
...
Prioritise channels that are likely to be able to receive the payment.
2021-03-01 21:55:41 +01:00
SomberNight
6f894b9f88
_calc_routing_hints_for_invoice: also incl chans < invoice amount
...
now that we can receive MPP
2021-03-01 21:51:17 +01:00
SomberNight
1139720b58
lnworker: fix handle_error_code_from_failed_htlc for private channels
...
if the last (private) edge of the route errors, we need to try other route hints (if any)
2021-03-01 21:26:05 +01:00
SomberNight
b3b87555dc
qt/kivy: lightning_tx_dialog: show LN invoice
2021-03-01 20:56:45 +01:00
SomberNight
c3ae1c0965
android build: (trivial) build arm64 apk first
...
Build the apk I use to test with first :P
This is also the one mentioned in the README copy-paste code snippets.
2021-03-01 20:45:52 +01:00
SomberNight
a9185b0846
follow-up prev
...
kivy infers the type of the property from the default value.
without this, it was converting the str(Decimal(x)) to float
2021-03-01 18:20:33 +01:00
SomberNight
6094f2751e
kivy channel dialog: fix unit of displayed feerate
...
The amount shown was in sat/kw, incorrectly labeled as sat/kbyte.
Show sat/vbyte instead.
2021-03-01 17:09:04 +01:00
SomberNight
7d7dcf0795
qt/kivy ChannelsList: if node alias is unknown, display node id
...
instead of "unknown"
2021-03-01 16:41:54 +01:00
SomberNight
dd37151d65
qt ChannelsList: (trivial) format_fields should not know column order
2021-03-01 16:28:18 +01:00
SomberNight
bf7129d57e
synchronizer/verifier: ensure fairness between wallets (follow-up)
...
follow-up to 4346d2fc76
It's not just about the Synchronizer, the Verifier should not starve other jobs either...
(previously I thought the Verifier is not too important as it only makes
requests if there are new txs; however with LNWatcher its progress is not persisted)
2021-03-01 13:08:01 +01:00
SomberNight
e0cfb2179d
bech32: another around 10% speedup for bech32_decode
...
turns out stdlib ord() is somewhat slow;
also, only lookup data chars once
benchmarked with:
```
import time
import electrum
from electrum.segwit_addr import bech32_decode
electrum.constants.set_testnet()
inv = "lntb4m1p00zfpppp597ely08ffhk8n3emeswukt0y3qfvt3sj3ufkhnaatlrswj2xvwuqsp5vu3ezu44ka8arvgda44yalysp3k3edlvg56cjkk5lvu4e4anmdssdq2v9ekgctnvscqzynxqyz5vq9qypqsqrzjqv8shunq4nda8mw2mpxhtz8v03wlgug7sln2yvqklxym35ayz3erqxct8vqqqcqqqqqqqqlgqqqqqqgq9qrzjqdxvvgt048y4htef7r63r4ha9kctz3d6l3za0053ahe597wgrkc4gxct8cqqqfsqqqqqqqlgqqqqqqgq9qrzjqwyx8nu2hygyvgc02cwdtvuxe0lcxz06qt3lpsldzcdr46my5epmjxct8vqqqdcqqqqqqqlgqqqqqqgq9qrzjqf56jn5txtqqtepnd0ahg0qg5m5mavfajsx403rem9wgu6rue0de7xct8vqqqtgqqqqqqqlgqqqq86qq9qrzjq027z73uyyl7fy8pkrpcn7x0el82pz3fw974p2052de4uz4j5lqqxx49tuqqqwgqqqqqqqqqqqqqqqqqpurzjqfj34n62wztqjxl59w4drxekg04rrrtf08mdestwhtky84ds7ja0yxct8sqqq3qqqqqqqqlgqqqqqqgq9qrzjqd872t5c5r5a8ssmwelpkdccsyn9mrr40rpp7khad4jr3kssxj9nvx49vgqqqnqqqqqqqqlgqqqq05qqgcxwu0ervh6atmqmqv7pmenhmc207gncyj0mcxedpwm8f56y2yl3qpq6mzjak37ddmeayd9unektmffv5rq8dvlpgq00rmmdalda73yhgqep0zuz"
def f():
for _ in range(10000):
addr = bech32_decode(inv, ignore_long_length=True)
t0 = time.time()
f()
t1 = time.time()
print(f"{t1-t0:.4f}")
```
2021-02-28 18:32:48 +01:00
SomberNight
b83f7159a9
bech32: around 5% speedup for bech32_decode
...
useful for lnaddr.lndecode
2021-02-28 16:53:21 +01:00
SomberNight
d7597d96d0
lnaddr: 15x speedup for lndecode
...
benchmarked with:
```
import time
import electrum
from electrum.lnaddr import lndecode
electrum.constants.set_testnet()
inv = "lntb4m1p00zfpppp597ely08ffhk8n3emeswukt0y3qfvt3sj3ufkhnaatlrswj2xvwuqsp5vu3ezu44ka8arvgda44yalysp3k3edlvg56cjkk5lvu4e4anmdssdq2v9ekgctnvscqzynxqyz5vq9qypqsqrzjqv8shunq4nda8mw2mpxhtz8v03wlgug7sln2yvqklxym35ayz3erqxct8vqqqcqqqqqqqqlgqqqqqqgq9qrzjqdxvvgt048y4htef7r63r4ha9kctz3d6l3za0053ahe597wgrkc4gxct8cqqqfsqqqqqqqlgqqqqqqgq9qrzjqwyx8nu2hygyvgc02cwdtvuxe0lcxz06qt3lpsldzcdr46my5epmjxct8vqqqdcqqqqqqqlgqqqqqqgq9qrzjqf56jn5txtqqtepnd0ahg0qg5m5mavfajsx403rem9wgu6rue0de7xct8vqqqtgqqqqqqqlgqqqq86qq9qrzjq027z73uyyl7fy8pkrpcn7x0el82pz3fw974p2052de4uz4j5lqqxx49tuqqqwgqqqqqqqqqqqqqqqqqpurzjqfj34n62wztqjxl59w4drxekg04rrrtf08mdestwhtky84ds7ja0yxct8sqqq3qqqqqqqqlgqqqqqqgq9qrzjqd872t5c5r5a8ssmwelpkdccsyn9mrr40rpp7khad4jr3kssxj9nvx49vgqqqnqqqqqqqqlgqqqq05qqgcxwu0ervh6atmqmqv7pmenhmc207gncyj0mcxedpwm8f56y2yl3qpq6mzjak37ddmeayd9unektmffv5rq8dvlpgq00rmmdalda73yhgqep0zuz"
def f():
for _ in range(100):
addr = lndecode(inv)
t0 = time.monotonic()
f()
t1 = time.monotonic()
print(f"{t1-t0:.4f}")
```
2021-02-28 16:26:15 +01:00
SomberNight
2b693d3498
tests: fix test_lnpeer.test_payment_race
...
broke in b6b13217b4
see changes to lnworker.htlc_fulfilled
2021-02-28 13:58:31 +01:00
ThomasV
bc1ec6ac34
Qt: fix running GUI offline
2021-02-28 13:34:24 +01:00
ThomasV
5175a97671
test_payment_race: increase delay
2021-02-28 09:43:46 +01:00
ThomasV
f32d49b8ca
revert 'keep invoice INFLIGHT', check HTLCs before payment attempt
2021-02-28 09:01:31 +01:00
ThomasV
38652cffb0
fix test_lnpeer (follow-up prev commit)
2021-02-27 20:51:19 +01:00
ThomasV
b6b13217b4
lnworker: keep invoice status INFLIGHT as long as HTLCs are inflight
2021-02-27 20:26:58 +01:00
SomberNight
2f223cdf46
qt channels dialog: fix for channel backups
2021-02-27 15:15:09 +01:00
SomberNight
d85e910262
logging: eliminate "fee_estimates" log spam
...
only log fee estimates if they changed, instead of ~10 times per minute
2021-02-27 12:27:26 +01:00
ThomasV
7f61f22857
MPP receive: allow payer to retry after mpp timeout
2021-02-27 11:48:14 +01:00
ghost43
0ce6adffcc
Merge pull request #6968 from HardCorePawn/issue6664
...
Added fiat fee estimate to Advanced Preview
2021-02-27 08:31:17 +00:00
SomberNight
f9f49daad7
tx dialog: uniform high fee warnings between GUIs
2021-02-26 19:02:24 +01:00
SomberNight
fc3009918c
follow-up prev: some clean-up
2021-02-26 16:44:07 +01:00
hcp
e01a2014b1
qt tx dialog: also display fiat amounts
2021-02-26 16:43:46 +01:00
SomberNight
84326cf1f7
qt tx dialog: add legend for input/output colouring
...
based on e1d70bcd98
2021-02-25 18:54:55 +01:00
ghost43
6fda9add28
Merge pull request #7026 from SomberNight/20210213_wallet_bumpfee
...
wallet: refactor bump_fee; add new strategy; change Qt dialog to have "advanced" button
2021-02-25 14:48:50 +00:00
SomberNight
d2019fd928
qt bump fee: rename "Final" checkbox to "Keep Replace-By-Fee enabled"
...
Now that the checkbox is hidden behind an advanced option, there is
no need to be brief about it, better to be explicit.
(terminology unchanged for kivy.)
2021-02-25 15:39:33 +01:00
SomberNight
4c36c45664
qt bump fee: add "advanced" button, allow choosing strategy
2021-02-25 15:39:29 +01:00
SomberNight
058d9ab6bb
wallet.bump_fee: add new strategy: decrease payment amounts
...
- Rename bump_fee "methods" to "strategies".
- Refactor strategies so that bump_fee can use any subset of them in any permutation.
- Adds a new strategy which decreases the payment outputs (instead of change).
2021-02-25 15:32:07 +01:00
SomberNight
8fe7d750f7
qt: move RBF dialog out of main_window.py into its own file
2021-02-25 15:32:03 +01:00
SomberNight
254f57bce5
lnpeer.maybe_fulfill_htlc: fix error case FINAL_INCORRECT_HTLC_AMOUNT
...
follow-up ef5a265449
2021-02-25 12:49:06 +01:00
SomberNight
31bdb5c344
lnpeer.maybe_fulfill_htlc: follow BOLTs re some errors
...
related: https://github.com/lightningnetwork/lightning-rfc/pull/608
2021-02-25 12:12:44 +01:00
ThomasV
61e7f7e75e
Merge pull request #7065 from SomberNight/20210224_mpp_recv_amt_sum
...
lnpeer: MPP recv: only fulfill htlc if amt sum exact-matches total_msat
2021-02-25 10:27:55 +01:00