diff --git a/pallets/subtensor/src/benchmarks.rs b/pallets/subtensor/src/benchmarks.rs index afb548aaf5..cf2622bcf3 100644 --- a/pallets/subtensor/src/benchmarks.rs +++ b/pallets/subtensor/src/benchmarks.rs @@ -593,5 +593,15 @@ benchmarks! { assert_ok!( Subtensor::::do_add_network( RawOrigin::Root.into(), netuid.try_into().unwrap(), tempo.into(), modality.into())); }: sudo_set_min_burn(RawOrigin::>::Root, netuid, min_burn) + + benchmark_sudo_set_tempo { + let netuid: u16 = 1; + let tempo_default: u16 = 1; + let tempo: u16 = 15; + let modality: u16 = 0; + + assert_ok!( Subtensor::::do_add_network( RawOrigin::Root.into(), netuid.try_into().unwrap(), tempo_default.into(), modality.into())); + + }: sudo_set_tempo(RawOrigin::>::Root, netuid, tempo) } diff --git a/pallets/subtensor/src/lib.rs b/pallets/subtensor/src/lib.rs index 1f09044ad5..31bb2aa89a 100644 --- a/pallets/subtensor/src/lib.rs +++ b/pallets/subtensor/src/lib.rs @@ -573,6 +573,7 @@ pub mod pallet { MaxBurnSet( u16, u64 ), // --- Event created when setting max burn on a network. MinBurnSet( u16, u64 ), // --- Event created when setting min burn on a network. TxRateLimitSet( u64 ), // --- Event created when setting the transaction rate limit. + TempoSet(u16, u16), // --- Event created when setting tempo on a network RAORecycledForRegistrationSet( u16, u64 ), // Event created when setting the RAO recycled for registration. } @@ -1548,12 +1549,20 @@ pub mod pallet { pub fn sudo_set_total_issuance(origin: OriginFor, total_issuance: u64 ) -> DispatchResult { Self::do_set_total_issuance(origin, total_issuance) } - - #[pallet::call_index(50)] + + #[pallet::call_index(47)] + #[pallet::weight((Weight::from_ref_time(15_000_000) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)), DispatchClass::Operational, Pays::No))] + pub fn sudo_set_tempo(origin:OriginFor, netuid: u16, tempo: u16) -> DispatchResult { + Self::do_sudo_set_tempo(origin, netuid, tempo) + } + + #[pallet::call_index(48)] #[pallet::weight((0, DispatchClass::Operational, Pays::No))] pub fn sudo_set_rao_recycled(origin: OriginFor, netuid: u16, rao_recycled: u64 ) -> DispatchResult { Self::do_set_rao_recycled(origin, netuid, rao_recycled) - } + } } // ---- Subtensor helper functions. diff --git a/pallets/subtensor/src/utils.rs b/pallets/subtensor/src/utils.rs index a41563d5e9..5a8a47418a 100644 --- a/pallets/subtensor/src/utils.rs +++ b/pallets/subtensor/src/utils.rs @@ -476,6 +476,19 @@ impl Pallet { Self::deposit_event( Event::MaxRegistrationsPerBlockSet( netuid, max_registrations_per_block) ); Ok(()) } + pub fn do_sudo_set_tempo ( + origin: T::RuntimeOrigin, + netuid: u16, + tempo: u16 + ) -> DispatchResult { + ensure_root( origin )?; + ensure!(Self::if_subnet_exist(netuid), Error::::NetworkDoesNotExist); + ensure!( Self::if_tempo_is_valid( tempo ), Error::::InvalidTempo ); + Self::set_tempo(netuid, tempo); + log::info!("TempoSet( netuid: {:?} tempo: {:?} ) ", netuid, tempo ); + Self::deposit_event( Event::TempoSet(netuid, tempo) ); + Ok(()) + } pub fn do_set_total_issuance(origin: T::RuntimeOrigin, total_issuance: u64) -> DispatchResult{ ensure_root( origin )?; TotalIssuance::::put( total_issuance );