GM all good people!☕️🌞🫂
nostr:note1nfkajtfufkqwhlsrw3luxu60xt9lj4zfmupeuq3tp5lpwlecd6uql8e97z
Good summary, Max. Have you read any of nostr:npub1u5njm6g5h5cpw4wy8xugu62e5s7f6fnysv0sj0z3a8rengt2zqhsxrldq3 ‘s writings on the topic? He’s developed brainstorm/graperank to address a lot of the issues you mentioned. NIP-85 is just a nostr-native delivery mechanism for the scores, but graperank itself solves the personalization of scores and also the contextualization of the trust web (grapevine)
nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt you should join our nostr:npub1healthsx3swcgtknff7zwpg8aj2q7h49zecul5rz490f6z2zp59qnfvp8p web of trust hackathon! Our goal is to encourage an ecosystem within nostr of Web of Trust Service Providers — Brainstorm, Vertex, Relatr being a few examples — that calculate *personalized* (not global!) trust metrics and make them available for consumption throughout nostr.
After PGP, nostr is the logical next step. (And to think: it only took 3 decades! Lol) And right now, tools that provide personalized, portable, and contextual WoT is the next step in pursuit of Phil Zimmerman’s vision. We need all the help we can get to make this happen now, not 30 years from now!!
👀
nostr:note17x6ze95ymadll526skxmj5ugl9hg9n52v3pmm8vm0q87wa43fcssehnjs3
You can see archives of previous community calls on our WoTathon page, just scroll to the bottom 😊
The WoT Sandbox by nostr:npub19ma2w9dmk3kat0nt0k5dwuqzvmg3va9ezwup0zkakhpwv0vcwvcsg8axkl
at https://dlist-ui.netlify.app/ is very cool. The Decentralized Lists NIP and the Trusted Lists NIP are each implemented and functioning! 😃 This includes support for replaceable 39998 and 39999 events in addition to 9998 and 9999 events. You can make your own lists, other people can add to them, anyone can upvote/downvote, and synthesize them into Trusted Lists!
I’ve been using it to create the basic relationship types necessary to incorporate the next NIP into the sandbox: Graphical Organization of Decentralized List Items. This will allow us to organize Decentralized Lists into complex structures like this one for the list of dogs. Very exciting! 🔥

Here is the Graphical Organization of Decentralized List Items NIP:
The WoT Sandbox by nostr:npub19ma2w9dmk3kat0nt0k5dwuqzvmg3va9ezwup0zkakhpwv0vcwvcsg8axkl
at https://dlist-ui.netlify.app/ is very cool. The Decentralized Lists NIP and the Trusted Lists NIP are each implemented and functioning! 😃 This includes support for replaceable 39998 and 39999 events in addition to 9998 and 9999 events. You can make your own lists, other people can add to them, anyone can upvote/downvote, and synthesize them into Trusted Lists!
I’ve been using it to create the basic relationship types necessary to incorporate the next NIP into the sandbox: Graphical Organization of Decentralized List Items. This will allow us to organize Decentralized Lists into complex structures like this one for the list of dogs. Very exciting! 🔥

