Damus
calle profile picture
calle
@calle
Currently we're using a fixed set of relays in bitchat which is only a temporary solution. We could let users edit their own relays but 1) users don't know what relays are and 2) if users have no overlapping relays they can't talk to each other.

Here's a solution that we came up with. I'd like to know your thoughts. We're going to crawl a long list of relay URLs every 24 hours. This list will also include their estimated geo locations, also updated every 24 hours. This could be done in an automated GitHub runner.

That list of URLs plus their geo locations will be embedded and shipped with the bitchat app. Users who join a geohash channel will use the five closest relays based on the geohash location of interest.

This solves multiple problems at once:
1) relay centralization
2) privacy
3) speed
4) maybe censorship resistance?

What do you think?
444❤️28🤙4👀3❤️2👍2💜2
Vitor Pamplona · 56w
Don't delay outbox. You will regret it later.
ponymontana💜⚡ · 56w
perfect is the enemy of good, this solution seems good frankly
Nikos · 56w
Waiting to set my own relay , then all data get delayed via satellite for a cross continent bridge https://primal.net/e/nevent1qqsvrp3dg020cqj8qjkvtjwuvfac6fu3kcp6pvg0kvtqrzkvj9ts9ggcm9qdz
hodlbod · 56w
This is a brute force solution. Every event needs relay selection heuristics so it can be found. I actually use geohashes as an example in my book. Read the chapter on relays, maybe it'll help you think about this. https://building-nostr.coracle.social
Cesar Dias · 56w
Looks like a use case for nip66 and the g tag
Иван · 56w
Yes, that’s probably the right idea, in the sense that the authorities are less likely to block their own servers than those located abroad, but we shouldn’t forget that in some locations there aren’t many Nostr relays (in Russia you won’t even find five), and at first this will put a heavy ...
Solarchitect · 56w
off topic: there is a bad spam situation where some bot spams every room with ;;;;;;;;;;;;;;;;;; millions of semicolons. We cannot block him.
DZC · 56w
How easy would be for a bad actor to set a relay and use it as a honeypot to locate the bitchatters IP for certain locations?? 👀 Tor support would be nice to boost privacy...
hzrd149 · 56w
Maybe could use NIP-66 to find public relays close to the users location?
lkraider · 56w
How can relays opt to be included in that list? What about a DHT for updating the list instead of app updates?
ismyhc · 56w
Does this mean that you’d have to make another release to update the list? Also would this also cause users far away from each other to possibly not be able to chat with each other since they’d likely be on different relays?
SwapMarket · 56w
github is a centralized piece of the puzzle, but I like the idea
FreedomTech · 56w
It might be nice if Relays stored the updated relay lists.
Nunya Bidness · 56w
nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn weren’t we talking about this a long time ago?
Luxas · 56w
Nice, but heads up that if Cloudflare’d the relay’s location will not be accurate
Cerebrum · 56w
If this is being used for protests and the geohash channels will use local relays, wouldn’t it be easier for authorities to crackdown on it?
FOU · 56w
Make the regional users be the relay, with multiple redundant relay users ready to handoff to.
DagzTagz · 56w
This is a good idea because this is what I do manually on nostr Is 5 going to be enough without some sort of premium relay though Maybe I’m confused but relays don’t always stay persistent… maybe that’s why you are saying a 24 hr turnover though Things should run persistent for 24 hrs re...
roundtheworldman · 56w
Seems like Gitlab runner would be a better choice if you need that kind of functionality. Gitlab has good self-hosting support. Keep up the great work and be careful of feature creep. I love that the apps under 10MB right now!
Derek Ross · 55w
i see many WoT relays in the list. i don't think those are a good idea to include as new / emphemeral users can't write to them.
mccrmx · 50w
You can make this deterministic and completely client side: 1. Query bootstrap relays for kind 10002 and 3 events. Extract a list of 100s of relays from these. Takes a second or two when I tested it. 2. Hash every relay URL. 3. Hash the user's npub. 4. Use Kademlia XOR-distance to find the 5 relay...