Skip to content

Commit c0212a7

Browse files
committed
remove is_subsidized
1 parent d7641bb commit c0212a7

File tree

2 files changed

+33
-37
lines changed

2 files changed

+33
-37
lines changed

pallets/subtensor/src/coinbase/run_coinbase.rs

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ impl<T: Config> Pallet<T> {
4040
let mut tao_in: BTreeMap<NetUid, U96F32> = BTreeMap::new();
4141
let mut alpha_in: BTreeMap<NetUid, U96F32> = BTreeMap::new();
4242
let mut alpha_out: BTreeMap<NetUid, U96F32> = BTreeMap::new();
43-
let mut is_subsidized: BTreeMap<NetUid, bool> = BTreeMap::new();
4443
let mut tao_to_stake = U96F32::saturating_from_num(0.0);
4544

4645
// Only calculate for subnets that we are emitting to.
@@ -68,8 +67,9 @@ impl<T: Config> Pallet<T> {
6867

6968
let mut alpha_in_i: U96F32;
7069
let mut tao_in_i: U96F32;
71-
if default_alpha_in_i > alpha_emission_i {
72-
alpha_in_i = alpha_emission_i;
70+
let min_alpha_emission = alpha_emission_i.min(block_emission);
71+
if default_alpha_in_i > min_alpha_emission {
72+
alpha_in_i = min_alpha_emission;
7373
tao_in_i = alpha_in_i.saturating_mul(price_i);
7474
let difference_tao: U96F32 = default_tao_in_i.saturating_sub(tao_in_i);
7575
tao_to_stake = tao_to_stake.saturating_add(difference_tao);
@@ -101,20 +101,21 @@ impl<T: Config> Pallet<T> {
101101
U96F32::saturating_from_num(0.0),
102102
);
103103

104-
for netuid_i in subnets_to_emit_to.iter() {
105-
let buy_swap_result = Self::swap_tao_for_alpha(
106-
*netuid_i,
107-
tou64!(amount_per_subnet).into(),
108-
T::SwapInterface::max_price().into(),
109-
true,
110-
);
111-
if let Ok(buy_swap_result_ok) = buy_swap_result {
112-
let bought_alpha = AlphaCurrency::from(buy_swap_result_ok.amount_paid_out);
113-
SubnetAlphaOut::<T>::mutate(*netuid_i, |total| {
114-
*total = total.saturating_sub(bought_alpha);
115-
});
104+
if amount_per_subnet > asfloat!(0.0) {
105+
for netuid_i in subnets_to_emit_to.iter() {
106+
let buy_swap_result = Self::swap_tao_for_alpha(
107+
*netuid_i,
108+
tou64!(amount_per_subnet).into(),
109+
T::SwapInterface::max_price().into(),
110+
true,
111+
);
112+
if let Ok(buy_swap_result_ok) = buy_swap_result {
113+
let bought_alpha = AlphaCurrency::from(buy_swap_result_ok.amount_paid_out);
114+
SubnetAlphaOut::<T>::mutate(*netuid_i, |total| {
115+
*total = total.saturating_sub(bought_alpha);
116+
});
117+
}
116118
}
117-
is_subsidized.insert(*netuid_i, true);
118119
}
119120

120121
log::debug!("tao_to_stake: {tao_to_stake:?}");
@@ -146,12 +147,10 @@ impl<T: Config> Pallet<T> {
146147
SubnetTaoInEmission::<T>::insert(*netuid_i, TaoCurrency::from(tao_in_i));
147148
SubnetTAO::<T>::mutate(*netuid_i, |total| {
148149
*total = total.saturating_add(tao_in_i.into());
149-
*total = total.saturating_add(tou64!(amount_per_subnet).into());
150150
});
151151

152152
TotalStake::<T>::mutate(|total| {
153153
*total = total.saturating_add(tao_in_i.into());
154-
*total = total.saturating_add(tou64!(amount_per_subnet).into());
155154
});
156155
TotalIssuance::<T>::mutate(|total| {
157156
*total = total.saturating_add(tao_in_i.into());
@@ -214,21 +213,18 @@ impl<T: Config> Pallet<T> {
214213
let pending_alpha: U96F32 = alpha_out_i.saturating_sub(root_alpha);
215214
log::debug!("pending_alpha: {pending_alpha:?}");
216215
// Sell root emission through the pool (do not pay fees)
217-
let subsidized: bool = *is_subsidized.get(netuid_i).unwrap_or(&false);
218-
if !subsidized {
219-
let swap_result = Self::swap_alpha_for_tao(
220-
*netuid_i,
221-
tou64!(root_alpha).into(),
222-
T::SwapInterface::min_price(),
223-
true,
224-
);
225-
if let Ok(ok_result) = swap_result {
226-
let root_tao = ok_result.amount_paid_out;
227-
// Accumulate root divs for subnet.
228-
PendingRootDivs::<T>::mutate(*netuid_i, |total| {
229-
*total = total.saturating_add(root_tao);
230-
});
231-
}
216+
let swap_result = Self::swap_alpha_for_tao(
217+
*netuid_i,
218+
tou64!(root_alpha).into(),
219+
T::SwapInterface::min_price().into(),
220+
true,
221+
);
222+
if let Ok(ok_result) = swap_result {
223+
let root_tao: u64 = ok_result.amount_paid_out;
224+
// Accumulate root divs for subnet.
225+
PendingRootDivs::<T>::mutate(*netuid_i, |total| {
226+
*total = total.saturating_add(root_tao.into());
227+
});
232228
}
233229
// Accumulate alpha emission in pending.
234230
PendingAlphaSwapped::<T>::mutate(*netuid_i, |total| {

pallets/subtensor/src/tests/coinbase.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ fn test_coinbase_tao_issuance_different_prices() {
153153
new_test_ext(1).execute_with(|| {
154154
let netuid1 = NetUid::from(1);
155155
let netuid2 = NetUid::from(2);
156-
let emission = 100_000_000;
156+
let emission = 1_000_000_000;
157157
add_network(netuid1, 1, 0);
158158
add_network(netuid2, 1, 0);
159159

@@ -198,17 +198,17 @@ fn test_coinbase_tao_issuance_different_prices() {
198198
// Assert tao emission is split evenly.
199199
assert_abs_diff_eq!(
200200
SubnetTAO::<Test>::get(netuid1),
201-
TaoCurrency::from(initial_tao + emission / 3),
201+
TaoCurrency::from(initial_tao + 45 * emission / 100),
202202
epsilon = 1.into(),
203203
);
204204
assert_abs_diff_eq!(
205205
SubnetTAO::<Test>::get(netuid2),
206-
TaoCurrency::from(initial_tao + 2 * emission / 3),
206+
TaoCurrency::from(initial_tao + 55 * emission / 100),
207207
epsilon = 1.into(),
208208
);
209209

210210
// Prices are low => we limit tao issued (buy alpha with it)
211-
let tao_issued = TaoCurrency::from(((0.1 + 0.2) * emission as f64) as u64);
211+
let tao_issued = TaoCurrency::from((emission as f64) as u64);
212212
assert_abs_diff_eq!(
213213
TotalIssuance::<Test>::get(),
214214
tao_issued,

0 commit comments

Comments
 (0)