#[macro_export]
macro_rules! pallets_config {
() => {
parameter_types! {
pub const Version: RuntimeVersion = VERSION;
}
impl frame_system::Config for Runtime {
type AccountData = pallet_duniter_account::AccountData<Balance, IdtyIndex>;
type AccountId = AccountId;
type BaseCallFilter = BaseCallFilter;
type Block = Block;
type BlockHashCount = BlockHashCount;
type BlockLength = BlockLength;
type BlockWeights = BlockWeights;
type DbWeight = DbWeight;
type Hash = Hash;
type Hashing = BlakeTwo256;
type Lookup = AccountIdLookup<AccountId, ()>;
type MaxConsumers = frame_support::traits::ConstU32<16>;
type MultiBlockMigrator = ();
type Nonce = node_primitives::Nonce;
type OnKilledAccount = ();
type OnNewAccount = ();
type OnSetCode = ();
type PalletInfo = PalletInfo;
type PostInherents = ();
type PostTransactions = ();
type PreInherents = ();
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type RuntimeOrigin = RuntimeOrigin;
type RuntimeTask = ();
type SS58Prefix = SS58Prefix;
type SingleBlockMigrations = ();
type SystemWeightInfo = common_runtime::weights::frame_system::WeightInfo<Runtime>;
type Version = Version;
}
parameter_types! {
pub MaximumSchedulerWeight: Weight = Perbill::from_percent(80) *
BlockWeights::get().max_block;
pub const MaxScheduledPerBlock: u32 = 50;
pub const NoPreimagePostponement: Option<u32> = Some(10);
}
impl pallet_scheduler::Config for Runtime {
type MaxScheduledPerBlock = MaxScheduledPerBlock;
type MaximumWeight = MaximumSchedulerWeight;
type OriginPrivilegeCmp = EqualPrivilegeOnly;
type PalletsOrigin = OriginCaller;
type Preimages = Preimage;
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type RuntimeOrigin = RuntimeOrigin;
type ScheduleOrigin = EnsureRoot<AccountId>;
type WeightInfo = common_runtime::weights::pallet_scheduler::WeightInfo<Runtime>;
}
impl pallet_duniter_account::Config for Runtime {
type InnerOnChargeTransaction = FungibleAdapter<Balances, HandleFees>;
type Refund = Quota;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_duniter_account::WeightInfo<Runtime>;
}
pub struct TreasuryAccountId;
impl frame_support::pallet_prelude::Get<AccountId> for TreasuryAccountId {
fn get() -> AccountId {
Treasury::account_id()
}
}
parameter_types! {
pub const ReloadRate: BlockNumber = 1 * HOURS; pub const MaxQuota: Balance = 1000; pub const MaxNominators: u32 = 64;
pub TreasuryAccount: AccountId = Treasury::account_id(); }
impl pallet_quota::Config for Runtime {
type MaxQuota = MaxQuota;
type RefundAccount = TreasuryAccountId;
type ReloadRate = ReloadRate;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_quota::WeightInfo<Runtime>;
}
impl pallet_babe::Config for Runtime {
type DisabledValidators = Session;
type EpochChangeTrigger = pallet_babe::ExternalTrigger;
type EpochDuration = EpochDuration;
type EquivocationReportSystem =
pallet_babe::EquivocationReportSystem<Self, Offences, Historical, ReportLongevity>;
type ExpectedBlockTime = ExpectedBlockTime;
type KeyOwnerProof =
<Historical as KeyOwnerProofSystem<(KeyTypeId, pallet_babe::AuthorityId)>>::Proof;
type MaxAuthorities = MaxAuthorities;
type MaxNominators = MaxNominators;
type WeightInfo = common_runtime::weights::pallet_babe::WeightInfo<Runtime>;
}
impl pallet_timestamp::Config for Runtime {
type MinimumPeriod = MinimumPeriod;
type Moment = u64;
type OnTimestampSet = (Babe, UniversalDividend);
type WeightInfo = common_runtime::weights::pallet_timestamp::WeightInfo<Runtime>;
}
impl pallet_balances::Config for Runtime {
type AccountStore = Account;
type Balance = Balance;
type DustRemoval = HandleFees;
type ExistentialDeposit = ExistentialDeposit;
type FreezeIdentifier = ();
type MaxFreezes = frame_support::pallet_prelude::ConstU32<0>;
type MaxLocks = MaxLocks;
type MaxReserves = frame_support::pallet_prelude::ConstU32<5>;
type ReserveIdentifier = [u8; 8];
type RuntimeEvent = RuntimeEvent;
type RuntimeFreezeReason = ();
type RuntimeHoldReason = RuntimeHoldReason;
type WeightInfo = common_runtime::weights::pallet_balances::WeightInfo<Runtime>;
}
type CreditOf = frame_support::traits::tokens::fungible::Credit<AccountId, Balances>;
pub struct HandleFees;
impl frame_support::traits::OnUnbalanced<CreditOf> for HandleFees {
fn on_nonzero_unbalanced(amount: CreditOf) {
let _ = Balances::deposit(
&Treasury::account_id(),
amount.peek(),
frame_support::traits::tokens::Precision::Exact,
);
}
}
pub struct OnChargeTransaction;
parameter_types! {
pub Target: Perquintill = Perquintill::from_percent(25);
pub MaxMultiplier: sp_runtime::FixedU128 = 10.into();
}
impl pallet_transaction_payment::Config for Runtime {
type FeeMultiplierUpdate =
common_runtime::fees::FeeMultiplier<Self, Target, MaxMultiplier>;
type LengthToFee = common_runtime::fees::LengthToFeeImpl<Balance, Self, Target>;
type OnChargeTransaction = OneshotAccount;
type OperationalFeeMultiplier = frame_support::traits::ConstU8<5>;
type RuntimeEvent = RuntimeEvent;
type WeightToFee = common_runtime::fees::WeightToFeeImpl<Balance, Self, Target>;
}
impl pallet_oneshot_account::Config for Runtime {
type Currency = Balances;
type InnerOnChargeTransaction = Account;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_oneshot_account::WeightInfo<Runtime>;
}
impl pallet_authority_discovery::Config for Runtime {
type MaxAuthorities = MaxAuthorities;
}
impl pallet_authority_members::Config for Runtime {
type IsMember = SmithMembers;
type MaxAuthorities = MaxAuthorities;
type MemberId = IdtyIndex;
type MemberIdOf = common_runtime::providers::IdentityIndexOf<Self>;
type OnIncomingMember = SmithMembers;
type OnNewSession = OnNewSessionHandler<Runtime>;
type OnOutgoingMember = SmithMembers;
type RemoveMemberOrigin = EnsureRoot<Self::AccountId>;
type RuntimeEvent = RuntimeEvent;
type WeightInfo =
common_runtime::weights::pallet_authority_members::WeightInfo<Runtime>;
}
impl pallet_authorship::Config for Runtime {
type EventHandler = ImOnline;
type FindAuthor = pallet_session::FindAccountFromAuthorIndex<Self, Babe>;
}
impl pallet_im_online::Config for Runtime {
type AuthorityId = ImOnlineId;
#[cfg(not(feature = "runtime-benchmarks"))]
type MaxKeys = MaxAuthorities;
#[cfg(feature = "runtime-benchmarks")]
type MaxKeys = frame_support::traits::ConstU32<1_000>;
type MaxPeerInHeartbeats = MaxPeerInHeartbeats;
type NextSessionRotation = Babe;
type ReportUnresponsiveness = Offences;
type RuntimeEvent = RuntimeEvent;
type UnsignedPriority = ImOnlineUnsignedPriority;
type ValidatorSet = Historical;
type WeightInfo = common_runtime::weights::pallet_im_online::WeightInfo<Runtime>;
}
impl pallet_offences::Config for Runtime {
type IdentificationTuple = pallet_session::historical::IdentificationTuple<Self>;
type OnOffenceHandler = AuthorityMembers;
type RuntimeEvent = RuntimeEvent;
}
impl pallet_session::Config for Runtime {
type Keys = opaque::SessionKeys;
type NextSessionRotation = Babe;
type RuntimeEvent = RuntimeEvent;
type SessionHandler = <opaque::SessionKeys as OpaqueKeys>::KeyTypeIdProviders;
type SessionManager =
pallet_session::historical::NoteHistoricalRoot<Self, AuthorityMembers>;
type ShouldEndSession = Babe;
type ValidatorId = AccountId;
type ValidatorIdOf = sp_runtime::traits::ConvertInto;
type WeightInfo = common_runtime::weights::pallet_session::WeightInfo<Runtime>;
}
impl pallet_session::historical::Config for Runtime {
type FullIdentification = ValidatorFullIdentification;
type FullIdentificationOf = FullIdentificationOfImpl;
}
impl pallet_grandpa::Config for Runtime {
type EquivocationReportSystem = pallet_grandpa::EquivocationReportSystem<
Self,
Offences,
Historical,
ReportLongevity,
>;
type KeyOwnerProof = <Historical as KeyOwnerProofSystem<(KeyTypeId, GrandpaId)>>::Proof;
type MaxAuthorities = MaxAuthorities;
type MaxNominators = frame_support::traits::ConstU32<64>;
type MaxSetIdSessionEntries = MaxSetIdSessionEntries;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_grandpa::WeightInfo<Runtime>;
}
parameter_types! {
pub const MaxSetIdSessionEntries: u32 = 1000;
}
#[cfg(feature = "runtime-benchmarks")]
parameter_types! {
pub const WorstCaseOrigin: WorstOrigin = WorstOrigin::Members(2, 3);
}
impl pallet_upgrade_origin::Config for Runtime {
type Call = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type UpgradableOrigin = pallet_collective::EnsureProportionAtLeast<
AccountId,
TechnicalCommitteeInstance,
2,
3,
>;
type WeightInfo = common_runtime::weights::pallet_upgrade_origin::WeightInfo<Runtime>;
#[cfg(feature = "runtime-benchmarks")]
type WorstCaseOrigin = WorstCaseOrigin;
#[cfg(feature = "runtime-benchmarks")]
type WorstCaseOriginType = RawOrigin<AccountId, TechnicalCommitteeInstance>;
}
parameter_types! {
pub const PreimageMaxSize: u32 = 4096 * 1024;
pub const PreimageBaseDeposit: Balance = deposit(2, 64);
pub const PreimageByteDeposit: Balance = deposit(0, 1);
}
impl pallet_preimage::Config for Runtime {
type Consideration = ();
type Currency = Balances;
type ManagerOrigin = EnsureRoot<AccountId>;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_preimage::WeightInfo<Runtime>;
}
impl pallet_atomic_swap::Config for Runtime {
type ProofLimit = frame_support::traits::ConstU32<1_024>;
type RuntimeEvent = RuntimeEvent;
type SwapAction = pallet_atomic_swap::BalanceSwapAction<AccountId, Balances>;
}
impl pallet_provide_randomness::Config for Runtime {
type Currency = Balances;
type GetCurrentEpochIndex = GetCurrentEpochIndex<Self>;
type MaxRequests = frame_support::traits::ConstU32<100>;
type OnFilledRandomness = ();
type OnUnbalanced = HandleFees;
type ParentBlockRandomness = pallet_babe::ParentBlockRandomness<Self>;
type RandomnessFromOneEpochAgo = pallet_babe::RandomnessFromOneEpochAgo<Self>;
type RequestPrice = frame_support::traits::ConstU64<2_000>;
type RuntimeEvent = RuntimeEvent;
type WeightInfo =
common_runtime::weights::pallet_provide_randomness::WeightInfo<Runtime>;
}
parameter_types! {
pub const ProxyDepositBase: Balance = deposit(1, 8);
pub const ProxyDepositFactor: Balance = deposit(0, 33);
pub const AnnouncementDepositBase: Balance = deposit(1, 8);
pub const AnnouncementDepositFactor: Balance = deposit(0, 66);
}
impl pallet_proxy::Config for Runtime {
type AnnouncementDepositBase = AnnouncementDepositBase;
type AnnouncementDepositFactor = AnnouncementDepositFactor;
type CallHasher = BlakeTwo256;
type Currency = Balances;
type MaxPending = frame_support::traits::ConstU32<32>;
type MaxProxies = frame_support::traits::ConstU32<32>;
type ProxyDepositBase = ProxyDepositBase;
type ProxyDepositFactor = ProxyDepositFactor;
type ProxyType = ProxyType;
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_proxy::WeightInfo<Runtime>;
}
parameter_types! {
pub const DepositBase: Balance = DEPOSIT_PER_ITEM;
pub const DepositFactor: Balance = DEPOSIT_PER_BYTE * 32;
}
impl pallet_multisig::Config for Runtime {
type Currency = Balances;
type DepositBase = DepositBase;
type DepositFactor = DepositFactor;
type MaxSignatories = MaxSignatories;
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_multisig::WeightInfo<Runtime>;
}
impl pallet_utility::Config for Runtime {
type PalletsOrigin = OriginCaller;
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_utility::WeightInfo<Runtime>;
}
parameter_types! {
pub const Burn: Permill = Permill::zero();
pub const ProposalBond: Permill = Permill::from_percent(1);
pub const ProposalBondMaximum: Option<Balance> = None;
pub const SpendPeriod: BlockNumber = DAYS;
pub const TreasuryPalletId: PalletId = PalletId(*b"py/trsry");
}
impl pallet_treasury::Config for Runtime {
type ApproveOrigin = TreasuryApproveOrigin;
type AssetKind = ();
type BalanceConverter = frame_support::traits::tokens::UnityAssetBalanceConversion;
#[cfg(feature = "runtime-benchmarks")]
type BenchmarkHelper = ();
type Beneficiary = AccountId;
type BeneficiaryLookup = AccountIdLookup<AccountId, ()>;
type Burn = Burn;
type BurnDestination = ();
type Currency = Balances;
type MaxApprovals = frame_support::traits::ConstU32<100>;
type OnSlash = Treasury;
type PalletId = TreasuryPalletId;
type Paymaster =
frame_support::traits::tokens::pay::PayFromAccount<Balances, TreasuryAccount>;
type PayoutPeriod = sp_core::ConstU32<10>;
type ProposalBond = ProposalBond;
type ProposalBondMaximum = ProposalBondMaximum;
type ProposalBondMinimum = frame_support::traits::ConstU64<10_000>;
type RejectOrigin = TreasuryRejectOrigin;
type RuntimeEvent = RuntimeEvent;
type SpendFunds = TreasurySpendFunds<Self>;
type SpendOrigin = frame_support::traits::NeverEnsureOrigin<Balance>;
type SpendPeriod = SpendPeriod;
type WeightInfo = common_runtime::weights::pallet_treasury::WeightInfo<Runtime>;
}
pub struct MembersCount;
impl frame_support::pallet_prelude::Get<Balance> for MembersCount {
fn get() -> Balance {
<Membership as sp_membership::traits::MembersCount>::members_count() as Balance
}
}
impl pallet_universal_dividend::Config for Runtime {
type Currency = Balances;
#[cfg(feature = "runtime-benchmarks")]
type IdtyAttr = Identity;
type MaxPastReeval = frame_support::traits::ConstU32<160>;
type MembersCount = MembersCount;
type MembersStorage = common_runtime::providers::UdMembersStorage<Runtime>;
type MomentIntoBalance = sp_runtime::traits::ConvertInto;
type RuntimeEvent = RuntimeEvent;
type SquareMoneyGrowthRate = SquareMoneyGrowthRate;
type UdCreationPeriod = UdCreationPeriod;
type UdReevalPeriod = UdReevalPeriod;
type WeightInfo =
common_runtime::weights::pallet_universal_dividend::WeightInfo<Runtime>;
}
impl pallet_duniter_wot::Config for Runtime {
type FirstIssuableOn = WotFirstCertIssuableOn;
type MinCertForCreateIdtyRight = WotMinCertForCreateIdtyRight;
type MinCertForMembership = WotMinCertForMembership;
}
parameter_types! {
pub const ValidationPeriod: BlockNumber = 2 * MONTHS;
pub const DeletionPeriod: BlockNumber = 10 * YEARS;
}
impl pallet_identity::Config for Runtime {
type AccountLinker = Account;
type AutorevocationPeriod = AutorevocationPeriod;
type ChangeOwnerKeyPeriod = ChangeOwnerKeyPeriod;
type CheckAccountWorthiness = Account;
type CheckIdtyCallAllowed = Wot;
type ConfirmPeriod = ConfirmPeriod;
type DeletionPeriod = DeletionPeriod;
type IdtyCreationPeriod = IdtyCreationPeriod;
type IdtyData = IdtyData;
type IdtyIndex = IdtyIndex;
type IdtyNameValidator = IdtyNameValidatorImpl;
type OnNewIdty = OnNewIdtyHandler<Runtime>;
type OnRemoveIdty = OnRemoveIdtyHandler<Runtime>;
type RuntimeEvent = RuntimeEvent;
type Signature = Signature;
type Signer = <Signature as sp_runtime::traits::Verify>::Signer;
type ValidationPeriod = ValidationPeriod;
type WeightInfo = common_runtime::weights::pallet_identity::WeightInfo<Runtime>;
}
impl pallet_sudo::Config for Runtime {
type RuntimeCall = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_sudo::WeightInfo<Runtime>;
}
impl pallet_membership::Config for Runtime {
#[cfg(feature = "runtime-benchmarks")]
type BenchmarkSetupHandler = common_runtime::providers::BenchmarkSetupHandler<Runtime>;
type CheckMembershipOpAllowed = Wot;
type IdtyAttr = Identity;
type IdtyId = IdtyIndex;
type MembershipPeriod = MembershipPeriod;
type MembershipRenewalPeriod = MembershipRenewalPeriod;
type OnNewMembership = OnNewMembershipHandler<Runtime>;
type OnRemoveMembership = OnRemoveMembershipHandler<Runtime>;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_membership::WeightInfo<Runtime>;
}
impl pallet_certification::Config for Runtime {
type CertPeriod = CertPeriod;
type CheckCertAllowed = Wot;
type IdtyAttr = Identity;
type IdtyIndex = IdtyIndex;
type MaxByIssuer = MaxByIssuer;
type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert;
type OnNewcert = Wot;
type OnRemovedCert = Wot;
type RuntimeEvent = RuntimeEvent;
type ValidityPeriod = ValidityPeriod;
type WeightInfo = common_runtime::weights::pallet_certification::WeightInfo<Runtime>;
}
parameter_types! {
pub const MinAccessibleReferees: Perbill = Perbill::from_percent(80);
}
impl pallet_distance::Config for Runtime {
type CheckRequestDistanceEvaluation = Wot;
type Currency = Balances;
type EvaluationPeriod = frame_support::traits::ConstU32<7>;
type EvaluationPrice = frame_support::traits::ConstU64<1000>;
type MaxRefereeDistance = frame_support::traits::ConstU32<5>;
type MinAccessibleReferees = MinAccessibleReferees;
type OnValidDistanceStatus = Wot;
type RuntimeEvent = RuntimeEvent;
type RuntimeHoldReason = RuntimeHoldReason;
type WeightInfo = common_runtime::weights::pallet_distance::WeightInfo<Runtime>;
}
impl pallet_smith_members::Config for Runtime {
type IdtyAttr = Identity;
type IdtyIdOfAuthorityId = sp_runtime::traits::ConvertInto;
type IdtyIndex = IdtyIndex;
type IsWoTMember = common_runtime::providers::IsWoTMemberProvider<Runtime>;
type MaxByIssuer = SmithMaxByIssuer;
type MemberId = IdtyIndex;
type MinCertForMembership = SmithWotMinCertForMembership;
type OnSmithDelete = OnSmithDeletedHandler<Runtime>;
type RuntimeEvent = RuntimeEvent;
type SmithInactivityMaxDuration = SmithInactivityMaxDuration;
type WeightInfo = common_runtime::weights::pallet_smith_members::WeightInfo<Runtime>;
}
pub struct TechnicalCommitteeDefaultVote;
impl pallet_collective::DefaultVote for TechnicalCommitteeDefaultVote {
fn default_vote(
_prime_vote: Option<bool>,
_yes_votes: u32,
_no_votes: u32,
_len: u32,
) -> bool {
false
}
}
parameter_types! {
pub const TechnicalCommitteeMotionDuration: BlockNumber = 7 * DAYS;
pub MaxWeight: Weight = Perbill::from_percent(50) * BlockWeights::get().max_block;
}
impl pallet_collective::Config<Instance2> for Runtime {
#[cfg(not(feature = "runtime-benchmarks"))]
type DefaultVote = TechnicalCommitteeDefaultVote;
#[cfg(feature = "runtime-benchmarks")]
type DefaultVote = pallet_collective::PrimeDefaultVote;
type MaxMembers = frame_support::pallet_prelude::ConstU32<100>;
type MaxProposalWeight = MaxWeight;
type MaxProposals = frame_support::pallet_prelude::ConstU32<20>;
type MotionDuration = TechnicalCommitteeMotionDuration;
type Proposal = RuntimeCall;
type RuntimeEvent = RuntimeEvent;
type RuntimeOrigin = RuntimeOrigin;
type SetMembersOrigin = EnsureRoot<AccountId>;
type WeightInfo = common_runtime::weights::pallet_collective::WeightInfo<Runtime>;
}
};
}