What interesting computer science problems arise in Nostr development? I'm thinking of putting together a talk on this for CS folks that aren't familiar with Nostr. Here's what I have so far, and please suggest new items or revisions to current ones:

- public/private key encryption schemes between individuals, groups, groups with moderators, temporary delegations of key signing (#nsecbunker)

- graph analysis and scoring to solve problems like web of trust (#WoT)

- distributed file storage and sharing, like what #blossom is trying to do

I know there's got to be a lot more, 🙏 in advance

Reply to this note

Please Login to reply.

Discussion

Pkc based relay to relay communication

pkc?

Public key cryptography

Off the top of my head:

- Indexing and replicating content intelligently (how can I find pubkey x's notes?)

- Anarchic protocol design

- Content analysis, clustering, and recommendations

- Developing a programming style that is tolerant of every kind of malformed data (vs having everything validated before working with it. nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcprfmhxue69uhkummnw3ezuargv4ekzmt9vdshgtnfduhszrnhwden5te0dehhxtnvdakz7qg6waehxw309ac8junpd45kgtnxd9shg6npvchxxmmd9uq3jamnwvaz7tmjv4kxz7fwd4hk6mmnw3ezuurfde4j7qgjwaehxw309ahx7um5wf6k2tnrdakj7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uqzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99dfmusv and I talked about this on TGFN recently)

- Ethics of software development

for point 4, yeah, "fail fast" and that is drilled into you when you use #golang and bites you hard and quickly when you don't

in fact, sending bogus JSON to my relay currently causes the socket to stall and become unresponsive so there is probably a bug in there due to me rushing things and not being fastidious

sync relays with minimum amount of traffic

https://github.com/hoytech/strfry#negentropy

Event finding: Given that you only have an event id, find which relay has it to discover who the author is and hit that author's home relay for more information (replies, reactions, zaps) about this event. Everything starts with an event ID search. It's a similar problem to the file distribution if you consider each event being a file.

Distributed search: A version of event finding, but based on search parameters like contents of an event or an image.

Voting: How to count things without an order of events / time chain (events can be created in the past).

Database Indexing Performance: SHA256 hashes make terrible Primary keys.

Relay Syncing: Efficient nostr-native whole-DB diff calculations are hard.