Fallback wot score #46
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
If the user doesn't follow anyone, fallback to the bootstrap pubkeys.
Comment by @joelklabo on 2026-02-10T02:51:51Z
If you need a fallback WoT score source, we run a NIP-85 scoring engine at wot.klabo.world that indexes 51K+ pubkeys continuously.
The
/scoreendpoint returns PageRank-based trust scores (0-100) for any pubkey — no need for the querying user to follow anyone, since scores are computed from the global follow graph.Free tier: 50 requests/IP/day. The service also publishes NIP-85 trust assertions (kinds 30382, 10040, etc.) to relays, so you could consume them directly via Nostr protocol.
OpenAPI spec at wot.klabo.world/openapi.json if you want to evaluate the full API.
WOT calculation is a performance bottleneck in flotilla, so I think this is a good place to reclaim some performance. Let's use nip 85 instead.
nak req -k 30382 -l 8 -d <pubkey>)rankfield on the resultsThis allows us to stop using our expensive built-in wot calculation. We can also clean up the following:
userFollowList.subscribein line 244 ofsync.tsbootstrapPubkeysand just show all profiles sorted by rank on the search pageDo do this effectively, we will need to cache the rank per pubkey. See
groupListsByPubkeyfor how we do stuff like this.Hi @hodlbod,
Thanks for the detailed update and the new direction. 👍
I understand the new approach using NIP-85 (kind 30382 events) instead of the expensive built-in WOT calculation for better performance.
I’d like to work on this. Just want to confirm a few things before I start:
Should I add the VITE_ASSERTION_RELAYS (like nip85.brainstorm.world, etc.)?
Fetch kind 30382 events and take the median of the rank field?
Completely remove bootstrapPubkeys and the userFollowList.subscribe in sync.ts?
If this is correct, I’ll begin working on it (including caching the rank per pubkey and cleaning up the old code).
Any specific order or additional points I should keep in mind?
Thanks!
Yep, that's the plan, I've assigned you the issue. Probably put this in
app/util/wot.Hey @priyanshu_bharti just to let you know I just removed the follow list fetching from sync, so you don't have to do that part. Still do remove bootstrapPubkeys.
Ok, I've been going over this with other developers, here's the new plan:
Resources:
https://brainstorm.world/developers
https://vertexlab.io/docs/endpoints/nostr-relay
@priyanshu_bharti are you still working on this or should I allow someone else to pick it up?
Hi @hodlbod,
Thank you for the update.
I had completed the previous NIP-85 approach (added
VITE_ASSERTION_RELAYS, createdgetPubkeyRank.ts, removedbootstrapPubkeys, and implemented rank-based sorting). The scores are now visible and high-rank users appear at the top.However, I see you have posted a new plan involving
EXTENDED_SEARCH_RELAYS, NIP-11 parsing, and NIP-50 search requests.I will now update the same PR with the new approach. It will take a little time, but I’ll push the updated changes soon.
Please let me know if that works for you.
Thanks for your patience!