Replying to Avatar Dikaios1517

Ok, it's time to gripe a little bit, as I discovered an annoying lack of interoperability between various #Nostr clients that really ought not to be the case:

Mute lists.

Beware, this is a bit of a long one...

When a user mutes an npub, or a word, they don't want it to only be muted in Amethyst, and not muted at all in Primal. They want it to be muted across all Nostr clients they use.

The standard mute list, according to NIP-51 is kind 10000. All users should have exactly one of these, and relays should only keep the most recent version.

Mute lists may contain a few different types of muted content:

1. Muted users/npubs, designated by a "p" tag.

2. Muted hashtags, designated by a "t" tag.

3. Muted words, designated by a "word" tag.

4. Muted threads (such as hellthreads), designated by a "e" tag.

Some clients also encrypt the entries added to the mute list. While not required, it is part of the spec that clients should expect to see within a kind 10000, and I think it should be preferred. A given npub should not be aware that another npub has muted them and unencrypted mute lists are readable by anyone, unless we move to only saving mute lists to relays that can require AUTH to read them.

Yet, I see a wide variety of handling of mute lists by clients.

#Amethyst uses kind 10000 as expected, and encrypts all content saved to the mute list (hooray!). It seems to support muting npubs and words, and has no support for muting hashtags or threads. nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z, please chime in to correct me if I have misrepresented anything here.

#Coracle uses kind 10000 for muted npubs and also decrypts the muted npubs that were added by Amethyst, so they are also muted on Coracle. However, users muted on Coracle are not encrypted. I imagine this is because Coracle is trying to use mute information for the sake of building web-of-trust scores (mutes by those within your WoT count as -1 in the scoring), and any encrypted mute information cannot be used to calculate those scores. Also, though Coracle supports muted words, it does not seem to see the words I have muted from Amethyst in my kind 10000, and seems to be keeping a separate list, because words I have added in Coracle don't show up on my kind 10000, and are therefore not seen by other clients. nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn, can you offer some clarity on how Coracle handles mutes, especially regarding muted words?

#Primal web seems to have an old kind 30000 list with only two npubs listed, while Primal Android didn't show any muted users at all, but adding a muted user added the npub to my kind 10000, which suggests Primal simply doesn't support decrypting the other entries that were added from Amethyst. Also, muting an npub on Primal resulted in all the encrypted entries on my mute list from Amethyst being nuked.

#Nostur did not display any of the above. Not my kind 10000, encrypted entries or not, or the kind 30000 Primal had been using at some time in the past. Adding a "blocked" user in Nostur also did not add them to my kind 10000 and did not add any other list type that I could find on listr.lol either. I am guessing it is using a list kind that isn't recognized or is just storing blocked npubs locally. nostr:npub1n0sturny6w9zn2wwexju3m6asu7zh7jnv2jt2kx6tlmfhs7thq0qnflahe, can you provide some insight into how Nostur is handling mutes/blocks, and why it doesn't seem to be using kind 10000?

#Damus appears to be using kind 10000, but only shows entries that have not been encrypted. However, when adding a new blocked user, it does not appear that Damus wipes out the encrypted entries in the list. If not supporting encrypted entries within your client, this is the best way to handle them, rather than erasing them when replacing the kind 10000 as Primal did.

#Nostrudel behaves much the same as Damus, using the kind 10000 and only showing entries that have not been encrypted, but also not wiping encrypted entries when adding a new entry.

#Pokey also seems to have trouble respecting mute lists for the sake of muting notifications. This appears to be because Pokey only looks for your mute list on your inbox(read) relays, while users publish their mute list to their outbox(write) relays, and those may not necessarily be the same. However, I wonder if it is also an issue of Pokey indeed being able to find a user's mute list, but not taking encrypted entries into consideration. nostr:npub1v3tgrwwsv7c6xckyhm5dmluc05jxd4yeqhpxew87chn0kua0tjzqc6yvjh, can you confirm whether Pokey is able to mute notifications from npubs that have been encrypted in a users mute list?

Is it possible to get these and other major clients on the same page about how to handle mute lists?

Yesterday, nostr:nprofile1qqsqddupn4l3cl65wggcyehd009g0pwuatsfudh28f90vewx68vrylqug8jsn posted this about what interoperability means on Nostr:

nostr:nevent1qvzqqqqqqypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnuqyghwumn8ghj7mn0wd68ytnhd9hx2tcprdmhxue69uhhyetvv9ujuem9w3ekzen9vfhhstnpwpcz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uqzq8kmkd9nu88hhs89dzfahs78pn9j73u5wfjxz8y972uzhapj4es66ad6zu

I pointed out that in order for this to be the case, we also need to agree on the format and expected content that will be contained in a specific note kind. From what I can tell, there is little agreement on how mute lists should be handled.

Should they include encrypted entries? If they do, should clients respect the encrypted entries, since the user who created that kind 10000 certainly doesn't want to see notes from the npubs they added to their mute list, encrypted or not? Clients certainly should not nuke encrypted content from the mute list if it is present, right? Or should we drop support for encrypted entries on mute lists altogether, since some clients are relying on mute lists from npubs within a user's WoT to determine what content is likely to be spam?

Users just want to know that when they mute an npub or a word in one client, that it will also be muted in other clients, and that muting in one client won't nuke their mute list in another client.

The problem is exactly as you defined. nostr:nprofile1qqst4dr6ttrw6s28squnwwuj5vsvsly33h7r4nsuzz3f8nf3wjsmk9cprdmhxue69uhkummnw3ezuumpw3ehgunpd35kztnrdakj7qghwaehxw309aex2mrp0yhrq7rrdpshgtnrdakj7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uan9ak9 only connect to inbox relays. The main issue is that Android has a very strict limited number of allowed parallel WS connections.

We discover in early versions that if you allow pokey to permanently connect to all relays, other nostr apps will have troubles or directly won't work because their connection attempts will be blocked by Android.

I have sort of an idea on how to solve it. But I need to work on it. Thanks for the heads up 🙂 this definitively has to be solved.

Reply to this note

Please Login to reply.

Discussion

How about the encrypted mute items? Is Pokey decrypting and muting those, or ignoring them?

I y it was being taken into consideration but after checking, it's being ignored. Looks like I have a new task to work on asap. Thank you!

Thank you sir!

I really think this encrypted mute list issue may be more of a source of the mutes not working in Pokey than the relay issue. Most users have at least one relay they use as both inbox and outbox, so the chances are that Pokey is finding the mute list just fine.

However, I would wager that a vast majority of Pokey users are also using Amethyst, which is encrypting ALL mute entries. If Pokey isn't able to see those mute entries, then no wonder people are still getting Pokey notifications from people they have muted in Amethyst.