Open Source BitTorrent library. The place to go to learn about the internals of the BitTorrent protocol, to find clarifications and answers to question you cannot find elsewhere.
### Selected Docs
- [BitTorrent v2](https://blog.libtorrent.org/2020/09/bittorrent-v2/)- after you know the foundation (e.g. [[BEP3 - The BitTorrent Protocol Specification]], [[BEP52 - The BitTorrent Protocol Specification v2]], [[Learn BitTorrent]]) this already 3 years old document is still probably the best in overview of the changes introduced in the BitTorrent protocol version 2.
- [libtorrent intorduction](https://libtorrent.org/features-ref.html) and some followup links from here:
- [DHT Extensions](https://www.libtorrent.org/dht_extensions.html) and [BEP5](https://www.bittorrent.org/beps/bep_0005.html)
- uTorrent metadata transfer protocol[BEP 9](https://www.bittorrent.org/beps/bep_0009.html)(i.e. magnet links).
- uTP implementation ([BEP 29](https://www.bittorrent.org/beps/bep_0029.html)). See separate[article](https://libtorrent.org/utp.html).
- [libtorrent tutorial](https://libtorrent.org/tutorial-ref.html) - a good to place to get some intuition on how the library is used.
- [examples](https://libtorrent.org/examples.html) - good as a follow up to the intro.
### Other intersting docs
- [Question about Bittorrent V2 File Hashes #7604](https://github.com/arvidn/libtorrent/discussions/7604) - a good clarification about blocks, padding, and "piece layers".
- From [BitTorrent v2](https://blog.libtorrent.org/2020/09/bittorrent-v2/) mentioned above, we can see how impactful libtorrent is for the BitTorrent protocol version 2: [# Draft: base protocol with merkle trees and new hash algorithms](https://github.com/bittorrent/bittorrent.org/pull/59)