You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
take_decoded()?.get_dispatch_info is a problem for Transact, because on the sending chain we don't know what is RuntimeCall so decoding fails here for ():
For the real usage, we use e.g. xcm router which expects Xcm<()>:
fn validate(
dest: &mut Option<Location>,
msg: &mut Option<Xcm<()>>,
) -> SendResult<(HostConfiguration<BlockNumberFor<T>>, ParaId, Vec<u8>)> {
let d = dest.take().ok_or(MissingArgument)?;
let id = if let (0, [Parachain(id)]) = d.unpack() {
*id
} else {
*dest = Some(d);
return Err(NotApplicable)
};
// Downward message passing.
let xcm = msg.take().ok_or(MissingArgument)?;
let config = configuration::ActiveConfig::<T>::get();
let para = id.into();
let price = P::price_for_delivery(para, &xcm);
let versioned_xcm = W::wrap_version(&d, xcm).map_err(|()| DestinationUnsupported)?;
and the wrap_version ends here, because it tries to decode with RuntimeCall = ()"
Description contains problem on the sending side, when workaround with force_xcm_version(location, 5) is used then it bubbles to the problem on the receiving side Corrupt error, where ProcessXcmMessage cannot decode the received XCM:
let versioned_message = VersionedXcm::<Call>::decode(&mut &message[..]).map_err(|e| {
log::trace!(
target: LOG_TARGET,
"`VersionedXcm` failed to decode: {e:?}",
);
ProcessMessageError::Corrupt
})?;
sorry, force_xcm_version(location, 5) is not a workaround and Corrupt is ok, because that is the point, we want to update new blob with xcmv4->xcmv5, but the actual runtime has 4 :)
so ignore my comment above
E.g. Westend is sending
Transact
to the child: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fwestend-rpc.polkadot.io#/explorer/query/0x01cd07a4ede58f34d76422febdf1adc28669c1a2ed5fa5ccaa7d15a7d1bfb0a5take_decoded()?.get_dispatch_info
is a problem forTransact
, because on the sending chain we don't know what isRuntimeCall
so decoding fails here for()
:For the real usage, we use e.g. xcm router which expects
Xcm<()>
:and the
wrap_version
ends here, because it tries to decode withRuntimeCall = ()
"The text was updated successfully, but these errors were encountered: