OPoW & RewardsBenchmarker Rewards

Benchmarker Rewards

Benchmarker rewards are the rewards earned by Benchmarkers for performing proof-of-work on challenges in TIG.

TIG operates on an Optimizable Proof of Work (OPoW) concept in which benchmarkers are incentivized to balance different factors evenly during the PoW process. The total rewards distributed for proof-of-work done by benchmarkers is a fraction BM%{BM\%} of the total block reward:


opow_reward_pool=block_rewardBM%\text{opow\_reward\_pool} = \text{block\_reward} \cdot \text{BM\%}

Where BM%BM\% is the percentage of the block rewards that gets shared amongst all the Benchmarkers (before deducting the share with the delegators), which is currently set to 70%. This means that 70% of the block rewards are shared among all benchmarkers.

Each benchmarker ii receives benchmarker_rewardibenchmarker\_reward_i from a block (before delegator deductions), where benchmarker_rewardibenchmarker\_reward_i is calculated as:


benchmarker_rewardi=opow_reward_poolinfluencei\text{benchmarker\_reward}_i = \text{opow\_reward\_pool} \cdot \text{influence}_i

The term influenceiinfluence_i represents how much proof-of-work benchmarker ii has performed and how well they have balanced their factors.

There are two types of factors which are used to calculate the influence of a benchmarker.

Factors are recalculated each block.

Challenge Factors

Challenge factors are derived from individual challenges. For each challenge xx, benchmarker ii has an associated challenge factor calculated using their qualifying bundles:


challenge_factori,x=num_qualifiersi,xtotal_qualifiersx\text{challenge\_factor}_{i,x} = \frac{\text{num\_qualifiers}_{i,x}}{\text{total\_qualifiers}_x}

Here, num_qualifiersi,xnum\_qualifiers_{i,x} is the number of qualifying bundles benchmarker ii has for challenge xx in the current block, and total_qualifiersx=inum_qualifiersi,xtotal\_qualifiers_x=\sum_i num\_qualifiers_{i,x}. If there are currently nn challenges, then each benchmarker has nn challenge factors — one for each challenge.

Qualifiers are determined using the Frontier mechanism.

Deposit Factors

Deposit factors are derived from TIG deposits. Each benchmarker ii has a self_deposit_factori{self\_deposit\_factor}_i determined by their own deposit and a delegated_deposit_factori{delegated\_deposit\_factor}_i determined by deposits delegated to them. These are calculated as follows:


self_deposit_factori=min{challenge_factori×1.2,self_deposititotal_deposit}\text{self\_deposit\_factor}_i = \min \Big\{ \langle\text{challenge\_factor}_i\rangle \times 1.2, \frac{\text{self\_deposit}_i}{\text{total\_deposit}}\Big\}
delegated_deposit_factori=min{challenge_factori×1.2,delegated_deposititotal_delegated_deposit}\text{delegated\_deposit\_factor}_i = \min \Big\{ \langle\text{challenge\_factor}_i\rangle \times 1.2, \frac{\text{delegated\_deposit}_i}{\text{total\_delegated\_deposit}}\Big\}

Note that challenge_factori\langle{challenge\_factor}_i\rangle is the average of the challenge factors and measures how actively a benchmarker is participating in the current block. The min\min function caps a benchmarker’s deposit factor based on their challenge performance.

Here self_depositi{self\_deposit}_i is the amount of TIG that benchmarker ii has deposited, delegated_depositi{delegated\_deposit}_i is the amount of TIG delegated to benchmarker ii through the delegated deposit mechanism, and total_deposit{total\_deposit} and total_delegated_deposit{total\_delegated\_deposit} are the total deposits and delegated deposits of all benchmarkers whose cutoff is non-zero.

Influence

To calculate the influence of a benchmarker ii, the following steps are performed:

  1. Collect the set of factors for benchmarker ii : {fj : fj is a factor for benchmarker i}\{f_j ~:~ f_j ~\text{is a factor for benchmarker }i\}. Let f^i\hat f_i be the vector of these factors.
  2. Compute weights wjw_j, and attribute each factor fjf_j with a weight wjw_j. The weights are normalised. The weights are the same for all benchmarkers.
  3. Compute the weighted mean f^i\langle \hat f_i \rangle and variance σi2\sigma^2_i of the factors of benchmarker ii. Set Si=σi2f^i(1f^i)\mathcal{S}_i=\frac{\sigma_i^2}{\langle \hat f_i \rangle (1-\langle \hat f_i \rangle )}.
  4. We then set the influence of benchmarker ii to be:

influenceif^iexp{kSi}\text{influence}_i \propto \langle \hat f_i \rangle \exp\Big\{ -k \mathcal{S}_i \Big\}

Note: In the above formula:

  • kk is a constant currently set to 1.51.5.
  • The exponential term is bounded in [0,1][0,1].
  • As Si\mathcal{S}_i increases, the benchmarker is penalized for their imbalance, no variation means the exponential term takes the value 11 and the benchmarker is not penalized.
  • The term Si\mathcal{S}_i is bounded in [0,1][0,1]. For a fixed f^i\langle \hat f_i \rangle the maximum of σi2\sigma_i^2 is f^i(1f^i)\langle \hat f_i \rangle(1-\langle \hat f_i \rangle), hence Si\mathcal{S}_i measures the spread of the data relative to its mean.
  • Weighting lets us:
    • Onboard new challenges smoothly.
    • Weight Deposit Factors differently from Challenge Factors.