Within the network, it's important that when an HTLC forwarding failure occurs, the recipient is notified in a timely manner in order to ensure that errors are graceful and not unknown. However, we also want to ensure the privacy of the onion routing scheme, meaning that the intermediate hops don't know the exact location of the initiating sender. Therefore, nodes need to use the existing circuit to report the error with a message traveling backwards from the point of error to the original sender.
This error wrapping and decryption at the sender is currently unimplemented.
Steps to Completion
[x] The ProcessPacket method should also return an object which encapsulates the derived shared secret, and provides a method/function to create a wrapped error messages.
[x] Similarly, the NewOnionPacket function should return a similar object which encapsulates the derived shared secret, and the encoded route. The object should provide a method/function to perform trial decryption (O(N^2) work, since we don't know which node in the route send the message).
Issue
Within the network, it's important that when an HTLC forwarding failure occurs, the recipient is notified in a timely manner in order to ensure that errors are graceful and not unknown. However, we also want to ensure the privacy of the onion routing scheme, meaning that the intermediate hops don't know the exact location of the initiating sender. Therefore, nodes need to use the existing circuit to report the error with a message traveling backwards from the point of error to the original sender.
Within the current spec draft the handling of the scenario described above is detailed in sufficiently in the returning messages section.
This error wrapping and decryption at the sender is currently unimplemented.
Steps to Completion
[x] The
ProcessPacket
method should also return an object which encapsulates the derived shared secret, and provides a method/function to create a wrapped error messages.[x] Similarly, the
NewOnionPacket
function should return a similar object which encapsulates the derived shared secret, and the encoded route. The object should provide a method/function to perform trial decryption (O(N^2)
work, since we don't know which node in the route send the message).