From a2f32ae535ebe42ad287f4202e09c02cd346113a Mon Sep 17 00:00:00 2001 From: SaMotlagh Date: Thu, 2 Mar 2023 14:33:44 -0500 Subject: [PATCH] add subtensor pallet to runtime and enabled benchmarking for subtensor pallet. --- pallets/subtensor/Cargo.toml | 2 +- runtime/Cargo.toml | 2 +- runtime/src/lib.rs | 85 ++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 2 deletions(-) diff --git a/pallets/subtensor/Cargo.toml b/pallets/subtensor/Cargo.toml index 0d87eb19cb..7524614080 100644 --- a/pallets/subtensor/Cargo.toml +++ b/pallets/subtensor/Cargo.toml @@ -41,7 +41,7 @@ sp-core = { version = "7.0.0", default-features = false, git = "https://github.c default = ["std"] std = [ "codec/std", - "frame-benchmarking?/std", + "frame-benchmarking/std", "frame-support/std", "frame-system/std", "scale-info/std", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 525b631a71..5c59a41004 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -58,7 +58,7 @@ default = ["std"] std = [ "frame-try-runtime?/std", "frame-system-benchmarking?/std", - "frame-benchmarking?/std", + "frame-benchmarking/std", "codec/std", "scale-info/std", "frame-executive/std", diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 0283bbbbec..0bf112c7f4 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -47,6 +47,8 @@ use pallet_transaction_payment::{ConstFeeMultiplier, CurrencyAdapter, Multiplier pub use sp_runtime::BuildStorage; pub use sp_runtime::{Perbill, Permill}; +pub use pallet_subtensor; + /// An index to a block. pub type BlockNumber = u32; @@ -272,6 +274,85 @@ impl pallet_sudo::Config for Runtime { type RuntimeCall = RuntimeCall; } +// Configure the pallet subtensor. +parameter_types! { + pub const SubtensorInitialRho: u16 = 30; + pub const SubtensorInitialKappa: u16 = 32_767; // 0.5 = 65535/2 + pub const SubtensorInitialWeightCuts: u16 = 3; + pub const SubtensorInitialMaxAllowedUids: u16 = 512; + pub const SubtensorInitialIssuance: u64 = 0; + pub const SubtensorInitialMinAllowedWeights: u16 = 0; + pub const SubtensorInitialEmissionValue: u16 = 0; + pub const SubtensorInitialMaxWeightsLimit: u16 = u16::MAX; + pub const SubtensorInitialValidatorBatchSize: u16 = 10; + pub const SubtensorInitialValidatorSequenceLen: u16 = 10; + pub const SubtensorInitialValidatorEpochLen: u16 = 1000; + pub const SubtensorInitialValidatorEpochsPerReset: u16 = 60; + pub const SubtensorInitialValidatorExcludeQuantile: u16 = 10; // 0.1 + pub const SubtensorInitialValidatorPruneLen: u64 = 0; + pub const SubtensorInitialValidatorLogitsDivergence: u64 = 0; + pub const SubtensorInitialScalingLawPower: u16 = 50; // 0.5 + pub const SubtensorInitialSynergyScalingLawPower: u16 = 50; // 0.5 + pub const SubtensorInitialMaxAllowedValidators: u16 = 100; + pub const SubtensorInitialTempo: u16 = 0; + pub const SubtensorInitialDifficulty: u64 = 1; + pub const SubtensorInitialAdjustmentInterval: u16 = 100; + pub const SubtensorInitialTargetRegistrationsPerInterval: u16 = 2; + pub const SubtensorInitialImmunityPeriod: u16 = 200; + pub const SubtensorInitialActivityCutoff: u16 = 5000; + pub const SubtensorInitialMaxRegistrationsPerBlock: u16 = 50; + pub const SubtensorInitialPruningScore : u16 = u16::MAX; + pub const SubtensorInitialBondsMovingAverage: u64 = 900000; + pub const SubtensorInitialDefaultTake: u16 = 11_796; // 18% honest number. + pub const SubtensorInitialWeightsVersionKey: u64 = 0; + pub const SubtensorInitialMinDifficulty: u64 = 1; + pub const SubtensorInitialMaxDifficulty: u64 = 10; + pub const SubtensorInitialServingRateLimit: u64 = 1000; + pub const SubtensorInitialBurn: u64 = 0; + pub const SubtensorInitialMinBurn: u64 = 0; + pub const SubtensorInitialMaxBurn: u64 = 1_000_000_000; +} + +impl pallet_subtensor::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type Currency = Balances; + type InitialRho = SubtensorInitialRho; + type InitialKappa = SubtensorInitialKappa; + type InitialWeightCuts = SubtensorInitialWeightCuts; + type InitialMaxAllowedUids = SubtensorInitialMaxAllowedUids; + type InitialBondsMovingAverage = SubtensorInitialBondsMovingAverage; + type InitialIssuance = SubtensorInitialIssuance; + type InitialMinAllowedWeights = SubtensorInitialMinAllowedWeights; + type InitialEmissionValue = SubtensorInitialEmissionValue; + type InitialMaxWeightsLimit = SubtensorInitialMaxWeightsLimit; + type InitialValidatorBatchSize = SubtensorInitialValidatorBatchSize; + type InitialValidatorSequenceLen = SubtensorInitialValidatorSequenceLen; + type InitialValidatorEpochLen = SubtensorInitialValidatorEpochLen; + type InitialValidatorEpochsPerReset = SubtensorInitialValidatorEpochsPerReset; + type InitialValidatorExcludeQuantile = SubtensorInitialValidatorExcludeQuantile; + type InitialValidatorPruneLen = SubtensorInitialValidatorPruneLen; + type InitialValidatorLogitsDivergence = SubtensorInitialValidatorLogitsDivergence; + type InitialScalingLawPower = SubtensorInitialScalingLawPower; + type InitialSynergyScalingLawPower = SubtensorInitialSynergyScalingLawPower; + type InitialTempo = SubtensorInitialTempo; + type InitialDifficulty = SubtensorInitialDifficulty; + type InitialAdjustmentInterval = SubtensorInitialAdjustmentInterval; + type InitialTargetRegistrationsPerInterval = SubtensorInitialTargetRegistrationsPerInterval; + type InitialImmunityPeriod = SubtensorInitialImmunityPeriod; + type InitialActivityCutoff = SubtensorInitialActivityCutoff; + type InitialMaxRegistrationsPerBlock = SubtensorInitialMaxRegistrationsPerBlock; + type InitialPruningScore = SubtensorInitialPruningScore; + type InitialMaxAllowedValidators = SubtensorInitialMaxAllowedValidators; + type InitialDefaultTake = SubtensorInitialDefaultTake; + type InitialWeightsVersionKey = SubtensorInitialWeightsVersionKey; + type InitialMaxDifficulty = SubtensorInitialMaxDifficulty; + type InitialMinDifficulty = SubtensorInitialMinDifficulty; + type InitialServingRateLimit = SubtensorInitialServingRateLimit; + type InitialBurn = SubtensorInitialBurn; + type InitialMaxBurn = SubtensorInitialMaxBurn; + type InitialMinBurn = SubtensorInitialMinBurn; +} + // Create the runtime by composing the FRAME pallets that were previously configured. construct_runtime!( pub struct Runtime @@ -288,6 +369,9 @@ construct_runtime!( Balances: pallet_balances, TransactionPayment: pallet_transaction_payment, Sudo: pallet_sudo, + + // Subtensor + Subtensor: pallet_subtensor::{Pallet, Call, Storage, Event} = 41, } ); @@ -333,6 +417,7 @@ mod benches { [frame_benchmarking, BaselineBench::] [frame_system, SystemBench::] [pallet_balances, Balances] + [pallet_subtensor, Subtensor] [pallet_timestamp, Timestamp] ); }