Each peer is also a router, so that point is covered. It already has a well documented method of transmitting torrents over the protocol, unlike Tor.
I2P has dedicated .maggot links too for distributing files over that network.
It uses garlic routing too, which makes it even more difficult to discover hidden services through network saturation.
So by all accounts, I2P is the better network to choose for this, it has all the resources there and a community that's willing to help. But you decided to go down the unsupported route with Tor, a route that's going to be very unpopular with the Tor community.
I don't see any antagonism between the two, and I'm glad to know there's something being done with I2P already, will check it out.
A Popcorn Time dev got in touch and showed interest in the idea, so it could be a great opportunity for the I2P community: https://twitter.com/xaiki/status/487732035331842048.
You should get in touch with them, I'd be thrilled to see this happen!
I'm not an experienced programmer, more tinkering than anything, but I suggest that you pass these messages onto some of the I2P devs on Twitter (@i2p, @echelon and @str4d would be able to help you the best with this).
I'm actually trying to bundle I2P with a portable version of Seamonkey with less than exciting results. I was also hoping that there would be some open source equivalent to Bittorrent Surf available to bundle too, however the only plugin that's similar apparently uses a proprietary network.
Tor has a large critical mass - which makes it safer in general, through pure volume - but I2P is more suited to this for a bunch of technical reasons I'm not going to go into in detail right now, but they involve garlic routing vs onion routing, end-to-end correlation, single-ended vs double-ended tunnels/circuits... basically, Tor hidden services are okay, but I2P is actually designed for more generalised use like this.
I may or may not be biased. :)
In my experience, in the last two years Tor isn't slow, and the bottleneck seems to be my Internet Provider. People I know used Tor uploading files at more than 10 MBps.
One of the biggest problems for any peer-to-peer technology is the chicken-and-egg problem. You need to bring together a large number of users in a short time, or else everyone abandons your product because none of the friends/files/etc. they want are on the network. A BitTorrent client that can only connect to Tor-enabled peers is therefore doomed from the beginning. You need to be able to connect to all the existing non-Tor peers without compromising your own anonymity, while also providing plenty of incentives for other nodes to switch to Tor (i.e. presumed immunity from the MAFIAA). Maybe after 10 years when everyone is anonymous, then you can drop this "compatibility layer" and go entirely dark.
For a similar reason, I support your decision to use Tor instead of I2P. The latter's design might be easier to integrate into a BitTorrent client, but the former has many more users and much greater network capacity, is backed by an organization that will fight to the death to protect its integrity, and above all, just happens to be much better known.
And simply because Tor has the benefit of a greater pool of users doesn't mean that the network would benefit from the addition of this program. Tor is already being extensively used in other ways and the network is quite congested already. The addition of this extra data, plus from the scores of users that will strip out their relay to increase bandwidth for them, will make Tor a less attractive option for what it's being used for currently.
It should be noted that Vuze (Azareus) has a comprehensive guide on how to get their program working with I2P, and it also allows the user to mix torrents from both I2P and the clearnet, so such transitional software packages are possible and do exist.
EDIT: There is also an issue which arises when you run a relay on a hidden service. https://lists.torproject.org/pipermail/tor-talk/2014-July/03...
Sure, I2P already works reasonably well with BitTorrent. But what's wrong with trying to achieve a similar result with Tor?
I'd love to hear if anyone else has thoughts on something like this or if anyone know if something like this has been attempted before.
However, he should have used I2P, it's much more suited towards this project than Tor ever will be.