Not sure why you need noise if you’re just syncing events.
If you want to do more in depth sync, you should consider a privacy preserving protocol.
Not sure why you need noise if you’re just syncing events.
If you want to do more in depth sync, you should consider a privacy preserving protocol.
I always wanted to do a noise protocol as a tls+websocket alternative, this seemed like an opportune time to do it. Could broadcast pubkeys in the multicast gossip. But yeah could be optional
The times can be changed based off of requirements
- Each client should assume it is not a master at the start
- A client that is a master should broadcast a discovery message every 5 seconds.
- A client that is a master should stop being a master if it sees another client broadcasting a discovery message.
- A client that has not seen a discovery message for 10 to 25 seconds (random for each client) should make itself a master and broadcast a discovery message.
- The discovery message should contain a unique nonce.
- Each client should broadcast a response containing a hash of its own ID, a private value (unique per group of people that want to sync) and the nonce.
- Clients should check the hash to match what they expect, by calculating it with the nonce, the client’s ID and what it assumes is the correct private value.
Is this attempting to deal with the M * N problem ?
m^2, but yes
the first part prevents exponentially scaling broadcast storm-like behavior, while the 2nd part means you do not have a persistent trackable identifier being broadcast to the networks you use
this protocol was made originally for IRC-based /dev/random cross-seeding, while also allowing on demand requests if required
it still works to this day
yeah was thinking about how to deal with that without over complicating it. Not a big deal for small networks but would be important for conferences.
I think in those situations you would want the client to discover a relay and use that.
I wouldn’t want my phone to announce to be a master node if theres like 1000 nostr nodes on the network
the master here would only coordinate the schedule of discovery messages, which does not change if you have 1 or 1000 clients