Here are the specs I'm interested in exploring, along with their current implementation statuses:
- BEP 3: The BitTorrent Protocol Specification
- bencoding
- parse Integer
- parse String
- parse List
- parse Dictionary
- metainfo/.torrent implementation
- Unmarshal to Go struct
- Marshal from Go struct
- Tracker requests, response parsing
- Peer protocol
- parse peer messages
- handle downloads
- actually send/receive stuff
- bencoding
- BEP 4: Assigned Numbers
- We'll want these as enums
- BEP 5: DHT Protocol
- Finding stuff
- BEP 20: Peer ID Conventions
- Identifying ourselves
- BEP 23: Tracker Returns Compact Peer Lists
- Trackers gets to decide which format to return, so gotta do this. (Done.)
- BEP 29: uTorrent transport protocol (uTP)
- ...maybe.
- BEP 55: Holepunch extension
- Getting past NAT