htlcswitch: attributable errors#7139
Open
joostjager wants to merge 6 commits intolightningnetwork:masterfrom
Open
htlcswitch: attributable errors#7139joostjager wants to merge 6 commits intolightningnetwork:masterfrom
joostjager wants to merge 6 commits intolightningnetwork:masterfrom
Conversation
89176b5 to
7ee4126
Compare
7ee4126 to
929ec8b
Compare
62e4317 to
c80ed73
Compare
0593312 to
b1185f1
Compare
ab1fcc2 to
61661dc
Compare
hieblmi
reviewed
Jan 15, 2023
3b423ea to
87a30c9
Compare
joostjager
commented
Jan 16, 2023
joostjager
commented
Jan 16, 2023
joostjager
commented
Jan 16, 2023
routing/payment_lifecycle.go
Outdated
Contributor
Author
There was a problem hiding this comment.
One case to consider here is that if for some reason one of the nodes had to return InvalidOnionPayload, that node wasn't able to read the resolution format. Instead if will return an old-style error that we're not decoding properly. Not sure if we care because it should only happen in case of a bug?
77f4da8 to
7a9816b
Compare
7a9816b to
ccece71
Compare
540cb59 to
a1d0805
Compare
Contributor
Author
|
Added integration test. |
Preparation for the instantiation of an attributable error encrypter. This gets rid of the sphinx encrypter instantiation in OnionProcessor. This would otherwise be problematic when an attributable encrypter would need to be created there without having access to the error structure.
a1d0805 to
91664be
Compare
Contributor
Author
|
Updated |
To avoid a collision with the htlcswitch/hop package.
91664be to
c16a9f7
Compare
Contributor
Author
|
Updated feature bit to 36/37 |
20 tasks
joostjager
commented
Nov 6, 2023
| // encryption parameters. | ||
| // encryption parameters. Don't assume attributable errors, | ||
| // because first the resolution format needs to be decoded from | ||
| // the onion payload. |
Contributor
Author
There was a problem hiding this comment.
Fallback to legacy format is probably fine. If this happens to be an attributable error route, the upstream node will substitute with an attributable error?
There was a problem hiding this comment.
This should be added to the spec.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds the ability for routing nodes and nodes that are the destination of a payment to generate and relay attributable errors. This capability is signaled through a new feature bit
option_attributable_errors.Sender nodes will examine the route and request attributable errors via the
attributable_errorstlv field when each node on the path supports it. There is no preference for attributable error-supporting nodes (yet).Intermediate and final nodes report the htlc hold time in their failure message payload. The sender node only logs the hold times (
Hold times: 2526/1125/0). Updating a node's reputation based on the time they held an htlc is left for a follow-up pr.Depends on lightningnetwork/lightning-onion#60
Corresponding spec PR: lightning/bolts#1044
By default, attributable errors is only enabled for intermediate and final hops. If requested by the sender through the forward onion, they'll return attributable errors. For the sender node, the user needs to opt-in to use the feature by specifying
--routerrpc.attrerrorson the command line.