Skip to content

Commit 67f5aec

Browse files
committed
Extend slow-down to 2 weeks
1 parent a3d9024 commit 67f5aec

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

pallets/subtensor/src/staking/stake_utils.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ impl<T: Config> Pallet<T> {
6060
let blocks_since_registration = I96F32::saturating_from_num(
6161
Self::get_current_block_as_u64().saturating_sub(NetworkRegisteredAt::<T>::get(netuid)),
6262
);
63+
// 7200 * 14 = 100_800 is the halving time
6364
let alpha: I96F32 =
6465
SubnetMovingAlpha::<T>::get().saturating_mul(blocks_since_registration.safe_div(
65-
blocks_since_registration.saturating_add(I96F32::saturating_from_num(7200)),
66+
blocks_since_registration.saturating_add(I96F32::saturating_from_num(100_800)),
6667
));
6768
let minus_alpha: I96F32 = I96F32::saturating_from_num(1.0).saturating_sub(alpha);
6869
let current_price: I96F32 = alpha

pallets/subtensor/src/tests/coinbase.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,14 @@ fn test_coinbase_moving_prices() {
190190
SubnetAlphaIn::<Test>::insert(netuid, 1_000_000);
191191
SubnetMechanism::<Test>::insert(netuid, 1);
192192
SubnetMovingPrice::<Test>::insert(netuid, I96F32::from_num(1));
193+
NetworkRegisteredAt::<Test>::insert(netuid, 1);
194+
193195
// Updating the moving price keeps it the same.
194196
assert_eq!(
195197
SubtensorModule::get_moving_alpha_price(netuid),
196198
I96F32::from_num(1)
197199
);
198-
// Skip some blocks so that EMA price is now slowed down
200+
// Skip some blocks so that EMA price is not slowed down
199201
System::set_block_number(7_200_000);
200202

201203
SubtensorModule::update_moving_price(netuid);
@@ -209,21 +211,23 @@ fn test_coinbase_moving_prices() {
209211
SubnetMovingAlpha::<Test>::set(I96F32::from_num(1.0));
210212
// Run moving 1 times.
211213
SubtensorModule::update_moving_price(netuid);
212-
// Assert price is == 100% of the real price.
213-
assert!(I96F32::from_num(1.0) - SubtensorModule::get_moving_alpha_price(netuid) < 0.001);
214+
// Assert price is ~ 100% of the real price.
215+
assert!(I96F32::from_num(1.0) - SubtensorModule::get_moving_alpha_price(netuid) < 0.05);
214216
// Set price to zero.
215217
SubnetMovingPrice::<Test>::insert(netuid, I96F32::from_num(0));
216218
SubnetMovingAlpha::<Test>::set(I96F32::from_num(0.1));
217-
// Run moving 6 times.
218-
SubtensorModule::update_moving_price(netuid);
219-
SubtensorModule::update_moving_price(netuid);
220-
SubtensorModule::update_moving_price(netuid);
221-
SubtensorModule::update_moving_price(netuid);
222-
SubtensorModule::update_moving_price(netuid);
223-
SubtensorModule::update_moving_price(netuid);
219+
220+
// EMA price 14 days after registration
221+
System::set_block_number(7_200 * 14);
222+
223+
// Run moving 14 times.
224+
for _ in 0..14 {
225+
SubtensorModule::update_moving_price(netuid);
226+
}
227+
224228
// Assert price is > 50% of the real price.
225229
assert!(
226-
(I96F32::from_num(0.468559) - SubtensorModule::get_moving_alpha_price(netuid)).abs()
230+
(I96F32::from_num(0.512325) - SubtensorModule::get_moving_alpha_price(netuid)).abs()
227231
< 0.001
228232
);
229233
});
@@ -269,7 +273,7 @@ fn test_update_moving_price_after_time() {
269273
SubnetMovingPrice::<Test>::insert(netuid, I96F32::from_num(0));
270274

271275
// Registered long time ago
272-
System::set_block_number(7_200_500);
276+
System::set_block_number(72_000_500);
273277
NetworkRegisteredAt::<Test>::insert(netuid, 500);
274278

275279
SubtensorModule::update_moving_price(netuid);

0 commit comments

Comments
 (0)