From d7af0b0596c3f10d920dd21ede39fdd35dfc6356 Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Wed, 6 Nov 2024 13:55:45 +0100 Subject: [PATCH 1/7] Try regenerate try-runtime snapshot for today --- .github/workflows/check-runtime-migration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-runtime-migration.yml b/.github/workflows/check-runtime-migration.yml index 758de0e7b4339..3424175d02556 100644 --- a/.github/workflows/check-runtime-migration.yml +++ b/.github/workflows/check-runtime-migration.yml @@ -95,7 +95,7 @@ jobs: save-always: true - name: Create Snapshot If Stale - if: ${{ hashFiles('snapshot.raw') == '' }} + # if: ${{ hashFiles('snapshot.raw') == '' }} run: | echo "Creating new snapshot for today (${{ steps.get-date.outputs.today }})" ./try-runtime create-snapshot --uri ${{ matrix.uri }} snapshot.raw From 9b834de9151c09ff29287d246b34b566f6ea0413 Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Wed, 6 Nov 2024 15:25:32 +0100 Subject: [PATCH 2/7] revert cache --- .github/workflows/check-runtime-migration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-runtime-migration.yml b/.github/workflows/check-runtime-migration.yml index 3424175d02556..758de0e7b4339 100644 --- a/.github/workflows/check-runtime-migration.yml +++ b/.github/workflows/check-runtime-migration.yml @@ -95,7 +95,7 @@ jobs: save-always: true - name: Create Snapshot If Stale - # if: ${{ hashFiles('snapshot.raw') == '' }} + if: ${{ hashFiles('snapshot.raw') == '' }} run: | echo "Creating new snapshot for today (${{ steps.get-date.outputs.today }})" ./try-runtime create-snapshot --uri ${{ matrix.uri }} snapshot.raw From 14d95e77846a892ee01388e018ca7ab018635736 Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Wed, 6 Nov 2024 15:26:14 +0100 Subject: [PATCH 3/7] Migrations for `ForeignToNativeId` --- .../src/bridge_to_ethereum_config.rs | 23 +++++++++++++++++++ .../bridge-hubs/bridge-hub-westend/src/lib.rs | 5 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs index dbca4166a1351..6fe94e1bd42f1 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs @@ -229,3 +229,26 @@ pub mod benchmark_helpers { } } } +pub(crate) mod migrations { + use frame_support::pallet_prelude::*; + use snowbridge_core::TokenId; + + #[frame_support::storage_alias] + pub type OldNativeToForeignId = StorageMap, Blake2_128Concat, xcm::v4::Location, TokenId, OptionQuery>; + + /// One shot migration for NetworkId::Westend to NetworkId::ByGenesis(WESTEND_GENESIS_HASH) + pub struct MigrationForXcmV5(sp_std::marker::PhantomData); + impl frame_support::traits::OnRuntimeUpgrade for MigrationForXcmV5 { + fn on_runtime_upgrade() -> Weight { + let mut weight = T::DbWeight::get().reads(1); + + let translate_westend = + |pre: xcm::v4::Location| -> Option { + weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); + Some(xcm::v5::Location::try_from(pre).expect("valid location")) + }; + snowbridge_pallet_system::ForeignToNativeId::::translate_values(translate_westend); + weight + } + } +} \ No newline at end of file diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs index 5f572e5f5c2f9..38cd65aacafe2 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs @@ -162,13 +162,14 @@ pub type Migrations = ( RocksDbWeight, >, pallet_bridge_relayers::migration::v1::MigrationToV1, - // permanent - pallet_xcm::migration::MigrateToLatestXcmVersion, snowbridge_pallet_system::migration::v0::InitializeOnUpgrade< Runtime, ConstU32, ConstU32, >, + bridge_to_ethereum_config::migrations::MigrationForXcmV5, + // permanent + pallet_xcm::migration::MigrateToLatestXcmVersion, ); parameter_types! { From 972f01492a2ece18b516d477b08239ef6ca40565 Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Wed, 6 Nov 2024 15:29:01 +0100 Subject: [PATCH 4/7] WIP --- .../bridge-hub-westend/src/bridge_to_ethereum_config.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs index 6fe94e1bd42f1..20ba6383f623c 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs @@ -229,9 +229,11 @@ pub mod benchmark_helpers { } } } + pub(crate) mod migrations { use frame_support::pallet_prelude::*; use snowbridge_core::TokenId; + use sp_std::vec::Vec; #[frame_support::storage_alias] pub type OldNativeToForeignId = StorageMap, Blake2_128Concat, xcm::v4::Location, TokenId, OptionQuery>; @@ -248,6 +250,13 @@ pub(crate) mod migrations { Some(xcm::v5::Location::try_from(pre).expect("valid location")) }; snowbridge_pallet_system::ForeignToNativeId::::translate_values(translate_westend); + + // TODO: finish + // let old_keys = OldNativeToForeignId::::iter_keys().collect::>(); + // for old_key in old_keys { + // snowbridge_pallet_system::NativeToForeignId::::swap(&old_key, &xcm::v5::Location::try_from(old_key).expect("valid location")); + // } + weight } } From 91bb6136fe908a834fa50a3c59cc1b96861589ff Mon Sep 17 00:00:00 2001 From: Serban Iorga Date: Wed, 6 Nov 2024 17:26:05 +0200 Subject: [PATCH 5/7] Implement todo --- .../src/bridge_to_ethereum_config.rs | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs index 20ba6383f623c..0686efadc9f86 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs @@ -236,28 +236,43 @@ pub(crate) mod migrations { use sp_std::vec::Vec; #[frame_support::storage_alias] - pub type OldNativeToForeignId = StorageMap, Blake2_128Concat, xcm::v4::Location, TokenId, OptionQuery>; + pub type OldNativeToForeignId = StorageMap< + snowbridge_pallet_system::Pallet, + Blake2_128Concat, + xcm::v4::Location, + TokenId, + OptionQuery, + >; /// One shot migration for NetworkId::Westend to NetworkId::ByGenesis(WESTEND_GENESIS_HASH) - pub struct MigrationForXcmV5(sp_std::marker::PhantomData); - impl frame_support::traits::OnRuntimeUpgrade for MigrationForXcmV5 { + pub struct MigrationForXcmV5( + sp_std::marker::PhantomData, + ); + impl frame_support::traits::OnRuntimeUpgrade + for MigrationForXcmV5 + { fn on_runtime_upgrade() -> Weight { let mut weight = T::DbWeight::get().reads(1); - let translate_westend = - |pre: xcm::v4::Location| -> Option { - weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); - Some(xcm::v5::Location::try_from(pre).expect("valid location")) - }; + let translate_westend = |pre: xcm::v4::Location| -> Option { + weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); + Some(xcm::v5::Location::try_from(pre).expect("valid location")) + }; snowbridge_pallet_system::ForeignToNativeId::::translate_values(translate_westend); - // TODO: finish - // let old_keys = OldNativeToForeignId::::iter_keys().collect::>(); - // for old_key in old_keys { - // snowbridge_pallet_system::NativeToForeignId::::swap(&old_key, &xcm::v5::Location::try_from(old_key).expect("valid location")); - // } + let old_keys = OldNativeToForeignId::::iter_keys().collect::>(); + for old_key in old_keys { + if let Some(old_val) = OldNativeToForeignId::::get(&old_key) { + snowbridge_pallet_system::NativeToForeignId::::insert( + &xcm::v5::Location::try_from(old_key.clone()).expect("valid location"), + old_val, + ); + } + OldNativeToForeignId::::remove(old_key); + weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 2)); + } weight } } -} \ No newline at end of file +} From 07fe384f4cba3d1352c91249cd3091025a27dfba Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Wed, 6 Nov 2024 17:05:27 +0100 Subject: [PATCH 6/7] Lanes where removed, so let's crate if needed --- .../bridge-hub-westend/src/bridge_to_rococo_config.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs index 2b81639c5e3c8..a6d548f7158bf 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs @@ -347,9 +347,7 @@ pub mod migration { Runtime, XcmOverBridgeHubRococoInstance, AssetHubWestendToAssetHubRococoMessagesLane, - // the lanes are already created for AHR<>AHW, but we need to link them to the bridge - // structs - ConstBool, + ConstBool, AssetHubWestendLocation, AssetHubRococoUniversalLocation, >; From 6da8f7f3cf0ab4900a22910a4814fba030091d3f Mon Sep 17 00:00:00 2001 From: Francisco Aguirre Date: Wed, 6 Nov 2024 15:32:54 -0300 Subject: [PATCH 7/7] fix: remove not idempotent migration --- .../src/bridge_to_ethereum_config.rs | 4 ++-- .../bridge-hub-westend/src/bridge_to_rococo_config.rs | 11 ----------- .../bridge-hubs/bridge-hub-westend/src/lib.rs | 1 - 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs index 0686efadc9f86..3c175bb3aa3c3 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs @@ -233,7 +233,7 @@ pub mod benchmark_helpers { pub(crate) mod migrations { use frame_support::pallet_prelude::*; use snowbridge_core::TokenId; - use sp_std::vec::Vec; + use alloc::vec::Vec; #[frame_support::storage_alias] pub type OldNativeToForeignId = StorageMap< @@ -246,7 +246,7 @@ pub(crate) mod migrations { /// One shot migration for NetworkId::Westend to NetworkId::ByGenesis(WESTEND_GENESIS_HASH) pub struct MigrationForXcmV5( - sp_std::marker::PhantomData, + core::marker::PhantomData, ); impl frame_support::traits::OnRuntimeUpgrade for MigrationForXcmV5 diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs index a6d548f7158bf..62c93da7c831b 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs @@ -334,7 +334,6 @@ mod tests { pub mod migration { use super::*; use bp_messages::LegacyLaneId; - use frame_support::traits::ConstBool; parameter_types! { pub AssetHubWestendToAssetHubRococoMessagesLane: LegacyLaneId = LegacyLaneId([0, 0, 0, 2]); @@ -342,16 +341,6 @@ pub mod migration { pub AssetHubRococoUniversalLocation: InteriorLocation = [GlobalConsensus(RococoGlobalConsensusNetwork::get()), Parachain(bp_asset_hub_rococo::ASSET_HUB_ROCOCO_PARACHAIN_ID)].into(); } - /// Ensure that the existing lanes for the AHW<>AHR bridge are correctly configured. - pub type StaticToDynamicLanes = pallet_xcm_bridge_hub::migration::OpenBridgeForLane< - Runtime, - XcmOverBridgeHubRococoInstance, - AssetHubWestendToAssetHubRococoMessagesLane, - ConstBool, - AssetHubWestendLocation, - AssetHubRococoUniversalLocation, - >; - mod v1_wrong { use bp_messages::{LaneState, MessageNonce, UnrewardedRelayer}; use bp_runtime::AccountIdOf; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs index 38cd65aacafe2..0654000167910 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs @@ -155,7 +155,6 @@ pub type Migrations = ( Runtime, bridge_to_rococo_config::WithBridgeHubRococoMessagesInstance, >, - bridge_to_rococo_config::migration::StaticToDynamicLanes, frame_support::migrations::RemoveStorage< BridgeRococoMessagesPalletName, OutboundLanesCongestedSignalsKey,