Skip to main content
SUBMIT A PRSUBMIT AN ISSUElast edit: Feb 22, 2025

Yuma Consensus

Introduction

Yuma Consensus (YC) is a critical algorithmic process within Bittensor, which runs on-chain within Subtensor. Its responsibility is to compute validator and miner emissions from validators' rankings of miners.

Each of a subnet's validators periodically submit a vector of weights ranking the value of the work of each miner they've evaluated. The YC algorithm resolves this matrix of rankings into two emissions vectors that allocate emissions over participants based on their performance: one each for miners and validators.

The algorithm is designed to more heavily weight the inputs of more trusted validators, in order to ignore the portion of the validation signal that is less reliable. By disregarding unreliable weight-settings, YC incentivizes validators to be worthy of trust by working hard to give consistent, fast, honest evaluations of miners that predict the eventual convergence of other validators' evaluations. YC incentivizes miners to work hard for the highest combined evaluation by the community of validators.

See:

Clipping

Clipping is designed to punish innacurate miner evaluation, especially in patterns that could constitute collusion to manipulate the accuracy of consensus to favor certain miners.

To achieve this, the judgment of the most trusted validators (as measured by stake) serves as a benchmark. Evaluations (bonds) that exceed this benchmark are clipped, meaning neither the miner nor the validator receives emissions for them.

This clipping protects against erroneous or collusive over-evaluation of miners by validators.

To compute the benchmark Wj\overline{W_j} for miner jj, we gather all validator weights WijW_{ij}, sort them by the validator’s stake SiS_i, and then find the maximum weight level ww supported by at least a fraction κ\kappa of total stake.

Wj=argmaxw(iSi{Wijw}κ).\overline{W_j} = \arg \max_{w} \Bigl(\, \sum_{i} S_i \,\cdot\, \bigl\{\,W_{ij}\,\ge w \bigr\} \ge \kappa \Bigr).

Any validator’s original weight WijW_{ij} above Wj\overline{W_j} is clipped to:

Wij=min(Wij,Wj)\overline{W_{ij}} = \min( W_{ij}, \overline{W_j} )
note

Kappa is a configurable hyperparameter with default: κ=0.5\kappa = 0.5.

Miner emissions

Miner emissions are based on an aggregate ranking which is the summed rankings of validators, weighted by validators' stake, where Wij\overline{W_{ij}} is the post-clip weight.

Rj=iSiWijR_j = \sum_{i} S_i \,\cdot\, \overline{W_{ij}}

Each miner jj’s share MjM_j of the subnet's miner-emissions (41% of each subnet's overall emissions) is:

Mj=RjkRkM_j = \frac{\,R_j\,}{\sum_{k} R_k}

Penalizing out-of-consensus bonds

If a validator's evaluation of a miner is too high, it is penalized. If a submitted weight WijW_{ij} by validator ii for miner jj exceeds the jj's consensus evaluation, Wj\overline{W_j}, its bond value is penalized by factor β\beta.

Bond-weight Wij~\widetilde{W_{ij}} is:

Wij~=(1β)Wij+βWij\widetilde{W_{ij}} = (1-\beta)\,W_{ij} +\beta\,\overline{W_{ij}}
note

Penalty factor β\beta is a configurable hyperparameter.

Bonding mechanics

The instant bond ΔBij\Delta B_{ij} of validator ii to miner jj is ii’s stake Si\,S_i times ii's bond-weight for jj normalized by jj's total bond-weight from all validators:

ΔBij=SiWij~kSkWkj~\Delta B_{ij} = \frac{\,S_i \,\cdot\, \widetilde{W_{ij}}\,}{ \sum_{k} S_k \,\cdot\, \widetilde{W_{kj}}}

This then updates an exponential moving average (EMA) bond:

Bij(t)=αΔBij+(1α)Bij(t1)B_{ij}^{(t)} = \alpha \,\Delta B_{ij} + (1-\alpha)\,B_{ij}^{(t-1)}

Validators who stay near consensus build stronger EMA bonds and thus extract more emissions, while any attempt to overstate a particular miner’s performance is penalized. The EMA smooths out abrupt swings in validator behavior and incentivizes consistent alignment with the consensus.

note

The α\alpha variable here is unrelated to the concept of subnet specific currencies, referred to as alpha α\alpha tokens. Here α\alpha refers to a factor used in this EMA smoothing function—see consensus-based weights, a.k.a. liquid alpha.

Validator emissions

Each validator ii’s share ViV_i of validator emissions (41% of each subnet's total emissions) is the sum of all of its bonds to miners, weighted by the miner's total emissions:

Vi=j(Bij×Mj)V_i = \sum_{j} \Bigl(\,B_{ij} \,\times\, M_j\Bigr)