I tried a new Nostr mobile app last night and today I realised it’s dropped my Damus kind3 content data - which stores relays. I now don’t want to test new Nostr apps with my primary key 🫤

As a user, the experience was crap. The Nostr event diversity and quality I saw today was really different and far less than normal - I didn’t realise at first my relays had been dropped. As a user I may not have realised and never picked up Nostr again.

A similar issue happens around max following, where kind 3 gets too big and some relays reject it, leaving weird states.

Couple suggestions:

1. Can we add a max follow threshold in apps until we find a way to support more without these issues? Maybe 1200 seems to be ok.

2. Can we in general consider metadata update compatibility in NIPs better. For example, clearly stating “when updating kind 3, the content should be preserved”. Or “when updating kind 0, all existing content keys should be preserved unless explicitly removing them”.

We need to better consider data loss, and limit failures or bad experiences. Decentralisation is hard, but we are ignoring the easy ways to improve it.

And a final note too, when looking for metadata events (like profile or contact list) we should smartly query all profile suggested relays for any existing data. I suspect some apps just query hard coded relays… doh. You need to query NIP05 relays, kind 10002 relays, at a minimum - then any extra ones.

Reply to this note

Please Login to reply.

Discussion

I also now want to create a Nostr Restore webapp where I can effectively pick an older event version and publish it as new/replacing.

Does this exist yet? I think we need something regardless, as no silver bullet for perfect consistency decentralisation. Nostr doesn’t even have eventual consistency.. so it’s tricky.

Please do it!

I’ve been seeing this a lot lately, which client is dropping contact lists? Looks like I will need to add a contact list restore feature.

I don’t know for 100% sure, however I imported my sec key into the Current app last night to have a play.

Fairly sure I didn’t use any other apps at the same time that could have caused it.

And to clarify .. I still have my contacts - I just lost my damus relays (kind3 content was not copied into the replacing event).

And I didn’t event follow anyone by memory. I think they inject the current relay into existing data. Not 100% sure, as only half looked into it.

I may have lost a few contacts, but 95% are still there. I haven’t diffed anything yet. I have backup, so will likely just restore.

#[3]​ did you login to current ?

I logged in to 1.3.0 (1) recently but not current

Yeah. The contact list chopping issue you had is a different underlying limitation. However both deal with the same event kind.

Sorry I didn’t realize Current was the name of a client! I’ve never used it.

Yes, current did. it for me as well. Most of my follows and some of my relays gone.

It should be possible to see error messages from relays. That at least would help visibility.

Related: #[4]

nostr:nevent1qqs83qp3g57xw5q2pn8mlgg9vz6chpj0epnhklcdc7cahe2vekd9glsprpmhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv7ftxyh Yeah lost my followers from Amethyst because it was using the wrong nip for relays.

This is impossible to get right. Apps already know they should take care, there may even be a NIP saying that, but of course no one should count on they actually taking care.

Ultimately having apps that store your stuff independently of other apps, then lets you restore if some other app breaks your things is the best solution.

Impossible for 100% sure. Even if apps were perfect, the network never is.

I agree, I think client apps should maybe persist last 10 versions they created or similar. Then it something breaks you can go to the app that was last correct and hit restore.

As a relay operator, I have backups. But most relays implementations replace meta events without keeping old (from what I’ve seen). As a normal user I have no access to an old state, as querying relays means the newest broken one. So per client app makes sense.

https://github.com/mikedilger/gossip keeps your stuff locally and even allows you to merge from the network with your local one instead of overwriting.

Your message is resonating with a lot of people.

Added to the https://member.cash/hot feed