Formal description of HackZ's semi-reputation based DAO

HackZ DAO introduces novel, semi-reputation based governance system in which voting power is mathematically tied to rating points and activity on the platform.

Math Specification of HackZ DAO Voting System

Let Ri,R,RDR_i, \overline{R}, RD be the rating of ii-th user, mean user rating, and rating deviation (in other words standard deviation of users ratings).

Then the z-score for the -th user, ziz_i representing how many standard deviations RiR_i is above the mean R\overline R is given as:

zi(Ri)=RiRRDz_i(R_i) = \frac{R_i - \overline{R}}{RD}

Let κ\displaystyle \kappa denote a constant activity multiplication factor , and let AiA_i denote a set Ai={g1,g2,...,gj}A_i=\{ g_1, g_2, ..., g_j\}, where gjg_j is the number of challenges played by jj-th user and satisfies the following:

gjAi    (RjRiRD    gj>0)g_j \in A_i \iff (|R_j - R_i| \leq RD \; \land \; g_j > 0)

Note that the AiA_i set is different for each user (assuming users have different rating scores) and it includes data about the number of challenges played by other users with similar skill. By users with similar skill we mean all users whose ratings lie within 1 standard deviation from the rating of ii-th user. Information about the median of set AA allows us to define ψ{\displaystyle \psi }, which we'll define as "inactivity damping function".

ψ(Ai)=κmed(Ai){{\displaystyle \psi }(A_i) = \frac{{\displaystyle \kappa }}{med(A_i)}}

The purpose of ψ{\displaystyle \psi } is to reduce the excess voting power of inactive users with high rating. It does so by considering the median number of played challenges in time period tt within the set of similarly rated players. That way HackZ governance system rewards only active users, while simultaneously not making casual learners lose track of their progress.

circle-info

Unlike other popular MMO games, HackZ does not reset users' ratings/divisions after each season.

Now, let's describe the expexp function. That function serves as an exponent in the final voting multiplication expression, and resembles a typical sigmoid function. Below, ee stands for Euler's constant and gig_i is the number of challenges that were played by ii-th player in time period tt.

exp(zi,gi,ψ(Ai))=zi1+egiψ(Ai)exp(z_i,g_i,\displaystyle \psi(A_i))=\frac{z_i}{1+e^{-g_i*{\displaystyle \psi }(A_i)}}

Finally, the Voting Power function can be defined as:

VP(ti,exp(...))={ticexp(...),if exp(...)>0;ti,otherwise. VP(t_i, \exp(...)) = \begin{cases} t_i \cdot c^{\exp(...)}, & \text{if } \exp(...) > 0; \\ t_i, & \text{otherwise}. \end{cases}

where: exp(...)exp(...) - abbreviation for exp(zi,gi,ψ(Ai))exp(z_i,g_i,\displaystyle \psi(A_i)) for ii-th user, tit_i - number of HCKZ tokens held on an address belonging to ii-th user*, cc - constant base multiplication factor

* In order to be counted, tokens have to have to remain on the same wallet, starting from 7 days prior to introduction of the relevant DAO proposal.

κ\displaystyle \kappa and cc parameters are purposefully not predetermined and should be adjusted according to protocol's needs. The κ\displaystyle \kappa parameter controls how much we want to punish inactivity, while the cc parameter controls how much we want to boost the voting power of highly ranked users.

Initial values deemed as reasonable by the author are: κ=2,{\displaystyle \kappa} = 2, c=1.5c=1.5


Example

To get a more intuitive understanding of the mechanism, readers might want to consider the following example:

  • The constant parameters:

    • κ{\displaystyle \kappa} = 2

    • c=1.5c=1.5

  • Data regarding user named "Bob"

    • RBOB=1500R_{BOB}=1500 (user rating)

    • R=1400\overline{R}=1400 (mean rating)

    • RD=100RD=100 (standard deviation of ratings)

    • gbob=2g_{bob} = 2 (number of challenges played by Bob)

    • ABOB={3,5,4}A_{BOB}=\{3,5,4\} (set of challenges played by users with similar skill, median med(Abob)=4med(A_{bob})=4)

    • tbob=100t_{bob}=100 (tokens held by user)

The only thing we care about is that Bob is 1 RDRD above the norm and played half as many games as the median, so he will obtain the following exponent:

exp(z,g,ψ(A))=11+e12 κexp(z,g,\psi(A))=\frac{1}{1+e^{{-\frac{1}{2}}* \space {\kappa}}}
chevron-rightWhere did e12κe^{{-{\frac{1}{2}}}{\displaystyle \kappa}} come from?hashtag

e12κe^{{-{\frac{1}{2}}}{\displaystyle \kappa}} equivalent to: e gmed  κe^{\space \frac{-g}{med} \space * \space {\displaystyle \kappa }} which is the same as eg ψ(A)e^{-g \space{\displaystyle \psi }(A)}

exp(z,g,ψ(A))0.73exp(z,g,\displaystyle \psi(A)) \approx 0.73

Now that we know the exponent: exp=0.73exp=0.73, we can calculate cexp(...)c^{exp(...)} and find out the votes multiplicator.

VP(t,exp(...))=t1.50.73VP(t, \exp(...)) = t*1.5^{0.73}
VP(t,exp(...))ti1.34VP(t, \exp(...)) \approx t_i*1.34

So for every 100 tokens, player Bob will be able to exercise 134 votes. This is a moderate voting boost, which came along with some activity in the game and a slightly above average rating.


Last updated