Karma: Exploration of a decentralized, open-source reputation system for the web

I feel like reputation falls into a few categories / has a few different flavors.

One is “referential” reputation and is akin to experience points and is a certain reflection of ability. It’s how reputation on StackOverflow/StackExchange and LinkedIn work. Your reputation is the sum of all of the relevant things that you’ve done that have made you more qualified in a given area. Because you’ve answered a lot of questions on StackOverflow and those questions have been deemed good by others, you have a certain amount of expertise in a given area. Because a bunch of people vouch for your public speaking skills on LinkedIn, you are likely at least somewhat proficient in that area AND have interacted with enough people in that context that they know you have this ability. This type of reputation works great with self-hosting.

Another type of reputation is “track record” reputation. This is the type of reputation that is used on eBay, airbnb, and yelp. Instead of a raw ever-climbing number that reflects experience, the important number is a percentage (or variation thereof, like 4/5 stars) and reflects the track record of the entity being rated. Your reputation is a result of all of the things people have said about you, good or bad. And I wouldn’t necessarily split it up into good or bad, because would a restaurant or a seller normally consider 4/5 stars good or bad? Well it depends whether it brings their average up. They might present a 4 star rating one moment, then take it down the next. So I really think in this case all ratings should not be self-stored. They should be presented by a centralized rating provider that is trusted to provide ratings in a given context. Either that, or all ratings need to be submitted to a global data bank that stores all ratings for everything and persists everything (which comes with it’s own set of challenges). I’m for the former, because I really don’t think using the blockchain or a DHT to store terabytes of ratings (or more) makes sense (think about this as it really scales up). Keep in mind these ratings need to have context - they need to have a text field that the user can use to express more clearly why a rating was given, and so other users can browse the ratings and read what was said. Anyway, I would say that this “track record” rating system can be contextual and federated, where your reputation is drawn from various trusted rating providers, where each rating provider serves up your entire listing of ratings for a particular context. For example, if airbnb was a rating provider for me, airbnb would provide an API endpoint where anyone could get a list of all 127 ratings that people have made for me.

I’ve been playing around with a couple of “reputation data banks” - the only one still left standing after years of experimentation is Trustcloud, which does not seem to be well maintained but nonetheless offers some approximation of a reputation aggregation database for individuals.

I agree re: context; as Randy Farmer has said, “Context is King.” I also think that there should be redundancy in how reputation ratings are stored, since some entities might have a strong incentive to censor certain reputation ratings/ reviews. I had previously envisioned this being done on the blockchain, with some brief metadata about the rating stored on chain (rater, ratee, rating) and the “context” or text field description of the rating stored off-chain (DHT, AWS, wherever); this probably wouldn’t work with Bitcoin since OP_RETURN has a limited size, but was thinking it could work on Ethereum if and when that ever becomes fully operational.

The World Table put a fair amount of thought into architecture for blockchain-based reputation. Here’s a high level white paper:

https://openreputation.net/open-reputation-high-level-whitepaper.pdf

There’s also a lower level white paper at the website:

https://openreputation.net

Agree completely.

Reputation is a subjective measure based in the eye of the valuer rather than the person being valued. Who values, why they value, and what they have valued are all objective facts; what that means from a rep perspective is a question of who’s making the judgments. So someone who has managed to successfully complete 1,000 contracts of $5 each to 100% satisfaction may not necessarily be trusted with 1 contract of $1,000,000,000 despite their spotless record.

Where crypto/blockchain comes in is that it allows for inexpensive methods to verify the integrity of the data people use to make those value judgments. This is possibly more important than coming up with a reputation score/matrix - and more useful, and involves less work.

“Here’s a set of commercial rep data,” you say to the user, “interpret it as you wish - you can be certain it’s correct.” Your user saves themselves a shedload of due diligence and tailor how they read the data based on what’s important to them, you do less work to deliver something more tailored to what they actually want. Everybody wins.

Microwork.io is doing a rep system based on ErisDB which might be worth checking out. No idea about their implementation details.

3 Likes

Very nice to hear you put this together. I’m quickly looking at https://openreputation.net/open-reputation-low-level-whitepaper.pdf and it seems like it goes into great depth. I’ll take a closer look into it and dive you my thoughts on it soon.

Very good point. This is a big issue with calculated reputation scores. It is very easy to give people a false sense of security. This only works when paired with a mechanism to fully audit all of the inputs, like you are able to do on Yelp.

Yes, I think the more information you can give to the user, the better. For example, we know that just giving a raw follower count on twitter doesn’t work because it can be easily gamed. At least when users can clearly see both followers and followees as well as 4 or so examples of users in each category, there’s more signal on the person. And then viewers can dig in and audit the entire list and see who the users are.

2 Likes

I’ve been thinking about this ever since I saw it suggested here, and just remembered what it was that gave me pause about this idea. The other night I saw Steve Dekorte give a presentation about Bitmarkets, a p2p marketplace with no trusted third parties. At the end of the presentation, he answered a question about why they don’t have a rating system, and one of the things he brought up immediately brought clarity to this issue for me. He says, “[Review systems] can reveal who bought an item… and the extent of sales a seller has made.” This is a salient point, and in more contexts than just that of a reputation system.

I am not a Facebook user. One of the biggest reasons I don’t use FB is because I do not want them to have my social graph of close friends and family members. As social creatures, the social graph is one of our most valuable assets, and I see no reason to give it to FB or anyone else for that matter. This holds true for a rating/review system. I see no reason for everyone on the planet to be able to construct a graph of everyone I’ve ever interacted with who has given me a rating or vice versa. One way to get around this is to use a different identity for every context and never link them together; this might be a solution, but as soon as I need to combine contexts in order to provide a stronger trust proof, the cat’s out of the bag and those two identities can probably be considered forever linked from that point forward. It doesn’t help that so many different contexts rely on the One True Identity (the “legal” context) for ID verification and background checks, making it virtually impossible not to link contexts together.

I had in mind that instead, people could selectively reveal positive ratings others have given them, perhaps using zero knowledge proofs to conceal the identity of the reviewer while still providing evidence that the reviewer is a trustworthy person (ZK is black magic like that).

Are there more solutions that I’m missing to this One True Identity mass surveillance problem or am I right to say that more thought should be put into where ratings are stored?