bisq
bisq copied to clipboard
[Feature-Improvement] Consider using to Kovri to replace Tor
As many people are aware.. The TOR network is most of the time under attack and gets overloaded causing numerous connection issues. Any idea if Kovri can easily replace TOR or even adding it as an alternative?
I2P uses more hops so making it even slower than Tor, as well has a much smaller usergroup/anonymity set. Would be great of course to support both but that will not work really as resources to be on both networks connected are too heavy.
@ManfredKarrer i disagree i2p uses the same amount of hops as tor. 3 on client 3 on server. i2p also has multiple tunnels/circuits unlike tor which only has one. meaning if a node in a particular tunnel is offline there is fall backs tunnels to supply a connection.
@merkjinx Do you know if i2p works in China? Does it has something similar like pluggabletransports? how many relay nodes are more or less available at i2p?
@ManfredKarrer according to network information that my local node has provided i2p does work in china. i have multiple inbound and outbound connects to nodes in china. so yes. for starters i2p uses UDP and TCP so if one is blocked the other is available (There is no standard i2p port either chosen randomly or selected manually by node operator). currently there is no pluggabletransports. however the i2p dev team is working on a different transport protocol that will be available sometime this year. the estimated amount of nodes on the network is anywhere from 3000 to 15000.
@merkjinx Great thanks for the info! Do you see any feasible solution to support both Tor and I2P without running 2 networks in parallel and send and listen on both? I fear that will not be possible, right. To run Bisq with I2P as separate network might be an interesting research project and if it works well we could compare performance and reliability. But if we cannot merge the 2 networks it will be hard as it would partition the trade volume (offers).
@ManfredKarrer i'm not sure. i would imagine it would be each node would have a list of addresses. e.g onion address and/or i2p dest-hash. you would need to have a system where a client can lookup another client and get its tor or i2p address to connect to it. i would advise again switching immediately but rather have the option for a bisq user to enable i2p. then slowly push for a network that uses both. so there isn't problems with trading and bugs can be sorted out over the transition time. an ideal setup would have most bisq users have both tor and i2p support so if tor is blocked then i2p can be a fallback and vise versa. i2p has a longer startup time than tor (For java i2p that is, kovri may be different) therefore tor should be used first.
i don't know very much information on how bisq's p2p system works so this may differ considerably for this use case. and i'm very new to the bisq network. hopefully this information can give you ideas on how to put this into play. Cheers
Thanks for your input. I fear it will be resource and implementation wise not really feasible to support 2 networks in parallel. But good to know that i2p might be a serious fallback if Tor gets some issues (the last months it was very unstable and slow due dos attacks). The Bisq P2P network is a unstructured flood fill network. Each peer is connected to about 8-12 other peers. All are hidden services so no exit nodes... It is similar like the Bitcoin p2p network.
It would be great if this could be implemented as a fallback or a user choice. Maybe this can be worked on when you have some time @ManfredKarrer
Most importantly if it would be possible to switch between i2p and tor and have both networks connect to each other in some possible way..that would be considered as bisq privacy on steroids! I feel it is very important to have this type of fallback, because Tor network has proven time and time again that it is not 100%
Couldn’t there just be certain nodes acting as bridges? Not every node would need to run all networks to have connectivity. You may only need a few really, to relay peer information across all of them. Everyone could choose to run them or not.
I have Tor (https://github.com/resolvingarchitecture/tor-client-java) and I2P (https://github.com/resolvingarchitecture/i2p-java) working together side-by-side in my 1M5 (https://1m5.io) project (https://github.com/1m5). I2P can be quite performant (<1 second) although most of the time it's around 2 seconds and sometimes upwards of 10 seconds. Timeouts between I2P nodes are set at 90 seconds. 1M5 also supports Bluetooth in case your internet is down (requires someone within range though until BT 5.1 is ubiquitous). 1M5 works to re-route around blocks, e.g. if Tor is blocked, it uses I2P and vice-versa..including Bluetooth if available (more networks to come). It's built very modular using Resolving Architecture (https://resolvingarchitecture.io/) services (https://github.com/resolvingarchitecture) so I2P can be integrated into Bisq as a standalone lib initially to test. Shouldn't take too much integration effort. Java 1.8.
As far as running bridges, that centralizes access which we need to avoid, similar to VPNs.
Eventually I want to work towards integrating with 1M5 so that Bisq automatically gets the re-routing capabilities as it grows using self-generated UUIDs as addresses. I'm not sure of any issues that would need to be addressed though. Software is free and open. No copyright. Very minimal 3rd party libs (no Spring, Apache, Google - I think, etc).