lnd.xprv/htlcswitch
Olaoluwa Osuntokun 5f0fad85be multi: address lingering TODO by no longer wiping out local HTLCs on remote close
In this commit, we fix a lingering TOOD statement in the channel arb.
Before this commitment, we would simply wipe our our local HTLC set of
the HTLC set that was on the remote commitment transaction on force
close. This was incorrect as if our commitment transaction had an HTLC
that the remote commitment didn't, then we would fail to cancel that
back, and cause both channels to time out on chain.

In order to remedy this, we introduce a new `HtlcSetKey` struct to track
all 3 possible in-flight set of HTLCs: ours, theirs, and their pending.

We also we start to tack on additional data to all the unilateral close
messages we send to subscribers. This new data is the CommitSet, or the
set of valid commitments at channel closure time. This new information
will be used by the channel arb in an upcoming commit to ensure it will
cancel back HTLCs in the case of split commitment state.

Finally, we start to thread through an optional *CommitSet to the
advanceState method. This additional information will give the channel
arb addition information it needs to ensure it properly cancels back
HTLCs that are about to time out or may time out depending on which
commitment is played.

Within the htlcswitch pakage, we modify the `SignNextCommitment` method
to return the new set of pending HTLCs for the remote party's commitment
transaction and `ReceiveRevocation` to return the latest set of
commitment transactions on the remote party's commitment as well. This
is a preparatory change which is part of a larger change to address a
lingering TODO in the cnct.

Additionally, rather than just send of the set of HTLCs after the we
revoke, we'll also send of the set of HTLCs after the remote party
revokes, and we create a pending commitment state for it.
2019-05-27 14:34:13 -07:00
..
hodl htlcswitch/hodl: switch from debug tag to dev 2018-10-05 13:04:45 +09:00
circuit_map.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
circuit_test.go multi: update to go 1.11 gofmt 2018-10-07 14:37:38 +09:00
circuit.go multi: fix various typos in comments 2018-09-07 06:51:49 +02:00
control_tower_test.go htlcswitch/control_tower_test: test strict and non-strict ctrltwrs 2018-08-21 19:23:25 -07:00
control_tower.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
decayedlog_test.go htlcswitch/decayedlog_test: fix bug in gc unit test 2018-06-27 14:40:28 -07:00
decayedlog.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
failure.go htlcswitch: add new EncryptMalformedError method to ErrorEncrypter 2019-04-30 20:13:35 -07:00
interfaces.go cnct+htlcswitch+invoices: move invoice parameter check out of link 2019-05-15 14:42:12 +02:00
iterator.go multi: sort import paths with gofmt 2018-08-02 18:20:49 -07:00
link_test.go multi: address lingering TODO by no longer wiping out local HTLCs on remote close 2019-05-27 14:34:13 -07:00
link.go multi: address lingering TODO by no longer wiping out local HTLCs on remote close 2019-05-27 14:34:13 -07:00
linkfailure.go htlcswitch/linkfailure: define LinkFailureError 2018-05-25 06:58:18 +02:00
log.go multi: init subsystem loggers via build pkg 2018-10-05 13:04:45 +09:00
mailbox_test.go htlcswitch/mailbox_test: add orchestrator pending/live test 2018-05-09 16:07:52 -07:00
mailbox.go multi: 64bit aligment of atomic vars on arm/x86-32 2018-06-04 20:02:34 -07:00
mock.go cnct+htlcswitch+invoices: move invoice parameter check out of link 2019-05-15 14:42:12 +02:00
packet.go htlcswitch: for UpdateFailMalformedHTLC packets mark fail as needing conversion 2019-04-30 20:13:34 -07:00
payment_result.go htlcswitch/switch+payment_result: define networkResult, extractResult 2019-05-16 23:56:12 +02:00
queue_test.go htlcswitch: Remove obsolete fields from htlcPacket. 2017-12-14 17:53:58 -08:00
queue.go htlcswitch: ensure the packet queue exits on stop 2018-06-08 13:51:37 -07:00
sequencer.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
switch_test.go htlcswitch+router: move deobfuscator creation to GetPaymentResult call 2019-05-16 23:56:12 +02:00
switch.go htlcswitch+router: move deobfuscator creation to GetPaymentResult call 2019-05-16 23:56:12 +02:00
test_utils.go htlcswitch+router: move deobfuscator creation to GetPaymentResult call 2019-05-16 23:56:12 +02:00