diff --git a/pallets/subtensor/src/lib.rs b/pallets/subtensor/src/lib.rs index 93d082f4a..62641c0a9 100644 --- a/pallets/subtensor/src/lib.rs +++ b/pallets/subtensor/src/lib.rs @@ -347,38 +347,39 @@ pub mod pallet { Manual, } - #[pallet::type_value] /// Default minimum root claim amount. /// This is the minimum amount of root claim that can be made. /// Any amount less than this will not be claimed. + #[pallet::type_value] pub fn DefaultMinRootClaimAmount() -> I96F32 { 500_000u64.into() } - #[pallet::type_value] /// Default root claim type. /// This is the type of root claim that will be made. /// This is set by the user. Either swap to TAO or keep as alpha. + #[pallet::type_value] pub fn DefaultRootClaimType() -> RootClaimTypeEnum { RootClaimTypeEnum::default() } - #[pallet::type_value] /// Default number of root claims per claim call. /// Ideally this is calculated using the number of staking coldkey /// and the block time. + #[pallet::type_value] pub fn DefaultNumRootClaim() -> u64 { // once per week (+ spare keys for skipped tries) 5 } - #[pallet::type_value] /// Default value for zero. + #[pallet::type_value] pub fn DefaultZeroU64() -> u64 { 0 } - #[pallet::type_value] + /// Default value for zero. + #[pallet::type_value] pub fn DefaultZeroI64() -> i64 { 0 } @@ -387,92 +388,105 @@ pub mod pallet { pub fn DefaultZeroAlpha() -> AlphaCurrency { AlphaCurrency::ZERO } + /// Default value for Tao currency. #[pallet::type_value] pub fn DefaultZeroTao() -> TaoCurrency { TaoCurrency::ZERO } - #[pallet::type_value] + /// Default value for zero. + #[pallet::type_value] pub fn DefaultZeroU128() -> u128 { 0 } - #[pallet::type_value] + /// Default value for zero. + #[pallet::type_value] pub fn DefaultZeroU16() -> u16 { 0 } - #[pallet::type_value] + /// Default value for false. + #[pallet::type_value] pub fn DefaultFalse() -> bool { false } - #[pallet::type_value] + /// Default value for false. + #[pallet::type_value] pub fn DefaultTrue() -> bool { true } - #[pallet::type_value] + /// Total Rao in circulation. + #[pallet::type_value] pub fn TotalSupply() -> u64 { 21_000_000_000_000_000 } - #[pallet::type_value] + /// Default Delegate Take. + #[pallet::type_value] pub fn DefaultDelegateTake() -> u16 { T::InitialDefaultDelegateTake::get() } - #[pallet::type_value] /// Default childkey take. + #[pallet::type_value] pub fn DefaultChildKeyTake() -> u16 { T::InitialDefaultChildKeyTake::get() } - #[pallet::type_value] + /// Default minimum delegate take. + #[pallet::type_value] pub fn DefaultMinDelegateTake() -> u16 { T::InitialMinDelegateTake::get() } - #[pallet::type_value] /// Default minimum childkey take. + #[pallet::type_value] pub fn DefaultMinChildKeyTake() -> u16 { T::InitialMinChildKeyTake::get() } - #[pallet::type_value] /// Default maximum childkey take. + #[pallet::type_value] pub fn DefaultMaxChildKeyTake() -> u16 { T::InitialMaxChildKeyTake::get() } - #[pallet::type_value] /// Default account take. + #[pallet::type_value] pub fn DefaultAccountTake() -> u64 { 0 } - #[pallet::type_value] + /// Default value for global weight. + #[pallet::type_value] pub fn DefaultTaoWeight() -> u64 { T::InitialTaoWeight::get() } - #[pallet::type_value] + /// Default emission per block. + #[pallet::type_value] pub fn DefaultBlockEmission() -> u64 { 1_000_000_000 } - #[pallet::type_value] + /// Default allowed delegation. + #[pallet::type_value] pub fn DefaultAllowsDelegation() -> bool { false } - #[pallet::type_value] + /// Default total issuance. + #[pallet::type_value] pub fn DefaultTotalIssuance() -> TaoCurrency { T::InitialIssuance::get().into() } - #[pallet::type_value] + /// Default account, derived from zero trailing bytes. + #[pallet::type_value] pub fn DefaultAccount() -> T::AccountId { #[allow(clippy::expect_used)] T::AccountId::decode(&mut TrailingZeroInput::zeroes()) @@ -481,329 +495,392 @@ pub mod pallet { // pub fn DefaultStakeInterval() -> u64 { // 360 // } (DEPRECATED) - #[pallet::type_value] + /// Default account linkage + #[pallet::type_value] pub fn DefaultAccountLinkage() -> Vec<(u64, T::AccountId)> { vec![] } - #[pallet::type_value] + /// Default pending childkeys + #[pallet::type_value] pub fn DefaultPendingChildkeys() -> (Vec<(u64, T::AccountId)>, u64) { (vec![], 0) } - #[pallet::type_value] + /// Default account linkage + #[pallet::type_value] pub fn DefaultProportion() -> u64 { 0 } - #[pallet::type_value] + /// Default accumulated emission for a hotkey + #[pallet::type_value] pub fn DefaultAccumulatedEmission() -> u64 { 0 } - #[pallet::type_value] + /// Default last adjustment block. + #[pallet::type_value] pub fn DefaultLastAdjustmentBlock() -> u64 { 0 } - #[pallet::type_value] + /// Default last adjustment block. + #[pallet::type_value] pub fn DefaultRegistrationsThisBlock() -> u16 { 0 } - #[pallet::type_value] + /// Default EMA price halving blocks + #[pallet::type_value] pub fn DefaultEMAPriceMovingBlocks() -> u64 { T::InitialEmaPriceHalvingPeriod::get() } - #[pallet::type_value] + /// Default registrations this block. + #[pallet::type_value] pub fn DefaultBurn() -> TaoCurrency { T::InitialBurn::get().into() } - #[pallet::type_value] + /// Default burn token. + #[pallet::type_value] pub fn DefaultMinBurn() -> TaoCurrency { T::InitialMinBurn::get().into() } - #[pallet::type_value] + /// Default min burn token. + #[pallet::type_value] pub fn DefaultMaxBurn() -> TaoCurrency { T::InitialMaxBurn::get().into() } - #[pallet::type_value] + /// Default max burn token. + #[pallet::type_value] pub fn DefaultDifficulty() -> u64 { T::InitialDifficulty::get() } - #[pallet::type_value] + /// Default difficulty value. + #[pallet::type_value] pub fn DefaultMinDifficulty() -> u64 { T::InitialMinDifficulty::get() } - #[pallet::type_value] + /// Default min difficulty value. + #[pallet::type_value] pub fn DefaultMaxDifficulty() -> u64 { T::InitialMaxDifficulty::get() } - #[pallet::type_value] + /// Default max difficulty value. + #[pallet::type_value] pub fn DefaultMaxRegistrationsPerBlock() -> u16 { T::InitialMaxRegistrationsPerBlock::get() } - #[pallet::type_value] + /// Default max registrations per block. + #[pallet::type_value] pub fn DefaultRAORecycledForRegistration() -> TaoCurrency { T::InitialRAORecycledForRegistration::get().into() } - #[pallet::type_value] + /// Default number of networks. + #[pallet::type_value] pub fn DefaultN() -> u16 { 0 } - #[pallet::type_value] + /// Default value for hotkeys. + #[pallet::type_value] pub fn DefaultHotkeys() -> Vec { vec![] } - #[pallet::type_value] + /// Default value if network is added. + #[pallet::type_value] pub fn DefaultNeworksAdded() -> bool { false } - #[pallet::type_value] + /// Default value for network member. + #[pallet::type_value] pub fn DefaultIsNetworkMember() -> bool { false } - #[pallet::type_value] + /// Default value for registration allowed. + #[pallet::type_value] pub fn DefaultRegistrationAllowed() -> bool { true } - #[pallet::type_value] + /// Default value for network registered at. + #[pallet::type_value] pub fn DefaultNetworkRegisteredAt() -> u64 { 0 } - #[pallet::type_value] + /// Default value for network immunity period. + #[pallet::type_value] pub fn DefaultNetworkImmunityPeriod() -> u64 { T::InitialNetworkImmunityPeriod::get() } - #[pallet::type_value] + /// Default value for network min lock cost. + #[pallet::type_value] pub fn DefaultNetworkMinLockCost() -> TaoCurrency { T::InitialNetworkMinLockCost::get().into() } - #[pallet::type_value] + /// Default value for network lock reduction interval. + #[pallet::type_value] pub fn DefaultNetworkLockReductionInterval() -> u64 { T::InitialNetworkLockReductionInterval::get() } - #[pallet::type_value] + /// Default value for subnet owner cut. + #[pallet::type_value] pub fn DefaultSubnetOwnerCut() -> u16 { T::InitialSubnetOwnerCut::get() } - #[pallet::type_value] + /// Default value for recycle or burn. + #[pallet::type_value] pub fn DefaultRecycleOrBurn() -> RecycleOrBurnEnum { RecycleOrBurnEnum::Burn // default to burn } - #[pallet::type_value] + /// Default value for network rate limit. + #[pallet::type_value] pub fn DefaultNetworkRateLimit() -> u64 { if cfg!(feature = "pow-faucet") { return 0; } T::InitialNetworkRateLimit::get() } - #[pallet::type_value] + /// Default value for network rate limit. + #[pallet::type_value] pub fn DefaultNetworkRegistrationStartBlock() -> u64 { 0 } - #[pallet::type_value] + /// Default value for weights version key rate limit. /// In units of tempos. + #[pallet::type_value] pub fn DefaultWeightsVersionKeyRateLimit() -> u64 { 5 // 5 tempos } - #[pallet::type_value] + /// Default value for pending emission. + #[pallet::type_value] pub fn DefaultPendingEmission() -> AlphaCurrency { 0.into() } - #[pallet::type_value] + /// Default value for blocks since last step. + #[pallet::type_value] pub fn DefaultBlocksSinceLastStep() -> u64 { 0 } - #[pallet::type_value] + /// Default value for last mechanism step block. + #[pallet::type_value] pub fn DefaultLastMechanismStepBlock() -> u64 { 0 } - #[pallet::type_value] + /// Default value for subnet owner. + #[pallet::type_value] pub fn DefaultSubnetOwner() -> T::AccountId { #[allow(clippy::expect_used)] T::AccountId::decode(&mut sp_runtime::traits::TrailingZeroInput::zeroes()) .expect("trailing zeroes always produce a valid account ID; qed") } - #[pallet::type_value] + /// Default value for subnet locked. + #[pallet::type_value] pub fn DefaultSubnetLocked() -> u64 { 0 } - #[pallet::type_value] + /// Default value for network tempo + #[pallet::type_value] pub fn DefaultTempo() -> u16 { T::InitialTempo::get() } - #[pallet::type_value] + /// Default value for weights set rate limit. + #[pallet::type_value] pub fn DefaultWeightsSetRateLimit() -> u64 { 100 } - #[pallet::type_value] + /// Default block number at registration. + #[pallet::type_value] pub fn DefaultBlockAtRegistration() -> u64 { 0 } - #[pallet::type_value] + /// Default value for rho parameter. + #[pallet::type_value] pub fn DefaultRho() -> u16 { T::InitialRho::get() } - #[pallet::type_value] + /// Default value for alpha sigmoid steepness. + #[pallet::type_value] pub fn DefaultAlphaSigmoidSteepness() -> i16 { T::InitialAlphaSigmoidSteepness::get() } - #[pallet::type_value] + /// Default value for kappa parameter. + #[pallet::type_value] pub fn DefaultKappa() -> u16 { T::InitialKappa::get() } - #[pallet::type_value] + /// Default value for network min allowed UIDs. + #[pallet::type_value] pub fn DefaultMinAllowedUids() -> u16 { T::InitialMinAllowedUids::get() } - #[pallet::type_value] + /// Default maximum allowed UIDs. + #[pallet::type_value] pub fn DefaultMaxAllowedUids() -> u16 { T::InitialMaxAllowedUids::get() } - #[pallet::type_value] + /// -- Rate limit for set max allowed UIDs + #[pallet::type_value] pub fn MaxUidsTrimmingRateLimit() -> u64 { prod_or_fast!(30 * 7200, 1) } - #[pallet::type_value] + /// Default immunity period. + #[pallet::type_value] pub fn DefaultImmunityPeriod() -> u16 { T::InitialImmunityPeriod::get() } - #[pallet::type_value] + /// Default activity cutoff. + #[pallet::type_value] pub fn DefaultActivityCutoff() -> u16 { T::InitialActivityCutoff::get() } - #[pallet::type_value] + /// Default weights version key. + #[pallet::type_value] pub fn DefaultWeightsVersionKey() -> u64 { T::InitialWeightsVersionKey::get() } - #[pallet::type_value] + /// Default minimum allowed weights. + #[pallet::type_value] pub fn DefaultMinAllowedWeights() -> u16 { T::InitialMinAllowedWeights::get() } - #[pallet::type_value] /// Default maximum allowed validators. + #[pallet::type_value] pub fn DefaultMaxAllowedValidators() -> u16 { T::InitialMaxAllowedValidators::get() } - #[pallet::type_value] + /// Default adjustment interval. + #[pallet::type_value] pub fn DefaultAdjustmentInterval() -> u16 { T::InitialAdjustmentInterval::get() } - #[pallet::type_value] + /// Default bonds moving average. + #[pallet::type_value] pub fn DefaultBondsMovingAverage() -> u64 { T::InitialBondsMovingAverage::get() } + /// Default bonds penalty. #[pallet::type_value] pub fn DefaultBondsPenalty() -> u16 { T::InitialBondsPenalty::get() } + /// Default value for bonds reset - will not reset bonds #[pallet::type_value] pub fn DefaultBondsResetOn() -> bool { T::InitialBondsResetOn::get() } + /// Default validator prune length. #[pallet::type_value] pub fn DefaultValidatorPruneLen() -> u64 { T::InitialValidatorPruneLen::get() } - #[pallet::type_value] + /// Default scaling law power. + #[pallet::type_value] pub fn DefaultScalingLawPower() -> u16 { T::InitialScalingLawPower::get() } - #[pallet::type_value] + /// Default target registrations per interval. + #[pallet::type_value] pub fn DefaultTargetRegistrationsPerInterval() -> u16 { T::InitialTargetRegistrationsPerInterval::get() } - #[pallet::type_value] + /// Default adjustment alpha. + #[pallet::type_value] pub fn DefaultAdjustmentAlpha() -> u64 { T::InitialAdjustmentAlpha::get() } - #[pallet::type_value] + /// Default minimum stake for weights. + #[pallet::type_value] pub fn DefaultStakeThreshold() -> u64 { 0 } - #[pallet::type_value] + /// Default Reveal Period Epochs + #[pallet::type_value] pub fn DefaultRevealPeriodEpochs() -> u64 { 1 } - #[pallet::type_value] + /// Value definition for vector of u16. + #[pallet::type_value] pub fn EmptyU16Vec() -> Vec { vec![] } - #[pallet::type_value] + /// Value definition for vector of u64. + #[pallet::type_value] pub fn EmptyU64Vec() -> Vec { vec![] } - #[pallet::type_value] + /// Value definition for vector of bool. + #[pallet::type_value] pub fn EmptyBoolVec() -> Vec { vec![] } - #[pallet::type_value] + /// Value definition for bonds with type vector of (u16, u16). + #[pallet::type_value] pub fn DefaultBonds() -> Vec<(u16, u16)> { vec![] } - #[pallet::type_value] + /// Value definition for weights with vector of (u16, u16). + #[pallet::type_value] pub fn DefaultWeights() -> Vec<(u16, u16)> { vec![] } - #[pallet::type_value] + /// Default value for key with type T::AccountId derived from trailing zeroes. + #[pallet::type_value] pub fn DefaultKey() -> T::AccountId { #[allow(clippy::expect_used)] T::AccountId::decode(&mut sp_runtime::traits::TrailingZeroInput::zeroes()) @@ -812,124 +889,137 @@ pub mod pallet { // pub fn DefaultHotkeyEmissionTempo() -> u64 { // T::InitialHotkeyEmissionTempo::get() // } (DEPRECATED) - #[pallet::type_value] + /// Default value for rate limiting + #[pallet::type_value] pub fn DefaultTxRateLimit() -> u64 { T::InitialTxRateLimit::get() } - #[pallet::type_value] + /// Default value for delegate take rate limiting + #[pallet::type_value] pub fn DefaultTxDelegateTakeRateLimit() -> u64 { T::InitialTxDelegateTakeRateLimit::get() } - #[pallet::type_value] + /// Default value for chidlkey take rate limiting + #[pallet::type_value] pub fn DefaultTxChildKeyTakeRateLimit() -> u64 { T::InitialTxChildKeyTakeRateLimit::get() } - #[pallet::type_value] + /// Default value for last extrinsic block. + #[pallet::type_value] pub fn DefaultLastTxBlock() -> u64 { 0 } - #[pallet::type_value] + /// Default value for serving rate limit. + #[pallet::type_value] pub fn DefaultServingRateLimit() -> u64 { T::InitialServingRateLimit::get() } - #[pallet::type_value] + /// Default value for weight commit/reveal enabled. + #[pallet::type_value] pub fn DefaultCommitRevealWeightsEnabled() -> bool { true } - #[pallet::type_value] + /// Default value for weight commit/reveal version. + #[pallet::type_value] pub fn DefaultCommitRevealWeightsVersion() -> u16 { 4 } - #[pallet::type_value] + /// -- ITEM (switches liquid alpha on) + #[pallet::type_value] pub fn DefaultLiquidAlpha() -> bool { false } - #[pallet::type_value] + /// -- ITEM (switches liquid alpha on) + #[pallet::type_value] pub fn DefaultYuma3() -> bool { false } - #[pallet::type_value] + /// (alpha_low: 0.7, alpha_high: 0.9) + #[pallet::type_value] pub fn DefaultAlphaValues() -> (u16, u16) { (45875, 58982) } - #[pallet::type_value] + /// Default value for coldkey swap schedule duration + #[pallet::type_value] pub fn DefaultColdkeySwapScheduleDuration() -> BlockNumberFor { T::InitialColdkeySwapScheduleDuration::get() } - #[pallet::type_value] /// Default value for coldkey swap reschedule duration + #[pallet::type_value] pub fn DefaultColdkeySwapRescheduleDuration() -> BlockNumberFor { T::InitialColdkeySwapRescheduleDuration::get() } - #[pallet::type_value] /// Default value for applying pending items (e.g. childkeys). + #[pallet::type_value] pub fn DefaultPendingCooldown() -> u64 { prod_or_fast!(7_200, 15) } - #[pallet::type_value] /// Default minimum stake. + #[pallet::type_value] pub fn DefaultMinStake() -> TaoCurrency { 2_000_000.into() } - #[pallet::type_value] /// Default unicode vector for tau symbol. + #[pallet::type_value] pub fn DefaultUnicodeVecU8() -> Vec { b"\xF0\x9D\x9C\x8F".to_vec() // Unicode for tau (𝜏) } - #[pallet::type_value] /// Default value for dissolve network schedule duration + #[pallet::type_value] pub fn DefaultDissolveNetworkScheduleDuration() -> BlockNumberFor { T::InitialDissolveNetworkScheduleDuration::get() } - #[pallet::type_value] /// Default moving alpha for the moving price. + #[pallet::type_value] pub fn DefaultMovingAlpha() -> I96F32 { // Moving average take 30 days to reach 50% of the price // and 3.5 months to reach 90%. I96F32::saturating_from_num(0.000003) } - #[pallet::type_value] + /// Default subnet moving price. + #[pallet::type_value] pub fn DefaultMovingPrice() -> I96F32 { I96F32::saturating_from_num(0.0) } - #[pallet::type_value] /// Default subnet root claimable + #[pallet::type_value] pub fn DefaultRootClaimable() -> BTreeMap { Default::default() } - #[pallet::type_value] + /// Default value for Share Pool variables + #[pallet::type_value] pub fn DefaultSharePoolZero() -> U64F64 { U64F64::saturating_from_num(0) } - #[pallet::type_value] /// Default value for minimum activity cutoff + #[pallet::type_value] pub fn DefaultMinActivityCutoff() -> u16 { 360 } - #[pallet::type_value] /// Default value for coldkey swap scheduled + #[pallet::type_value] pub fn DefaultColdkeySwapScheduled() -> (BlockNumberFor, T::AccountId) { #[allow(clippy::expect_used)] let default_account = T::AccountId::decode(&mut TrailingZeroInput::zeroes()) @@ -937,8 +1027,8 @@ pub mod pallet { (BlockNumberFor::::from(0_u32), default_account) } - #[pallet::type_value] /// Default value for setting subnet owner hotkey rate limit + #[pallet::type_value] pub fn DefaultSetSNOwnerHotkeyRateLimit() -> u64 { 50400 } @@ -949,58 +1039,62 @@ pub mod pallet { None } - #[pallet::type_value] /// Default number of terminal blocks in a tempo during which admin operations are prohibited + #[pallet::type_value] pub fn DefaultAdminFreezeWindow() -> u16 { 10 } - #[pallet::type_value] /// Default number of tempos for owner hyperparameter update rate limit + #[pallet::type_value] pub fn DefaultOwnerHyperparamRateLimit() -> u16 { 2 } - #[pallet::type_value] /// Default value for ck burn, 18%. + #[pallet::type_value] pub fn DefaultCKBurn() -> u64 { 0 } - #[pallet::type_value] /// Default value for subnet limit. + #[pallet::type_value] pub fn DefaultSubnetLimit() -> u16 { 128 } + /// Global minimum activity cutoff value #[pallet::storage] pub type MinActivityCutoff = StorageValue<_, u16, ValueQuery, DefaultMinActivityCutoff>; - #[pallet::storage] /// Global window (in blocks) at the end of each tempo where admin ops are disallowed + #[pallet::storage] pub type AdminFreezeWindow = StorageValue<_, u16, ValueQuery, DefaultAdminFreezeWindow>; - #[pallet::storage] /// Global number of epochs used to rate limit subnet owner hyperparameter updates + #[pallet::storage] pub type OwnerHyperparamRateLimit = StorageValue<_, u16, ValueQuery, DefaultOwnerHyperparamRateLimit>; + /// Duration of coldkey swap schedule before execution #[pallet::storage] pub type ColdkeySwapScheduleDuration = StorageValue<_, BlockNumberFor, ValueQuery, DefaultColdkeySwapScheduleDuration>; + /// Duration of coldkey swap reschedule before execution #[pallet::storage] pub type ColdkeySwapRescheduleDuration = StorageValue<_, BlockNumberFor, ValueQuery, DefaultColdkeySwapRescheduleDuration>; + /// Duration of dissolve network schedule before execution #[pallet::storage] pub type DissolveNetworkScheduleDuration = StorageValue<_, BlockNumberFor, ValueQuery, DefaultDissolveNetworkScheduleDuration>; - #[pallet::storage] /// --- DMap ( netuid, coldkey ) --> blocknumber | last hotkey swap on network. + #[pallet::storage] pub type LastHotkeySwapOnNetuid = StorageDoubleMap< _, Identity, @@ -1012,8 +1106,8 @@ pub mod pallet { DefaultZeroU64, >; - #[pallet::storage] /// Ensures unique IDs for StakeJobs storage map + #[pallet::storage] pub type NextStakeJobId = StorageValue<_, u64, ValueQuery, DefaultZeroU64>; /// ============================ @@ -1028,34 +1122,42 @@ pub mod pallet { /// /// Eventually, Bittensor should migrate to using Holds afterwhich time we will not require this /// separate accounting. - #[pallet::storage] /// --- ITEM --> Global weight - pub type TaoWeight = StorageValue<_, u64, ValueQuery, DefaultTaoWeight>; #[pallet::storage] + pub type TaoWeight = StorageValue<_, u64, ValueQuery, DefaultTaoWeight>; + /// --- ITEM --> CK burn - pub type CKBurn = StorageValue<_, u64, ValueQuery, DefaultCKBurn>; #[pallet::storage] + pub type CKBurn = StorageValue<_, u64, ValueQuery, DefaultCKBurn>; + /// --- ITEM ( default_delegate_take ) - pub type MaxDelegateTake = StorageValue<_, u16, ValueQuery, DefaultDelegateTake>; #[pallet::storage] + pub type MaxDelegateTake = StorageValue<_, u16, ValueQuery, DefaultDelegateTake>; + /// --- ITEM ( min_delegate_take ) - pub type MinDelegateTake = StorageValue<_, u16, ValueQuery, DefaultMinDelegateTake>; #[pallet::storage] + pub type MinDelegateTake = StorageValue<_, u16, ValueQuery, DefaultMinDelegateTake>; + /// --- ITEM ( default_childkey_take ) - pub type MaxChildkeyTake = StorageValue<_, u16, ValueQuery, DefaultMaxChildKeyTake>; #[pallet::storage] + pub type MaxChildkeyTake = StorageValue<_, u16, ValueQuery, DefaultMaxChildKeyTake>; + /// --- ITEM ( min_childkey_take ) + #[pallet::storage] pub type MinChildkeyTake = StorageValue<_, u16, ValueQuery, DefaultMinChildKeyTake>; + + /// MAP ( hot ) --> cold | Returns the controlling coldkey for a hotkey #[pallet::storage] - /// MAP ( hot ) --> cold | Returns the controlling coldkey for a hotkey. pub type Owner = StorageMap<_, Blake2_128Concat, T::AccountId, T::AccountId, ValueQuery, DefaultAccount>; + + /// MAP ( hot ) --> take | Returns the hotkey delegation take. And signals that this key is open for delegation #[pallet::storage] - /// MAP ( hot ) --> take | Returns the hotkey delegation take. And signals that this key is open for delegation. pub type Delegates = StorageMap<_, Blake2_128Concat, T::AccountId, u16, ValueQuery, DefaultDelegateTake>; - #[pallet::storage] + /// DMAP ( hot, netuid ) --> take | Returns the hotkey childkey take for a specific subnet + #[pallet::storage] pub type ChildkeyTake = StorageDoubleMap< _, Blake2_128Concat, @@ -1065,8 +1167,9 @@ pub mod pallet { u16, // Value: take ValueQuery, >; - #[pallet::storage] + /// DMAP ( netuid, parent ) --> (Vec<(proportion,child)>, cool_down_block) + #[pallet::storage] pub type PendingChildKeys = StorageDoubleMap< _, Identity, @@ -1077,8 +1180,9 @@ pub mod pallet { ValueQuery, DefaultPendingChildkeys, >; - #[pallet::storage] + /// DMAP ( parent, netuid ) --> Vec<(proportion,child)> + #[pallet::storage] pub type ChildKeys = StorageDoubleMap< _, Blake2_128Concat, @@ -1089,8 +1193,9 @@ pub mod pallet { ValueQuery, DefaultAccountLinkage, >; - #[pallet::storage] + /// DMAP ( child, netuid ) --> Vec<(proportion,parent)> + #[pallet::storage] pub type ParentKeys = StorageDoubleMap< _, Blake2_128Concat, @@ -1101,7 +1206,9 @@ pub mod pallet { ValueQuery, DefaultAccountLinkage, >; - #[pallet::storage] // --- DMAP ( netuid, hotkey ) --> u64 | Last total dividend this hotkey got on tempo. + + /// --- DMAP ( netuid, hotkey ) --> u64 | Last total dividend this hotkey got on tempo. + #[pallet::storage] pub type AlphaDividendsPerSubnet = StorageDoubleMap< _, Identity, @@ -1116,11 +1223,12 @@ pub mod pallet { /// ================== /// ==== Coinbase ==== /// ================== + /// --- ITEM ( global_block_emission ) #[pallet::storage] - /// --- ITEM ( global_block_emission ) pub type BlockEmission = StorageValue<_, u64, ValueQuery, DefaultBlockEmission>; - #[pallet::storage] + /// --- DMap ( hot, netuid ) --> emission | last hotkey emission on network. + #[pallet::storage] pub type LastHotkeyEmissionOnNetuid = StorageDoubleMap< _, Blake2_128Concat, @@ -1131,7 +1239,6 @@ pub mod pallet { ValueQuery, DefaultZeroAlpha, >; - /// ========================== /// ==== Staking Counters ==== /// ========================== @@ -1144,53 +1251,84 @@ pub mod pallet { /// /// Eventually, Bittensor should migrate to using Holds afterwhich time we will not require this /// separate accounting. - - #[pallet::storage] // --- ITEM ( maximum_number_of_networks ) + /// --- ITEM ( maximum_number_of_networks ) + #[pallet::storage] pub type SubnetLimit = StorageValue<_, u16, ValueQuery, DefaultSubnetLimit>; - #[pallet::storage] // --- ITEM ( total_issuance ) + + /// --- ITEM ( total_issuance ) + #[pallet::storage] pub type TotalIssuance = StorageValue<_, TaoCurrency, ValueQuery, DefaultTotalIssuance>; - #[pallet::storage] // --- ITEM ( total_stake ) - pub type TotalStake = StorageValue<_, TaoCurrency, ValueQuery>; - #[pallet::storage] // --- ITEM ( moving_alpha ) -- subnet moving alpha. + + /// --- ITEM ( total_stake ) + #[pallet::storage] + pub type TotalStake = StorageValue<_, TaoCurrency, ValueQuery, DefaultZeroTao>; + + /// --- ITEM ( moving_alpha ) -- subnet moving alpha. + #[pallet::storage] pub type SubnetMovingAlpha = StorageValue<_, I96F32, ValueQuery, DefaultMovingAlpha>; - #[pallet::storage] // --- MAP ( netuid ) --> moving_price | The subnet moving price. + + /// --- MAP ( netuid ) --> moving_price | The subnet moving price. + #[pallet::storage] pub type SubnetMovingPrice = StorageMap<_, Identity, NetUid, I96F32, ValueQuery, DefaultMovingPrice>; - #[pallet::storage] // --- MAP ( netuid ) --> total_volume | The total amount of TAO bought and sold since the start of the network. + + /// --- MAP ( netuid ) --> total_volume | The total amount of TAO bought and sold since the start of the network. + #[pallet::storage] pub type SubnetVolume = StorageMap<_, Identity, NetUid, u128, ValueQuery, DefaultZeroU128>; - #[pallet::storage] // --- MAP ( netuid ) --> tao_in_subnet | Returns the amount of TAO in the subnet. + + /// --- MAP ( netuid ) --> tao_in_subnet | Returns the amount of TAO in the subnet. + #[pallet::storage] pub type SubnetTAO = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultZeroTao>; - #[pallet::storage] // --- MAP ( netuid ) --> tao_in_user_subnet | Returns the amount of TAO in the subnet reserve provided by users as liquidity. + + /// --- MAP ( netuid ) --> tao_in_user_subnet | Returns the amount of TAO in the subnet reserve provided by users as liquidity. + #[pallet::storage] pub type SubnetTaoProvided = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultZeroTao>; - #[pallet::storage] // --- MAP ( netuid ) --> alpha_in_emission | Returns the amount of alph in emission into the pool per block. + + /// --- MAP ( netuid ) --> alpha_in_emission | Returns the amount of alph in emission into the pool per block. + #[pallet::storage] pub type SubnetAlphaInEmission = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] // --- MAP ( netuid ) --> alpha_out_emission | Returns the amount of alpha out emission into the network per block. + + /// --- MAP ( netuid ) --> alpha_out_emission | Returns the amount of alpha out emission into the network per block. + #[pallet::storage] pub type SubnetAlphaOutEmission = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] // --- MAP ( netuid ) --> tao_in_emission | Returns the amount of tao emitted into this subent on the last block. + + /// --- MAP ( netuid ) --> tao_in_emission | Returns the amount of tao emitted into this subent on the last block. + #[pallet::storage] pub type SubnetTaoInEmission = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultZeroTao>; - #[pallet::storage] // --- MAP ( netuid ) --> alpha_supply_in_pool | Returns the amount of alpha in the pool. + + /// --- MAP ( netuid ) --> alpha_supply_in_pool | Returns the amount of alpha in the pool. + #[pallet::storage] pub type SubnetAlphaIn = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] // --- MAP ( netuid ) --> alpha_supply_user_in_pool | Returns the amount of alpha in the pool provided by users as liquidity. + + /// --- MAP ( netuid ) --> alpha_supply_user_in_pool | Returns the amount of alpha in the pool provided by users as liquidity. + #[pallet::storage] pub type SubnetAlphaInProvided = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] + /// --- MAP ( netuid ) --> alpha_supply_in_subnet | Returns the amount of alpha in the subnet. + #[pallet::storage] pub type SubnetAlphaOut = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] // --- MAP ( cold ) --> Vec | Maps coldkey to hotkeys that stake to it + + /// --- MAP ( cold ) --> Vec | Maps coldkey to hotkeys that stake to it + #[pallet::storage] pub type StakingHotkeys = StorageMap<_, Blake2_128Concat, T::AccountId, Vec, ValueQuery>; - #[pallet::storage] // --- MAP ( cold ) --> Vec | Returns the vector of hotkeys controlled by this coldkey. + + /// --- MAP ( cold ) --> Vec | Returns the vector of hotkeys controlled by this coldkey. + #[pallet::storage] pub type OwnedHotkeys = StorageMap<_, Blake2_128Concat, T::AccountId, Vec, ValueQuery>; - #[pallet::storage] // --- DMAP ( cold, netuid )--> hot | Returns the hotkey a coldkey will autostake to with mining rewards. + + /// --- DMAP ( cold, netuid )--> hot | Returns the hotkey a coldkey will autostake to with mining rewards. + #[pallet::storage] pub type AutoStakeDestination = StorageDoubleMap< _, Blake2_128Concat, @@ -1200,7 +1338,9 @@ pub mod pallet { T::AccountId, OptionQuery, >; - #[pallet::storage] // --- DMAP ( hot, netuid )--> Vec | Returns a list of coldkeys that are autostaking to a hotkey. + + /// --- DMAP ( hot, netuid )--> Vec | Returns a list of coldkeys that are autostaking to a hotkey + #[pallet::storage] pub type AutoStakeDestinationColdkeys = StorageDoubleMap< _, Blake2_128Concat, @@ -1211,7 +1351,8 @@ pub mod pallet { ValueQuery, >; - #[pallet::storage] // --- DMAP ( cold ) --> (block_expected, new_coldkey) | Maps coldkey to the block to swap at and new coldkey. + /// --- DMAP ( cold ) --> (block_expected, new_coldkey), Maps coldkey to the block to swap at and new coldkey. + #[pallet::storage] pub type ColdkeySwapScheduled = StorageMap< _, Blake2_128Concat, @@ -1221,7 +1362,8 @@ pub mod pallet { DefaultColdkeySwapScheduled, >; - #[pallet::storage] // --- DMAP ( hot, netuid ) --> alpha | Returns the total amount of alpha a hotkey owns. + /// --- DMAP ( hot, netuid ) --> alpha | Returns the total amount of alpha a hotkey owns. + #[pallet::storage] pub type TotalHotkeyAlpha = StorageDoubleMap< _, Blake2_128Concat, @@ -1232,7 +1374,9 @@ pub mod pallet { ValueQuery, DefaultZeroAlpha, >; - #[pallet::storage] // --- DMAP ( hot, netuid ) --> alpha | Returns the total amount of alpha a hotkey owned in the last epoch. + + /// --- DMAP ( hot, netuid ) --> alpha | Returns the total amount of alpha a hotkey owned in the last epoch. + #[pallet::storage] pub type TotalHotkeyAlphaLastEpoch = StorageDoubleMap< _, Blake2_128Concat, @@ -1243,8 +1387,9 @@ pub mod pallet { ValueQuery, DefaultZeroAlpha, >; - #[pallet::storage] + /// DMAP ( hot, netuid ) --> total_alpha_shares | Returns the number of alpha shares for a hotkey on a subnet. + #[pallet::storage] pub type TotalHotkeyShares = StorageDoubleMap< _, Blake2_128Concat, @@ -1255,7 +1400,9 @@ pub mod pallet { ValueQuery, DefaultSharePoolZero, >; - #[pallet::storage] // --- NMAP ( hot, cold, netuid ) --> alpha | Returns the alpha shares for a hotkey, coldkey, netuid triplet. + + /// --- NMAP ( hot, cold, netuid ) --> alpha | Returns the alpha shares for a hotkey, coldkey, netuid triplet. + #[pallet::storage] pub type Alpha = StorageNMap< _, ( @@ -1267,22 +1414,28 @@ pub mod pallet { ValueQuery, >; - #[pallet::storage] // Contains last Alpha storage map key to iterate (check first) + /// Contains last Alpha storage map key to iterate (check first) + #[pallet::storage] pub type AlphaMapLastKey = StorageValue<_, Option>, ValueQuery, DefaultAlphaIterationLastKey>; - #[pallet::storage] // --- MAP ( netuid ) --> token_symbol | Returns the token symbol for a subnet. + /// --- MAP ( netuid ) --> token_symbol | Returns the token symbol for a subnet. + #[pallet::storage] pub type TokenSymbol = StorageMap<_, Identity, NetUid, Vec, ValueQuery, DefaultUnicodeVecU8>; - #[pallet::storage] // --- MAP ( netuid ) --> subnet_tao_flow | Returns the TAO inflow-outflow balance. + /// --- MAP ( netuid ) --> subnet_tao_flow | Returns the TAO inflow-outflow balance. + #[pallet::storage] pub type SubnetTaoFlow = StorageMap<_, Identity, NetUid, i64, ValueQuery, DefaultZeroI64>; - #[pallet::storage] // --- MAP ( netuid ) --> subnet_ema_tao_flow | Returns the EMA of TAO inflow-outflow balance. + + /// --- MAP ( netuid ) --> subnet_ema_tao_flow | Returns the EMA of TAO inflow-outflow balance. + #[pallet::storage] pub type SubnetEmaTaoFlow = StorageMap<_, Identity, NetUid, (u64, I64F64), OptionQuery>; - #[pallet::type_value] + /// Default value for flow cutoff. + #[pallet::type_value] pub fn DefaultFlowCutoff() -> I64F64 { I64F64::saturating_from_num(0) } @@ -1323,72 +1476,87 @@ pub mod pallet { /// ============================ /// ==== Global Parameters ===== /// ============================ - #[pallet::storage] /// --- StorageItem Global Used Work. - pub type UsedWork = StorageMap<_, Identity, Vec, u64, ValueQuery>; #[pallet::storage] + pub type UsedWork = StorageMap<_, Identity, Vec, u64, ValueQuery>; + /// --- ITEM( global_max_registrations_per_block ) + #[pallet::storage] pub type MaxRegistrationsPerBlock = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultMaxRegistrationsPerBlock>; - #[pallet::storage] + /// --- ITEM( total_number_of_existing_networks ) - pub type TotalNetworks = StorageValue<_, u16, ValueQuery>; #[pallet::storage] + pub type TotalNetworks = StorageValue<_, u16, ValueQuery>; + /// ITEM( network_immunity_period ) + #[pallet::storage] pub type NetworkImmunityPeriod = StorageValue<_, u64, ValueQuery, DefaultNetworkImmunityPeriod>; - #[pallet::storage] + /// ITEM( min_network_lock_cost ) + #[pallet::storage] pub type NetworkMinLockCost = StorageValue<_, TaoCurrency, ValueQuery, DefaultNetworkMinLockCost>; - #[pallet::storage] + /// ITEM( last_network_lock_cost ) + #[pallet::storage] pub type NetworkLastLockCost = StorageValue<_, TaoCurrency, ValueQuery, DefaultNetworkMinLockCost>; - #[pallet::storage] + /// ITEM( network_lock_reduction_interval ) + #[pallet::storage] pub type NetworkLockReductionInterval = StorageValue<_, u64, ValueQuery, DefaultNetworkLockReductionInterval>; - #[pallet::storage] + /// ITEM( subnet_owner_cut ) - pub type SubnetOwnerCut = StorageValue<_, u16, ValueQuery, DefaultSubnetOwnerCut>; #[pallet::storage] + pub type SubnetOwnerCut = StorageValue<_, u16, ValueQuery, DefaultSubnetOwnerCut>; + /// ITEM( network_rate_limit ) - pub type NetworkRateLimit = StorageValue<_, u64, ValueQuery, DefaultNetworkRateLimit>; #[pallet::storage] + pub type NetworkRateLimit = StorageValue<_, u64, ValueQuery, DefaultNetworkRateLimit>; + /// --- ITEM( nominator_min_required_stake ) --- Factor of DefaultMinStake in per-mill format. - pub type NominatorMinRequiredStake = StorageValue<_, u64, ValueQuery, DefaultZeroU64>; #[pallet::storage] + pub type NominatorMinRequiredStake = StorageValue<_, u64, ValueQuery, DefaultZeroU64>; + /// ITEM( weights_version_key_rate_limit ) --- Rate limit in tempos. + #[pallet::storage] pub type WeightsVersionKeyRateLimit = StorageValue<_, u64, ValueQuery, DefaultWeightsVersionKeyRateLimit>; /// ============================ /// ==== Rate Limiting ===== /// ============================ - - #[pallet::storage] /// --- MAP ( RateLimitKey ) --> Block number in which the last rate limited operation occured + #[pallet::storage] pub type LastRateLimitedBlock = StorageMap<_, Identity, RateLimitKey, u64, ValueQuery, DefaultZeroU64>; /// ============================ /// ==== Subnet Locks ===== /// ============================ - #[pallet::storage] // --- MAP ( netuid ) --> transfer_toggle + /// --- MAP ( netuid ) --> transfer_toggle + #[pallet::storage] pub type TransferToggle = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultTrue>; - #[pallet::storage] // --- MAP ( netuid ) --> total_subnet_locked + + /// --- MAP ( netuid ) --> total_subnet_locked + #[pallet::storage] pub type SubnetLocked = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultZeroTao>; - #[pallet::storage] // --- MAP ( netuid ) --> largest_locked + + /// --- MAP ( netuid ) --> largest_locked + #[pallet::storage] pub type LargestLocked = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultZeroU64>; /// ================= /// ==== Tempos ===== /// ================= - #[pallet::storage] // --- MAP ( netuid ) --> tempo + /// --- MAP ( netuid ) --> tempo + #[pallet::storage] pub type Tempo = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultTempo>; /// ============================ @@ -1398,19 +1566,23 @@ pub mod pallet { #[pallet::storage] pub type FirstEmissionBlockNumber = StorageMap<_, Identity, NetUid, u64, OptionQuery>; + /// --- MAP ( netuid ) --> subnet mechanism #[pallet::storage] pub type SubnetMechanism = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultZeroU16>; - #[pallet::storage] + /// --- MAP ( netuid ) --> subnetwork_n (Number of UIDs in the network). - pub type SubnetworkN = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultN>; #[pallet::storage] + pub type SubnetworkN = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultN>; + /// --- MAP ( netuid ) --> network_is_added + #[pallet::storage] pub type NetworksAdded = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultNeworksAdded>; - #[pallet::storage] + /// --- DMAP ( hotkey, netuid ) --> bool + #[pallet::storage] pub type IsNetworkMember = StorageDoubleMap< _, Blake2_128Concat, @@ -1421,90 +1593,112 @@ pub mod pallet { ValueQuery, DefaultIsNetworkMember, >; - #[pallet::storage] + /// --- MAP ( netuid ) --> network_registration_allowed + #[pallet::storage] pub type NetworkRegistrationAllowed = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultRegistrationAllowed>; - #[pallet::storage] + /// --- MAP ( netuid ) --> network_pow_allowed + #[pallet::storage] pub type NetworkPowRegistrationAllowed = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultRegistrationAllowed>; - #[pallet::storage] + /// --- MAP ( netuid ) --> block_created + #[pallet::storage] pub type NetworkRegisteredAt = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultNetworkRegisteredAt>; - #[pallet::storage] + /// --- MAP ( netuid ) --> pending_emission + #[pallet::storage] pub type PendingEmission = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultPendingEmission>; + /// --- MAP ( netuid ) --> pending_root_alpha_emission #[pallet::storage] pub type PendingRootAlphaDivs = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] + /// --- MAP ( netuid ) --> pending_owner_cut + #[pallet::storage] pub type PendingOwnerCut = StorageMap<_, Identity, NetUid, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] + /// --- MAP ( netuid ) --> blocks_since_last_step + #[pallet::storage] pub type BlocksSinceLastStep = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultBlocksSinceLastStep>; - #[pallet::storage] + /// --- MAP ( netuid ) --> last_mechanism_step_block + #[pallet::storage] pub type LastMechansimStepBlock = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultLastMechanismStepBlock>; - #[pallet::storage] + /// --- MAP ( netuid ) --> subnet_owner + #[pallet::storage] pub type SubnetOwner = StorageMap<_, Identity, NetUid, T::AccountId, ValueQuery, DefaultSubnetOwner>; - #[pallet::storage] + /// --- MAP ( netuid ) --> subnet_owner_hotkey + #[pallet::storage] pub type SubnetOwnerHotkey = StorageMap<_, Identity, NetUid, T::AccountId, ValueQuery, DefaultSubnetOwner>; - #[pallet::storage] + /// --- MAP ( netuid ) --> recycle_or_burn + #[pallet::storage] pub type RecycleOrBurn = StorageMap<_, Identity, NetUid, RecycleOrBurnEnum, ValueQuery, DefaultRecycleOrBurn>; - #[pallet::storage] + /// --- MAP ( netuid ) --> serving_rate_limit + #[pallet::storage] pub type ServingRateLimit = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultServingRateLimit>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Rho - pub type Rho = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultRho>; #[pallet::storage] + pub type Rho = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultRho>; + /// --- MAP ( netuid ) --> AlphaSigmoidSteepness + #[pallet::storage] pub type AlphaSigmoidSteepness = StorageMap<_, Identity, NetUid, i16, ValueQuery, DefaultAlphaSigmoidSteepness>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Kappa - pub type Kappa = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultKappa>; #[pallet::storage] + pub type Kappa = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultKappa>; + /// --- MAP ( netuid ) --> registrations_this_interval + #[pallet::storage] pub type RegistrationsThisInterval = StorageMap<_, Identity, NetUid, u16, ValueQuery>; - #[pallet::storage] + /// --- MAP ( netuid ) --> pow_registrations_this_interval + #[pallet::storage] pub type POWRegistrationsThisInterval = StorageMap<_, Identity, NetUid, u16, ValueQuery>; - #[pallet::storage] + /// --- MAP ( netuid ) --> burn_registrations_this_interval + #[pallet::storage] pub type BurnRegistrationsThisInterval = StorageMap<_, Identity, NetUid, u16, ValueQuery>; - #[pallet::storage] + /// --- MAP ( netuid ) --> min_allowed_uids + #[pallet::storage] pub type MinAllowedUids = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultMinAllowedUids>; - #[pallet::storage] + /// --- MAP ( netuid ) --> max_allowed_uids + #[pallet::storage] pub type MaxAllowedUids = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultMaxAllowedUids>; - #[pallet::storage] + /// --- MAP ( netuid ) --> immunity_period + #[pallet::storage] pub type ImmunityPeriod = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultImmunityPeriod>; - #[pallet::storage] + /// --- MAP ( netuid ) --> activity_cutoff + #[pallet::storage] pub type ActivityCutoff = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultActivityCutoff>; #[pallet::type_value] @@ -1512,98 +1706,122 @@ pub mod pallet { pub fn DefaultMaxWeightsLimit() -> u16 { u16::MAX } - #[pallet::storage] + /// --- MAP ( netuid ) --> max_weight_limit + #[pallet::storage] pub type MaxWeightsLimit = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultMaxWeightsLimit>; - #[pallet::storage] + /// --- MAP ( netuid ) --> weights_version_key + #[pallet::storage] pub type WeightsVersionKey = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultWeightsVersionKey>; - #[pallet::storage] + /// --- MAP ( netuid ) --> min_allowed_weights + #[pallet::storage] pub type MinAllowedWeights = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultMinAllowedWeights>; - #[pallet::storage] + /// --- MAP ( netuid ) --> max_allowed_validators + #[pallet::storage] pub type MaxAllowedValidators = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultMaxAllowedValidators>; - #[pallet::storage] + /// --- MAP ( netuid ) --> adjustment_interval + #[pallet::storage] pub type AdjustmentInterval = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultAdjustmentInterval>; - #[pallet::storage] + /// --- MAP ( netuid ) --> bonds_moving_average + #[pallet::storage] pub type BondsMovingAverage = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultBondsMovingAverage>; - #[pallet::storage] + /// --- MAP ( netuid ) --> bonds_penalty + #[pallet::storage] pub type BondsPenalty = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultBondsPenalty>; - #[pallet::storage] + /// --- MAP ( netuid ) --> bonds_reset + #[pallet::storage] pub type BondsResetOn = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultBondsResetOn>; + /// --- MAP ( netuid ) --> weights_set_rate_limit #[pallet::storage] pub type WeightsSetRateLimit = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultWeightsSetRateLimit>; - #[pallet::storage] + /// --- MAP ( netuid ) --> validator_prune_len + #[pallet::storage] pub type ValidatorPruneLen = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultValidatorPruneLen>; - #[pallet::storage] + /// --- MAP ( netuid ) --> scaling_law_power + #[pallet::storage] pub type ScalingLawPower = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultScalingLawPower>; - #[pallet::storage] + /// --- MAP ( netuid ) --> target_registrations_this_interval + #[pallet::storage] pub type TargetRegistrationsPerInterval = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultTargetRegistrationsPerInterval>; - #[pallet::storage] + /// --- MAP ( netuid ) --> adjustment_alpha + #[pallet::storage] pub type AdjustmentAlpha = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultAdjustmentAlpha>; - #[pallet::storage] + /// --- MAP ( netuid ) --> commit reveal v2 weights are enabled + #[pallet::storage] pub type CommitRevealWeightsEnabled = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultCommitRevealWeightsEnabled>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Burn - pub type Burn = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultBurn>; #[pallet::storage] + pub type Burn = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultBurn>; + /// --- MAP ( netuid ) --> Difficulty - pub type Difficulty = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultDifficulty>; #[pallet::storage] + pub type Difficulty = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultDifficulty>; + /// --- MAP ( netuid ) --> MinBurn + #[pallet::storage] pub type MinBurn = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultMinBurn>; - #[pallet::storage] + /// --- MAP ( netuid ) --> MaxBurn + #[pallet::storage] pub type MaxBurn = StorageMap<_, Identity, NetUid, TaoCurrency, ValueQuery, DefaultMaxBurn>; - #[pallet::storage] + /// --- MAP ( netuid ) --> MinDifficulty + #[pallet::storage] pub type MinDifficulty = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultMinDifficulty>; - #[pallet::storage] + /// --- MAP ( netuid ) --> MaxDifficulty + #[pallet::storage] pub type MaxDifficulty = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultMaxDifficulty>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Block at last adjustment. + #[pallet::storage] pub type LastAdjustmentBlock = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultLastAdjustmentBlock>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Registrations of this Block. + #[pallet::storage] pub type RegistrationsThisBlock = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultRegistrationsThisBlock>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Halving time of average moving price. + #[pallet::storage] pub type EMAPriceHalvingBlocks = StorageMap<_, Identity, NetUid, u64, ValueQuery, DefaultEMAPriceMovingBlocks>; - #[pallet::storage] + /// --- MAP ( netuid ) --> global_RAO_recycled_for_registration + #[pallet::storage] pub type RAORecycledForRegistration = StorageMap< _, Identity, @@ -1612,66 +1830,79 @@ pub mod pallet { ValueQuery, DefaultRAORecycledForRegistration, >; - #[pallet::storage] + /// --- ITEM ( tx_rate_limit ) - pub type TxRateLimit = StorageValue<_, u64, ValueQuery, DefaultTxRateLimit>; #[pallet::storage] + pub type TxRateLimit = StorageValue<_, u64, ValueQuery, DefaultTxRateLimit>; + /// --- ITEM ( tx_delegate_take_rate_limit ) + #[pallet::storage] pub type TxDelegateTakeRateLimit = StorageValue<_, u64, ValueQuery, DefaultTxDelegateTakeRateLimit>; - #[pallet::storage] + /// --- ITEM ( tx_childkey_take_rate_limit ) + #[pallet::storage] pub type TxChildkeyTakeRateLimit = StorageValue<_, u64, ValueQuery, DefaultTxChildKeyTakeRateLimit>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Whether or not Liquid Alpha is enabled + #[pallet::storage] pub type LiquidAlphaOn = StorageMap<_, Blake2_128Concat, NetUid, bool, ValueQuery, DefaultLiquidAlpha>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Whether or not Yuma3 is enabled + #[pallet::storage] pub type Yuma3On = StorageMap<_, Blake2_128Concat, NetUid, bool, ValueQuery, DefaultYuma3>; - #[pallet::storage] + /// MAP ( netuid ) --> (alpha_low, alpha_high) + #[pallet::storage] pub type AlphaValues = StorageMap<_, Identity, NetUid, (u16, u16), ValueQuery, DefaultAlphaValues>; - #[pallet::storage] + /// --- MAP ( netuid ) --> If subtoken trading enabled + #[pallet::storage] pub type SubtokenEnabled = StorageMap<_, Identity, NetUid, bool, ValueQuery, DefaultFalse>; - #[pallet::type_value] /// Default value for burn keys limit + #[pallet::type_value] pub fn DefaultImmuneOwnerUidsLimit() -> u16 { 1 } - #[pallet::type_value] + /// Maximum value for burn keys limit + #[pallet::type_value] pub fn MaxImmuneOwnerUidsLimit() -> u16 { 10 } - #[pallet::type_value] + /// Minimum value for burn keys limit + #[pallet::type_value] pub fn MinImmuneOwnerUidsLimit() -> u16 { 1 } - #[pallet::storage] + /// --- MAP ( netuid ) --> Burn key limit + #[pallet::storage] pub type ImmuneOwnerUidsLimit = StorageMap<_, Identity, NetUid, u16, ValueQuery, DefaultImmuneOwnerUidsLimit>; /// ======================================= /// ==== Subnetwork Consensus Storage ==== /// ======================================= - #[pallet::storage] // --- DMAP ( netuid ) --> stake_weight | weight for stake used in YC. + /// --- DMAP ( netuid ) --> stake_weight | weight for stake used in YC. + #[pallet::storage] pub type StakeWeight = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- DMAP ( netuid, hotkey ) --> uid + #[pallet::storage] pub type Uids = StorageDoubleMap<_, Identity, NetUid, Blake2_128Concat, T::AccountId, u16, OptionQuery>; - #[pallet::storage] + /// --- DMAP ( netuid, uid ) --> hotkey + #[pallet::storage] pub type Keys = StorageDoubleMap< _, Identity, @@ -1682,55 +1913,68 @@ pub mod pallet { ValueQuery, DefaultKey, >; - #[pallet::storage] + /// --- MAP ( netuid ) --> (hotkey, se, ve) + #[pallet::storage] pub type LoadedEmission = StorageMap<_, Identity, NetUid, Vec<(T::AccountId, u64, u64)>, OptionQuery>; - #[pallet::storage] + /// --- MAP ( netuid ) --> active + #[pallet::storage] pub type Active = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyBoolVec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> rank + #[pallet::storage] pub type Rank = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> trust + #[pallet::storage] pub type Trust = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> consensus + #[pallet::storage] pub type Consensus = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> incentive + #[pallet::storage] pub type Incentive = StorageMap<_, Identity, NetUidStorageIndex, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> dividends + #[pallet::storage] pub type Dividends = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> emission - pub type Emission = StorageMap<_, Identity, NetUid, Vec, ValueQuery>; #[pallet::storage] + pub type Emission = StorageMap<_, Identity, NetUid, Vec, ValueQuery>; + /// --- MAP ( netuid ) --> last_update + #[pallet::storage] pub type LastUpdate = StorageMap<_, Identity, NetUidStorageIndex, Vec, ValueQuery, EmptyU64Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> validator_trust + #[pallet::storage] pub type ValidatorTrust = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> pruning_scores + #[pallet::storage] pub type PruningScores = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyU16Vec>; - #[pallet::storage] + /// --- MAP ( netuid ) --> validator_permit + #[pallet::storage] pub type ValidatorPermit = StorageMap<_, Identity, NetUid, Vec, ValueQuery, EmptyBoolVec>; - #[pallet::storage] + /// --- DMAP ( netuid, uid ) --> weights + #[pallet::storage] pub type Weights = StorageDoubleMap< _, Identity, @@ -1741,8 +1985,9 @@ pub mod pallet { ValueQuery, DefaultWeights, >; - #[pallet::storage] + /// --- DMAP ( netuid, uid ) --> bonds + #[pallet::storage] pub type Bonds = StorageDoubleMap< _, Identity, @@ -1753,8 +1998,9 @@ pub mod pallet { ValueQuery, DefaultBonds, >; - #[pallet::storage] + /// --- DMAP ( netuid, uid ) --> block_at_registration + #[pallet::storage] pub type BlockAtRegistration = StorageDoubleMap< _, Identity, @@ -1765,8 +2011,9 @@ pub mod pallet { ValueQuery, DefaultBlockAtRegistration, >; - #[pallet::storage] + /// --- MAP ( netuid, hotkey ) --> axon_info + #[pallet::storage] pub type Axons = StorageDoubleMap< _, Identity, @@ -1776,6 +2023,7 @@ pub mod pallet { AxonInfoOf, OptionQuery, >; + /// --- MAP ( netuid, hotkey ) --> certificate #[pallet::storage] pub type NeuronCertificates = StorageDoubleMap< @@ -1787,8 +2035,9 @@ pub mod pallet { NeuronCertificateOf, OptionQuery, >; - #[pallet::storage] + /// --- MAP ( netuid, hotkey ) --> prometheus_info + #[pallet::storage] pub type Prometheus = StorageDoubleMap< _, Identity, @@ -1798,30 +2047,37 @@ pub mod pallet { PrometheusInfoOf, OptionQuery, >; - #[pallet::storage] // --- MAP ( coldkey ) --> identity. (DEPRECATED for V2) + + /// --- MAP ( coldkey ) --> identity. (DEPRECATED for V2) + #[pallet::storage] pub type Identities = StorageMap<_, Blake2_128Concat, T::AccountId, ChainIdentityOf, OptionQuery>; - #[pallet::storage] // --- MAP ( coldkey ) --> identity + /// --- MAP ( coldkey ) --> identity + #[pallet::storage] pub type IdentitiesV2 = StorageMap<_, Blake2_128Concat, T::AccountId, ChainIdentityOfV2, OptionQuery>; - #[pallet::storage] // --- MAP ( netuid ) --> identity. (DEPRECATED for V2) + /// --- MAP ( netuid ) --> identity. (DEPRECATED for V2) + #[pallet::storage] pub type SubnetIdentities = StorageMap<_, Blake2_128Concat, NetUid, SubnetIdentityOf, OptionQuery>; - #[pallet::storage] // --- MAP ( netuid ) --> identityV2 (DEPRECATED for V3) + /// --- MAP ( netuid ) --> identityV2 (DEPRECATED for V3) + #[pallet::storage] pub type SubnetIdentitiesV2 = StorageMap<_, Blake2_128Concat, NetUid, SubnetIdentityOfV2, OptionQuery>; - #[pallet::storage] // --- MAP ( netuid ) --> SubnetIdentityOfV3 + /// --- MAP ( netuid ) --> SubnetIdentityOfV3 + #[pallet::storage] pub type SubnetIdentitiesV3 = StorageMap<_, Blake2_128Concat, NetUid, SubnetIdentityOfV3, OptionQuery>; /// ================================= /// ==== Axon / Promo Endpoints ===== /// ================================= - #[pallet::storage] // --- NMAP ( hot, netuid, name ) --> last_block | Returns the last block of a transaction for a given key, netuid, and name. + /// --- NMAP ( hot, netuid, name ) --> last_block | Returns the last block of a transaction for a given key, netuid, and name. + #[pallet::storage] pub type TransactionKeyLastBlock = StorageNMap< _, ( @@ -1832,27 +2088,32 @@ pub mod pallet { u64, ValueQuery, >; + + /// --- MAP ( key ) --> last_block #[deprecated] #[pallet::storage] - /// --- MAP ( key ) --> last_block pub type LastTxBlock = StorageMap<_, Identity, T::AccountId, u64, ValueQuery, DefaultLastTxBlock>; + + /// --- MAP ( key ) --> last_tx_block_childkey_take #[deprecated] #[pallet::storage] - /// --- MAP ( key ) --> last_tx_block_childkey_take pub type LastTxBlockChildKeyTake = StorageMap<_, Identity, T::AccountId, u64, ValueQuery, DefaultLastTxBlock>; + + /// --- MAP ( key ) --> last_tx_block_delegate_take #[deprecated] #[pallet::storage] - /// --- MAP ( key ) --> last_tx_block_delegate_take pub type LastTxBlockDelegateTake = StorageMap<_, Identity, T::AccountId, u64, ValueQuery, DefaultLastTxBlock>; + + /// ITEM( weights_min_stake ) // FIXME: this storage is used interchangably for alpha/tao #[pallet::storage] - /// ITEM( weights_min_stake ) pub type StakeThreshold = StorageValue<_, u64, ValueQuery, DefaultStakeThreshold>; - #[pallet::storage] + /// --- MAP (netuid, who) --> VecDeque<(hash, commit_block, first_reveal_block, last_reveal_block)> | Stores a queue of commits for an account on a given netuid. + #[pallet::storage] pub type WeightCommits = StorageDoubleMap< _, Twox64Concat, @@ -1862,9 +2123,10 @@ pub mod pallet { VecDeque<(H256, u64, u64, u64)>, OptionQuery, >; - #[pallet::storage] + /// MAP (netuid, epoch) → VecDeque<(who, commit_block, ciphertext, reveal_round)> /// Stores a queue of weight commits for an account on a given subnet. + #[pallet::storage] pub type TimelockedWeightCommits = StorageDoubleMap< _, Twox64Concat, @@ -1879,9 +2141,10 @@ pub mod pallet { )>, ValueQuery, >; - #[pallet::storage] + /// MAP (netuid, epoch) → VecDeque<(who, ciphertext, reveal_round)> /// DEPRECATED for CRV3WeightCommitsV2 + #[pallet::storage] pub type CRV3WeightCommits = StorageDoubleMap< _, Twox64Concat, @@ -1895,9 +2158,10 @@ pub mod pallet { )>, ValueQuery, >; - #[pallet::storage] + /// MAP (netuid, epoch) → VecDeque<(who, commit_block, ciphertext, reveal_round)> /// DEPRECATED for TimelockedWeightCommits + #[pallet::storage] pub type CRV3WeightCommitsV2 = StorageDoubleMap< _, Twox64Concat, @@ -1912,13 +2176,14 @@ pub mod pallet { )>, ValueQuery, >; - #[pallet::storage] + /// --- Map (netuid) --> Number of epochs allowed for commit reveal periods + #[pallet::storage] pub type RevealPeriodEpochs = StorageMap<_, Twox64Concat, NetUid, u64, ValueQuery, DefaultRevealPeriodEpochs>; - #[pallet::storage] /// --- Map (coldkey, hotkey) --> u64 the last block at which stake was added/removed. + #[pallet::storage] pub type LastColdkeyHotkeyStakeBlock = StorageDoubleMap< _, Twox64Concat, @@ -1929,9 +2194,9 @@ pub mod pallet { OptionQuery, >; - #[pallet::storage] /// DMAP ( hot, cold, netuid ) --> rate limits for staking operations /// Value contains just a marker: we use this map as a set. + #[pallet::storage] pub type StakingOperationRateLimiter = StorageNMap< _, ( @@ -1993,94 +2258,100 @@ pub mod pallet { /// ============================= /// ==== EVM related storage ==== /// ============================= - #[pallet::storage] /// --- DMAP (netuid, uid) --> (H160, last_block_where_ownership_was_proven) + #[pallet::storage] pub type AssociatedEvmAddress = StorageDoubleMap<_, Twox64Concat, NetUid, Twox64Concat, u16, (H160, u64), OptionQuery>; /// ======================== /// ==== Subnet Leasing ==== /// ======================== - #[pallet::storage] /// --- MAP ( lease_id ) --> subnet lease | The subnet lease for a given lease id. + #[pallet::storage] pub type SubnetLeases = StorageMap<_, Twox64Concat, LeaseId, SubnetLeaseOf, OptionQuery>; - #[pallet::storage] /// --- DMAP ( lease_id, contributor ) --> shares | The shares of a contributor for a given lease. + #[pallet::storage] pub type SubnetLeaseShares = StorageDoubleMap<_, Twox64Concat, LeaseId, Identity, T::AccountId, U64F64, ValueQuery>; + /// --- MAP ( netuid ) --> lease_id | The lease id for a given netuid. #[pallet::storage] - // --- MAP ( netuid ) --> lease_id | The lease id for a given netuid. pub type SubnetUidToLeaseId = StorageMap<_, Twox64Concat, NetUid, LeaseId, OptionQuery>; - #[pallet::storage] /// --- ITEM ( next_lease_id ) | The next lease id. + #[pallet::storage] pub type NextSubnetLeaseId = StorageValue<_, LeaseId, ValueQuery, ConstU32<0>>; - #[pallet::storage] /// --- MAP ( lease_id ) --> accumulated_dividends | The accumulated dividends for a given lease that needs to be distributed. + #[pallet::storage] pub type AccumulatedLeaseDividends = StorageMap<_, Twox64Concat, LeaseId, AlphaCurrency, ValueQuery, DefaultZeroAlpha>; - #[pallet::storage] /// --- ITEM ( CommitRevealWeightsVersion ) + #[pallet::storage] pub type CommitRevealWeightsVersion = StorageValue<_, u16, ValueQuery, DefaultCommitRevealWeightsVersion>; - #[pallet::storage] /// ITEM( NetworkRegistrationStartBlock ) + #[pallet::storage] pub type NetworkRegistrationStartBlock = StorageValue<_, u64, ValueQuery, DefaultNetworkRegistrationStartBlock>; /// ============================ /// ==== Subnet Mechanisms ===== /// ============================ - #[pallet::type_value] /// -- ITEM (Default number of sub-subnets) + #[pallet::type_value] pub fn DefaultMechanismCount() -> MechId { MechId::from(1) } - #[pallet::type_value] + /// -- ITEM (Maximum number of sub-subnets) + #[pallet::type_value] pub fn MaxMechanismCount() -> MechId { MechId::from(2) } - #[pallet::type_value] + /// -- ITEM (Rate limit for mechanism count updates) + #[pallet::type_value] pub fn MechanismCountSetRateLimit() -> u64 { prod_or_fast!(7_200, 1) } - #[pallet::type_value] + /// -- ITEM (Rate limit for mechanism emission distribution updates) + #[pallet::type_value] pub fn MechanismEmissionRateLimit() -> u64 { prod_or_fast!(7_200, 1) } - #[pallet::storage] + /// --- MAP ( netuid ) --> Current number of subnet mechanisms + #[pallet::storage] pub type MechanismCountCurrent = StorageMap<_, Twox64Concat, NetUid, MechId, ValueQuery, DefaultMechanismCount>; - #[pallet::storage] + /// --- MAP ( netuid ) --> Normalized vector of emission split proportion between subnet mechanisms + #[pallet::storage] pub type MechanismEmissionSplit = StorageMap<_, Twox64Concat, NetUid, Vec, OptionQuery>; /// ================== /// ==== Genesis ===== /// ================== - #[pallet::storage] // --- Storage for migration run status + /// --- Storage for migration run status + #[pallet::storage] pub type HasMigrationRun = StorageMap<_, Identity, Vec, bool, ValueQuery>; - #[pallet::type_value] /// Default value for pending childkey cooldown (settable by root, default 0) + #[pallet::type_value] pub fn DefaultPendingChildKeyCooldown() -> u64 { 0 } - #[pallet::storage] /// Storage value for pending childkey cooldown, settable by root. + #[pallet::storage] pub type PendingChildKeyCooldown = StorageValue<_, u64, ValueQuery, DefaultPendingChildKeyCooldown>; diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index a4ee4a3b9..d8277164e 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -220,7 +220,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // `spec_version`, and `authoring_version` are the same between Wasm and native. // This value is set to 100 to notify Polkadot-JS App (https://polkadot.js.org/apps) to use // the compatible custom types. - spec_version: 333, + spec_version: 334, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1,