There was a solution to spam:
Credence: Thwarting P2P Pollution
I tested it and it worked. It wasn't perfect, but quite efficient, and it could have been greatly improved.
It let users mark files as spam or non-spam and compared those to the votes of other users, creating a "trust metric", with which the votes of others could automatically be used to rate files.
-> a decentral spam detection/marking system.
Sadly it got rejected by LimeWire...