0

I have a local-rococo setup between parachain 3015 (sender) and parachain 2000 (recipient). I was able to send hrmpInitOpenChannel successfully to the recipient, followed by hrmpAcceptOpenChannel

The recipient parachain happily accepts the hrmpAcceptOpenChannel request, but sender parachain fails right after the HrmpChannelAccepted event with Unimplemented error.

The log trace snippet below is telling part of the story, I appreciate it if there are any pointers here on where would be the next place to look.

2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::execute_xcm_in_credit: origin: MultiLocation { parents: 1, interior: Here }, message: Xcm([HrmpChannelAccepted { recipient: 2000 }]), weight_limit: 500000000000, weight_credit: 0    
2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::weight: FixedWeightBounds message: Xcm([HrmpChannelAccepted { recipient: 2000 }])    
2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::barriers: TakeWeightCredit origin: MultiLocation { parents: 1, interior: Here }, message: Xcm([HrmpChannelAccepted { recipient: 2000 }]), max_weight: 1000000000, weight_credit: 0    
2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::barriers: AllowTopLevelPaidExecutionFrom origin: MultiLocation { parents: 1, interior: Here }, message: Xcm([HrmpChannelAccepted { recipient: 2000 }]), max_weight: 1000000000, weight_credit: 0    
2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::barriers: AllowUnpaidExecutionFrom origin: MultiLocation { parents: 1, interior: Here }, message: Xcm([HrmpChannelAccepted { recipient: 2000 }]), max_weight: 1000000000, weight_credit: 0    

2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::execute: origin: Some(MultiLocation { parents: 1, interior: Here }), total_surplus/refunded: 0/0, error_handler_weight: 0    
2022-07-01 19:40:00.027 TRACE tokio-runtime-worker xcm::execute_xcm_in_credit: result: Err(ExecutorError { index: 0, xcm_error: Unimplemented, weight: 0 })    
2022-07-01 19:40:00.027 DEBUG tokio-runtime-worker xcm::execute_xcm_in_credit: Execution errored at 0: Unimplemented (original_origin: MultiLocation { parents: 1, interior: Here })

For more context: the first step is to submit polkadotXcm.send Rococo encoded hrmpInitOpenChannel extrinsic via the sender (3015) which in turn submits an upward message to Rococo

hrmpInitOpenChannel request snippet

Checking hrmpOpenChannelRequestCount, appears to have executed as expected, there is 1 open request for 3015.

open channels count

In the second step to accept the request, the encoded hrmpAcceptOpenChannel extrinsic is submitted via the recipient (2000) -- and it appears to have executed successfully on Rococo as seen from the snippet below:

enter image description here

Here is the script I use to perform the above operations.

1 Answer 1

2

From the logs and your comment, it looks like you are sending hrmpInitOpenChannel and hrmpAcceptOpenChannel to the other parachain? You actually want to send these to the Relay Chain. If that doesn't work, please post the exact calls you made and I'll take another look.


EDIT based up question update:

I see why you are confused, because of the HrmpChannelAccepted message sent to the parachain. Indeed, that error comes from here but just means that the parachain does nothing on receiving that instruction.

However, as long as it was successful on the Relay Chain (which it looks like it was), then the channel is established and you can use it. To verify, look at hrmp.hrmpChannels and make sure that the channel is there.

The script you used also looks to handle things correctly.

3
  • Thank you for looking into this. I'm showing the xcm trace from the sender parachain. As I understand, hrmpInitOpenChannel and hrmpAcceptOpenChannel requests are encoded on the relay chain and then instantiated on each respective parachain via sudo polkadotXcm.send. Let me provide more context in the post.
    – Mo Elshami
    Jul 2, 2022 at 16:17
  • OK I see, updated response. Jul 3, 2022 at 19:51
  • 1
    That was it, the output below. Beside the "Unimplemented" error, what actually confused me is hrmp.AcceptedChannelRequestCount(2000) returns 0. hrmp.hrmpChannels: Option<PolkadotRuntimeParachainsHrmpHrmpChannel> { maxCapacity: 8 maxTotalSize: 8,192 maxMessageSize: 1,048,576 msgCount: 0 totalSize: 0 mqcHead: null senderDeposit: 0 recipientDeposit: 0 }
    – Mo Elshami
    Jul 4, 2022 at 7:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.