@@ -54,7 +54,6 @@ impl<T: Config> Pallet<T> {
5454        let  mut  tao_in:  BTreeMap < NetUid ,  U96F32 >  = BTreeMap :: new ( ) ; 
5555        let  mut  alpha_in:  BTreeMap < NetUid ,  U96F32 >  = BTreeMap :: new ( ) ; 
5656        let  mut  alpha_out:  BTreeMap < NetUid ,  U96F32 >  = BTreeMap :: new ( ) ; 
57-         let  mut  is_subsidized:  BTreeMap < NetUid ,  bool >  = BTreeMap :: new ( ) ; 
5857        let  mut  tao_to_stake = U96F32 :: saturating_from_num ( 0.0 ) ; 
5958
6059        // Only calculate for subnets that we are emitting to. 
@@ -85,8 +84,9 @@ impl<T: Config> Pallet<T> {
8584
8685            let  mut  alpha_in_i:  U96F32 ; 
8786            let  mut  tao_in_i:  U96F32 ; 
88-             if  default_alpha_in_i > alpha_emission_i { 
89-                 alpha_in_i = alpha_emission_i; 
87+             let  min_alpha_emission = alpha_emission_i. min ( block_emission) ; 
88+             if  default_alpha_in_i > min_alpha_emission { 
89+                 alpha_in_i = min_alpha_emission; 
9090                tao_in_i = alpha_in_i. saturating_mul ( price_i) ; 
9191                let  difference_tao:  U96F32  = default_tao_in_i. saturating_sub ( tao_in_i) ; 
9292                tao_to_stake = tao_to_stake. saturating_add ( difference_tao) ; 
@@ -118,20 +118,21 @@ impl<T: Config> Pallet<T> {
118118            U96F32 :: saturating_from_num ( 0.0 ) , 
119119        ) ; 
120120
121-         for  netuid_i in  subnets_to_emit_to. iter ( )  { 
122-             let  buy_swap_result = Self :: swap_tao_for_alpha ( 
123-                 * netuid_i, 
124-                 tou64 ! ( amount_per_subnet) . into ( ) , 
125-                 T :: SwapInterface :: max_price ( ) . into ( ) , 
126-                 true , 
127-             ) ; 
128-             if  let  Ok ( buy_swap_result_ok)  = buy_swap_result { 
129-                 let  bought_alpha = AlphaCurrency :: from ( buy_swap_result_ok. amount_paid_out ) ; 
130-                 SubnetAlphaOut :: < T > :: mutate ( * netuid_i,  |total| { 
131-                     * total = total. saturating_sub ( bought_alpha) ; 
132-                 } ) ; 
121+         if  amount_per_subnet > asfloat ! ( 0.0 )  { 
122+             for  netuid_i in  subnets_to_emit_to. iter ( )  { 
123+                 let  buy_swap_result = Self :: swap_tao_for_alpha ( 
124+                     * netuid_i, 
125+                     tou64 ! ( amount_per_subnet) . into ( ) , 
126+                     T :: SwapInterface :: max_price ( ) . into ( ) , 
127+                     true , 
128+                 ) ; 
129+                 if  let  Ok ( buy_swap_result_ok)  = buy_swap_result { 
130+                     let  bought_alpha = AlphaCurrency :: from ( buy_swap_result_ok. amount_paid_out ) ; 
131+                     SubnetAlphaOut :: < T > :: mutate ( * netuid_i,  |total| { 
132+                         * total = total. saturating_sub ( bought_alpha) ; 
133+                     } ) ; 
134+                 } 
133135            } 
134-             is_subsidized. insert ( * netuid_i,  true ) ; 
135136        } 
136137
137138        log:: debug!( "tao_to_stake: {tao_to_stake:?}" ) ; 
@@ -163,12 +164,10 @@ impl<T: Config> Pallet<T> {
163164            SubnetTaoInEmission :: < T > :: insert ( * netuid_i,  TaoCurrency :: from ( tao_in_i) ) ; 
164165            SubnetTAO :: < T > :: mutate ( * netuid_i,  |total| { 
165166                * total = total. saturating_add ( tao_in_i. into ( ) ) ; 
166-                 * total = total. saturating_add ( tou64 ! ( amount_per_subnet) . into ( ) ) ; 
167167            } ) ; 
168168
169169            TotalStake :: < T > :: mutate ( |total| { 
170170                * total = total. saturating_add ( tao_in_i. into ( ) ) ; 
171-                 * total = total. saturating_add ( tou64 ! ( amount_per_subnet) . into ( ) ) ; 
172171            } ) ; 
173172            TotalIssuance :: < T > :: mutate ( |total| { 
174173                * total = total. saturating_add ( tao_in_i. into ( ) ) ; 
@@ -231,21 +230,18 @@ impl<T: Config> Pallet<T> {
231230            let  pending_alpha:  U96F32  = alpha_out_i. saturating_sub ( root_alpha) ; 
232231            log:: debug!( "pending_alpha: {pending_alpha:?}" ) ; 
233232            // Sell root emission through the pool (do not pay fees) 
234-             let  subsidized:  bool  = * is_subsidized. get ( netuid_i) . unwrap_or ( & false ) ; 
235-             if  !subsidized { 
236-                 let  swap_result = Self :: swap_alpha_for_tao ( 
237-                     * netuid_i, 
238-                     tou64 ! ( root_alpha) . into ( ) , 
239-                     T :: SwapInterface :: min_price ( ) , 
240-                     true , 
241-                 ) ; 
242-                 if  let  Ok ( ok_result)  = swap_result { 
243-                     let  root_tao = ok_result. amount_paid_out ; 
244-                     // Accumulate root divs for subnet. 
245-                     PendingRootDivs :: < T > :: mutate ( * netuid_i,  |total| { 
246-                         * total = total. saturating_add ( root_tao) ; 
247-                     } ) ; 
248-                 } 
233+             let  swap_result = Self :: swap_alpha_for_tao ( 
234+                 * netuid_i, 
235+                 tou64 ! ( root_alpha) . into ( ) , 
236+                 T :: SwapInterface :: min_price ( ) . into ( ) , 
237+                 true , 
238+             ) ; 
239+             if  let  Ok ( ok_result)  = swap_result { 
240+                 let  root_tao:  u64  = ok_result. amount_paid_out ; 
241+                 // Accumulate root divs for subnet. 
242+                 PendingRootDivs :: < T > :: mutate ( * netuid_i,  |total| { 
243+                     * total = total. saturating_add ( root_tao. into ( ) ) ; 
244+                 } ) ; 
249245            } 
250246            // Accumulate alpha emission in pending. 
251247            PendingAlphaSwapped :: < T > :: mutate ( * netuid_i,  |total| { 
0 commit comments