How does Lightning Network over TOR work?How is a node in the middle prohibited from keeping the money in a routed Payment in Lightning network?Why do we need a “routing” process in Lightning Network?Routing in Bitcoin Lightning NetworkCan someone please explain how Lightning paths are working and what effect large centralized hubs have?Does the `HTLC fail` routed back to sender using same path if intermediate node does not have enough capacity?How can I get my LND node to make connections over Tor, IPv4, and IPv6?Can I explicitly specify a path for Lightning payment?Can I send/receive payments but prevent forwarding payments in Lightning Network?BOLT 11 - Why is the description field limited to 639 bytes?How many paths are tried on average before a payment succeeds in Lightning?

Why is the OS obfuscation defense against "It's a Unix system!" not widely implemented?

Creating 2020 in the fewest number of steps

What is the moral difference between abortion and infanticide?

Can I rescind my offer of working on weekends after last day?

Postdoc Fellowships Collision

Why was LEGO reluctant to use additional colours for regular bricks in former times?

Can the U.S. Senate hold an impeachment trial if the House does not deliver the articles of impeachment?

What does “critical but stable” mean?

What to do if some panel members walk out while I'm being interviewed?

What sort of professional boundary should I set with other students when I am a grader for a class I will be taking?

what is the essential difference between human languages to other earthly animalia languages?

Visting the UK with my own car

How can there exist a profession consisting of investing others' money?

Would the moon eventually fall into Earth if we reduce its tangential velocity slightly?

How bad is 1. e4 c5 2. Nf3 d6 3. a3?

Lock screen if I leave my seat?

What's the criteria/reasoning for Rick's three questions in The Walking Dead?

Should I invest ~18k being 19 years old?

Is there a way to use logic operators in Blender Shader nodes?

What is the relative return point (i.e. the "space it left") of a creature banished by the Banishment spell?

Implementation gap in logistics

Convert logical combinations from Reduce to a usable function

Is Pseudo-Simple SQL Server Recovery a real thing?

How to understand "No she bludgering well won't!"



How does Lightning Network over TOR work?


How is a node in the middle prohibited from keeping the money in a routed Payment in Lightning network?Why do we need a “routing” process in Lightning Network?Routing in Bitcoin Lightning NetworkCan someone please explain how Lightning paths are working and what effect large centralized hubs have?Does the `HTLC fail` routed back to sender using same path if intermediate node does not have enough capacity?How can I get my LND node to make connections over Tor, IPv4, and IPv6?Can I explicitly specify a path for Lightning payment?Can I send/receive payments but prevent forwarding payments in Lightning Network?BOLT 11 - Why is the description field limited to 639 bytes?How many paths are tried on average before a payment succeeds in Lightning?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;









3


















I'm interested to understand in detail how the lightning network works over Tor. Implementations like lnd, c-lightning etc. offer an extension which allow running TOR with Lightning. I would like to understand how running Lightning with TOR works in practice. In particular I'm interested in the following cases:



1) I am the sender, but I enabled Tor in my node. How does sending to a node R outside Tor network looks like?



2) I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?



3) The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?










