How do you seed the initial fetch? What relay(s) are there to tell the client who I even follow or what my followings’ relays are?
utxo the webmaster πŸ§‘β€πŸ’»'s avatar utxo the webmaster πŸ§‘β€πŸ’»
Wisp uses the opposite system - outbox model. That means we automatically connect to all the relays the people you follow use to build your feed. This is the most decentralized and censorship resistant way to implement nostr in a client.
View quoted note →

Replies (42)

It’s because every now and we fall back to the bitcoin architecture where we think everyone needs to have the full nostr snapshot. If we really really care about that, just make relays push notes to each other. But we also don’t like that.
next up, queue complaints about DNS, and then in the dugout we also have how to initialize DHT from no previously known nodes, and then chicken before egg bikesheds all the way to the younger dryas period.. or, you can just update the list you got from a friend or a flyer on the subway, and have some chicken dinner.
i dont know about younger dryass bike sheds or broligarch cables but chicken dinner sounds nice
True, but in bitcoins case if all fails you just manually point to a node you know. I guess it’s the same in nostr as well, if outbox seed fails, the user can fall back to the classic model type in a relay thats up and start from there.
Welp, the internet is modeled after centralized infrastructure and central authorities, retrofitting p2p only gets you so far, even bitcoind has hardcoded nodes. I think truly decentralized discovery requires decentralized infrastructure. Like imagine if FIPS nodes published some metadata about the services they host, worst case scenario you walk the three asking everyone if they’re a nostr relay or something.
the real answer here is mesh networking to find your relay seeds, but then we got, "who makes the hardware and who owns the licenses to lora and.. how can we do this without using our eyes or going outside" πŸ˜‚
It’s not about software maintenance, it’s about reliability. He has a good point, actually, but I don’t it’s possible to fix the bootstrap problem while bending over to ICANN. I can see this getting fixed very easily by adding service discovery annotations into the metadata of meshnet nodes (think FIPS/Yggdrasil/CJDNS) since, worst case scenario, a naive solution could be that you just walk the whole network inquiring each node if it hosts nostr or not.
btw the ccp looked at our hardcoded list and blocked all of those relays at the great firewall level. we had to change it so the bootstrap relays were user configured
NIP-07 has a getRelays function, a bunker URL provides a relay hint, and NIP-05 json files often have them too. Indexer relays are useful, but as you say, a weak point. More of a convenience than a necessity tho. For anyone interested, I've built a library to make NIP-65 and the outbox model easier:
Nuh's avatar
Nuh 1 week ago
It is true that any system needs initial connection to peers, but not all systems are designed to reach strong consistency in a reliable way. Bitcoin for example can suffer from this, but it only takes one honest connection to get the definitive truth. DNS has a hierarchy that also allows for the definitive truth even if that is a proof of authority. A DNS based on a Blockchain especially a merge mined sidechain doesn't suffer from the same problem as Npubs do, because in Npubs you never know when you eventually found the source of truth (the outbox) and even worse, when you don't find it you don't know what went wrong if anything went wrong. Nostr has Negentropy, which I am proud of suggesting initially to its author, but gossip can only do so much. If you want strong consistency, at least eventual consistency, I am afraid you need to embrace either a Sybil resistant DHT and or a Blockchain, the later has better Sybil resistance and offer key rotation. However, you are correct in that, if you don't give a fuck about consistency and the stakes are low, the. YOLO who cares.
In #Reticulum there is AutoDiscovery feature. Relays can announce themselves as discoverable to the network. But you have to start also with one connected relay to get more. So a new user needs at least a list of relays to pick one. That's only true for TCP relays. Radio relays do not need a list, they are simply there, if they are in reach.
But the point is that they don’t even need to go after all relays since they can just grep GitHub to find out the seed nodes and prevent the bootstrap from ever working.
↑