33ecbb18d4e24fb9b75785e2e02a65f18dc6643eaa2b7d5323b0060fba4ee6aacb50e2f64a8b3dfacf4f36062d933627b981c4ea9e0d3e11c80d91a9d2809781

Question: How does the stamp eigenkarma system work?

Answer: If someone posts something good - something that shows insight, knowledge of AI Safety, etc. - give the message or answer a stamp of approval! [[Stampy]] keeps track of these, and uses them to decide how much he likes each user. You can ask Stampy (in a PM if you like), "How many stamps am I worth?", and he'll tell you.

If something is really very good, especially if it took a lot of work/effort, give it a gold stamp. These are worth 5 regular stamps!

Note that stamps aren't just 'likes', so please don't give stamps to say "me too" or "that's funny" etc. They're meant to represent knowledge, understanding, good judgement, and contributing to the discord. You can use 💯 or ✔️ for things you agree with, 😂 or 🤣 for funny things etc.

Your stamp points determine how much say you have if there are disagreements on Stampy content, which channels you have permission to post to, your voting power for approving YouTube replies, and whether you get to invite people.

Notes on stamps and stamp points

So yeah everyone ends up with a number that basically represents what Stampy thinks of them, and you can ask him "how many stamps am I worth?" to get that number

so if you have people a, b, and c, the points are calculated by:
a_points ꞊ (bs_score_for_a * b_points) + (cs_score_for_a * c_points)
b_points ꞊ (as_score_for_b * a_points) + (cs_score_for_b * c_points)
c_points ꞊ (as_score_for_c * a_points) + (bs_score_for_c * b_points)
which is tough because you need to know everyone else's score before you can calculate your own
but actually the system will have a fixed point - there'll be a certain arrangement of values such that every node has as much flowing out as flowing in - a stable configuration so you can rearrange
(bs_score_for_a * b_points) + (cs_score_for_a * c_points) - a_points ꞊ 0
(as_score_for_b * a_points) + (cs_score_for_b * c_points) - b_points ꞊ 0
(as_score_for_c * a_points) + (bs_score_for_c * b_points) - c_points ꞊ 0
or, for neatness:
( -1 * a_points) + (bs_score_for_a * b_points) + (cs_score_for_a * c_points) ꞊ 0
(as_score_for_b * a_points) + ( -1 * b_points) + (cs_score_for_b * c_points) ꞊ 0
(as_score_for_c * a_points) + (bs_score_for_c * b_points) + ( -1 * c_points) ꞊ 0
and this is just a system of linear scalar equations that you can throw at numpy.linalg.solve
(you add one more equation that says rob_points ꞊ 1, so there's some place to start from) there should be one possible distribution of points such that all of the equations hold at the same time, and numpy finds that by linear algebra magic beyond my very limited understanding
but as far as I can tell you can have all the cycles you want!
(I actually have the scores sum to slightly less than 1, to have the stamp power slightly fade out as it propagates, just to make sure it doesn't explode. But I don't think I actually need to do that)
and yes this means that any time anyone gives a stamp to anyone, ~everyone's points will change slightly
And yes this means I'm recalculating the matrix and re-solving it for every new stamp, but computers are fast and I'm sure there are cheaper approximations I could switch to later if necessary