From a8a01a81de3fdda94f3f9a43493288bb583c6056 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 24 Sep 2024 13:57:26 +0800 Subject: [PATCH 1/4] Audit review --- pallet/staking/src/lib.rs | 8 ++++++-- pallet/staking/src/mock.rs | 10 ++++++---- pallet/staking/src/tests.rs | 18 ++++++++++++++++++ precompile/deposit/src/lib.rs | 11 ----------- precompile/deposit/src/tests.rs | 1 - runtime/crab/src/migration.rs | 2 ++ runtime/darwinia/src/migration.rs | 2 ++ 7 files changed, 34 insertions(+), 18 deletions(-) diff --git a/pallet/staking/src/lib.rs b/pallet/staking/src/lib.rs index 8447b777c..787126454 100644 --- a/pallet/staking/src/lib.rs +++ b/pallet/staking/src/lib.rs @@ -816,7 +816,10 @@ pub mod pallet { // let cs_from_contract = Self::elect_from_contract(n1)?; // let cs_from_pallet = Self::elect(n2)?; let cs_from_contract = Self::elect_from_contract(n1).unwrap_or_default(); - let cs_from_pallet = Self::elect(n2).unwrap_or_default(); + let cs_from_pallet = Self::elect(n2).unwrap_or_default() + .into_iter() + .filter(|c| !cs_from_contract.contains(c)) + .collect(); log::info!("collators from contract {cs_from_contract:?}"); log::info!("collators from pallet {cs_from_pallet:?}"); @@ -1356,7 +1359,8 @@ where PalletId(*b"da/staki").into_account_truncating() } -fn now() -> Moment +/// The current time in milliseconds. +pub fn now() -> Moment where T: Config, { diff --git a/pallet/staking/src/mock.rs b/pallet/staking/src/mock.rs index 966b87e99..3b45cc024 100644 --- a/pallet/staking/src/mock.rs +++ b/pallet/staking/src/mock.rs @@ -266,13 +266,15 @@ impl crate::Election for RingStaking { .map(|i| { let who = AccountId(i); - assert_ok!(Session::set_keys( + if Session::set_keys( RuntimeOrigin::signed(who), SessionKeys { uint: i.into() }, Vec::new() - )); - - who + ).is_ok() { + who + } else { + AccountId(0) + } }) .collect(), ) diff --git a/pallet/staking/src/tests.rs b/pallet/staking/src/tests.rs index c43fa927e..ed5f097de 100644 --- a/pallet/staking/src/tests.rs +++ b/pallet/staking/src/tests.rs @@ -845,6 +845,24 @@ fn hybrid_election_should_work() { }); } +#[test] +fn dedup_election_should_work() { + ExtBuilder::default().collator_count(10).build().execute_with(|| { + let who = AccountId(100); + let _ = >::deposit_creating(&who, 100 as _); + + assert_ok!(Staking::stake(RuntimeOrigin::signed(who), 100 as _, Vec::new())); + assert_ok!(Staking::collect(RuntimeOrigin::signed(who), Perbill::zero())); + assert_ok!(Staking::nominate(RuntimeOrigin::signed(who), who)); + + Timestamp::set_timestamp(30 * DAY_IN_MILLIS); + new_session(); + new_session(); + + assert_eq!(vec![who], >::get()); + }); +} + #[test] fn hybrid_payout_should_work() { ExtBuilder::default().collator_count(10).inflation_type(1).build().execute_with(|| { diff --git a/precompile/deposit/src/lib.rs b/precompile/deposit/src/lib.rs index f4af92b66..b1fafa014 100644 --- a/precompile/deposit/src/lib.rs +++ b/precompile/deposit/src/lib.rs @@ -90,15 +90,4 @@ where Ok(true) } - - #[precompile::public("migrate(address)")] - fn migrate(handle: &mut impl PrecompileHandle, who: Address) -> EvmResult { - let origin: AccountIdOf = handle.context().caller.into(); - RuntimeHelper::::try_dispatch( - handle, - Some(origin).into(), - darwinia_deposit::Call::::migrate { who: H160::from(who).into() }, - )?; - Ok(true) - } } diff --git a/precompile/deposit/src/tests.rs b/precompile/deposit/src/tests.rs index 2e79a2858..45023f7ca 100644 --- a/precompile/deposit/src/tests.rs +++ b/precompile/deposit/src/tests.rs @@ -36,7 +36,6 @@ fn selectors() { assert!(PCall::lock_selectors().contains(&0x998e4242)); assert!(PCall::claim_selectors().contains(&0x4e71d92d)); assert!(PCall::claim_with_penalty_selectors().contains(&0xfa04a9bf)); - assert!(PCall::migrate_selectors().contains(&0xce5494bb)); } #[test] diff --git a/runtime/crab/src/migration.rs b/runtime/crab/src/migration.rs index 1522934cb..0b5a24dae 100644 --- a/runtime/crab/src/migration.rs +++ b/runtime/crab/src/migration.rs @@ -84,6 +84,8 @@ fn migrate() -> frame_support::weights::Weight { >::put(who); } + darwinia_staking::MigrationStartPoint::put(darwinia_staking::now()); + // frame_support::weights::Weight::zero() ::DbWeight::get().reads_writes(7, 7) } diff --git a/runtime/darwinia/src/migration.rs b/runtime/darwinia/src/migration.rs index ff8444450..602c900c1 100644 --- a/runtime/darwinia/src/migration.rs +++ b/runtime/darwinia/src/migration.rs @@ -92,6 +92,8 @@ fn migrate() -> frame_support::weights::Weight { >::put(who); } + darwinia_staking::MigrationStartPoint::put(darwinia_staking::now()); + // frame_support::weights::Weight::zero() ::DbWeight::get().reads_writes(7, 107) } From ffc971f06b0d917435a6f8682b4688df6fccda40 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 24 Sep 2024 14:00:10 +0800 Subject: [PATCH 2/4] Release `v6.7.0` --- Cargo.lock | 36 ++++++++++++++-------------- Cargo.toml | 2 +- node/src/cli.rs | 2 +- pallet/account-migration/src/mock.rs | 2 +- runtime/crab/src/lib.rs | 2 +- runtime/darwinia/src/lib.rs | 2 +- runtime/koi/src/lib.rs | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 286674a9c..68e32bb51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1613,7 +1613,7 @@ dependencies = [ [[package]] name = "crab-runtime" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "cumulus-pallet-aura-ext", @@ -2622,7 +2622,7 @@ dependencies = [ [[package]] name = "darwinia" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "async-trait", @@ -2705,7 +2705,7 @@ dependencies = [ [[package]] name = "darwinia-account-migration" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "darwinia-deposit", @@ -2729,7 +2729,7 @@ dependencies = [ [[package]] name = "darwinia-asset-limit" -version = "6.6.5" +version = "6.7.0" dependencies = [ "frame-support", "frame-system", @@ -2740,7 +2740,7 @@ dependencies = [ [[package]] name = "darwinia-common-runtime" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "cumulus-primitives-core", @@ -2771,7 +2771,7 @@ dependencies = [ [[package]] name = "darwinia-deposit" -version = "6.6.5" +version = "6.7.0" dependencies = [ "darwinia-ethtx-forwarder", "darwinia-staking-traits", @@ -2796,7 +2796,7 @@ dependencies = [ [[package]] name = "darwinia-ethtx-forwarder" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "ethabi", @@ -2825,7 +2825,7 @@ dependencies = [ [[package]] name = "darwinia-precompile-assets" -version = "6.6.5" +version = "6.7.0" dependencies = [ "fp-evm", "frame-support", @@ -2846,7 +2846,7 @@ dependencies = [ [[package]] name = "darwinia-precompile-deposit" -version = "6.6.5" +version = "6.7.0" dependencies = [ "darwinia-deposit", "fp-evm", @@ -2866,7 +2866,7 @@ dependencies = [ [[package]] name = "darwinia-precompile-staking" -version = "6.6.5" +version = "6.7.0" dependencies = [ "darwinia-deposit", "darwinia-staking", @@ -2888,7 +2888,7 @@ dependencies = [ [[package]] name = "darwinia-precompile-state-storage" -version = "6.6.5" +version = "6.7.0" dependencies = [ "fp-evm", "frame-support", @@ -2907,7 +2907,7 @@ dependencies = [ [[package]] name = "darwinia-runtime" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "cumulus-pallet-aura-ext", @@ -3008,7 +3008,7 @@ dependencies = [ [[package]] name = "darwinia-staking" -version = "6.6.5" +version = "6.7.0" dependencies = [ "darwinia-deposit", "darwinia-ethtx-forwarder", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "darwinia-staking-traits" -version = "6.6.5" +version = "6.7.0" dependencies = [ "parity-scale-codec", "scale-info", @@ -3073,7 +3073,7 @@ dependencies = [ [[package]] name = "dc-inflation" -version = "6.6.5" +version = "6.7.0" dependencies = [ "dc-types", "primitive-types", @@ -3083,7 +3083,7 @@ dependencies = [ [[package]] name = "dc-primitives" -version = "6.6.5" +version = "6.7.0" dependencies = [ "dc-types", "fp-account", @@ -3093,7 +3093,7 @@ dependencies = [ [[package]] name = "dc-types" -version = "6.6.5" +version = "6.7.0" [[package]] name = "der" @@ -5751,7 +5751,7 @@ checksum = "c33070833c9ee02266356de0c43f723152bd38bd96ddf52c82b3af10c9138b28" [[package]] name = "koi-runtime" -version = "6.6.5" +version = "6.7.0" dependencies = [ "array-bytes 6.2.3", "cumulus-pallet-aura-ext", diff --git a/Cargo.toml b/Cargo.toml index 10de90666..554075b1f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ edition = "2021" homepage = "https://darwinia.network" license = "GPL-3.0" repository = "https://github.com/darwinia-network/darwinia" -version = "6.6.5" +version = "6.7.0" [workspace.dependencies] # crates.io diff --git a/node/src/cli.rs b/node/src/cli.rs index 3fb32cdf5..622aed1f8 100644 --- a/node/src/cli.rs +++ b/node/src/cli.rs @@ -24,7 +24,7 @@ /// /// The worker binaries associated to the node binary should ensure that they are using the same /// version as the main node that started them. -pub const NODE_VERSION: &str = "6.6.5"; +pub const NODE_VERSION: &str = "6.7.0"; /// Sub-commands supported by the collator. #[derive(Debug, clap::Subcommand)] diff --git a/pallet/account-migration/src/mock.rs b/pallet/account-migration/src/mock.rs index e9a138182..40de7e77f 100644 --- a/pallet/account-migration/src/mock.rs +++ b/pallet/account-migration/src/mock.rs @@ -53,7 +53,7 @@ pub const VERSION: sp_version::RuntimeVersion = sp_version::RuntimeVersion { spec_name: sp_runtime::create_runtime_str!("Darwinia2"), impl_name: sp_runtime::create_runtime_str!("DarwiniaOfficialRust"), authoring_version: 0, - spec_version: 6_6_5_0, + spec_version: 6_6_7_0, impl_version: 0, apis: sp_version::create_apis_vec!([]), transaction_version: 0, diff --git a/runtime/crab/src/lib.rs b/runtime/crab/src/lib.rs index 6040d6920..5d86cdbf9 100644 --- a/runtime/crab/src/lib.rs +++ b/runtime/crab/src/lib.rs @@ -80,7 +80,7 @@ pub const VERSION: sp_version::RuntimeVersion = sp_version::RuntimeVersion { spec_name: sp_runtime::create_runtime_str!("Crab2"), impl_name: sp_runtime::create_runtime_str!("DarwiniaOfficialRust"), authoring_version: 0, - spec_version: 6_6_5_0, + spec_version: 6_6_7_0, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, diff --git a/runtime/darwinia/src/lib.rs b/runtime/darwinia/src/lib.rs index a692573cb..2faac00e7 100644 --- a/runtime/darwinia/src/lib.rs +++ b/runtime/darwinia/src/lib.rs @@ -80,7 +80,7 @@ pub const VERSION: sp_version::RuntimeVersion = sp_version::RuntimeVersion { spec_name: sp_runtime::create_runtime_str!("Darwinia2"), impl_name: sp_runtime::create_runtime_str!("DarwiniaOfficialRust"), authoring_version: 0, - spec_version: 6_6_5_0, + spec_version: 6_6_7_0, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, diff --git a/runtime/koi/src/lib.rs b/runtime/koi/src/lib.rs index 3cf5fd2a3..804b4b95c 100644 --- a/runtime/koi/src/lib.rs +++ b/runtime/koi/src/lib.rs @@ -80,7 +80,7 @@ pub const VERSION: sp_version::RuntimeVersion = sp_version::RuntimeVersion { spec_name: sp_runtime::create_runtime_str!("Darwinia Koi"), impl_name: sp_runtime::create_runtime_str!("DarwiniaOfficialRust"), authoring_version: 0, - spec_version: 6_6_6_2, + spec_version: 6_6_7_0, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, From 4c4df2256161216369d257c89b7984db63faa546 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 24 Sep 2024 15:10:02 +0800 Subject: [PATCH 3/4] Format Signed-off-by: Xavier Lau --- pallet/staking/src/lib.rs | 3 ++- pallet/staking/src/mock.rs | 6 ++++-- runtime/crab/src/migration.rs | 2 +- runtime/darwinia/src/migration.rs | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pallet/staking/src/lib.rs b/pallet/staking/src/lib.rs index 787126454..9bc28850b 100644 --- a/pallet/staking/src/lib.rs +++ b/pallet/staking/src/lib.rs @@ -816,7 +816,8 @@ pub mod pallet { // let cs_from_contract = Self::elect_from_contract(n1)?; // let cs_from_pallet = Self::elect(n2)?; let cs_from_contract = Self::elect_from_contract(n1).unwrap_or_default(); - let cs_from_pallet = Self::elect(n2).unwrap_or_default() + let cs_from_pallet = Self::elect(n2) + .unwrap_or_default() .into_iter() .filter(|c| !cs_from_contract.contains(c)) .collect(); diff --git a/pallet/staking/src/mock.rs b/pallet/staking/src/mock.rs index 3b45cc024..8f788f7b4 100644 --- a/pallet/staking/src/mock.rs +++ b/pallet/staking/src/mock.rs @@ -269,8 +269,10 @@ impl crate::Election for RingStaking { if Session::set_keys( RuntimeOrigin::signed(who), SessionKeys { uint: i.into() }, - Vec::new() - ).is_ok() { + Vec::new(), + ) + .is_ok() + { who } else { AccountId(0) diff --git a/runtime/crab/src/migration.rs b/runtime/crab/src/migration.rs index 0b5a24dae..75e85b19b 100644 --- a/runtime/crab/src/migration.rs +++ b/runtime/crab/src/migration.rs @@ -84,7 +84,7 @@ fn migrate() -> frame_support::weights::Weight { >::put(who); } - darwinia_staking::MigrationStartPoint::put(darwinia_staking::now()); + >::put(darwinia_staking::now::()); // frame_support::weights::Weight::zero() ::DbWeight::get().reads_writes(7, 7) diff --git a/runtime/darwinia/src/migration.rs b/runtime/darwinia/src/migration.rs index 602c900c1..cd8108886 100644 --- a/runtime/darwinia/src/migration.rs +++ b/runtime/darwinia/src/migration.rs @@ -92,7 +92,7 @@ fn migrate() -> frame_support::weights::Weight { >::put(who); } - darwinia_staking::MigrationStartPoint::put(darwinia_staking::now()); + >::put(darwinia_staking::now::()); // frame_support::weights::Weight::zero() ::DbWeight::get().reads_writes(7, 107) From f6199449416c698c4d279d6cd6fb3142d52cf5fd Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 24 Sep 2024 15:26:17 +0800 Subject: [PATCH 4/4] Fix try-runtime Signed-off-by: Xavier Lau --- pallet/deposit/Cargo.toml | 3 +++ pallet/ethtx-forwarder/Cargo.toml | 10 ++++++++++ pallet/staking/Cargo.toml | 3 +++ runtime/crab/Cargo.toml | 1 + runtime/darwinia/Cargo.toml | 1 + runtime/koi/Cargo.toml | 1 + 6 files changed, 19 insertions(+) diff --git a/pallet/deposit/Cargo.toml b/pallet/deposit/Cargo.toml index 2a55fcfcf..f355eb2a2 100644 --- a/pallet/deposit/Cargo.toml +++ b/pallet/deposit/Cargo.toml @@ -81,6 +81,9 @@ runtime-benchmarks = [ ] try-runtime = [ + # darwinia + "darwinia-ethtx-forwarder/try-runtime", + # polkadot-sdk "frame-support/try-runtime", "frame-system/try-runtime", diff --git a/pallet/ethtx-forwarder/Cargo.toml b/pallet/ethtx-forwarder/Cargo.toml index debd2b5d7..2ebbf27ce 100644 --- a/pallet/ethtx-forwarder/Cargo.toml +++ b/pallet/ethtx-forwarder/Cargo.toml @@ -86,6 +86,16 @@ runtime-benchmarks = [ "frame-system/runtime-benchmarks", ] +try-runtime = [ + # frontier + "pallet-evm/try-runtime", + + # polkadot-sdk + "frame-support/try-runtime", + "frame-system/try-runtime", + "sp-runtime/try-runtime", +] + evm-tracing = [ # moonbeam "moonbeam-evm-tracer", diff --git a/pallet/staking/Cargo.toml b/pallet/staking/Cargo.toml index e8a248fb7..07ac07172 100644 --- a/pallet/staking/Cargo.toml +++ b/pallet/staking/Cargo.toml @@ -96,6 +96,9 @@ runtime-benchmarks = [ ] try-runtime = [ + # darwinia + "darwinia-ethtx-forwarder/try-runtime", + # polkadot-sdk "frame-support/try-runtime", "frame-system/try-runtime", diff --git a/runtime/crab/Cargo.toml b/runtime/crab/Cargo.toml index f18a67bba..66e62e2a3 100644 --- a/runtime/crab/Cargo.toml +++ b/runtime/crab/Cargo.toml @@ -277,6 +277,7 @@ try-runtime = [ # darwinia "darwinia-account-migration/try-runtime", "darwinia-deposit/try-runtime", + "darwinia-ethtx-forwarder/try-runtime", "darwinia-staking/try-runtime", # frontier diff --git a/runtime/darwinia/Cargo.toml b/runtime/darwinia/Cargo.toml index f8f0f8d59..fe8b6ef26 100644 --- a/runtime/darwinia/Cargo.toml +++ b/runtime/darwinia/Cargo.toml @@ -301,6 +301,7 @@ try-runtime = [ "darwinia-account-migration/try-runtime", "darwinia-asset-limit/try-runtime", "darwinia-deposit/try-runtime", + "darwinia-ethtx-forwarder/try-runtime", "darwinia-staking/try-runtime", # frontier diff --git a/runtime/koi/Cargo.toml b/runtime/koi/Cargo.toml index c4cf7a1e4..104a3fa00 100644 --- a/runtime/koi/Cargo.toml +++ b/runtime/koi/Cargo.toml @@ -291,6 +291,7 @@ try-runtime = [ # darwinia "darwinia-asset-limit/try-runtime", "darwinia-deposit/try-runtime", + "darwinia-ethtx-forwarder/try-runtime", "darwinia-staking/try-runtime", # moonbeam