Thread

So pumped to introduce Realtr, our shot at decentralized trust and Web of Trust. Trust is not an absolute quantity but a deeply personal and contextual phenomenon. Discover more about it at https://relatr.xyz. We are currently running a public instance, which is the default on the site. With it, you can search for and calculate trust for given public keys. Still in the early stages, but it's currently quite solid. Looking forward to hearing your thoughts and building this together! blog: https://www.contextvm.org/blog/yItckCkpmTq-owE5AgYtq

Replies (21)

I like mutual follows as a metric. I think it's one of the more important ones when you're looking at a static graph of users following users, which I'm assuming you have in some form but you can correct me if I'm wrong. But I was wondering why it was 1.0, rather than something smaller because not all my follows/followers are mutual. And is the metric outgoing mutual (mutual follows / who I'm following) or incoming mutual (mutual follows / who's following me)? Maybe both could have some use, because "reciprocity" is a broad term.
Interesting, and glad too see more WoT providers joining the arena. However, the linear approach I think will be insufficient and imprecise. Most of these checks are easily game-able, and some legimitate users might not pass them. So motivated attackers have an edge. More practically speaking, the text similarity is a bit off. Searching for jack doesn't show @jack mallers @Jack Spirko and @jack (n/acc) image And if searching for nostr, all results are off image
Hey! Thanks for your feedback. Yes, definitely the Relatr approach is more left side of the curve than Vertex or any other PageRank algorithm. However, the approach that Relatr is following is still consistent since the base of the score calculation is based on the distance between the source pubkey and the target pubkey. In the default instance we are running, the source pubkey is gigi, so in order for an attacker to impersonate someone, it will need gigi to follow them or a gigi's contact to follow it. But the farther the distance, the bigger the decay, so fundamentally an attacker would need to do some social engineering to make it closer to the source pubkey to some degree, which is not easily gameable, especially if the social graph realizes it is an attacker/impersonator and publishes a mute list with the attacker pubkey in it. The other validators are easily gameable in some way, yes, like valid NIP-05, NIP-10002 events published, yes, that's easy to game, but the weight it has in the score calculation is little compared to social graph distance. There are also other validators that aren't easily gameable, like reciprocity (source and target follow each other), and we are thinking in adding some more like zaps and activity. In summary, this is an experiment, but so far it is working pretty well as tie breaker to determine which pubkey is more likely to be an impersonator or the "real" one, and ideally everyone runs an instance that sets their pubkey as source so the trust score comes from their perspective. On the other hand, yes, the other relevant Jack didn't appear because they weren't being discovered during the first profile metadata sync that Relatr does. This is a bug; it's still early days, but after searching explicitly for them, they now appear as they are added to the metadata DB. Also, when you look for Jack. image
glad you solved the bug about the jack's. About attack's resistance, distance-based WoT is inherently weaker than Pagerank becaus eyou just need one compromised (or lazy) key at distance n to include an impostor at distance n+1. Instead Pagerank considers distance as well as flow, which is the number of paths that connect a target to a source. 1 path is gonna give much less rank compared to 100 distincts paths, while the distance is going to be the same
That's for sure; the key here is still that the trust is computed from a specific source pubkey. So, if there is a more relevant pubkey in the social graph than the impersonator's, it will rank higher because it will likely have more favorable validators. Definitely, this approach can be improved and strengthened. We could sample distances to a target pubkey from different direct contacts of the source pubkey to get more paths validated. The architecture will allow this thanks to the Nostr social graph lib by @Martti Malmi that we are using. Thanks for the feedback; it is very appreciated. As we mentioned, this is still an experiment, and we need to keep tweaking it to get more relevant results and metrics.
Certainly interesting! What are the metrics based on for Pub key trust ratings? Can a Pub key with a β€œpoor” trust rating like a poor credit report add a note or file? On the bright side - Bots and agitators or trolls 🧌 can be throttled.
Yes, Relatr is a CVM server available for everyone. You can integrate it into any client. Here is an example of how to integrate it easily into any TypeScript/JavaScript project. In reality, it's just JSON-RPC over Nostr, so you could integrate it in any language really. Little by little, we will be bringing more tools to make it as easy in other lenguage as it is in ts projects.
ContextVM's avatar ContextVM
Are you developing a client and want to add search capabilities and WOT scores? You can do it easily by using CtxCn to set up a full Relatr client with minimal hassle. Here’s how: 1. Navigate to your project (it should be in TypeScript) and execute: ```sh npx @contextvm/ctxcn init ``` This command sets up CtxCn in your project. It comes with sensible defaults, so you won't need to configure much. 2. Next, execute: ```sh npx @contextvm/ctxcn add 750682303c9f0ddad75941b49edc9d46e3ed306b9ee3335338a21a3e404c5fa3 ``` This public key corresponds to the default instance of Relatr we are running, which is available at https://relatr.xyz . If you are running your own instance or want to use a different one, simply replace the public key with the appropriate one. That's it! After executing the 'add' command, you will have a fully typed Relatr client in your code, that you can implement out of the box, you own it, and you can modify it to fit your needs. The generated client will also contain comments, making it clear what each method does, whether you or your LLM are reading them. You can search profiles easily with code like: ```ts const searchResults = await relatr.SearchProfiles({ query: "jack" }); ``` This setup allows you to create a web app, a CLI app, or any kind of service in TypeScript. It works in browsers and natively. We hope you enjoy this. The current service we are running is free to use, so if you find this useful, please consider supporting our work. πŸ’›
View quoted note →