SomberNight
adbfb2dcc8
lnworker.pay_to_node: (fix) pass correct total_msat to pay_to_route
4 years ago
SomberNight
920e1e94fa
kivy: InvoiceDialog: make LN invoice QR code scannable
Don't show the text and the QR code together, only the QR code:
the text takes up too much space, which make the QR hard to scan.
4 years ago
SomberNight
1aec982b27
kivy: SendScreen: reliably show LN payment attempt progress for invoice
4 years ago
ThomasV
7ca64ebbd8
fix #7078
4 years ago
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
4 years ago
ThomasV
3fa1aed8cd
add unit test for basic mpp
4 years ago
ThomasV
ca6ecd56f2
fix route for non-trampoline MPP
4 years ago
ThomasV
1adde4c54a
qt channels_list: use monospace font for channel capacity
4 years ago
ThomasV
6cf79dcfb2
qt: update all tabs when base_unit changes
4 years ago
ThomasV
222c70ada6
qt swap_dialog: use a single button to toggle direction
4 years ago
ThomasV
51f3c613a5
(minor) fix typos and indentation
4 years ago
SomberNight
44059ec116
lnpeer: more detailed logging in maybe_fulfill_htlc
4 years ago
SomberNight
9310e9023e
test_lnpeer: add test: multihop payment that routes around failure
This would have caught the overpayment bug fixed in
693583edc5
4 years ago
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.
4 years ago
SomberNight
4445cef033
lnutil: turn global forwarding fee params into Channel attributes
useful for unit testing, and it is the conceptually correct thing anyway
4 years ago
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
4 years ago
ThomasV
2da90add8f
maybe_fulfill_htlc: add failure reason to logs
4 years ago
ThomasV
693583edc5
lnworker: amount passed in HtlcLog must be without fees
4 years ago
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.
4 years ago
SomberNight
6f894b9f88
_calc_routing_hints_for_invoice: also incl chans < invoice amount
now that we can receive MPP
4 years ago
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)
4 years ago
SomberNight
b3b87555dc
qt/kivy: lightning_tx_dialog: show LN invoice
4 years ago
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.
4 years ago
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
4 years ago
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.
4 years ago
SomberNight
7d7dcf0795
qt/kivy ChannelsList: if node alias is unknown, display node id
instead of "unknown"
4 years ago
SomberNight
dd37151d65
qt ChannelsList: (trivial) format_fields should not know column order
4 years ago
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)
4 years ago
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}")
```
4 years ago
SomberNight
b83f7159a9
bech32: around 5% speedup for bech32_decode
useful for lnaddr.lndecode
4 years ago
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}")
```
4 years ago
SomberNight
2b693d3498
tests: fix test_lnpeer.test_payment_race
broke in b6b13217b4
see changes to lnworker.htlc_fulfilled
4 years ago
ThomasV
bc1ec6ac34
Qt: fix running GUI offline
4 years ago
ThomasV
5175a97671
test_payment_race: increase delay
4 years ago
ThomasV
f32d49b8ca
revert 'keep invoice INFLIGHT', check HTLCs before payment attempt
4 years ago
ThomasV
38652cffb0
fix test_lnpeer (follow-up prev commit)
4 years ago
ThomasV
b6b13217b4
lnworker: keep invoice status INFLIGHT as long as HTLCs are inflight
4 years ago
SomberNight
2f223cdf46
qt channels dialog: fix for channel backups
4 years ago
SomberNight
d85e910262
logging: eliminate "fee_estimates" log spam
only log fee estimates if they changed, instead of ~10 times per minute
4 years ago
ThomasV
7f61f22857
MPP receive: allow payer to retry after mpp timeout
4 years ago
ghost43
0ce6adffcc
Merge pull request #6968 from HardCorePawn/issue6664
Added fiat fee estimate to Advanced Preview
4 years ago
SomberNight
f9f49daad7
tx dialog: uniform high fee warnings between GUIs
4 years ago
SomberNight
fc3009918c
follow-up prev: some clean-up
4 years ago
hcp
e01a2014b1
qt tx dialog: also display fiat amounts
4 years ago
SomberNight
84326cf1f7
qt tx dialog: add legend for input/output colouring
based on e1d70bcd98
4 years ago
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
4 years ago
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.)
4 years ago
SomberNight
4c36c45664
qt bump fee: add "advanced" button, allow choosing strategy
4 years ago
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).
4 years ago
SomberNight
8fe7d750f7
qt: move RBF dialog out of main_window.py into its own file
4 years ago