If you want to have a look at a really powerful way to fight spam, you can check the (discontinued) Credence project.
They used decentral voting and object reputation for shared files and implemented that in a LimeWire, but LimeWire never added their code to the mainline, so the project eventually died.
When I tested it back then, it worked quite well, but it suffered from the problem that it needed to download the initial client ID for signing object votes from a server (to avoid people running a really huge number of instances to kill the algorithm).
They were working on moving from central key generation to decentralized crypto-puzzles short before they stopped updating.
The project is still available at
Credence: Thwarting P2P Pollution , if you'd like to give it a look.