How Discourse Cred Flows

Over in CredCast Update - #4 by LB, @LB asks how Cred flows on Discourse:

I’m going to answer that in a new thread, so we can keep the original thread on-topic and focused on the CredCast. :slight_smile:

When someone likes a post, they Mint new Cred that flows to the post, and they flow some Cred from themself to the post.

From there, the Cred flows in the following ways:

  • A full “share” of the Cred flows to the author of the post
  • A 1/2 share flows to each post or topic referenced in the post
    • Each, so if there are 3 references, then in aggregate the references will receive more Cred than the author did
  • A 1/4th share flows to each user mentioned in the post
  • A 1/8th share flows to the topic that the post was in

Thus, the largest individual share of a post’s Cred goes to the author, but if there are (for example) 4 users mentioned, they will collectively receive as much Cred as the author does. We don’t know the exact percentages in general because it depends on how many references/mentions there are in a post.

We can consider some examples.

First, we’ll consider the case where the post doesn’t have any references or mentions of other users.

Recipient Weight Share % of Cred
Post Author 1x 8/9 89%
Topic 1/8x 1/9 11%

Let’s suppose we add a single @-user mention to the post. Then the Cred flows like this:

Recipient Weight Share % of Cred
Post Author 1x 8/11 72%
Mentioned User 1/4x 2/11 18 %
Topic 1/8x 1/11 9%

If we add reference to another post in addition to the mention, we see the following flows:

Recipient Weight Share % of Cred
Post Author 1x 8/15 53%
Mentioned User 1/4x 2/15 13 %
Referenced Post 1/2x 4/15 27 %
Topic 1/8x 1/15 7%

This does mean there is an incentive not to add mentions or references, because you keep more Cred that way. We can make some (retroactive) adjustments to fix this, for example by “pre-allocating” a share of Cred to flow to mentions or references, so that it flows away even if the author never mentions/references. That way, the author would get the same proportion of Cred either way. I wrote a fairly technical topic diving into this a while back, see: Edge Tranches: Fixing an Incentive Misalignment

What about the Cred that flows to the topic?

Topics basically “recycle” Cred between the posts in the topic. Basically, Cred flows from the topic to each post in proportion to the number of likes that the post received. The “first post” that makes the topic doesn’t get any special treatment, it’s just another post from the perspective of SourceCred.

The intuition with topics is that if you’re referencing a topic, you’re referencing the whole discussion that happened there, not just the first post. Hence why we spread the Cred out across the whole discussion.


Which of the following does that mean?

  • evenly between all participants in the whole discussion;
  • proportional to each participant’s number of posts in the whole discussion;
  • proportional to the aggregate of posts & respective likes in the whole discussion

Let’s make this concrete. Suppose we have a topic with the following characteristics:

  • First post (the one the topic author made) got 1 likes
  • Second post got no likes
  • Third post got 2 likes

Then the Cred flow from the topic will approximately be:

  • 1/3rd to the first post (1 like)
  • none to the second post (no likes)
  • 2/3rd to the third post (2 likes)

This is approximate because we actually flow a very small proportion of Cred from the topic to every post indiscriminately (an edge with 1/8 weight). This way if there were no likes at all on the topic, the Cred still has somewhere sane to go.

Note that in the example above, the second post may still get some Cred. For example, it’s possible that the third post was a direct reply to the second post, in which case it will flow a bit of Cred there. (I forgot to mention this above, sorry; we do flow Cred from replies to the original post with weight 1/2).

We really need an interactive + visual explorer to make this more accessible. :sweat_smile:

1 Like

Very interesting breakdown, thanks @decentralion!

So as in the previous sentence, I notice that I tend to also tag the person I am replying to as a gesture of social appreciation and to direct people to different parts of my post in the event that it is long and scatter brained :sweat_smile:. How does tagging someone that a user is already replying to effect the Cred distribution? My new assumption is that it “double dips” and gives them Cred for both the reply and the mention. This has me wondering if I need to be more careful with my replies, especially in situations where I am in disagreement with the merit of a contribution being brought forward…

hey, based on our first two discussions I’ve made a third iteration (attempt) to explain with images how cred flow. I took the discord plugin and this example:

> Kelly makes a post and Josh likes Kelly’s post

You can view and leave a comment here. My idea was to split in two trunks the explanations :

  1. concepts for the graph // open for comments :white_check_mark:

  2. math for the graph // will be done by next week :building_construction: , my idea is to keep the explanation with a simpler graph that has 3 nodes : the seed node & two nodes

ps: pinging you @KuraFire since you posted some related tasks

Can we get some quick definitions for Topics and Posts and Comments? I think I can piece together what you mean, but it’d be easier if I know we’re all talking about the same things. The names for different Discourse elements aren’t very intuitive to me.

A Discourse Topic or “thread” is an organizational unit that contains one or more posts. A topic has a title, may have a category, and has zero or more tags. When you look at the home page for Discourse, you see a list of topics:

Note that for purposes of this discussion, a topic does not have any “body text”, i.e. a topic does not include the first written message that you see when you open the topic. That text is part of the next concept: a post.

A Discourse Post is a written message by a Discourse forum user. A post contains text, and may contain references (hyperlinks to Discourse posts, topics, or other things in the Cred Graph; example: How Discourse Cred Flows - #6 by LB) or mentions (references to a user, example: @LB ). All Discourse posts are a reply to exactly one other Discourse post, with the exception of the first post in the topic, which is not a reply to anything.

Each Discourse post is the recipient of zero or more Discourse Likes. Every time a user clicks the :heart: button on a post, it generates exactly one like, which is connected to the user and to the post.

Discourse has no notion of a “comment”.

1 Like

I’m Liking this post by @decentralion to flow Cred to DL for the explanation, and to proxy-flow Cred to @LB for the question asked, which is made possible by DL’s use of linking to LB’s post (and tagging their @). Great example of how to answer that question in the most SourceCreddy way possible!

To add to this: if you hit Reply on any individual post in the Topic, your post will be a reply to that one. If you use the Reply button at the bottom of the thread, your post is treated as a reply to the first post in the Topic (by the original author).