An almost complete implementation of the bittorrent protocol in python that uses asyncio instead of multithreading.
This project was born out of my curiosity about how torrent clients actually work and served to not just extend my knowledge on this topic, but introduce me to asyncio & P2P networking in python.
It is almost complete (I have implemented all the core algorithms & logic), I just have to combine the parts together and test it.
- The original bittorrent protocol spec
- The community bittorrent spec
- This report by Bram Cohen which outlines piece selection, seeding, and choking algorithms
- This bittorrent python implementation by borzunov for his UDP Tracker implementation (I struggled to find information on using UDP in asyncio)