I2P is a decentralized privacy overlay network, much like Tor, except it is much better suited for use by P2P and Torrent apps.
DarkMX is now capable of making user to user connections over I2P, using an external I2P client of your choice. This feature can be activated from Settings > I2P.
User to user connections are generally used for uploads, downloads, browsing, and private messages. All connections start out over Tor. If a user has the I2P option turned on, a special message is sent over the Tor connection to indicate to the remote peer that I2P connections can be received. The remote peer, if they also have I2P turned on, will attempt I2P connection while the Tor connection is still running and in full operation. Once the I2P connection is successful, it will take over, and the Tor connection is dropped. If it fails, it is retried periodically as long as both sides still have the I2P option turned on and a stable I2P destination. Upon successful I2P connection, the remote user's destination is cached so that subsequent connections will be attempted first over I2P directly.
You can download a fairly simple I2P client called i2pd. It's website is
https://i2pd.website/. We don't have anything to do with it's development, so do your own due diligence before installing it. The original I2P client (Java-based) is available from
https://geti2p.net/en/. There are also other clients available, easily findable using any search engine.
DarkMX connects to your local I2P client over the local loopback 127.0.0.1 interface using the I2CP protocol, which is a low-level message based protocol. DarkMX has implemented its own streaming layer on top of I2CP.
IMPORTANT If you use the I2PD non-java client, you must enable the I2CP protocol by running it with
--i2cp.enabled 1
command-line switch, OR edit/create the i2pd.conf file within the I2PD program folder so it has the following lines: