Oddbean new post about | logout
 Nice! Can you go 5 levels of follow's follow? That's where I think most of the real game will be played. But it's a massive graph.  
 Sure. Open source and user configurable. Network map will be rebuilt and cached on a cycle as per user subscription.  
 I can script 10,000 npubs that all follow one another in no time. 
 The grapevine algo would ignore those 10000 npubs, because their grapevine WoT score is zero by default. 
 I have followers and I, as the wannabe spammer, would follow some of the generated ones. Would that endow them with some score? 
 Everyone’s score is zero by default unless there is at least one path of follows from me to the user in question. So the wannabe spammer would probably also have a score of zero, which means it doesn’t matter (from my point of view) who the wannabe spammer is following.

Hope that addresses your question 
 How do you know you aren't following wannabe spammers. They could be posting a couple of witty Satoshi quotes to gain everyone's trust while behind the scenes scripting 10,000's of npubs, some of which they follow to endow them with that transitive point score. 
 That’s always a possibility. If it becomes a problem, like if you see your extended WoT network grow by 20k bc someone 4 hops away from you followed 20k spammers, you just unfollow and mute that pubkey. Or maybe one or more others in your network find the problem before you do and unfollow / mute the bad actor, and the problem is solved before you’re even affected. 
 In that scenario, if one user many hops away from you follows a spammer, that spammer’s grapevine WoT score will be nonzero but still pretty low. It takes more than just one follow to push your grapevine WoT score up high enough to approach the max score of 1. 
 That's very interesting. How do I see what someone 4 hops away from me does? Is this somehow visually presented as a graph that I can click through?

And if my network suddenly grows by 20k npubs maybe someone 4 hops away just followed people from Paraguay and now I suddenly have all the nice people from Paraguay in my extended network. 
 Eventually I want those kinds of visualization tools to exist. I tried building them a while back using visjs and the graph bogged down too much with more than about 500 pubkeys. For now, I’m focused on my exposition and understanding of the algorithm itself. And on rebuilding the PoC on the back end instead of all front end. 
 Also, the reason we’re using follows and mutes to build the baseline grapevine WoT score is that that’s the best available source of raw data. But the grapevine is designed so that you can pull in multiple sources of data into a single score’s calculation. So if bad actors start to weasel their way into the networks, and people care enough to want to weed them out, then we can start to employ NIP-58 badges or NIP-32 labels or NIP-51 lists to help us distinguish the good vs bad actors. And those datasets can be worked easily into the score. In this way, you neutralize the strategies of the bad actors as they implement them. My expectation is that you will be able to modify your grapevine more easily and more quickly than the bots can implement their attacks. Which will hopefully make it less profitable to create bot farms in the first place. 
 Sounds like you haven't thought this through. 
 Actually, we’ll prolly never “have thought this through”. Best any of us can do is observe and iterate. Let’s hope we’re smart enough to do THAT. 

Thanks for challenging us, Hank. Your feedback is always welcome.  
 In theory you can go as many hops as you want. 

There is an adjustable parameter called the attenuation factor aF which effectively decreases the importance score by some given fraction with each hop further away from you on the graph. Better than an abrupt cutoff at some arbitrary number of jumps away. 
 In theory yes, in practice you will need more memory to keep the list of keys while processing. :) 

Definatly less possible on a phone :)  
 definitely? 
 Seriously folks. That’s what the internet is for. We’re currently building out all network mapping and score calculations server side. This will be a lot of calculating, but I’m confident we can keep the user experience crisp and responsive without melting client devices. Even mobile.  
 Yeah, I built this to do all the calculations on the front end and it’s too much. Takes too long to download the data (a few minutes) and too long to calculate all the scores (maybe 30-60 seconds). The best solution is to do them ahead of time on the back end. So that’s the next step in the project. I think what makes the most sense is for a relay (maybe a personal one, maybe a third party service) to do the calculations and store them for you, ready for quick access when they’re needed. Right now, that would mean maybe 30k or 40k pubkeys with a nonzero grapevine WoT score. 
 That would be nice, maybe a DVM?  
 We’ve had some discussion about DVMs although I think it still remains to be seen how best to use them.

Right now the plan is to build a relay kind of like purplepag.es that keeps track of all (non bot) kinds 0, 3, and 10000 notes. For free, a user can have scores calculated and stored for the entire network of 30k-40k pubkeys, and can also export subsets of the list using NIP-51 ranked from top to bottom in groups of 100 to 1000. Then you can play with the lists on other clients like listr, amethyst, coracle, etc. Then for a fee, you can set the NIP-51 lists up for automatic update every week, day, hour, whatever. 

Then the next step will be contextual lists. Example: gather together all NIP-51 lists named “Nostr Devs” and merge them together, but disregard any lists that are not vetted by the grapevine WoT score, which ensures bots won’t creep into the final product.

Now we have a grapevine-curated list of Nostr Devs who can be relied upon to curate more content. Lists of relays or nostr apps, perhaps.

Is there a role for DVMs in all this? Probably, although I’m not sure I’m yet 
familiar enough with DVMs to see how best to use them. 
 We’re working on ways to keep memory requirements trim, even when processing the entire network, by only handling subsets at a time. 🤞🏼