Regarding PoW, how would this work exactly? It seems to me it's only effective if all clients opt in (If a client doesn't do you just ignore PoW for those clients? Then all spammers use that client. If you require it then you ban everyone that uses the client. Both seem bad.)
Discussion
It may be instructive that PoW was originally invented to deal with spam but AFAIK isn't used for that today. Everyone uses machine learning, which may work on nostr too.
i think the relay would be a better place to fight spam. relays can choose to only store events with POW and/or from users who pay/have proven balance. then users select which relays they want to use.
This is how I envision it being used too. It would however be nice to be able to filter events without PoW in the client. Could be a user setting in the client.
yes for sure. or even a separate feed or something. the main reason I lean towards relay filtering of POW rather than client filtering is that the client can't send requests for only POW events, it has to receive all events and then superficially filter for POW
I do think there's still room for data-driven methods that detect this type of thing. All the data is out in the open so anyone can build heuristics or algorithms for flagging non-human accounts, for instance. Those algorithms can then be open sourced for any relay operator or client to use.
imo in the future all nostr client will need to opt in to POW, which will make it more feasible for users to only use POW only relays.
spammers that post via non-POW clients will then get no visibility, and remove the incentive of spamming.