Skip to content

HRMP notifications from relay chain should use WrapVersion instead of latest VersionedXcm #4003

@bkontur

Description

@bkontur

The HRMP channel are handled on the relay chain and the relay chain sends notifications to the child parachains:

The potential problem is using VersionedXcm::from(Xcm which uses xcm::latest::* stuff. E.g. when the relay chain is migrated to the higher XCM version than the parachains, it could lead to the undecodable and ProcessMessageError::Corrupt when processing message on the parachain here.

Everywhere where we send XCM (ChildParachainRouter, SiblingParachainRouter, ...) we use WrapVersion which uses implementation from pallet_xcm (SupportedVersion for destination or safeXcmVersion of runtime) to avoid using latest XCM version.

So the solution here is to add WrapVersion to the HRMP pallet Config and use this wrap_version for all notifications mentioned above. The result will be that we VersionedXcm would be at least safeXcmVersion or the previously stored on in SupportedVersion (if parachain communicated before with the relay chain).


Note: We added HRMP notification handler just recently here: #3696, but there could already exist custom implementations of XcmExecutor, so until this fix comes live, for them the hotfix would be to upgrade their XCM version as soon as possible according to the relay chain version (there is XCMv4 coming to the Kusama in few days).

cc: @JuaniRios

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions