From c6b28bfa842362e2551ad282236e134f39ec6b66 Mon Sep 17 00:00:00 2001 From: John Reed <87283488+JohnReedV@users.noreply.github.com> Date: Thu, 15 May 2025 13:02:34 -0700 Subject: [PATCH] multiple emission by root proportion --- pallets/subtensor/src/coinbase/run_coinbase.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pallets/subtensor/src/coinbase/run_coinbase.rs b/pallets/subtensor/src/coinbase/run_coinbase.rs index 00b0c2fa55..f87aecb783 100644 --- a/pallets/subtensor/src/coinbase/run_coinbase.rs +++ b/pallets/subtensor/src/coinbase/run_coinbase.rs @@ -79,7 +79,9 @@ impl Pallet { .saturating_mul(moving_price_i) .checked_div(total_moving_prices) .unwrap_or(asfloat!(0.0)); - log::debug!("tao_in_i: {:?}", tao_in_i); + log::debug!("tao_in_i (before root proportion): {:?}", tao_in_i); + tao_in_i = Self::adjust_inbound_tao_for_root_proportion(*netuid_i, tao_in_i); + log::debug!("tao_in_i (post-root-proportion): {:?}", tao_in_i); // Get alpha_emission total let alpha_emission_i: U96F32 = asfloat!( Self::get_block_emission_for_issuance(Self::get_alpha_issuance(*netuid_i)) @@ -972,4 +974,13 @@ impl Pallet { Ok(()) } + + pub fn adjust_inbound_tao_for_root_proportion(netuid: u16, inbound_tao: U96F32) -> U96F32 { + let root_tao: U96F32 = asfloat!(SubnetTAO::::get(0)); + let root_stake: U96F32 = root_tao.saturating_mul(Self::get_tao_weight()); + let netuid_tao: U96F32 = asfloat!(SubnetTAO::::get(netuid)); + let total_stake: U96F32 = root_stake.saturating_add(netuid_tao); + let root_proportion: U96F32 = root_stake.checked_div(total_stake).unwrap_or(asfloat!(1.0)); + inbound_tao.saturating_mul(root_proportion) + } }