An ATProto Powered Reputation Network
provenance WHY.md
4.2 kB
Markdown

What is Provenance and Why I'm Building It? #

In the age of AI, authenticated trust of online identities grows more important than it has in the past. Spam, phishing, and other attacks on social networks and all online interactions are pervasive cheaper, easier, and harder to spot than ever before.

How it works #

Provenance is built on the ATProto ecosystem to help make this problem slightly more manageable. We utilize the authenticated, public data hosting from PDSes to host tiny trust declarations: who do you trust, how much do you trust them, and an optional tag allowing for optional named subgraphs. Those records are indexed by our AppView, which provides public APIs for any ATProto user to use.

Each Provenance user can "vouch" for other identities (DIDs, typically but not always users) using the API and user interface we provide. Vouches contain a score between -2 and 2 where -2 is "very untrusted" and 2 is "very trusted". Trust scores of 3 and -3 are reserved for "self" (the most trust is yourself!) and account blocks. Blocks prevent an account from being used to calculate a relative trust score, treating the identity as if it doesn't exist.

It's all relative and you're in control #

We're currently exploring a few different algorithms, but there are two main types of trust queries: trust scores and reputation scores.

Trust scores are similar to the declared trust score, they're between -3 and 2 and represent how much your slice of the network vouches for a given identity. This amounts to a traversal of the social graph where the more hops or further away the connection the less weight the vouches hold. Trust scores start from a baseline of 0, if there's no vouch one way or another that's what you get.

Reputation scores are built on trust scores and represent how much an entity is vouched for directly by your network. This has two values, an absolute reputation score, an arbitrary decimal number, and a mean reputation score which is between -3 and 2. Reputation score is calculated by finding the set of vouches whose target is the queries target whose authority meets a trust score threshold.

Reputation scores can be thought of as representing the popularity of an identity within your network, sorta like a follower count by allowing accounts to negatively follow another account if they don't like them.

Trust scores, on the other hand, are primarily useful for filtering. Social relationships and trust are messy, but the trust scores tries to approximate how much people in your social circle trust or distrust a identity.

Both of these scores together can be used to build delegated trust networks. For the nerds out there, this can be thought of as building something similar to a certificate chain of trust but built on a social network instead the corporate model used for TLS certificates. For everyone else, I'll explain.

How I hope it all works out #

It's tough to bootstrap something like this. People tend not to care about explicitly marking their trust for most every other account they interact with. Fortunately, we can utilize the open nature of the BlueSky network and ATProto to skip that in the common case using BlueSky account follows and blocks! Right now, we index and treat account follows as an implicit vouch of 0.5 and account blocks as a -0.5.

From there we can bootstrap a very rough network of trust without any particular actions on the users part. That's cool and all, but so what?

Because of how trust scores work, a single entity a user marks as trusted can be used to bootstrap trust for huge portions of the network. For example, an entity (i.e. service with a particular identity) can specialize in spam detection and provide API access to feed and list creators to increase the quality of their content. Importantly, these entities function as infrastructure the user never sees or needs to interact with directly: they can delegate trust to the feed and list creators they already trust. Meanwhile this system is generic, we bootstrap on BlueSky because it's the biggest target, but any AppView can utilize trust scores in whatever ways they choose.