@@ -28012,78 +28012,76 @@ async function main() {
2801228012 decodedCall,
2801328013 XCM_VERSION,
2801428014 );
28015- console.log(
28016- "π¦ Dry run result:",
28017- JSON.stringify(dryRunResult.value, toHuman, 2),
28018- );
28015+ console.log("π¦ Dry run result:", JSON.stringify(dryRunResult.value, toHuman, 2));
2801928016
2802028017 const executionResult = dryRunResult.value.execution_result;
2802128018 if (!dryRunResult.success || !executionResult.success) {
2802228019 console.error("β Local dry run failed!");
2802328020 } else {
2802428021 console.log("β
Local dry run successful.");
2802528022
28026- let parachainBlockBefore = await para2Client.getFinalizedBlock();
28027- const extrinsic = await tx.signAndSubmit(aliceSigner);
28028- const block = extrinsic.block;
28029- console.log(`π¦ Finalised on ${para1Name} in block #${block.number}: ${block.hash}`);
28030-
28031- if (!extrinsic.ok) {
28032- const dispatchError = extrinsic.dispatchError;
28033- if (dispatchError.type === "Module") {
28034- const modErr: any = dispatchError.value;
28035- console.error(`β Dispatch error in module: ${modErr.type} β ${modErr.value?.type}`);
28036- } else {
28037- console.error("β Dispatch error:", JSON.stringify(dispatchError, toHuman, 2));
28023+ const emittedEvents: [any] = dryRunResult.value.emitted_events;
28024+ const polkadotXcmSentEvent = emittedEvents.find(event =>
28025+ event.type === "PolkadotXcm" && event.value.type === "Sent"
28026+ );
28027+ if (polkadotXcmSentEvent === undefined) {
28028+ console.log(`β οΈ PolkadotXcm.Sent is available in runtimes built from stable2503-5 or later.`);
28029+ } else {
28030+ let parachainBlockBefore = await para2Client.getFinalizedBlock();
28031+ const extrinsic = await tx.signAndSubmit(aliceSigner);
28032+ const block = extrinsic.block;
28033+ console.log(`π¦ Finalised on ${para1Name} in block #${block.number}: ${block.hash}`);
28034+
28035+ if (!extrinsic.ok) {
28036+ const dispatchError = extrinsic.dispatchError;
28037+ if (dispatchError.type === "Module") {
28038+ const modErr: any = dispatchError.value;
28039+ console.error(`β Dispatch error in module: ${modErr.type} β ${modErr.value?.type}`);
28040+ } else {
28041+ console.error("β Dispatch error:", JSON.stringify(dispatchError, toHuman, 2));
28042+ }
2803828043 }
28039- }
2804028044
28041- const sentEvents = await para1Api.event.PolkadotXcm.Sent.pull();
28042- if (sentEvents.length > 0) {
28043- const sentMessageId = sentEvents[0].payload.message_id.asHex();
28044- console.log(`π£ Last message Sent on ${para1Name}: ${sentMessageId}`);
28045-
28046- let processedMessageId = undefined;
28047- const maxRetries = 8;
28048- for (let i = 0; i < maxRetries; i++) {
28049- const parachainBlockAfter = await para2Client.getFinalizedBlock();
28050- if (parachainBlockAfter.number == parachainBlockBefore.number) {
28051- const waiting = 1_000 * (i + 1);
28052- console.log(`β³ Waiting ${waiting}ms for ${para2Name} block to be finalised (${i + 1}/${maxRetries})...`);
28053- await new Promise((resolve) => setTimeout(resolve, waiting));
28054- continue;
28045+ const sentEvents = await para1Api.event.PolkadotXcm.Sent.pull();
28046+ if (sentEvents.length > 0) {
28047+ const sentMessageId = sentEvents[0].payload.message_id.asHex();
28048+ console.log(`π£ Last message Sent on ${para1Name}: ${sentMessageId}`);
28049+
28050+ let processedMessageId = undefined;
28051+ const maxRetries = 8;
28052+ for (let i = 0; i < maxRetries; i++) {
28053+ const parachainBlockAfter = await para2Client.getFinalizedBlock();
28054+ if (parachainBlockAfter.number == parachainBlockBefore.number) {
28055+ const waiting = 1_000 * (2 ** i);
28056+ console.log(`β³ Waiting ${waiting}ms for ${para2Name} block to be finalised (${i + 1}/${maxRetries})...`);
28057+ await new Promise((resolve) => setTimeout(resolve, waiting));
28058+ continue;
28059+ }
28060+
28061+ console.log(`π¦ Finalised on ${para2Name} in block #${parachainBlockAfter.number}: ${parachainBlockAfter.hash}`);
28062+ const processedEvents = await para2Api.event.MessageQueue.Processed.pull();
28063+ const processingFailedEvents = await para2Api.event.MessageQueue.ProcessingFailed.pull();
28064+ if (processedEvents.length > 0) {
28065+ processedMessageId = processedEvents[0].payload.id.asHex();
28066+ console.log(`π£ Last message Processed on ${para2Name}: ${processedMessageId}`);
28067+ break;
28068+ } else if (processingFailedEvents.length > 0) {
28069+ processedMessageId = processingFailedEvents[0].payload.id.asHex();
28070+ console.log(`π£ Last message ProcessingFailed on ${para2Name}: ${processedMessageId}`);
28071+ break;
28072+ } else {
28073+ console.log(`π£ No Processed events on ${para2Name} found.`);
28074+ parachainBlockBefore = parachainBlockAfter; // Update the block before to the latest one
28075+ }
2805528076 }
2805628077
28057- console.log(`π¦ Finalised on ${para2Name} in block #${parachainBlockAfter.number}: ${parachainBlockAfter.hash}`);
28058- const processedEvents = await para2Api.event.MessageQueue.Processed.pull();
28059- const processingFailedEvents = await para2Api.event.MessageQueue.ProcessingFailed.pull();
28060- if (processedEvents.length > 0) {
28061- processedMessageId = processedEvents[0].payload.id.asHex();
28062- console.log(`π£ Last message Processed on ${para2Name}: ${processedMessageId}`);
28063- break;
28064- } else if (processingFailedEvents.length > 0) {
28065- processedMessageId = processingFailedEvents[0].payload.id.asHex();
28066- console.log(`π£ Last message ProcessingFailed on ${para2Name}: ${processedMessageId}`);
28067- break;
28078+ if (processedMessageId === sentMessageId) {
28079+ console.log("β
Processed Message ID matched.");
2806828080 } else {
28069- console.log(`π£ No Processed events on ${para2Name} found.`);
28070- parachainBlockBefore = parachainBlockAfter; // Update the block before to the latest one
28081+ console.error("β Processed Message ID does not match Sent Message ID.");
2807128082 }
28072- }
28073-
28074- if (processedMessageId === sentMessageId) {
28075- console.log("β
Processed Message ID matched.");
2807628083 } else {
28077- console.error("β Processed Message ID does not match Sent Message ID.");
28078- }
28079- } else {
28080- console.log(`π£ No Sent events on ${para1Name} found.`);
28081-
28082- const msgSentEvents = await para1Api.event.XcmpQueue.XcmpMessageSent.pull();
28083- if (msgSentEvents.length > 0) {
28084- const messageHash = msgSentEvents[0].payload.message_hash.asHex();
28085- console.log(`π£ Last message XcmpMessageSent on ${para1Name}: ${messageHash}`);
28086- console.log(`β οΈ PolkadotXcm.Sent is available in runtimes built from stable2503-5 or later.`);
28084+ console.log(`π£ No Sent events on ${para1Name} found.`);
2808728085 }
2808828086 }
2808928087 }
0 commit comments