Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Route Blinding: allow path creator to specify incoming channel #8993

Open
ellemouton opened this issue Aug 8, 2024 · 12 comments · May be fixed by #9127
Open

Route Blinding: allow path creator to specify incoming channel #8993

ellemouton opened this issue Aug 8, 2024 · 12 comments · May be fixed by #9127
Assignees
Labels
blinded paths enhancement Improvements to existing features / behaviour intermediate Issues suitable for developers moderately familiar with the codebase and LN lncli rpc Related to the RPC interface
Milestone

Comments

@ellemouton
Copy link
Collaborator

ellemouton commented Aug 8, 2024

When creating a blinded payment path for an invoice, we should allow the caller to
select the channel they want to receive on. This will allow them to force a sender to
pay over a specific channel and so gives them an extra liquidity control lever.

@ellemouton ellemouton added enhancement Improvements to existing features / behaviour rpc Related to the RPC interface intermediate Issues suitable for developers moderately familiar with the codebase and LN lncli blinded paths labels Aug 8, 2024
@alexbosworth
Copy link
Contributor

Would this be incoming last hop peer or incoming channel?

@ellemouton
Copy link
Collaborator Author

Would this be incoming last hop peer or incoming channel?

good point. So on an instruction level, we tell the peer the next channel to send on. But due to non-strict forwarding, nothing stops them from choosing a diff channel that the one instructed I guess.

@MPins
Copy link
Contributor

MPins commented Aug 15, 2024

Interesting! Maybe it is a good chalange to me!

@ellemouton
Copy link
Collaborator Author

Feel free to give it a go @MPins :)

@MPins
Copy link
Contributor

MPins commented Aug 15, 2024

Thanks! Starting from the blinded paths proposal, then the code ;-)

@ellemouton
Copy link
Collaborator Author

Might make more sense to make this more general: Allow user to specify the whole path or parts of the path
(cc @alexbosworth )

@saubyk saubyk added this to the v0.19.0 milestone Aug 22, 2024
@saubyk
Copy link
Collaborator

saubyk commented Aug 22, 2024

Hi @MPins assigned the issue to you

@MPins
Copy link
Contributor

MPins commented Aug 24, 2024

Hello all, to do some tests before coding I've just created a network with some 0.18.2 nodes on Polar Lightning and it seems that those nodes do not know blinded paths, but it is available since 0.18.0!!!

@saubyk
Copy link
Collaborator

saubyk commented Aug 24, 2024

Hi @MPins I don't think you'll be able to test blinded paths with 18.2, you'd need 18.3

Release 18 had all the code changes to enable blinded paths, but the implementation and inclusion with the rpcs on LND has been done with 18.3

@MPins
Copy link
Contributor

MPins commented Sep 10, 2024

specify the whole path or parts of the path

To do that we could work with a json object, where the user choose the introduction node (optional), blinded nodes (at least one) and channels (optional). Example:

{
          "blinded_path":  {
              "introduction_node":  "node_id",
              "blinded_hops":  [
                  {
                      "blinded_node":  "node_id",
                      "channel":  "channel_id"
                  },
                  {
                      "blinded_node":  "node_id",
                      "channel":  "channel_id"
                  },
                  {
                      "blinded_node":  "node_id",
                      "channel":  ""
                  }
              ]
          }
}

But particularly I think it is too much flexibility. From the node runner point of view I think that choosing the last hop node or/and channel would be enough. What do you think?

@ellemouton
Copy link
Collaborator Author

@MPins - sorry for the late reply.

I think we could just make it general, ie: we allow user to specify a list of peers for the final stretch of the path. If they choose to only specify 1 peer, then that's fine and LND can choose to build multiple paths with that constraint given the other config values. If the user adds a chain of 2 peers, then LND uses that new constraint etc etc

@MPins
Copy link
Contributor

MPins commented Oct 16, 2024

Hello ... no problem 🙂 .

It I understood correctly. It is done already.

Maybe we could take out the option of choosing a list of nodes, and keep a list of channels only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blinded paths enhancement Improvements to existing features / behaviour intermediate Issues suitable for developers moderately familiar with the codebase and LN lncli rpc Related to the RPC interface
Projects
Status: Todo
Development

Successfully merging a pull request may close this issue.

4 participants