Skip to content

Commit a7e1aff

Browse files
committed
add test
1 parent 8f42d19 commit a7e1aff

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

pallets/subtensor/src/tests/staking.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,6 +1671,70 @@ fn test_rate_limits_enforced_on_increase_take() {
16711671
});
16721672
}
16731673

1674+
// Test rate-limiting on an increase take just after a decrease take
1675+
// Prevents a Validator from decreasing take and then increasing it immediately after.
1676+
#[test]
1677+
fn test_rate_limits_enforced_on_decrease_before_increase_take() {
1678+
new_test_ext(1).execute_with(|| {
1679+
// Make account
1680+
let hotkey0 = U256::from(1);
1681+
let coldkey0 = U256::from(3);
1682+
1683+
// Add balance
1684+
SubtensorModule::add_balance_to_coldkey_account(&coldkey0, 100000);
1685+
1686+
// Register the neuron to a new network
1687+
let netuid = 1;
1688+
add_network(netuid, 1, 0);
1689+
register_ok_neuron(netuid, hotkey0, coldkey0, 124124);
1690+
1691+
// Coldkey / hotkey 0 become delegates with 9% take
1692+
Delegates::<Test>::insert(hotkey0, SubtensorModule::get_min_delegate_take() + 1);
1693+
assert_eq!(
1694+
SubtensorModule::get_hotkey_take(&hotkey0),
1695+
SubtensorModule::get_min_delegate_take() + 1
1696+
);
1697+
1698+
// Decrease take
1699+
assert_ok!(SubtensorModule::do_decrease_take(
1700+
RuntimeOrigin::signed(coldkey0),
1701+
hotkey0,
1702+
SubtensorModule::get_min_delegate_take()
1703+
)); // Verify decrease
1704+
assert_eq!(
1705+
SubtensorModule::get_hotkey_take(&hotkey0),
1706+
SubtensorModule::get_min_delegate_take()
1707+
);
1708+
1709+
// Increase take immediately after
1710+
assert_eq!(
1711+
SubtensorModule::do_increase_take(
1712+
RuntimeOrigin::signed(coldkey0),
1713+
hotkey0,
1714+
SubtensorModule::get_min_delegate_take() + 1
1715+
),
1716+
Err(Error::<Test>::DelegateTxRateLimitExceeded.into())
1717+
); // Verify no change
1718+
assert_eq!(
1719+
SubtensorModule::get_hotkey_take(&hotkey0),
1720+
SubtensorModule::get_min_delegate_take()
1721+
);
1722+
1723+
step_block(1 + InitialTxDelegateTakeRateLimit::get() as u16);
1724+
1725+
// Can increase after waiting
1726+
assert_ok!(SubtensorModule::do_increase_take(
1727+
RuntimeOrigin::signed(coldkey0),
1728+
hotkey0,
1729+
SubtensorModule::get_min_delegate_take() + 1
1730+
)); // Verify increase
1731+
assert_eq!(
1732+
SubtensorModule::get_hotkey_take(&hotkey0),
1733+
SubtensorModule::get_min_delegate_take() + 1
1734+
);
1735+
});
1736+
}
1737+
16741738
#[test]
16751739
fn test_get_total_delegated_stake_after_unstaking() {
16761740
new_test_ext(1).execute_with(|| {

0 commit comments

Comments
 (0)