mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
lnwallet/channel: adds directionality htlc retributions
This commit also adds an incoming flag to HtlcRetribution struct to allow the breach arbiter to generate the appropriate witness based on the htlc's directionality. It also ensures that the size of the htlc retribution slice is now determined by the size of the number of htlcs present in the revoked snapshot, which fixes a minor bug that could lead to nil pointer deferences.
This commit is contained in:
parent
7ee7bf840a
commit
faf1d40bd0
@ -1032,6 +1032,12 @@ type HtlcRetribution struct {
|
||||
// OutPoint is the target outpoint of this HTLC pointing to the
|
||||
// breached commitment transaction.
|
||||
OutPoint wire.OutPoint
|
||||
|
||||
// IsIncoming is a boolean flag that indicates whether or not this
|
||||
// HTLC was accepted from the counterparty. A false value indicates that
|
||||
// this HTLC was offered by us. This flag is used determine the exact
|
||||
// witness type should be used to sweep the output.
|
||||
IsIncoming bool
|
||||
}
|
||||
|
||||
// BreachRetribution contains all the data necessary to bring a channel
|
||||
@ -1162,7 +1168,7 @@ func newBreachRetribution(chanState *channeldb.OpenChannel, stateNum uint64,
|
||||
// With the commitment outputs located, we'll now generate all the
|
||||
// retribution structs for each of the HTLC transactions active on the
|
||||
// remote commitment transaction.
|
||||
htlcRetributions := make([]HtlcRetribution, len(chanState.Htlcs))
|
||||
htlcRetributions := make([]HtlcRetribution, len(revokedSnapshot.Htlcs))
|
||||
for i, htlc := range revokedSnapshot.Htlcs {
|
||||
var (
|
||||
htlcScript []byte
|
||||
@ -1206,6 +1212,7 @@ func newBreachRetribution(chanState *channeldb.OpenChannel, stateNum uint64,
|
||||
Hash: commitHash,
|
||||
Index: uint32(htlc.OutputIndex),
|
||||
},
|
||||
IsIncoming: htlc.Incoming,
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user