Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backporting #204 and #189 from dev branch to substrate 0.9.30 #205

Merged
merged 4 commits into from
Dec 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion node/service/chain-specs/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,8 @@
],
"http_port": 8080,
"grpc_port": 8081,
"p2p_port": 8082
"p2p_port": 8082,
"mode": "Storage"
}
}
],
Expand Down
26 changes: 14 additions & 12 deletions runtime/cere-dev/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ sp-transaction-pool = { default-features = false, git = "https://github.com/pari
sp-version = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }

# frame dependencies
cere-dev-runtime-constants = { path = "./constants", default-features = false }
cere-runtime-common = { path = "../common", default-features = false }
ddc-traits = { version = "0.1.0", default-features = false, path = "../../traits" }
frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30", optional = true }
frame-election-provider-support = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
Expand All @@ -54,25 +51,16 @@ pallet-babe = { default-features = false, git = "https://github.com/paritytech/s
pallet-bags-list = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-bounties = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-cere-ddc = { version = "4.8.1", default-features = false, path = "../../pallets/ddc" }
pallet-chainbridge = { version = "4.8.1", default-features = false, path = "../../pallets/chainbridge" }
pallet-child-bounties = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-collective = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-contracts = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-contracts-primitives = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-contracts-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-ddc-clusters = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-clusters" }
pallet-ddc-customers = { version = "0.1.0", default-features = false, path = "../../pallets/ddc-customers" }
pallet-ddc-metrics-offchain-worker = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-metrics-offchain-worker" }
pallet-ddc-nodes = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-nodes" }
pallet-ddc-payouts = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-payouts" }
pallet-ddc-staking = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-staking" }
pallet-democracy = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-election-provider-multi-phase = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-election-provider-support-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30", optional = true }
pallet-elections-phragmen = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-erc20 = { version = "4.8.1", default-features = false, path = "../../pallets/erc20" }
pallet-erc721 = { version = "4.8.1", default-features = false, path = "../../pallets/erc721" }
pallet-fast-unstake = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.30" }
pallet-grandpa = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-identity = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
Expand Down Expand Up @@ -103,6 +91,20 @@ pallet-treasury = { default-features = false, git = "https://github.com/parityte
pallet-utility = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-vesting = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }

# cere dependencies
cere-dev-runtime-constants = { path = "./constants", default-features = false }
cere-runtime-common = { path = "../common", default-features = false }
ddc-traits = { version = "0.1.0", default-features = false, path = "../../traits" }
pallet-cere-ddc = { version = "4.8.1", default-features = false, path = "../../pallets/ddc" }
pallet-ddc-clusters = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-clusters" }
pallet-ddc-customers = { version = "0.1.0", default-features = false, path = "../../pallets/ddc-customers" }
pallet-ddc-metrics-offchain-worker = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-metrics-offchain-worker" }
pallet-ddc-nodes = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-nodes" }
pallet-ddc-payouts = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-payouts" }
pallet-ddc-staking = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-staking" }
pallet-erc20 = { version = "4.8.1", default-features = false, path = "../../pallets/erc20" }
pallet-erc721 = { version = "4.8.1", default-features = false, path = "../../pallets/erc721" }

[build-dependencies]
substrate-wasm-builder = { git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }

Expand Down
8 changes: 4 additions & 4 deletions runtime/cere-dev/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1330,7 +1330,7 @@ impl pallet_ddc_staking::Config for Runtime {

parameter_types! {
pub const DdcCustomersPalletId: PalletId = PalletId(*b"accounts"); // DDC maintainer's stake
pub const UnlockingDelay: BlockNumber = 5256000u32; // 1 hour * 24 * 365 = 1 day; (1 hour is 600 blocks)
pub const UnlockingDelay: BlockNumber = 100800_u32; // 1 hour * 24 * 7 = 7 days; (1 hour is 600 blocks)
}

impl pallet_ddc_customers::Config for Runtime {
Expand Down Expand Up @@ -1362,8 +1362,8 @@ parameter_types! {
pub const PayoutsPalletId: PalletId = PalletId(*b"payouts_");
}

pub struct TreasureWrapper;
impl<T: frame_system::Config> PalletVisitor<T> for TreasureWrapper {
pub struct TreasuryWrapper;
impl<T: frame_system::Config> PalletVisitor<T> for TreasuryWrapper {
fn get_account_id() -> T::AccountId {
TreasuryPalletId::get().into_account_truncating()
}
Expand All @@ -1376,7 +1376,7 @@ impl pallet_ddc_payouts::Config for Runtime {
type CustomerCharger = DdcCustomers;
type CustomerDepositor = DdcCustomers;
type ClusterVisitor = DdcClusters;
type TreasuryVisitor = TreasureWrapper;
type TreasuryVisitor = TreasuryWrapper;
type NominatorsAndValidatorsList = pallet_staking::UseNominatorsAndValidatorsMap<Self>;
type ClusterCreator = DdcClusters;
type WeightInfo = pallet_ddc_payouts::weights::SubstrateWeight<Runtime>;
Expand Down
30 changes: 24 additions & 6 deletions runtime/cere/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ sp-transaction-pool = { default-features = false, git = "https://github.com/pari
sp-version = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }

# frame dependencies
cere-runtime-common = { path = "../common", default-features = false }
cere-runtime-constants = { path = "./constants", default-features = false }
frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30", optional = true }
frame-election-provider-support = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
Expand All @@ -53,20 +51,16 @@ pallet-babe = { default-features = false, git = "https://github.com/paritytech/s
pallet-bags-list = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-bounties = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-cere-ddc = { version = "4.8.1", default-features = false, path = "../../pallets/ddc" }
pallet-chainbridge = { version = "4.8.1", default-features = false, path = "../../pallets/chainbridge" }
pallet-child-bounties = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-collective = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-contracts = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-contracts-primitives = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-contracts-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-ddc-metrics-offchain-worker = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-metrics-offchain-worker" }
pallet-democracy = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-election-provider-multi-phase = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-election-provider-support-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30", optional = true }
pallet-elections-phragmen = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-erc20 = { version = "4.8.1", default-features = false, path = "../../pallets/erc20" }
pallet-erc721 = { version = "4.8.1", default-features = false, path = "../../pallets/erc721" }
pallet-fast-unstake = { git = "https://github.com/paritytech/substrate.git", default-features = false, branch = "polkadot-v0.9.30" }
pallet-grandpa = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-identity = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
Expand Down Expand Up @@ -97,6 +91,20 @@ pallet-treasury = { default-features = false, git = "https://github.com/parityte
pallet-utility = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }
pallet-vesting = { default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }

# cere dependencies
cere-runtime-common = { path = "../common", default-features = false }
cere-runtime-constants = { path = "./constants", default-features = false }
ddc-traits = { version = "0.1.0", default-features = false, path = "../../traits" }
pallet-cere-ddc = { version = "4.8.1", default-features = false, path = "../../pallets/ddc" }
pallet-ddc-clusters = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-clusters" }
pallet-ddc-customers = { version = "0.1.0", default-features = false, path = "../../pallets/ddc-customers" }
pallet-ddc-metrics-offchain-worker = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-metrics-offchain-worker" }
pallet-ddc-nodes = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-nodes" }
pallet-ddc-payouts = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-payouts" }
pallet-ddc-staking = { version = "4.8.1", default-features = false, path = "../../pallets/ddc-staking" }
pallet-erc20 = { version = "4.8.1", default-features = false, path = "../../pallets/erc20" }
pallet-erc721 = { version = "4.8.1", default-features = false, path = "../../pallets/erc721" }

[build-dependencies]
substrate-wasm-builder = { git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.30" }

Expand Down Expand Up @@ -172,6 +180,11 @@ std = [
"sp-io/std",
"pallet-child-bounties/std",
"pallet-ddc-metrics-offchain-worker/std",
"pallet-ddc-clusters/std",
"pallet-ddc-customers/std",
"pallet-ddc-nodes/std",
"pallet-ddc-payouts/std",
"pallet-ddc-staking/std",
"cere-runtime-common/std",
"cere-runtime-constants/std",
]
Expand All @@ -187,6 +200,11 @@ runtime-benchmarks = [
"pallet-child-bounties/runtime-benchmarks",
"pallet-collective/runtime-benchmarks",
"pallet-contracts/runtime-benchmarks",
"pallet-ddc-customers/runtime-benchmarks",
"pallet-ddc-clusters/runtime-benchmarks",
"pallet-ddc-nodes/runtime-benchmarks",
"pallet-ddc-staking/runtime-benchmarks",
"pallet-ddc-payouts/runtime-benchmarks",
"pallet-democracy/runtime-benchmarks",
"pallet-election-provider-multi-phase/runtime-benchmarks",
"pallet-election-provider-support-benchmarking/runtime-benchmarks",
Expand Down
81 changes: 79 additions & 2 deletions runtime/cere/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#![recursion_limit = "256"]

use codec::{Decode, Encode, MaxEncodedLen};
use ddc_traits::pallet::PalletVisitor;
use frame_election_provider_support::{onchain, BalancingConfig, SequentialPhragmen, VoteWeight};
use frame_support::{
construct_runtime,
Expand Down Expand Up @@ -67,8 +68,8 @@ use sp_runtime::{
curve::PiecewiseLinear,
generic, impl_opaque_keys,
traits::{
self, BlakeTwo256, Block as BlockT, ConvertInto, NumberFor, OpaqueKeys,
SaturatedConversion, StaticLookup,
self, AccountIdConversion, BlakeTwo256, Block as BlockT, ConvertInto,
Identity as IdentityConvert, NumberFor, OpaqueKeys, SaturatedConversion, StaticLookup,
},
transaction_validity::{TransactionPriority, TransactionSource, TransactionValidity},
ApplyExtrinsicResult, FixedPointNumber, FixedU128, Perbill, Percent, Permill, Perquintill,
Expand Down Expand Up @@ -1312,6 +1313,72 @@ impl pallet_ddc_metrics_offchain_worker::Config for Runtime {
type RuntimeCall = RuntimeCall;
}

parameter_types! {
pub const DdcCustomersPalletId: PalletId = PalletId(*b"accounts"); // DDC maintainer's stake
pub const UnlockingDelay: BlockNumber = 100800_u32; // 1 hour * 24 * 7 = 7 days; (1 hour is 600 blocks)
}

impl pallet_ddc_customers::Config for Runtime {
type UnlockingDelay = UnlockingDelay;
type Currency = Balances;
type PalletId = DdcCustomersPalletId;
type RuntimeEvent = RuntimeEvent;
type ClusterVisitor = pallet_ddc_clusters::Pallet<Runtime>;
type ClusterCreator = pallet_ddc_clusters::Pallet<Runtime>;
type WeightInfo = pallet_ddc_customers::weights::SubstrateWeight<Runtime>;
}

impl pallet_ddc_clusters::Config for Runtime {
type RuntimeEvent = RuntimeEvent;
type NodeRepository = pallet_ddc_nodes::Pallet<Runtime>;
type StakingVisitor = pallet_ddc_staking::Pallet<Runtime>;
type StakerCreator = pallet_ddc_staking::Pallet<Runtime>;
type Currency = Balances;
type WeightInfo = pallet_ddc_clusters::weights::SubstrateWeight<Runtime>;
}

impl pallet_ddc_nodes::Config for Runtime {
type RuntimeEvent = RuntimeEvent;
type StakingVisitor = pallet_ddc_staking::Pallet<Runtime>;
type WeightInfo = pallet_ddc_nodes::weights::SubstrateWeight<Runtime>;
}

parameter_types! {
pub const PayoutsPalletId: PalletId = PalletId(*b"payouts_");
}

pub struct TreasuryWrapper;
impl<T: frame_system::Config> PalletVisitor<T> for TreasuryWrapper {
fn get_account_id() -> T::AccountId {
TreasuryPalletId::get().into_account_truncating()
}
}

impl pallet_ddc_payouts::Config for Runtime {
type RuntimeEvent = RuntimeEvent;
type PalletId = PayoutsPalletId;
type Currency = Balances;
type CustomerCharger = DdcCustomers;
type CustomerDepositor = DdcCustomers;
type ClusterVisitor = DdcClusters;
type TreasuryVisitor = TreasuryWrapper;
type NominatorsAndValidatorsList = pallet_staking::UseNominatorsAndValidatorsMap<Self>;
type ClusterCreator = DdcClusters;
type WeightInfo = pallet_ddc_payouts::weights::SubstrateWeight<Runtime>;
type VoteScoreToU64 = IdentityConvert; // used for UseNominatorsAndValidatorsMap
}

impl pallet_ddc_staking::Config for Runtime {
type Currency = Balances;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = pallet_ddc_staking::weights::SubstrateWeight<Runtime>;
type ClusterVisitor = pallet_ddc_clusters::Pallet<Runtime>;
type ClusterCreator = pallet_ddc_clusters::Pallet<Runtime>;
type ClusterManager = pallet_ddc_clusters::Pallet<Runtime>;
type NodeVisitor = pallet_ddc_nodes::Pallet<Runtime>;
type NodeCreator = pallet_ddc_nodes::Pallet<Runtime>;
}

construct_runtime!(
pub enum Runtime where
Block = Block,
Expand Down Expand Up @@ -1363,6 +1430,11 @@ construct_runtime!(
Erc721: pallet_erc721::{Pallet, Call, Storage, Event<T>},
Erc20: pallet_erc20::{Pallet, Call, Storage, Event<T>},
DdcMetricsOffchainWorker: pallet_ddc_metrics_offchain_worker::{Pallet, Call, Storage, Event<T>},
DdcStaking: pallet_ddc_staking,
DdcCustomers: pallet_ddc_customers,
DdcNodes: pallet_ddc_nodes,
DdcClusters: pallet_ddc_clusters,
DdcPayouts: pallet_ddc_payouts
}
);

Expand Down Expand Up @@ -1439,6 +1511,11 @@ mod benches {
[pallet_child_bounties, ChildBounties]
[pallet_collective, Council]
[pallet_contracts, Contracts]
[pallet_ddc_customers, DdcCustomers]
[pallet_ddc_clusters, DdcClusters]
[pallet_ddc_staking, DdcStaking]
[pallet_ddc_nodes, DdcNodes]
[pallet_ddc_payouts, DdcPayouts]
[pallet_democracy, Democracy]
[pallet_election_provider_multi_phase, ElectionProviderMultiPhase]
[pallet_election_provider_support_benchmarking, EPSBench::<Runtime>]
Expand Down