Skip to main content

Formalizing

Formalizing Let's define:

  • VkiVk{i} number of validators assigned to service ii by account kk.

  • ViV{i} total number of validators in service ii.

  • Ok,iOk,{i} obligation for account kk in service ii (i.e. the slashable capital from account kk available for service ii).

  • CiC{i} total obligation (slashable capital) in service ii.

  • Ok=iServicesOk,iO_k = \sum_{i\in\text{Services}} O_{k,i} total obligation for account kk.

  • assetskassets{k} total slashable assets of account kk.

  • rk=Okassetskr_k = \frac{O_k}{\text{assets}_k} obligation ratio for account kk.

Note that we can have rk>1r{k} > 1, which means that Ok>assetskO_k > \text{assets}_k and the account has some slashable capital that is associated with more than one service.

The weight of an account k in a bApp is denoted by Wi,kW_i,k, defined as a value in [0,1] (or [0%,100%]). Usually, it would be defined by some participation ratio, such as pk,i=Ok,iCip_{k,i} = \frac{O_{k,i}}{C_i} (the fraction of slashable capital participation), or vk,i=Vk,iViv_{k,i} = \frac{V_{k,i}}{V_i} (the fraction of validators). For flexibility, the bApp can define the function that best suits its needs.

However, to take the account's risk into consideration, we can adjust the weight by combining the participation ratio pk,ip_{k,i}, with the account's risk, rkr_k, in the following way:

Wi,k=c×pk,i×eβ×max(1,rk)W_{i,k} = c \times p_{k,i} \times e^{-\beta \times \max(1,r_k)}

where β\beta is a hyperparameter that the bApp can adjust according to its security necessities, and CC is a normalization constant which can be computed by:

c=(kAccountspk,i×eβ×max(1,rk))1c = \left(\sum_{k\in\text{Accounts}} p_{k,i} \times e^{-\beta \times \max(1,r_k)}\right)^{-1}

We take max(1,rk)max(1,r_k) to avoid the issue in which rk0r_k \rightarrow 0 artificially increases the voting power of an account with almost no obligation and risk.

A numerical example of this model is provided in Appendix A1.