Torrents break the files into regular and specific piece sizes, and hash each piece with SHA-1. The list of hashes is included in the .torrent file. This is my understanding based on the wikipedia article on bittorrent.
True, these hashes can't be used for testing though, as they are public knowledge already.
To request seeds for a torrent file, you send the SHA1 hash of the whole list of SHA1 hashes (and some other data - looks kinda similar to the bitcoin block header) called "info hash" to a server called "tracker" and state that you either have these files available or that you want to have a list of IPs who have these files.
All trackers know is that infohash "abc123" is seeded by IP 1.2.3.4:1337. They know nothing about file names, how big the files are, if 1.2.3.4 even HAS the file or is a jerk pretending to and they have no means to verify any of this. They are just plain stupid databases on the internet. This gets more and more replaced by DHTs nowadays, which are in the end just a distributed database, meaning some nodes feel responsible for the infohash "123456" and others for "654321" and you get your data from these nodes instead of a central server.
As it would be near impossible to include monetary transactions into the bittorrent protocol itself, we'd rather need to extend it and just use it for transport.
Modifications would have to include:
Ability to allow, traffic shape or ignore hosts on-the-fly based on if they are paying or freeriders.
Central trusted element (service.com) - I'm not 100% sure if it can be distributed without having a server yourself that constantly does these integrity checks. It could be distributable in that sense though, that there are multiple services to choose from and you can host one yourself (just like torrent trackers but with a lot more bandwidth requirements)
Something to verify upload speed. This is the biggest question mark for me, as it would be trivial to have a central server that downloads files from nodes to check on their speed - but it would be trivial for them to just grant this single node the high speed, everyone else has to live with 1 kb/s.
@markm:
How could I make sure that any of these offers floating around are actually worth even the 1 USD/month/100Gb they ask? Going offline, not offering any significant bandwidth, destroying data, taking a run with the money...
On the other hand, how would I deal with the fact that if I offered to host 100GB for 1 USD/month it might be the case that I never get paid or have to deal with 100s of GB upload because suddenly I'm hosting the newest season of Game of Thrones for the whole internet...