Add support for I2P as another proxy option, in addition to regular SOCKS and Tor proxies.
It seems this would best be done by having the user set up a SOCKS proxy tunnel through their I2P router, and providing the address/port of the tunnel at startup. This is quite similar to how Tor support currently works.
Unlike Tor, an inbound server tunnel would also be needed for traffic from peers, as I2P tunnels are unidirectional. The .b32.i2p address can also be provided at startup, however since this is a hash derived from the destination key(s) which cannot be reversed, we would have to query the router (presumably through the SAM bridge or web frontend) to get the actual destination info. This means that each P2Pool client/server being run will need to look up the address/hash themselves, since the actual destinations are too long to be used as persistent identifiers.
Some references:
https://dark.fi/book/misc/nodes/i2p-guide.html
https://docs.i2pd.website/en/latest/user-guide/tunnels/
https://i2p.net/en/docs/api/socks/
https://i2p.net/en/docs/overview/naming/#naming-services