Oddbean new post about | logout
 Who decides what to censor as spam?

Nostr and Lens solve the "spam and scam" problem by having the client decide.  For example Amethyst for android will hide posts from accounts that others report as scams.  These "others" are defined by people you follow, but this essentially puts it up to a community vote of large influencers to silence you.

On Lens, once you're labeled spam, you appear in the "show more" of comments.  This is a huge turn-off to new users with no followers, who are treated like lower class citizens.

Farcaster solves it in a similar way, but by having the official team label it, and then since their client is so large and influential, their list is often distributed to other clients.  This is absolutely horrible and way too centralized.  While it's true that posts to your followers would still show up, they are effectively silencing your comments.

Session has zero censorship for mass DMs in the way I use it, even under outright sanctions.  The nodes don't even know I am the sender, and I'm assigned new receivers if they drop me.  That's why I like it.  But the market likes simpleX more because it rotates encryption keys, so it's tough to get new followers.  Can't fight the market.

Bastyon solves the problem by a community vote for outright illegal content, to get it off the nodes, such as child porn and narcotics sales.  The voters are picked based on their total upvotes, called "reputation".  I disagree with this approach, as if we're going to vote, it should be the nodes hosting it (like Arweave does)...

Files on Arweave have an unofficial vote, where the nodes can opt out of storing it.  And if all the miners chosen in a block opt out, then there's no financial penalty for dropping the content.  But if they have the content and others don't, then they have a financial advantage to mine that block over competitors.  This approach is good for websites, but for a social network with permissionless replies, it's way too passive.

Therefore:
I disagree with all these solutions.

In my view, the best way to handle spam (in a permissionless system) is to allow the original poster to decide which replies are spam.  Then the end user can decide to toggle on or off "criticism and spam" for the replies.  After all, if you're following someone, you trust their judgment on the subject they are speaking about.  And this decentralizes the decision to each individual poster.

Now I do the ironic thing, and turn it over to my replies.  Do you think this approach is right? 
 Do you mean that the OP decides which replies under their note are spam?

It sounds like a good way to decentralize the decisions, and to limit abuse of censorship by making it cumbersome to block all of someone’s notes (and even then you can only censor them on your own threads). 

There is still the option for someone to abuse it - in a way: if someone that the OP dislikes leaves a reply, or perhaps multiple replies are calling out the OP for scamming, for example, it gives the author of a thread a sort of immunity from criticism (or at least a way to suppress it). And while others could always post *about* the original “malicious” (or w/ev) post, it wouldn’t have the same effect and you’d lose the natural balance of human organization to call out various forms of bad/antisocial behavior. (Of course this cuts both ways — on one end of the spectrum, it’s “canceling” someone, and on the other it’s the power to unilaterally silence one’s critics).

Another potential is that it’s also cumbersome to manage situations with high volumes of spam/scam, in that it would require each user to police the replies under any/all of their own notes and that just seems like a lot of effort. And for the users who don’t bother, then I can imagine scenarios where a thread becomes unusable for anyone who’s actually trying to engage with it.

Still, it’s a thoughtful approach and I can imagine potential for an OP to at least give some indication that there’s spam in the replies. I envision a future where the “web of trust” concept takes these various approaches in concert and applies weight in an intelligent way. Maybe 
 Another interesting option if the spam problem on nostr increases, would be a proof of work based captcha like https://mcaptcha.org/. Basically the nodes could ask the clients to solve such a proof of work captcha, no human involvement. 
 for desktop, proof of work is great.
for mobile phones, most people won't want to do it 
 To both of you, you might be interested to know about NIP-13 which allows relays and clients to require proof of work before doing anything with a note. So no capcha or anything like that required, if relays began requiring this or clients began requiring it it would work just like hashcash for spam mitigation, I would like to see more nostr software implementing this.





 https://github.com/nostr-protocol/nips/blob/master/13.md  
 how they dealing with the phone issue?
Gossip has PoW already 
 Well it's up to clients to generate the proof of work required by either relays or other clients fetching notes, and to implement filtering for follows based on a proof of work if the user desires.

It's a difficult problem, because you can't have user defined PoW thresholds that their follows don't know about, it's really best filtered by relays. Say I have a PoW requirement that the note id must start with 3 0s, but a follow produces them starting with 2, I won't get his notes. If I trust a relay though to require it and if there's some way for a relay to tell a client what it's PoW requirement is, then it's not a problem. PoW doesn't really affect your curated feed positively, it affects spam to relays, and if youre viewing a global feed, it can be used client side to hide spam at the cost of hiding basically everything from relays that don't require it.

As far as phones doing the PoW, that's not really that big of a deal. Some relays might require a high threshold to reduce spam, and if a user is incapable of producing it in a timely manner he can just publish to other relays, and if I'm big on following him I'll fetch his posts there. That relay might have a spammy global feed but as long as you're only fetching your follows from it it doesn't affect you. 
 I hear you, and I personally think if the relays filter at a low threshold it should be fine, but if they up that, then you'd likely want a majority of the client devs (including mobile) to be on-board in education of whats going on 
 None of the above.

If you see spam on your feed, simply block the spammer. If it's a bot issue where multiple accounts are spammed constantly, they usually spam the same content and you can find a way to block it using black lists of words or phrases.

Any solution that takes away from me my ability to manually curate my own feed is unacceptable. 
 I agree with the suggested. Another simple algorithm, is to invert the "content other people like".

For example, if you manually hide content X and Y and other people hide X and Y, then you can be paired with other people based on similar distaste. Then if those other people hide Z, you will also prefer to have Z automatically hidden. 
 How about this: 
When you want to comment on my feed, deposit a bit Monero to my address. If I don't like your content, I confiscate your deposit. 
You can collect your deposit after some time. 
 
 LOL ok you got me