multi: add option to disable route blinding, rejecting at link
Add an option to disable route blinding, failing back any HTLC with a blinding point set when we haven't got the feature enabled. Note that this commit only handles the case where we're chosen as the relaying node (where the blinding point is in update_add_htlc), we'll add handling for the introduction node case once we get to handling of blinded payloads).
This commit is contained in:
6 files changed
+44
No files matched your search
@@ -273,6 +273,11 @@ type ChannelLinkConfig struct {
|
||||
// re-establish and should not allow anymore HTLC adds on the outgoing
|
||||
// direction of the link.
|
||||
PreviouslySentShutdown fn.Option[lnwire.Shutdown]
|
||||
|
||||
// Adds the option to disable forwarding payments in blinded routes
|
||||
// by failing back any blinding-related payloads as if they were
|
||||
// invalid.
|
||||
DisallowRouteBlinding bool
|
||||
}
|
||||
|
||||
// channelLink is the service which drives a channel's commitment update
|
||||
@@ -1928,6 +1933,19 @@ func (l *channelLink) handleUpstreamMsg(msg lnwire.Message) {
|
||||
return
|
||||
}
|
||||
|
||||
// Disallow htlcs with blinding points set if we haven't
|
||||
// enabled the feature. This saves us from having to process
|
||||
// the onion at all, but will only catch blinded payments
|
||||
// where we are a relaying node (as the blinding point will
|
||||
// be in the payload when we're the introduction node).
|
||||
if msg.BlindingPoint.IsSome() && l.cfg.DisallowRouteBlinding {
|
||||
l.fail(LinkFailureError{code: ErrInvalidUpdate},
|
||||
"blinding point included when route blinding "+
|
||||
"is disabled")
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// We just received an add request from an upstream peer, so we
|
||||
// add it to our state machine, then add the HTLC to our
|
||||
// "settle" list in the event that we know the preimage.
|
||||
|
||||
Reference in new issue
Block a user