Forgot to add: I wonder how ZKP works in this scenario.
Discussion
My intuition tells me that ZKPs are going to be useful, although how precisely to use them is hard to say without having a working Grapevine for all of us to play with. The first iterations of the Grapevine will be used for non controversial purposes, will not use ZKPs and will not hide trust relationships. Once we see how the Grapevine works in those scenarios, I think various strategies will present themselves for how to deal with controversial scenarios. The first strategy that comes to mind: Alice trusts Bob in some context (eg to curate content or render opinions in some controversial category), creates an attestation to that effect, but she does not publish her attestation; she simply stores it locally to be used by her Grapevine as it processes content from lots of contributors and spits out a series of wikifreedia articles on Controversial Topic X.
I can benefit from Alice’s trust attestation of Bob indirectly in several ways. One method: I query Alice’s Grapevine with a request to give me her Grapevine’s list of recommended wikifreedia articles on Controversial Topic X. That way, I benefit from her trust relationship with Bob, without the need for that trust relationship to be made public.
We still haven’t used ZKPs yet but in my next post I’ll describe a problem which I intuit might benefit from ZKPs as part of the solution.
Ok, to communicate the problem at hand, I need to describe a bit about how the Grapevine works. Your Grapevine will calculate an Influence Score for every user of interest in your local database, one score for every context. Every Influence Score consists of several scalar values: the Average Score, which is an estimate of the value of your opinion or skill in that context, and the Certainty, which is a number between 0-100% and reflects how confident my Grapevine is in that Average Score. Suppose my Grapevine produces a high Average Score for some user in some context. If that score is the result of one attestation by someone whom I don’t know personally and my Grapevine also doesn’t know we’ll, my Grapevine might calculate only 5 % certainty in that Average Score. But if that score is the result of 10 independent assessments, each from a highly trusted source, then my Grapevine may calculate, say, 80% certainty in that score. If 10 goes to 100, maybe 95% certainty; if 100 goes to 100k, maybe 99.9% certainty; and so on.
The key word in the above paragraph is “independent.” How do I know that I am obtaining 10 independent assessments? Suppose 10 highly trusted people tell me that their Grapevine tells them that Bob deserves a high score. Is that 10 independent attestations? Maybe not. Maybe those 10 people are passing along the same bit of information from the same hidden source. This is the price we pay for doing what we did in the previous post, which is to hide our source of information for a controversial topic. We want to hide our sources of information, but we don’t want to fool ourselves that we have independent sources of information when we in fact have only one.
So here’s where I intuit that ZKPs might have utility. I’m not sure how exactly we would use them. We’re probably going to have to build the first iteration of the Grapevine and validate that it works the way I believe it will work.
To get the Grapevine off the ground, I’m considering sponsoring a hackathon, the goal of which would be to incorporate the Grapevine into one or perhaps multiple nostr platforms and apps and validate the basic idea. So right now I’m researching how to lay the groundwork to make that happen.