Profile Ranking Algorithms

Defining Ranking Strategies

We have implemented a set of strategies that can reveal high quality (highly ranked) profiles from the entire Farcaster network. These ranking strategies are based on following and engagement reputation graphs.

How are the Rankings performed?

We use Farcaster social graph data and use a linear combination of peer-to-peer actions such as Follows, Recasts, Mentions, Comments to calculate a personalized reputation graph for each user. This helps in figuring your own network or friends and friends of friends. We then apply EigenTrust on these graphs to generate a ranking of users.

Developers can change the algorithm weights and the rankings change real-time based on the updated parameters.

To see how this is done in our codebase, checkout the repo on our farcaster-graph GitHub repo, specifically on these lines of code

Seeding the Rankings

For Ranking the entire set of Farcaster profiles (Global Ranking), we use a seed peer set of profiles. For Personalized Ranking, the seed peer is the profile(s) itself.

The Global Profile Ranking compute is seeded with 70+ profiles chosen as a starting point to begin the computation of transitive trust among profiles. This seed peer selection is upto the developers. But for simplicity, we have currently chosen a curated list of profiles using the Dune Farcaster Explorer dashboard. The seed peers are the influencers and VIPs retrieved via this query on Dune:

SELECT 
    fid, fname, fid_active_tier, 
    CASE 
        WHEN fid_active_tier = 3 THEN 'influencer' ELSE 'vip'
    END AS fid_active_tier_name
FROM
    query_3418402 
WHERE
    fid_active_tier in (3,4) 
LIMIT 100

as a result, these are the sample of the seed users loaded into a pretrust table (as seen in the db_schema.sql)

Strategy: following

This strategy emphasizes only on following as peer-to-peer trust heuristics, disregarding all other actions such as likes, replies, recasts and mentions.

Weight Assignments: Follows = 1

You can see the weight assignments here in the code.

Strategy: engagement

This strategy emphasizes on engagement actions as peer-to-peer trust heuristics, by combining likes, replies, recasts, mentions and follows. The more engagement a profile receives on their casts, the more they inherit trustworthiness from the source profile, but weighted by the trustworthiness or reputation of the source as well.

Therefore, if a set of sybil or spam clusters boost a particular profile (say Alice) and their casts, Alice's ranking will likely not increase because of the low rank of the profiles which are engaging with Alice.

Weight Assignments: Likes = 1, Replies = 6, Recasts = 3, Mentions = 12, Follows = 1

You can see the weight assignments here in the code. Developers can also change the weights in the algorithms.

Ranking Scope: Global and Personalized

Global Profile Ranking

Global Profile Ranking of Farcaster users are basically categorized into the two strategies: following and engagement.

Personalized User Ranking

Personalized User Rankings for a profile or a curated set of n profiles are of two types: Direct Network and Extended Network. The Direct Network is the first degree of separation from the profile that is being computed for. The Extended Network showcases popular profiles based on your extended network (which may be your friends of friends or 2nd/3rd degree connections).

Tryout the APIs here! — https://graph.cast.k3l.io/docs#/

Last updated