share|improve this question

































    3


















    I'm interested to understand in detail how the lightning network works over Tor. Implementations like lnd, c-lightning etc. offer an extension which allow running TOR with Lightning. I would like to understand how running Lightning with TOR works in practice. In particular I'm interested in the following cases:



    1) I am the sender, but I enabled Tor in my node. How does sending to a node R outside Tor network looks like?



    2) I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?



    3) The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?










    share|improve this question





























      3













      3









      3


      0






      I'm interested to understand in detail how the lightning network works over Tor. Implementations like lnd, c-lightning etc. offer an extension which allow running TOR with Lightning. I would like to understand how running Lightning with TOR works in practice. In particular I'm interested in the following cases:



      1) I am the sender, but I enabled Tor in my node. How does sending to a node R outside Tor network looks like?



      2) I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?



      3) The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?










      share|improve this question
















      I'm interested to understand in detail how the lightning network works over Tor. Implementations like lnd, c-lightning etc. offer an extension which allow running TOR with Lightning. I would like to understand how running Lightning with TOR works in practice. In particular I'm interested in the following cases:



      1) I am the sender, but I enabled Tor in my node. How does sending to a node R outside Tor network looks like?



      2) I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?



      3) The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?







      lightning-network lightning-routing tor






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Oct 2 at 17:39









      Ugam Kamat

      5,3832 gold badges8 silver badges32 bronze badges




      5,3832 gold badges8 silver badges32 bronze badges










      asked Oct 2 at 14:55









      AnnMPAnnMP

      1333 bronze badges




      1333 bronze badges























          1 Answer
          1






          active

          oldest

          votes


















          4



















          Running lightning node over TOR is no different than running it over normal IP connection. Sending payment, fulfilling incoming payment, sending error messages etc. would happen in the exact same way in both cases. The only difference is that the above messages that you send to your peer will now happen over TOR network rather than a direct IP package.



          If you are using only TOR without any public IP address then to route your payment to a node that is using only public IP address you will need to have a node in your path to the receiver that is (1) running TOR and public IP or (2) or running public IP and can connect to TOR nodes using the socks5 proxy. If you do not have this node in between you would not be able to send the payment.



          When Tor service starts it creates a socks5 proxy which is by default at address 127.0.0.1:9050. If a node with public IP is started with the option --proxy=127.0.0.1:9050 (or including it in the config file) the node will be able to connect to nodes running TOR (like yours).



          If you are running TOR and have a public IP address then you can directly connect with nodes that run tor or public IP nodes via the tor service socks5 proxy.




          I am the sender, but I enabled TOR in my node. How does sending to a node R outside TOR network looks like?




          The network routing happens according to what I mentioned above. However, the path calculation for sending the payment to the receiver happens on your node so it does not involve what network routing you are using. You would construct the onion routing packet with the path to the receiver (the channels you will use to send the payment), and try to send this onion and the payment_hash to your peer via the update_add_htlc message. This message will then go over TOR nodes before reaching your peer, instead of a directly reaching your peer.




          I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?




          You can receive payments from nodes directly that are running TOR. If you want to receive payments from nodes that have only public IP, then you would need to have a node in your path that has the proxy option set so that it can connect to TOR nodes via socks5 proxy.




          The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?




          Assume you the path from S to R looks like this: S -> T -> U -> V -> R. Number of cases can arise:




          • S and R do not run TOR: It depends

            • All the nodes could be on public IP and your payment goes through.

            • T could be node running public IP and TOR. It has a public IP channel with you, and TOR channel with U. U can then have a proxy option set that allow it to have TOR based channels with T and public IP channel with U. V is a public IP node and U routes payment to V in normal way.



          • R runs TOR: At least one node in between should run/understand TOR

            • T/U/V has a public IP, and have TOR so that they can make channels with TOR nodes and public IP nodes

            • T/U/V are all public IP nodes but V has a proxy option set which allows it to have a tor based channel connection with R.






          share|improve this answer



























          • Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

            – AnnMP
            Oct 2 at 17:03






          • 1





            Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

            – Ugam Kamat
            Oct 2 at 17:32






          • 1





            Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

            – Ugam Kamat
            Oct 2 at 17:33












          • Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

            – AnnMP
            Oct 3 at 19:48











          • @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

            – Ugam Kamat
            Oct 4 at 5:40












          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "308"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );














          draft saved

          draft discarded
















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fbitcoin.stackexchange.com%2fquestions%2f90764%2fhow-does-lightning-network-over-tor-work%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown


























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          4



















          Running lightning node over TOR is no different than running it over normal IP connection. Sending payment, fulfilling incoming payment, sending error messages etc. would happen in the exact same way in both cases. The only difference is that the above messages that you send to your peer will now happen over TOR network rather than a direct IP package.



          If you are using only TOR without any public IP address then to route your payment to a node that is using only public IP address you will need to have a node in your path to the receiver that is (1) running TOR and public IP or (2) or running public IP and can connect to TOR nodes using the socks5 proxy. If you do not have this node in between you would not be able to send the payment.



          When Tor service starts it creates a socks5 proxy which is by default at address 127.0.0.1:9050. If a node with public IP is started with the option --proxy=127.0.0.1:9050 (or including it in the config file) the node will be able to connect to nodes running TOR (like yours).



          If you are running TOR and have a public IP address then you can directly connect with nodes that run tor or public IP nodes via the tor service socks5 proxy.




          I am the sender, but I enabled TOR in my node. How does sending to a node R outside TOR network looks like?




          The network routing happens according to what I mentioned above. However, the path calculation for sending the payment to the receiver happens on your node so it does not involve what network routing you are using. You would construct the onion routing packet with the path to the receiver (the channels you will use to send the payment), and try to send this onion and the payment_hash to your peer via the update_add_htlc message. This message will then go over TOR nodes before reaching your peer, instead of a directly reaching your peer.




          I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?




          You can receive payments from nodes directly that are running TOR. If you want to receive payments from nodes that have only public IP, then you would need to have a node in your path that has the proxy option set so that it can connect to TOR nodes via socks5 proxy.




          The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?




          Assume you the path from S to R looks like this: S -> T -> U -> V -> R. Number of cases can arise:




          • S and R do not run TOR: It depends

            • All the nodes could be on public IP and your payment goes through.

            • T could be node running public IP and TOR. It has a public IP channel with you, and TOR channel with U. U can then have a proxy option set that allow it to have TOR based channels with T and public IP channel with U. V is a public IP node and U routes payment to V in normal way.



          • R runs TOR: At least one node in between should run/understand TOR

            • T/U/V has a public IP, and have TOR so that they can make channels with TOR nodes and public IP nodes

            • T/U/V are all public IP nodes but V has a proxy option set which allows it to have a tor based channel connection with R.






          share|improve this answer



























          • Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

            – AnnMP
            Oct 2 at 17:03






          • 1





            Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

            – Ugam Kamat
            Oct 2 at 17:32






          • 1





            Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

            – Ugam Kamat
            Oct 2 at 17:33












          • Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

            – AnnMP
            Oct 3 at 19:48











          • @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

            – Ugam Kamat
            Oct 4 at 5:40















          4



















          Running lightning node over TOR is no different than running it over normal IP connection. Sending payment, fulfilling incoming payment, sending error messages etc. would happen in the exact same way in both cases. The only difference is that the above messages that you send to your peer will now happen over TOR network rather than a direct IP package.



          If you are using only TOR without any public IP address then to route your payment to a node that is using only public IP address you will need to have a node in your path to the receiver that is (1) running TOR and public IP or (2) or running public IP and can connect to TOR nodes using the socks5 proxy. If you do not have this node in between you would not be able to send the payment.



          When Tor service starts it creates a socks5 proxy which is by default at address 127.0.0.1:9050. If a node with public IP is started with the option --proxy=127.0.0.1:9050 (or including it in the config file) the node will be able to connect to nodes running TOR (like yours).



          If you are running TOR and have a public IP address then you can directly connect with nodes that run tor or public IP nodes via the tor service socks5 proxy.




          I am the sender, but I enabled TOR in my node. How does sending to a node R outside TOR network looks like?




          The network routing happens according to what I mentioned above. However, the path calculation for sending the payment to the receiver happens on your node so it does not involve what network routing you are using. You would construct the onion routing packet with the path to the receiver (the channels you will use to send the payment), and try to send this onion and the payment_hash to your peer via the update_add_htlc message. This message will then go over TOR nodes before reaching your peer, instead of a directly reaching your peer.




          I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?




          You can receive payments from nodes directly that are running TOR. If you want to receive payments from nodes that have only public IP, then you would need to have a node in your path that has the proxy option set so that it can connect to TOR nodes via socks5 proxy.




          The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?




          Assume you the path from S to R looks like this: S -> T -> U -> V -> R. Number of cases can arise:




          • S and R do not run TOR: It depends

            • All the nodes could be on public IP and your payment goes through.

            • T could be node running public IP and TOR. It has a public IP channel with you, and TOR channel with U. U can then have a proxy option set that allow it to have TOR based channels with T and public IP channel with U. V is a public IP node and U routes payment to V in normal way.



          • R runs TOR: At least one node in between should run/understand TOR

            • T/U/V has a public IP, and have TOR so that they can make channels with TOR nodes and public IP nodes

            • T/U/V are all public IP nodes but V has a proxy option set which allows it to have a tor based channel connection with R.






          share|improve this answer



























          • Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

            – AnnMP
            Oct 2 at 17:03






          • 1





            Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

            – Ugam Kamat
            Oct 2 at 17:32






          • 1





            Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

            – Ugam Kamat
            Oct 2 at 17:33












          • Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

            – AnnMP
            Oct 3 at 19:48











          • @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

            – Ugam Kamat
            Oct 4 at 5:40













          4















          4











          4









          Running lightning node over TOR is no different than running it over normal IP connection. Sending payment, fulfilling incoming payment, sending error messages etc. would happen in the exact same way in both cases. The only difference is that the above messages that you send to your peer will now happen over TOR network rather than a direct IP package.



          If you are using only TOR without any public IP address then to route your payment to a node that is using only public IP address you will need to have a node in your path to the receiver that is (1) running TOR and public IP or (2) or running public IP and can connect to TOR nodes using the socks5 proxy. If you do not have this node in between you would not be able to send the payment.



          When Tor service starts it creates a socks5 proxy which is by default at address 127.0.0.1:9050. If a node with public IP is started with the option --proxy=127.0.0.1:9050 (or including it in the config file) the node will be able to connect to nodes running TOR (like yours).



          If you are running TOR and have a public IP address then you can directly connect with nodes that run tor or public IP nodes via the tor service socks5 proxy.




          I am the sender, but I enabled TOR in my node. How does sending to a node R outside TOR network looks like?




          The network routing happens according to what I mentioned above. However, the path calculation for sending the payment to the receiver happens on your node so it does not involve what network routing you are using. You would construct the onion routing packet with the path to the receiver (the channels you will use to send the payment), and try to send this onion and the payment_hash to your peer via the update_add_htlc message. This message will then go over TOR nodes before reaching your peer, instead of a directly reaching your peer.




          I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?




          You can receive payments from nodes directly that are running TOR. If you want to receive payments from nodes that have only public IP, then you would need to have a node in your path that has the proxy option set so that it can connect to TOR nodes via socks5 proxy.




          The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?




          Assume you the path from S to R looks like this: S -> T -> U -> V -> R. Number of cases can arise:




          • S and R do not run TOR: It depends

            • All the nodes could be on public IP and your payment goes through.

            • T could be node running public IP and TOR. It has a public IP channel with you, and TOR channel with U. U can then have a proxy option set that allow it to have TOR based channels with T and public IP channel with U. V is a public IP node and U routes payment to V in normal way.



          • R runs TOR: At least one node in between should run/understand TOR

            • T/U/V has a public IP, and have TOR so that they can make channels with TOR nodes and public IP nodes

            • T/U/V are all public IP nodes but V has a proxy option set which allows it to have a tor based channel connection with R.






          share|improve this answer
















          Running lightning node over TOR is no different than running it over normal IP connection. Sending payment, fulfilling incoming payment, sending error messages etc. would happen in the exact same way in both cases. The only difference is that the above messages that you send to your peer will now happen over TOR network rather than a direct IP package.



          If you are using only TOR without any public IP address then to route your payment to a node that is using only public IP address you will need to have a node in your path to the receiver that is (1) running TOR and public IP or (2) or running public IP and can connect to TOR nodes using the socks5 proxy. If you do not have this node in between you would not be able to send the payment.



          When Tor service starts it creates a socks5 proxy which is by default at address 127.0.0.1:9050. If a node with public IP is started with the option --proxy=127.0.0.1:9050 (or including it in the config file) the node will be able to connect to nodes running TOR (like yours).



          If you are running TOR and have a public IP address then you can directly connect with nodes that run tor or public IP nodes via the tor service socks5 proxy.




          I am the sender, but I enabled TOR in my node. How does sending to a node R outside TOR network looks like?




          The network routing happens according to what I mentioned above. However, the path calculation for sending the payment to the receiver happens on your node so it does not involve what network routing you are using. You would construct the onion routing packet with the path to the receiver (the channels you will use to send the payment), and try to send this onion and the payment_hash to your peer via the update_add_htlc message. This message will then go over TOR nodes before reaching your peer, instead of a directly reaching your peer.




          I am the recipient node, and I do not advertise an IP address, but an onion address. How do I receive payments?




          You can receive payments from nodes directly that are running TOR. If you want to receive payments from nodes that have only public IP, then you would need to have a node in your path that has the proxy option set so that it can connect to TOR nodes via socks5 proxy.




          The sender node S is a regular LN node, without any Tor connections. As a sender, I want to send a payment to node R and my LN node finds the best path to send my payment to R. Is it possible that this path will at any hop go thought Tor or go through onion node, because any of the nodes in the selected path happens to be onion or has access to Tor? And if yes, how the routing looks then?




          Assume you the path from S to R looks like this: S -> T -> U -> V -> R. Number of cases can arise:




          • S and R do not run TOR: It depends

            • All the nodes could be on public IP and your payment goes through.

            • T could be node running public IP and TOR. It has a public IP channel with you, and TOR channel with U. U can then have a proxy option set that allow it to have TOR based channels with T and public IP channel with U. V is a public IP node and U routes payment to V in normal way.



          • R runs TOR: At least one node in between should run/understand TOR

            • T/U/V has a public IP, and have TOR so that they can make channels with TOR nodes and public IP nodes

            • T/U/V are all public IP nodes but V has a proxy option set which allows it to have a tor based channel connection with R.







          share|improve this answer















          share|improve this answer




          share|improve this answer








          edited Oct 2 at 16:21

























          answered Oct 2 at 16:01









          Ugam KamatUgam Kamat

          5,3832 gold badges8 silver badges32 bronze badges




          5,3832 gold badges8 silver badges32 bronze badges















          • Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

            – AnnMP
            Oct 2 at 17:03






          • 1





            Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

            – Ugam Kamat
            Oct 2 at 17:32






          • 1





            Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

            – Ugam Kamat
            Oct 2 at 17:33












          • Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

            – AnnMP
            Oct 3 at 19:48











          • @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

            – Ugam Kamat
            Oct 4 at 5:40

















          • Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

            – AnnMP
            Oct 2 at 17:03






          • 1





            Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

            – Ugam Kamat
            Oct 2 at 17:32






          • 1





            Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

            – Ugam Kamat
            Oct 2 at 17:33












          • Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

            – AnnMP
            Oct 3 at 19:48











          • @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

            – Ugam Kamat
            Oct 4 at 5:40
















          Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

          – AnnMP
          Oct 2 at 17:03





          Thanks for the great reply, highly appreciate it. Here are just a couple of detailed questions: Is there any way to know which nodes can support TOR connections beside the ones that actually publish an onion address? The majority of the nodes publish only a public IP but that doesn't mean they don't have TOR enabled, right? On the other hand, if we don't know which nodes enable TOR how we can correctly pick the path from source to destination of the payment?

          – AnnMP
          Oct 2 at 17:03




          1




          1





          Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

          – Ugam Kamat
          Oct 2 at 17:32





          Part 1: (1) I think it has to work the opposite way. Using only TOR node you cannot connect to a public IP address node (outbound connection), but can accept connection from a public IP node that can connect to TOR through proxy. (2) Nodes announce the services that they run in the node_announcement message. You can just run the command lightning-cli listnodes <node_id> and check what network that node supports.

          – Ugam Kamat
          Oct 2 at 17:32




          1




          1





          Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

          – Ugam Kamat
          Oct 2 at 17:33






          Part 2: (3) you pick the path based on channels. If there is a path with channels in between you and the receiver than at least one node in between must support both the services. If it didn't the nodes wouldn't have been able to connect, let alone set up a channel.

          – Ugam Kamat
          Oct 2 at 17:33














          Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

          – AnnMP
          Oct 3 at 19:48





          Thanks for the replies, that's super helpful! The information about the supported networks, is that the one information under the key 'addresses' or something else?

          – AnnMP
          Oct 3 at 19:48













          @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

          – Ugam Kamat
          Oct 4 at 5:40





          @AnnMP yes, you will see the supported address types in the key addresses. For example, you could query 03a503d8e30f2ff407096d235b5db63b4fcf3f89a653acb6f43d3fc492a7674019 node and find that it runs three types of addresses: ipv4, ipv6, and torv3.

          – Ugam Kamat
          Oct 4 at 5:40


















          draft saved

          draft discarded















































          Thanks for contributing an answer to Bitcoin Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fbitcoin.stackexchange.com%2fquestions%2f90764%2fhow-does-lightning-network-over-tor-work%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown









          Popular posts from this blog

          Tamil (spriik) Luke uk diar | Nawigatjuun

          Align equal signs while including text over equalitiesAMS align: left aligned text/math plus multicolumn alignmentMultiple alignmentsAligning equations in multiple placesNumbering and aligning an equation with multiple columnsHow to align one equation with another multline equationUsing \ in environments inside the begintabularxNumber equations and preserving alignment of equal signsHow can I align equations to the left and to the right?Double equation alignment problem within align enviromentAligned within align: Why are they right-aligned?

          Training a classifier when some of the features are unknownWhy does Gradient Boosting regression predict negative values when there are no negative y-values in my training set?How to improve an existing (trained) classifier?What is effect when I set up some self defined predisctor variables?Why Matlab neural network classification returns decimal values on prediction dataset?Fitting and transforming text data in training, testing, and validation setsHow to quantify the performance of the classifier (multi-class SVM) using the test data?How do I control for some patients providing multiple samples in my training data?Training and Test setTraining a convolutional neural network for image denoising in MatlabShouldn't an autoencoder with #(neurons in hidden layer) = #(neurons in input layer) be “perfect”?