SomberNight
944e4f0ba0
implement data_loss_protect
...
so that we can spend their_ctx_to_remote even when we lost our state
but have an old backup
2019-08-20 09:03:12 +02:00
SomberNight
fdf8d8609b
lnpeer: make feature-bit testing easier
...
so that we can always test like: self.localfeatures & FEATURE_BIT_OPT
2019-08-20 09:03:12 +02:00
SomberNight
014b921393
lnpeer: reestablish_channel - replay un-acked local updates
...
Replay un-acked local updates (including commitment_signed) byte-for-byte.
If we have sent them a commitment signature that they "lost" (due to disconnect),
we need to make sure we replay the same local updates, as otherwise they could
end up with two (or more) signed valid commitment transactions at the same ctn.
Multiple valid ctxs at the same ctn is a major headache for pre-signing spending txns,
e.g. for watchtowers, hence we must ensure these ctxs coincide.
2019-08-20 09:03:12 +02:00
SomberNight
e81ae1921b
lnpeer: reestablish_channel - discard unsigned remote updates
2019-08-20 09:03:12 +02:00
SomberNight
c046f2cc1c
lnhtlc: move 'next_htlc_id' from ChannelConfig to lnhtlc log
2019-08-20 09:03:12 +02:00
SomberNight
c8b19aec2a
lnpeer: make reestablish_channel saner
...
clear up expectations about ctns
2019-08-20 09:03:12 +02:00
SomberNight
bdbc662a36
lnpeer: channel_reestablished is now a queue (instead of future)
2019-08-20 09:03:12 +02:00
SomberNight
0d84873a75
lnchannel: trivial clean-up
2019-08-20 09:03:12 +02:00
ThomasV
fa3eefa479
refactor a few lnchannel methods
2019-08-20 09:03:12 +02:00
ThomasV
f7c05f2602
Synchronize watchtower asynchronously:
...
- remove remote_commitment_to_be_revoked
- pass old ctns to lnsweep.create_sweeptxs_for_watchtower
- store the ctn of sweeptxs in sweepStore database
- request the highest ctn from sweepstore using get_ctn
- send sweeptxs asynchronously in LNWallet.sync_with_watchtower
2019-08-20 09:03:12 +02:00
SomberNight
f060e53912
(trivial) fix type annotation
2019-08-20 09:03:12 +02:00
SomberNight
087994e39a
lnchannel: move fee update logic to lnhtlc (and hopefully fix it)
2019-08-20 09:03:12 +02:00
ThomasV
3d7f7dfc82
revamp fee updates (draft)
2019-08-20 09:03:12 +02:00
SomberNight
7431aac5cd
lnhtlc: (fix) was locking in too many updates during commit/revoke
2019-08-20 09:03:12 +02:00
ThomasV
b55f9e9e6a
Do not route through channels for which we did not receive
...
both updates, because this often means one of the nodes is
offline.
2019-08-20 09:03:12 +02:00
ThomasV
2be68ac4d2
Use one LNWatcher instance per wallet
2019-08-20 09:03:12 +02:00
ThomasV
a8ce8109be
Perform breach remedy without sweepstore:
...
- add functions to lnsweep
- lnworker: analyze candidate ctx and htlc_tx
- watchtower will be optional
- add test for breach remedy with spent htlcs
- save tx name as label
2019-08-20 09:03:12 +02:00
ThomasV
f2d58d0e3f
optimize channel_db:
...
- use python objects mirrored by sql database
- write sql to file asynchronously
- the sql decorator is awaited in sweepstore, not in channel_db
2019-08-20 09:03:12 +02:00
ThomasV
06b5299b0f
comment out convert, add logging statement
2019-08-20 09:03:12 +02:00
SomberNight
7e8be3d2e7
lnpeer: some exception handling clean up
...
main_loop should dump traces of unexpected exceptions to log.
Coroutines/functions invoked inside main_loop should simply propagate it
up the chain.
Typical exceptions are handled in handle_disconnect without dumping the trace.
2019-08-20 09:03:12 +02:00
ThomasV
70cd29f9e1
GUI refactoring for Kivy and lightning.
...
This also touches Qt and wallet code.
2019-08-20 09:03:12 +02:00
ThomasV
67f1ade798
send data_loss_protect fields if we support it
2019-08-20 09:03:12 +02:00
ThomasV
9eddb9844c
on_commitment_signed: distinguish between exceptions
2019-08-20 09:03:11 +02:00
SomberNight
69bffac86a
lnhtlc: fix adding htlc between sending commitment_signed and receiving revoke_and_ack
2019-08-20 09:03:11 +02:00
ThomasV
7be4cdaf18
redeem htlcs:
...
- fix bug in lnsweep: lnwatcher transactions were indexed by prev_txid
- add test for breach remedy with unsettled htlcs
- add timeout option to lnpay, and replace DO_NOT_SETTLE with SETTLE_DELAY
so that we can read intermediate commitment tx in regtest
2019-08-20 09:03:11 +02:00
SomberNight
acbb458ef7
set default to_self_delay to 1 day
2019-08-20 09:03:11 +02:00
SomberNight
6d8c605307
move lnworker.first_block to constants
2019-08-20 09:03:11 +02:00
SomberNight
a0764c017c
lnpeer: process gossip in chunks
2019-08-20 09:03:11 +02:00
ThomasV
6d9ef29690
redo LNWorker pay:
...
- wait until htlc has been fulfilled
- raise if htlc is not fulfilled
- return boolean success
- try multiple paths in GUI
2019-08-20 09:03:11 +02:00
ThomasV
a5570d94f3
channel blacklist: minor fix
2019-08-20 09:03:11 +02:00
ThomasV
3c0df28c98
do not include 'force_closing' in channel states, because it is not part of the peer protocol
2019-08-20 09:03:11 +02:00
ThomasV
eb4e6bb0de
improve filter_channel_updates
...
blacklist channels that do not really get updated
2019-08-20 09:03:11 +02:00
ThomasV
f4b3d7627d
query_short_channel_ids: use Event instead of Lock
2019-08-20 09:03:11 +02:00
ThomasV
d30e894aaf
fix: add_channel_update
2019-08-20 09:03:11 +02:00
ThomasV
b055eeace2
prune channels older than two weeks from database
2019-08-20 09:03:11 +02:00
ThomasV
522ce5bb9f
verify channel updates in peer's TaskGroup
2019-08-20 09:03:11 +02:00
ThomasV
308dc6aa6b
use a single queue for gossip messages, so that they are processed in the correct order
2019-08-20 09:03:11 +02:00
ThomasV
e68f318b12
verify node and channel announcements before entering sql lock
2019-08-20 09:03:11 +02:00
SomberNight
fbafc77f01
lnpeer query_short_channel_ids: BOLT-07 says ids must be sorted
...
this is why most remote peers were disconnecting upon receiving this msg
2019-08-20 09:03:11 +02:00
SomberNight
afc5717cf0
lnpeer reply_channel_range: handle lnd
2019-08-20 09:03:11 +02:00
ThomasV
0e42fd9f17
parallelize short_channel_id requests
2019-08-20 09:03:11 +02:00
ThomasV
1011245c5e
LNGossip: sync channel db using query_channel_range
2019-08-20 09:03:11 +02:00
SomberNight
cc57da704b
logging: adapt lightning branch to logging changes
2019-08-20 09:03:11 +02:00
ThomasV
730be17aba
Use separate lightning nodes for gossip and channel operations.
2019-08-20 09:03:11 +02:00
ThomasV
dac686b11d
minor fix
2019-08-20 09:03:11 +02:00
ThomasV
796f199a5b
follow-up prev commit
2019-08-20 09:03:11 +02:00
ThomasV
a6469904ee
fix verify_sig_for_channel_update: use raw message
2019-08-20 09:03:11 +02:00
ThomasV
407114d3cc
lnpeer:
...
- disable option data_loss_protect
- disable query_short_channel_ids
- increase timeouts in pay
2019-08-20 09:03:11 +02:00
ThomasV
f0ac81419c
increase timeout in open_channel
2019-08-20 09:03:11 +02:00
ThomasV
5eab60621d
lnpeer:
...
- send data_loss_protect fields with channel_reestablish
- close connection if we receive an unknown channel_reestablish
- log all exceptions that make us close a connection
- formatting
2019-08-20 09:03:11 +02:00