feat: Rebrand Polkadot/Substrate references to PezkuwiChain
This commit systematically rebrands various references from Parity Technologies' Polkadot/Substrate ecosystem to PezkuwiChain within the kurdistan-sdk. Key changes include: - Updated external repository URLs (zombienet-sdk, parity-db, parity-scale-codec, wasm-instrument) to point to pezkuwichain forks. - Modified internal documentation and code comments to reflect PezkuwiChain naming and structure. - Replaced direct references to with or specific paths within the for XCM, Pezkuwi, and other modules. - Cleaned up deprecated issue and PR references in various and files, particularly in and modules. - Adjusted image and logo URLs in documentation to point to PezkuwiChain assets. - Removed or rephrased comments related to external Polkadot/Substrate PRs and issues. This is a significant step towards fully customizing the SDK for the PezkuwiChain ecosystem.
This commit is contained in:
@@ -0,0 +1,338 @@
|
||||
// Copyright (C) Parity Technologies (UK) Ltd.
|
||||
// This file is part of Pezcumulus.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//! The Zagros Technical Fellowship.
|
||||
|
||||
mod origins;
|
||||
mod tracks;
|
||||
use crate::{
|
||||
weights,
|
||||
xcm_config::{FellowshipAdminBodyId, LocationToAccountId, TreasurerBodyId, UsdtAssetHub},
|
||||
AccountId, AssetRate, Balance, Balances, FellowshipReferenda, GovernanceLocation, Preimage,
|
||||
Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, Scheduler, TeyrchainInfo,
|
||||
ZagrosTreasuryAccount, DAYS,
|
||||
};
|
||||
use cumulus_primitives_core::ParaId;
|
||||
use pezframe_support::{
|
||||
parameter_types,
|
||||
traits::{
|
||||
tokens::UnityOrOuterConversion, EitherOf, EitherOfDiverse, FromContains, MapSuccess,
|
||||
OriginTrait, TryWithMorphedArg,
|
||||
},
|
||||
PalletId,
|
||||
};
|
||||
use pezframe_system::{EnsureRoot, EnsureRootWithSuccess};
|
||||
pub use origins::{
|
||||
pezpallet_origins as pezpallet_fellowship_origins, Architects, EnsureCanPromoteTo, EnsureCanRetainAt,
|
||||
EnsureFellowship, Fellows, Masters, Members, ToVoice,
|
||||
};
|
||||
use pezpallet_ranked_collective::EnsureOfRank;
|
||||
use pezpallet_xcm::{EnsureXcm, IsVoiceOfBody};
|
||||
use pezkuwi_runtime_common::impls::{
|
||||
ContainsParts, LocatableAssetConverter, VersionedLocatableAsset, VersionedLocationConverter,
|
||||
};
|
||||
use pezsp_arithmetic::Permill;
|
||||
use pezsp_core::{ConstU128, ConstU32, ConstU8};
|
||||
use pezsp_runtime::traits::{ConstU16, ConvertToValue, IdentityLookup, Replace, TakeFirst};
|
||||
use testnet_teyrchains_constants::zagros::{account, currency::GRAND};
|
||||
use teyrchains_common::impls::ToParentTreasury;
|
||||
use xcm::prelude::*;
|
||||
use xcm_builder::{AliasesIntoAccountId32, PayOverXcm};
|
||||
use zagros_runtime_constants::time::HOURS;
|
||||
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
use crate::impls::benchmarks::{OpenHrmpChannel, PayWithEnsure};
|
||||
|
||||
/// The Fellowship members' ranks.
|
||||
pub mod ranks {
|
||||
use pezpallet_ranked_collective::Rank;
|
||||
|
||||
pub const DAN_1: Rank = 1; // aka Members.
|
||||
pub const DAN_2: Rank = 2;
|
||||
pub const DAN_3: Rank = 3; // aka Fellows.
|
||||
pub const DAN_4: Rank = 4; // aka Architects.
|
||||
pub const DAN_5: Rank = 5;
|
||||
pub const DAN_6: Rank = 6;
|
||||
pub const DAN_7: Rank = 7; // aka Masters.
|
||||
pub const DAN_8: Rank = 8;
|
||||
pub const DAN_9: Rank = 9;
|
||||
}
|
||||
|
||||
impl pezpallet_fellowship_origins::Config for Runtime {}
|
||||
|
||||
pub type FellowshipReferendaInstance = pezpallet_referenda::Instance1;
|
||||
|
||||
impl pezpallet_referenda::Config<FellowshipReferendaInstance> for Runtime {
|
||||
type WeightInfo = weights::pezpallet_referenda_fellowship_referenda::WeightInfo<Runtime>;
|
||||
type RuntimeCall = RuntimeCall;
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type Scheduler = Scheduler;
|
||||
type Currency = Balances;
|
||||
// Fellows can submit proposals.
|
||||
type SubmitOrigin = EitherOf<
|
||||
pezpallet_ranked_collective::EnsureMember<Runtime, FellowshipCollectiveInstance, 3>,
|
||||
MapSuccess<
|
||||
TryWithMorphedArg<
|
||||
RuntimeOrigin,
|
||||
<RuntimeOrigin as OriginTrait>::PalletsOrigin,
|
||||
ToVoice,
|
||||
EnsureOfRank<Runtime, FellowshipCollectiveInstance>,
|
||||
(AccountId, u16),
|
||||
>,
|
||||
TakeFirst,
|
||||
>,
|
||||
>;
|
||||
type CancelOrigin = Architects;
|
||||
type KillOrigin = Masters;
|
||||
type Slash = ToParentTreasury<ZagrosTreasuryAccount, LocationToAccountId, Runtime>;
|
||||
type Votes = pezpallet_ranked_collective::Votes;
|
||||
type Tally = pezpallet_ranked_collective::TallyOf<Runtime, FellowshipCollectiveInstance>;
|
||||
type SubmissionDeposit = ConstU128<0>;
|
||||
type MaxQueued = ConstU32<100>;
|
||||
type UndecidingTimeout = ConstU32<{ 7 * DAYS }>;
|
||||
type AlarmInterval = ConstU32<1>;
|
||||
type Tracks = tracks::TracksInfo;
|
||||
type Preimages = Preimage;
|
||||
type BlockNumberProvider = crate::System;
|
||||
}
|
||||
|
||||
pub type FellowshipCollectiveInstance = pezpallet_ranked_collective::Instance1;
|
||||
|
||||
impl pezpallet_ranked_collective::Config<FellowshipCollectiveInstance> for Runtime {
|
||||
type WeightInfo = weights::pezpallet_ranked_collective_fellowship_collective::WeightInfo<Runtime>;
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
|
||||
// Promotions and the induction of new members are serviced by `FellowshipCore` pallet instance.
|
||||
#[cfg(not(feature = "runtime-benchmarks"))]
|
||||
type AddOrigin = pezframe_system::EnsureNever<()>;
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type AddOrigin = pezframe_system::EnsureRoot<Self::AccountId>;
|
||||
|
||||
// The maximum value of `u16` set as a success value for the root to ensure the benchmarks will
|
||||
// pass.
|
||||
#[cfg(not(feature = "runtime-benchmarks"))]
|
||||
type PromoteOrigin = pezframe_system::EnsureNever<pezpallet_ranked_collective::Rank>;
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type PromoteOrigin = EnsureRootWithSuccess<Self::AccountId, ConstU16<65535>>;
|
||||
|
||||
// Demotion is by any of:
|
||||
// - Root can demote arbitrarily.
|
||||
// - the FellowshipAdmin origin (i.e. token holder referendum);
|
||||
//
|
||||
// The maximum value of `u16` set as a success value for the root to ensure the benchmarks will
|
||||
// pass.
|
||||
type RemoveOrigin = Self::DemoteOrigin;
|
||||
type DemoteOrigin = EitherOf<
|
||||
EnsureRootWithSuccess<Self::AccountId, ConstU16<65535>>,
|
||||
MapSuccess<
|
||||
EnsureXcm<IsVoiceOfBody<GovernanceLocation, FellowshipAdminBodyId>>,
|
||||
Replace<ConstU16<{ ranks::DAN_9 }>>,
|
||||
>,
|
||||
>;
|
||||
// Exchange is by any of:
|
||||
// - Root can exchange arbitrarily.
|
||||
// - the Fellows origin
|
||||
type ExchangeOrigin =
|
||||
EitherOf<EnsureRootWithSuccess<Self::AccountId, ConstU16<65535>>, Fellows>;
|
||||
type Polls = FellowshipReferenda;
|
||||
type MinRankOfClass = tracks::MinRankOfClass;
|
||||
type MemberSwappedHandler = (crate::FellowshipCore, crate::FellowshipSalary);
|
||||
type VoteWeight = pezpallet_ranked_collective::Geometric;
|
||||
type MaxMemberCount = ();
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type BenchmarkSetup = (crate::FellowshipCore, crate::FellowshipSalary);
|
||||
}
|
||||
|
||||
pub type FellowshipCoreInstance = pezpallet_core_fellowship::Instance1;
|
||||
|
||||
impl pezpallet_core_fellowship::Config<FellowshipCoreInstance> for Runtime {
|
||||
type WeightInfo = weights::pezpallet_core_fellowship_fellowship_core::WeightInfo<Runtime>;
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type Members = pezpallet_ranked_collective::Pallet<Runtime, FellowshipCollectiveInstance>;
|
||||
type Balance = Balance;
|
||||
// Parameters are set by any of:
|
||||
// - Root;
|
||||
// - the FellowshipAdmin origin (i.e. token holder referendum);
|
||||
// - a vote among all Fellows.
|
||||
type ParamsOrigin = EitherOfDiverse<
|
||||
EnsureXcm<IsVoiceOfBody<GovernanceLocation, FellowshipAdminBodyId>>,
|
||||
Fellows,
|
||||
>;
|
||||
// Induction (creating a candidate) is by any of:
|
||||
// - Root;
|
||||
// - the FellowshipAdmin origin (i.e. token holder referendum);
|
||||
// - a single Fellow;
|
||||
// - a vote among all Members.
|
||||
type InductOrigin = EitherOfDiverse<
|
||||
EnsureXcm<IsVoiceOfBody<GovernanceLocation, FellowshipAdminBodyId>>,
|
||||
EitherOfDiverse<
|
||||
pezpallet_ranked_collective::EnsureMember<
|
||||
Runtime,
|
||||
FellowshipCollectiveInstance,
|
||||
{ ranks::DAN_3 },
|
||||
>,
|
||||
Members,
|
||||
>,
|
||||
>;
|
||||
// Approval (rank-retention) of a Member's current rank is by any of:
|
||||
// - Root;
|
||||
// - the FellowshipAdmin origin (i.e. token holder referendum);
|
||||
// - a vote by the rank two above the current rank for all retention up to the Master rank.
|
||||
type ApproveOrigin = EitherOf<
|
||||
MapSuccess<
|
||||
EnsureXcm<IsVoiceOfBody<GovernanceLocation, FellowshipAdminBodyId>>,
|
||||
Replace<ConstU16<{ ranks::DAN_9 }>>,
|
||||
>,
|
||||
EnsureCanRetainAt,
|
||||
>;
|
||||
// Promotion is by any of:
|
||||
// - Root can promote arbitrarily.
|
||||
// - the FellowshipAdmin origin (i.e. token holder referendum);
|
||||
// - a vote by the rank two above the new rank for all promotions up to the Master rank.
|
||||
type PromoteOrigin = EitherOf<
|
||||
MapSuccess<
|
||||
EnsureXcm<IsVoiceOfBody<GovernanceLocation, FellowshipAdminBodyId>>,
|
||||
Replace<ConstU16<{ ranks::DAN_9 }>>,
|
||||
>,
|
||||
EnsureCanPromoteTo,
|
||||
>;
|
||||
type FastPromoteOrigin = Self::PromoteOrigin;
|
||||
type EvidenceSize = ConstU32<65536>;
|
||||
type MaxRank = ConstU16<9>;
|
||||
}
|
||||
|
||||
pub type FellowshipSalaryInstance = pezpallet_salary::Instance1;
|
||||
|
||||
parameter_types! {
|
||||
// The interior location on AssetHub for the paying account. This is the Fellowship Salary
|
||||
// pallet instance (which sits at index 64). This sovereign account will need funding.
|
||||
pub Interior: InteriorLocation = PalletInstance(64).into();
|
||||
}
|
||||
|
||||
const USDT_UNITS: u128 = 1_000_000;
|
||||
|
||||
/// [`PayOverXcm`] setup to pay the Fellowship salary on the AssetHub in USDT.
|
||||
pub type FellowshipSalaryPaymaster = PayOverXcm<
|
||||
Interior,
|
||||
crate::xcm_config::XcmRouter,
|
||||
crate::PezkuwiXcm,
|
||||
ConstU32<{ 6 * HOURS }>,
|
||||
AccountId,
|
||||
(),
|
||||
ConvertToValue<UsdtAssetHub>,
|
||||
AliasesIntoAccountId32<(), AccountId>,
|
||||
>;
|
||||
|
||||
impl pezpallet_salary::Config<FellowshipSalaryInstance> for Runtime {
|
||||
type WeightInfo = weights::pezpallet_salary_fellowship_salary::WeightInfo<Runtime>;
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
|
||||
#[cfg(not(feature = "runtime-benchmarks"))]
|
||||
type Paymaster = FellowshipSalaryPaymaster;
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type Paymaster = PayWithEnsure<FellowshipSalaryPaymaster, OpenHrmpChannel<ConstU32<1000>>>;
|
||||
type Members = pezpallet_ranked_collective::Pallet<Runtime, FellowshipCollectiveInstance>;
|
||||
|
||||
#[cfg(not(feature = "runtime-benchmarks"))]
|
||||
type Salary = pezpallet_core_fellowship::Pallet<Runtime, FellowshipCoreInstance>;
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type Salary = pezframe_support::traits::tokens::ConvertRank<
|
||||
crate::impls::benchmarks::RankToSalary<Balances>,
|
||||
>;
|
||||
// 15 days to register for a salary payment.
|
||||
type RegistrationPeriod = ConstU32<{ 15 * DAYS }>;
|
||||
// 15 days to claim the salary payment.
|
||||
type PayoutPeriod = ConstU32<{ 15 * DAYS }>;
|
||||
// Total monthly salary budget.
|
||||
type Budget = ConstU128<{ 100_000 * USDT_UNITS }>;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub const FellowshipTreasuryPalletId: PalletId = account::FELLOWSHIP_TREASURY_PALLET_ID;
|
||||
pub const HundredPercent: Permill = Permill::from_percent(100);
|
||||
pub const Burn: Permill = Permill::from_percent(0);
|
||||
pub const MaxBalance: Balance = Balance::max_value();
|
||||
// The asset's interior location for the paying account. This is the Fellowship Treasury
|
||||
// pallet instance (which sits at index 65).
|
||||
pub FellowshipTreasuryInteriorLocation: InteriorLocation = PalletInstance(65).into();
|
||||
pub SelfParaId: ParaId = TeyrchainInfo::teyrchain_id();
|
||||
}
|
||||
|
||||
/// [`PayOverXcm`] setup to pay the Fellowship Treasury.
|
||||
pub type FellowshipTreasuryPaymaster = PayOverXcm<
|
||||
FellowshipTreasuryInteriorLocation,
|
||||
crate::xcm_config::XcmRouter,
|
||||
crate::PezkuwiXcm,
|
||||
ConstU32<{ 6 * HOURS }>,
|
||||
VersionedLocation,
|
||||
VersionedLocatableAsset,
|
||||
LocatableAssetConverter,
|
||||
VersionedLocationConverter,
|
||||
>;
|
||||
|
||||
pub type FellowshipTreasuryInstance = pezpallet_treasury::Instance1;
|
||||
|
||||
impl pezpallet_treasury::Config<FellowshipTreasuryInstance> for Runtime {
|
||||
type WeightInfo = weights::pezpallet_treasury::WeightInfo<Runtime>;
|
||||
type PalletId = FellowshipTreasuryPalletId;
|
||||
type Currency = Balances;
|
||||
type RejectOrigin = EitherOfDiverse<
|
||||
EnsureRoot<AccountId>,
|
||||
EitherOfDiverse<EnsureXcm<IsVoiceOfBody<GovernanceLocation, TreasurerBodyId>>, Fellows>,
|
||||
>;
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type SpendPeriod = ConstU32<{ 7 * DAYS }>;
|
||||
type Burn = Burn;
|
||||
type BurnDestination = ();
|
||||
type SpendFunds = ();
|
||||
type MaxApprovals = ConstU32<100>;
|
||||
type SpendOrigin = EitherOf<
|
||||
EitherOf<
|
||||
EnsureRootWithSuccess<AccountId, MaxBalance>,
|
||||
MapSuccess<
|
||||
EnsureXcm<IsVoiceOfBody<GovernanceLocation, TreasurerBodyId>>,
|
||||
Replace<ConstU128<{ 10_000 * GRAND }>>,
|
||||
>,
|
||||
>,
|
||||
EitherOf<
|
||||
MapSuccess<Architects, Replace<ConstU128<{ 10_000 * GRAND }>>>,
|
||||
MapSuccess<Fellows, Replace<ConstU128<{ 10 * GRAND }>>>,
|
||||
>,
|
||||
>;
|
||||
type AssetKind = VersionedLocatableAsset;
|
||||
type Beneficiary = VersionedLocation;
|
||||
type BeneficiaryLookup = IdentityLookup<Self::Beneficiary>;
|
||||
#[cfg(not(feature = "runtime-benchmarks"))]
|
||||
type Paymaster = FellowshipTreasuryPaymaster;
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type Paymaster = PayWithEnsure<FellowshipTreasuryPaymaster, OpenHrmpChannel<ConstU32<1000>>>;
|
||||
type BalanceConverter = UnityOrOuterConversion<
|
||||
ContainsParts<
|
||||
FromContains<
|
||||
xcm_builder::IsSiblingSystemTeyrchain<ParaId, SelfParaId>,
|
||||
xcm_builder::IsParentsOnly<ConstU8<1>>,
|
||||
>,
|
||||
>,
|
||||
AssetRate,
|
||||
>;
|
||||
type PayoutPeriod = ConstU32<{ 30 * DAYS }>;
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
type BenchmarkHelper = pezkuwi_runtime_common::impls::benchmarks::TreasuryArguments<
|
||||
pezsp_core::ConstU8<1>,
|
||||
ConstU32<1000>,
|
||||
>;
|
||||
type BlockNumberProvider = crate::System;
|
||||
}
|
||||
Reference in New Issue
Block a user