By now most people in the blockchain community have heard that the BitTorrent and Tron Foundations have formed a strategic partnership to extend the BitTorrent protocol and introduce a new cryptographic token called BTT. Together, they plan to build a distributed infrastructure platform to leverage over 1 billion users of the BitTorrent protocol by providing a mechanism that would allow users to buy and sell their bandwidth with other network participants.
Imagine our surprise in finding out that a similar effort had not been attempted by developers for the Ethereum blockchain. The world’s largest distributed application, BitTorrent, and the most robust decentralized application development platform, Ethereum, had yet to converge! EthTorrent didn’t exist. Now it does. We made it happen. You’re welcome!
Going into the ETHBoston Hackathon we envisioned a competitor to BitTorrent built on top of the Ethereum blockchain — but with a different crypto economic reward structure. To wit, we believed that people were mostly willing to contribute to paying for seeding activity, however, that was not their primary motivation for using the client.
The truth of the matter, however, is that most people who torrent don’t care about the incentives for seeding content. They do it as a sort of community service, doing their part to enrich the availability of content in the ecosystem. Leeching is heavily discouraged on most BitTorrent clients for this very reason.
Making money by seeding downloads is an afterthought — albeit a lucrative one. What ‘torrenters’ care most about is the availability of content and not having their download stuck at 80% for hours on end. The Metaverse team, in collaboration with our friends at Bitcoin Bay, addressed these issues with our version of a P2P torrenting client. In 3 days and 2 sleepless nights we built a proof of concept. The three key upgrades to the BitTorrent protocol that we made are as follows:
- The network would automatically select a chunk of content in need of a seeder based on the ‘rarity’ of its existence. It would then assign this chunk to be held as an active seed by newly identified peer ID’s accessing the client.
- A snapshot of the active seeds occurs randomly over time to distribute rewards.
- We located peer ID’s from popular web torrent trackers, paired them with an attendant Ethereum address, and distributed rewards to all located pairs.
We faced some interesting challenges, and overcame them thanks to tremendous support from the developers from Squarelink and Taxa Network. For our sweat, grit and never give up attitude, we were awarded the prize for the most interesting project from Taxa.
Taxa Network is a layer-2 network of highly secured Taxa nodes. These hardware-isolated nodes create Trusted Execution Environments (TEE) for Trustless Services (tServices) to run with protection and privacy guaranteed — which is exactly what we need in a torrent service!
There are two pieces of information which we elected to keep private using Taxa’s TEE. The first was data referencing that peers were seeding, uploading or downloading. The second was the Ethereum addresses (which we found paired with peer ID’s via webtorrent trackers).
Taxa’s TEE guarantees this privacy by sending an encrypted request to the TEE, which decrypts and processes that request. The results are returned to the client as another encrypted message which can only be decoded once it reaches that client!
As a proof of concept, our team built EthTorrent on one of Taxa’s debug TEE instance’s on Microsoft Azure. However the larger vision of this project would be to launch many of these TEE’s in order to create a decentralized file sharing network in which peer activities and payment info (payout addresses) are preserved privately.
Building a decentralized application on the Ethereum blockchain was a practical way of building out a proof of concept in 3 days.
MetaTorrent might be in the future. No promises.