Skip to content

Commit 6bf17ee

Browse files
committed
Fix benchmarks, add benchmarks for lock_stake and move_lock
1 parent 5a2809f commit 6bf17ee

1 file changed

Lines changed: 132 additions & 1 deletion

File tree

pallets/subtensor/src/benchmarks.rs

Lines changed: 132 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use sp_runtime::{
1616
};
1717
use sp_std::collections::btree_set::BTreeSet;
1818
use sp_std::vec;
19-
use substrate_fixed::types::U96F32;
19+
use substrate_fixed::types::{U64F64, U96F32};
2020
use subtensor_runtime_common::{AlphaBalance, NetUid, TaoBalance};
2121
use subtensor_swap_interface::SwapHandler;
2222

@@ -57,6 +57,28 @@ mod pallet_benchmarks {
5757
Subtensor::<T>::add_balance_to_coldkey_account(who, deposit.into());
5858
}
5959

60+
/// Add a zero lock to a random hotkey just so that the lock records exist
61+
fn add_lock<T: Config>(coldkey: &T::AccountId, netuid: NetUid) {
62+
let hotkey: T::AccountId = account("RandomHotkey", 0, 999);
63+
Lock::<T>::insert(
64+
(coldkey, netuid, hotkey.clone()),
65+
LockState {
66+
locked_mass: AlphaBalance::ZERO,
67+
conviction: U64F64::from_num(0),
68+
last_update: 0,
69+
},
70+
);
71+
HotkeyLock::<T>::insert(
72+
netuid,
73+
hotkey,
74+
LockState {
75+
locked_mass: AlphaBalance::ZERO,
76+
conviction: U64F64::from_num(0),
77+
last_update: 0,
78+
},
79+
);
80+
}
81+
6082
#[benchmark]
6183
fn register() {
6284
let netuid = NetUid::from(1);
@@ -169,6 +191,7 @@ mod pallet_benchmarks {
169191

170192
seed_swap_reserves::<T>(netuid);
171193
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey, total_stake.into());
194+
add_lock::<T>(&coldkey, netuid);
172195

173196
assert_ok!(Subtensor::<T>::burned_register(
174197
RawOrigin::Signed(coldkey.clone()).into(),
@@ -876,6 +899,7 @@ mod pallet_benchmarks {
876899
let stake_tao = DefaultMinStake::<T>::get().saturating_mul(10.into());
877900
let deposit = burn_fee.saturating_mul(2.into()).saturating_add(stake_tao);
878901
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey, deposit.into());
902+
add_lock::<T>(&coldkey, netuid);
879903

880904
assert_ok!(Subtensor::<T>::burned_register(
881905
RawOrigin::Signed(coldkey.clone()).into(),
@@ -938,6 +962,7 @@ mod pallet_benchmarks {
938962

939963
let wallet_bal = 1000000u32.into();
940964
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey.clone(), wallet_bal);
965+
add_lock::<T>(&coldkey, netuid);
941966

942967
assert_ok!(Subtensor::<T>::burned_register(
943968
RawOrigin::Signed(coldkey.clone()).into(),
@@ -1005,6 +1030,8 @@ mod pallet_benchmarks {
10051030
let amount_to_be_staked = TaoBalance::from(440_000_000_000_u64);
10061031
let amount_swapped = AlphaBalance::from(30_000_000_000_u64);
10071032
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey.clone(), amount);
1033+
add_lock::<T>(&coldkey, netuid1);
1034+
add_lock::<T>(&coldkey, netuid2);
10081035

10091036
assert_ok!(Subtensor::<T>::burned_register(
10101037
RawOrigin::Signed(coldkey.clone()).into(),
@@ -1055,6 +1082,7 @@ mod pallet_benchmarks {
10551082
let stake_tao = DefaultMinStake::<T>::get().saturating_mul(10.into());
10561083
let deposit = reg_fee.saturating_mul(2.into()).saturating_add(stake_tao);
10571084
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey, deposit.into());
1085+
add_lock::<T>(&coldkey, netuid);
10581086

10591087
assert_ok!(Subtensor::<T>::burned_register(
10601088
RawOrigin::Signed(coldkey.clone()).into(),
@@ -1111,6 +1139,8 @@ mod pallet_benchmarks {
11111139
let stake_tao = DefaultMinStake::<T>::get().saturating_mul(10.into());
11121140
let deposit = reg_fee.saturating_mul(2.into()).saturating_add(stake_tao);
11131141
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey, deposit.into());
1142+
add_lock::<T>(&coldkey, netuid1);
1143+
add_lock::<T>(&coldkey, netuid2);
11141144

11151145
assert_ok!(Subtensor::<T>::burned_register(
11161146
RawOrigin::Signed(coldkey.clone()).into(),
@@ -1520,6 +1550,7 @@ mod pallet_benchmarks {
15201550

15211551
let wallet_bal = 1000000u32.into();
15221552
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey.clone(), wallet_bal);
1553+
add_lock::<T>(&coldkey, netuid);
15231554

15241555
assert_ok!(Subtensor::<T>::burned_register(
15251556
RawOrigin::Signed(coldkey.clone()).into(),
@@ -1906,6 +1937,7 @@ mod pallet_benchmarks {
19061937
let limit = TaoBalance::from(6_000_000_000_u64);
19071938
let amount = TaoBalance::from(44_000_000_000_u64);
19081939
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey.clone(), balance_update);
1940+
add_lock::<T>(&coldkey, netuid);
19091941

19101942
let tao_reserve = TaoBalance::from(150_000_000_000_u64);
19111943
let alpha_in = AlphaBalance::from(100_000_000_000_u64);
@@ -1937,6 +1969,105 @@ mod pallet_benchmarks {
19371969
assert_eq!(PendingChildKeyCooldown::<T>::get(), cooldown);
19381970
}
19391971

1972+
#[benchmark]
1973+
fn lock_stake() {
1974+
let netuid = NetUid::from(1);
1975+
let tempo: u16 = 1;
1976+
1977+
Subtensor::<T>::init_new_network(netuid, tempo);
1978+
SubtokenEnabled::<T>::insert(netuid, true);
1979+
Subtensor::<T>::set_burn(netuid, benchmark_registration_burn());
1980+
Subtensor::<T>::set_network_registration_allowed(netuid, true);
1981+
Subtensor::<T>::set_max_allowed_uids(netuid, 4096);
1982+
1983+
let seed: u32 = 1;
1984+
let coldkey: T::AccountId = account("Test", 0, seed);
1985+
let hotkey: T::AccountId = account("Alice", 0, seed);
1986+
let total_stake = TaoBalance::from(1_000_000_000);
1987+
let amount = AlphaBalance::from(60_000_000);
1988+
1989+
seed_swap_reserves::<T>(netuid);
1990+
Subtensor::<T>::add_balance_to_coldkey_account(&coldkey, total_stake.into());
1991+
1992+
assert_ok!(Subtensor::<T>::add_stake(
1993+
RawOrigin::Signed(coldkey.clone()).into(),
1994+
hotkey.clone(),
1995+
netuid,
1996+
total_stake
1997+
));
1998+
1999+
#[extrinsic_call]
2000+
_(
2001+
RawOrigin::Signed(coldkey.clone()),
2002+
hotkey.clone(),
2003+
netuid,
2004+
amount,
2005+
);
2006+
}
2007+
2008+
#[benchmark]
2009+
fn move_lock() {
2010+
let netuid = NetUid::from(1);
2011+
let tempo: u16 = 1;
2012+
2013+
Subtensor::<T>::init_new_network(netuid, tempo);
2014+
SubtokenEnabled::<T>::insert(netuid, true);
2015+
Subtensor::<T>::set_burn(netuid, benchmark_registration_burn());
2016+
Subtensor::<T>::set_network_registration_allowed(netuid, true);
2017+
Subtensor::<T>::set_max_allowed_uids(netuid, 4096);
2018+
2019+
let seed: u32 = 1;
2020+
let coldkey: T::AccountId = account("Test", 0, seed);
2021+
let hotkey: T::AccountId = account("Alice", 0, seed);
2022+
let hotkey_dest: T::AccountId = account("Bob", 0, seed);
2023+
let total_stake = TaoBalance::from(1_000_000_000);
2024+
let amount = AlphaBalance::from(60_000_000);
2025+
2026+
seed_swap_reserves::<T>(netuid);
2027+
let burn = Subtensor::<T>::get_burn(netuid);
2028+
Subtensor::<T>::add_balance_to_coldkey_account(
2029+
&coldkey,
2030+
total_stake
2031+
.saturating_add(burn.saturating_mul(2.into()))
2032+
.into(),
2033+
);
2034+
2035+
assert_ok!(Subtensor::<T>::burned_register(
2036+
RawOrigin::Signed(coldkey.clone()).into(),
2037+
netuid,
2038+
hotkey.clone()
2039+
));
2040+
2041+
assert_ok!(Subtensor::<T>::burned_register(
2042+
RawOrigin::Signed(coldkey.clone()).into(),
2043+
netuid,
2044+
hotkey_dest.clone()
2045+
));
2046+
2047+
assert_ok!(Subtensor::<T>::add_stake(
2048+
RawOrigin::Signed(coldkey.clone()).into(),
2049+
hotkey.clone(),
2050+
netuid,
2051+
total_stake
2052+
));
2053+
2054+
assert_ok!(Subtensor::<T>::do_lock_stake(
2055+
&coldkey, netuid, &hotkey, amount,
2056+
));
2057+
2058+
#[extrinsic_call]
2059+
_(
2060+
RawOrigin::Signed(coldkey.clone()),
2061+
hotkey_dest.clone(),
2062+
netuid,
2063+
);
2064+
2065+
assert!(
2066+
Lock::<T>::iter_prefix((coldkey, netuid))
2067+
.any(|(locked_hotkey, _)| locked_hotkey == hotkey_dest)
2068+
);
2069+
}
2070+
19402071
impl_benchmark_test_suite!(
19412072
Subtensor,
19422073
crate::tests::mock::new_test_ext(1),

0 commit comments

Comments
 (0)