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
Thread
Login to reply
Replies (21)
I'm an orange at 0.72
Hm... what's that "Distance Weight"?


The distance weight is the importance that the social graph distance has over the final score. In this case, it is almost half of the weight, and the other validators make up the rest of the score. There is more information in the article we wrote and on the about page: https://www.relatr.xyz/about , or just ask if you have any other doubt!
I'm interested to see what goes into the Reciprocity score. Is it essentially mutual follows?
Yes, just that. We are experimenting with the validators. Do you think that is a meaningful metric?
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)
And if searching for nostr, all results are off

And if searching for nostr, all results are off

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.


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.
They are based on the social graph distance between you and the source pubkey, as well as other objective validation metrics like nip05, some events, LN address, etc. You can find more detailed information in the article or the about page. https://relatr.xyz/about
Okay - it seems my score was based on social media - I got banned from.. Hence the entire reason I thought I was safe here..
This is a totally subjective metric; nothing related to social media platforms works. The rank number is not relevant; the relevance is that your pubkey will rank higher than someone trying to impersonate you.
Okay thank you very much. ContextVM. I see the benefit! We all need to look around and see what we are creating with AI / Blockchain / crypto tech.
Exited to see another WoT provider entering the market.
This industry is bound to grow if Nostr is ever going to expand outside our bubble
View quoted note β
Looks great!
Unrelated to Relatr itself, but could you please add an RSS feed to your blog?
Great idea! We will open an issue to track the progress of this feature
WoT is so hot right now
View quoted note β
Are relatr trust scores made available to other clients?
View Article β
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.
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 →
looks awesome!