GM all good people! ☕️ 🌞
#wotathon community call in a little over half an hour!
nostr:note1grg5ekr86edn9k3r9mj40m37wzrhxswv7g5t4nfdpqe368p6cw6sy2lxlf
#wotathon community call tomorrow!
nostr:note1grg5ekr86edn9k3r9mj40m37wzrhxswv7g5t4nfdpqe368p6cw6sy2lxlf
GM nostr! Merry Christmas to all!🎄
NIP-51 is for when you want to maintain the list forever. Decentralized Lists is for when you want your WoT to take over list curation.
WoT may rely heavily today on follows, but follows is not the only trust-relevant data we have to work with. Meeting someone in real life and signing a suitable attestation will be another important source of data for WoT. And there will be a thousand other inputs too.
nostr:naddr1qqn8wetz94hkvtt5wf6hxapdwa5x2un9945hxtt5dpjj6arjw4ehgttnd9nkuctvqyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqzyrjjwt0fzj7nq964csum3rnftxjre8fxvjp37zfu285u0xdpdggz7qcyqqq823cralpgz
Haha nope but if they were compromised, we need a social proof method to address the problem, something I wrote about here:
nostr:naddr1qpfxkete94ex7arpw35k7m3dv9hxgtthv43z6mmx9468yatnwskhg6r994ekjmtsd3jhxapdwphhxumfvfkx2ttndak82arfdahz6ar094sj6urjv4ehx6twvukhqun0vfkx2mgzyrjjwt0fzj7nq964csum3rnftxjre8fxvjp37zfu285u0xdpdggz7qcyqqq823cq3xcp0
Looks like you have a list of 14 music genres and anyone can use your system to tag with those genres — is that right? Are you tagging artists or songs (or both?)
HPM — tell us more about the WoT music scorer you mention. What do you want to see scored - songs? Artists? Will this be for users to find new music?
Glad to hear that. We’re build open source WoT infrastructure at nostr:npub1healthsx3swcgtknff7zwpg8aj2q7h49zecul5rz490f6z2zp59qnfvp8p and this type of application would be a great fit. Cc nostr:npub1u5njm6g5h5cpw4wy8xugu62e5s7f6fnysv0sj0z3a8rengt2zqhsxrldq3
How about a decentralized list of musicians, organized by genre, where the list of genres is also a decentralized list?
Anyone can add an item to either list, and we use WoT to make sure spammers don’t screw it all up.
Ideally, every nostr user would run open source software locally that calculates personalized trust metrics. This is why brainstorm is open source: so you can run your own instance and calculate your own personalized trust metrics. No need to trust a third party if you’re willing to put in a little effort.
Realistically, not everyone is a developer, and most users will want someone else to do it for them. Just like most nostr users don’t run personalized relays, and most Bitcoin users don’t run their own full nodes. It doesn’t mean the entire endeavor is a failure. A small fraction of people who actually run their own Bitcoin nodes, with almost everyone having the ability to do so (not just theoretical but practical), is better than the status quo where basically 0% of people have the ability to audit the fiat system, whether in theory or in practice.
So how do we maximize the number of people who actually do calculate their own personalized trust metrics? Answer: we will have to make it as easy and user friendly as possible. And did I say open source? It needs to be open source. The lower the barrier to entry, the healthier the ecosystem.
I’d love to see that happen. If you were to use it to calculate personalized trust metrics, that could be a great fit for nostr:npub1healthsx3swcgtknff7zwpg8aj2q7h49zecul5rz490f6z2zp59qnfvp8p‘s upcoming WoT hackathon!
#wotathon
Also: nostr:npub10mtatsat7ph6rsq0w8u8npt8d86x4jfr2nqjnvld2439q6f8ugqq0x27hf is working on a neo4j nostr relay in go and has put a lot of thought into overall graph db relays architecture. I think graph db relays could form their own special class of relay and it could be fruitful for a gunDB relay dev and neo4j relay dev to bounce ideas off each other.
Anyone ever put serious thought into a GunDB nostr relay?
nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk
nostr:npub1057d3g2zw9w4ns8fq43yka3per9s2z9zmp4ryncgqqvv6e42tjrqnrxgd7
nostr:npub1u6qhg5ucu3xza4nlz94q90y720tr6l09avnq8y3yfp5qrv9v8sus3tnd7t
nostr:npub1srpfc36pes9urzcnmrev38c9ypewahmggqc56dj7czr4k6zd4qcs4m5mn8
So I think I misunderstood what you meant by “capable of handling up to” a million keys. It means it would successfully defend against being attacked by one million pubkeys trying to gain access.
So the question we ask: given a certain set of parameters, if we throw X randomly selected pubkeys at it, what are the odds of 1 or more false positives? And for 10 million it’s still pretty tiny.
Yeah, I suppose 100 bits would be well past all 1’s if we tried to pack in 10^7 pubkeys. If I’m understanding correctly how this works.
Sounds like there will be lots of instances where a WoT Service Provider would want to deliver a bloom filter instead of a big list.
Big lists cause several problems:
1. Unwieldy to transmit by API; even just a slight delay could result in bad UX, depending on the use case
2. Won’t fit in a single event due to size limits
3. Slows down processing when using the list for whatever the recipient is using it for.
Any rule of thumb estimates we should keep in the back of our minds as to how big a list of pubkeys or event ids should be before we should think about delivering a bloom filter instead?
I don't think so. Everybody just saves a huge list of relays in their databases.
There are many places clients could share bloom filters. This all started with this idea: https://github.com/nostr-protocol/nips/pull/1497
In this case, I proposed sha256 as a hash function so that clients didn't need to code MurMur3, but MurMur is so easy that we can just teach people how to do it.
I’m reading your NIP-76. It only takes 100 bits to handle 10 million keys without any false positives?? Wow. Very cool 🤯
Very interesting. Are any other clients doing this? Would you envision clients sharing filters like this?
Have you actually implemented this somewhere? (Production or testing) I’m curious to know what use cases we might expect to see in the wild in the short term if a bloom filter nip were to exist.
Currently, nostr:npub1fvmadl0mch39c3hlr9jaewh7uwyul2mlf2hsmkafhgcs3dra6dzqg6szfu imports a whitelist (“global feed minus bots, impersonators, spam and other bad actors”) from Brainstorm via API that can be up to 200k pubkeys. Perhaps that would be a candidate use case.
The kind 9998 list header declaration could specify the hashing algo. Or we could leave the hashing algo unspecified and recognize that it is not necessary for all clients to support all hashing algos, just like it’s not necessary to support all NIPs. Probably the community will gravitate to one algo organically, unless some devs have strong preferences that are not always aligned.
If getting everyone to agree to all the details is trivial, is there any reason not to go ahead and write up a bloom filter NIP?
Seems like convincing everyone in nostr to use the same exact specs would be a challenge. What if we come up with a system that doesn’t require everyone to use the same specs?
We declare a Decentralized List (kind 9998 per the custom NIP, linked below), called “Bloom Filter Specs”, and list the requisite parameters as “required” tags (rounds, salt, etc). So if you want to use some particular bloom filter, you declare an item on that list (a kind 9999 event) with your choice of specs and then refer to that event wherever necessary.
nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk you were working with bloom filters at one point right? Are you using them in Iris? Any thoughts on this discussion?
I vote to give more power to the end user.
If I see Alice has N “verified” followers on one client, I want to see the same N on all clients — otherwise I have no idea what to do with the number. Which means the metrics like verified followers are personalized to me, calculated using the method that I select, and they follow me wherever I go on nostr. Which means less power to the clients.
I don’t think it’s feasible for every relay to have every note. Or even every note of a given kind. Too much traffic will make them slow, so best case scenario is that we would end up being a victim of our own success. Different relays can serve distinct purposes. That’s one of the great things about nostr.
All you need is someone to create a relay focused on the country or topic you’re interested in, then you add that relay to your relay list and you use it on any client.
Or a client could maintain a list of available country-specific relays, have a button for each one, you click your country of interest and the client knows which relay to point to. You could basically channel surf.
The more I think about it, the more I think these features of nostr:npub1fvmadl0mch39c3hlr9jaewh7uwyul2mlf2hsmkafhgcs3dra6dzqg6szfu are awesome and underutilized.
Relay.tools currently enables you to create a hobby-specific feed by keying on hobby-specific hashtags and using the WOA feature to keep out spam. By the time nostr:npub1healthsx3swcgtknff7zwpg8aj2q7h49zecul5rz490f6z2zp59qnfvp8p's WoT hackathon is over, you’ll be able to add a list of hobby-specific authors curated in real time by your grapevine. How does that sound?
How do you sort events by country, hobby, etc?
GM nostr! ☕️ ⛅️