## How to trace XCM Transfers These are some examples to showcase what to look for when tracking XCM transfers. It covers the following directions: 1. From Para to Relay 2. From Relay to Para 3. From Para to Para 4. From System to Para 5. From Para to System 6. From Relay to System 7. From System to Relay ### 1. From Para to Relay - [Example XCM](https://polkadot.subscan.io/xcm_message/polkadot-2f4138e73affe763bebbefa82ee2eb2633425541) - From Moonbeam - [Extrinsic #4531955-6](https://moonbeam.subscan.io/extrinsic/4531955-6?event=4531955-30) - To Polkadot - [Extrinsic #17487547-0](https://polkadot.subscan.io/extrinsic/17487547-0?event=17487547-3) - [Event](https://moonbeam.subscan.io/event?extrinsic=4531955-6) to Look For in Moonbeam - **`parachainsystem (UpwardMessageSent)`** - check param **`message_hash`** in this event - [Event](https://polkadot.subscan.io/extrinsic/17487547-0?event=17487547-3) to Look For in Polkadot - **`messagequeue (Processed)`** event - check param **`id`** in this event - How to link the two - The `message_hash` found in the `parachainsystem (UpwardMessageSent)` event in the Parachain should be **equal** to the `id` of `messagequeue (Processed)` event in the Relay (`0x84d1c6e7ff93550c526ebbad5435302ffe15c13da14bb597fbeb265c0f8db86c`) ### 2. From Relay to Para - [Example XCM](https://polkadot.subscan.io/xcm_message/polkadot-9b01c2916c4d3c5ad01ee350bdda13059358981f) - From Polkadot - [Extrinsic#17487930-2](https://polkadot.subscan.io/extrinsic/17487930-2?event=17487930-40) - To Acala - [Extrinsic#4553422-1](https://acala.subscan.io/extrinsic/4553422-1?event=4553422-5) - [XCM Transfer](https://polkadot.subscan.io/extrinsic/17487930-2?tab=xcm_transfer) to Look For in Polkadot - **`XCM Transfer Hash`** - [Event](https://acala.subscan.io/event?extrinsic=4553422-1) to Look For in Acala - **`dmpqueue (ExecutedDownward)`** - check params **`message_hash`** and **`message_id`** in this event - How to link the two - The `XCM Transfer Hash` found in Polkadot should be **equal** to the `message_hash/id` found in Acala (`0x8ee704db02d0366a2c9f2024445d1e14ee296f6c58c14b29e38d7c812fefc0d8`) ### 3. From Para to Para - [Example XCM](https://polkadot.subscan.io/xcm_message/polkadot-e557846fcd935145d56a4ebf63658928093d35c4) - From HydraDX - [Extrinsic #3497707-2](https://hydradx.subscan.io/extrinsic/3497707-2?event=3497707-9) - Through Polkadot - [Extrinsic #17487036-1](https://polkadot.subscan.io/extrinsic/17487036-1?event=17487036-19) - To Moonbeam - [Extrinsic #4531703-0](https://moonbeam.subscan.io/extrinsic/4531703-0?event=4531703-7) - [Event](https://hydradx.subscan.io/event?extrinsic=3497707-2) to Look For in HydraDX - **`xcmpqueue (XcmpMessageSent)`** - check param **`message_hash`** in this event - [Event](https://polkadot.subscan.io/event?extrinsic=17487036-1) to Look For in Polkadot - `-` : no events are emitted in the Relay - [Event](https://moonbeam.subscan.io/event?extrinsic=4531703-0) to Look For in Moonbeam - **`xcmpqueue (Success)`** - check param **`message_hash`** in this event - How to link the two - The `message_hash` found in HydraDX event should be **equal** to the `message_hash` found in Moonbeam (`0x4b7507ef0f127ef33c3bef65dca9960cb1d9704f5d0e75a04ebd70aad167826a`) ### 4. From System to Para - [Example XCM](https://polkadot.subscan.io/xcm_message/polkadot-7a1c6fd86e290680f8ee48cee8a64df8e75f7040) - From Asset Hub - [Extrinsic 4677169-2](https://assethub-polkadot.subscan.io/extrinsic/4677169-2?event=4677169-4) - Through Polkadot - [Extrinsic 17488125-1](https://polkadot.subscan.io/extrinsic/17488125-1?event=17488125-1) - To Astar - [Extrinsic 4540721-1](https://astar.subscan.io/extrinsic/4540721-1?event=4540721-7) - [Event](https://assethub-polkadot.subscan.io/event?extrinsic=4677169-2) to Look For in Asset Hub - **`xcmpqueue (XcmpMessageSent)`** - check param **`message_hash`** in this event - [Event](https://polkadot.subscan.io/event?extrinsic=17488125-1&page=2) to Look For in Polkadot - `parainclusion (UpwardMessagesReceived)` - [Event](https://astar.subscan.io/event?extrinsic=4540721-1) to Look For in Astar - **`xcmpqueue (Success)`** - check param **`message_hash`** - How to link the two - The `message_hash` found in Asset Hub event should be **equal** to the `message_hash` found in Astar (`0xc5edc6999b41a6990c9fde78d76706cbbfe0d8c9f6baad2152d8221fd7d635f1`) ### 5. From Para to System - [Example XCM](https://assethub-polkadot.subscan.io/xcm_message/polkadot-71484f278ec3648432006cfea8396a90537691a2) - From Astar - [Block 4537579](https://astar.subscan.io/block/4537579) - Through Polkadot - [Extrinsic 17481804-1](https://polkadot.subscan.io/extrinsic/17481804-1?event=17481804-4) - To Asset Hub - [Extrinsic 4674015-0](https://assethub-polkadot.subscan.io/extrinsic/4674015-0?event=4674015-3) - [Event](https://astar.subscan.io/event?block=4537579) to Look For in Astar - **`xcmpqueue (XcmpMessageSent)`** - check param **`message_hash`** in this event - [Event](https://polkadot.subscan.io/event?extrinsic=17481804-1&page=1) to Look For in Polkadot - `-` : no events are emitted in the Relay - [Event](https://assethub-polkadot.subscan.io/event?extrinsic=4674015-0) to Look For in Asset Hub - **`xcmpqueue (Success)`** - check param **`message_hash`** - How to link the two - The `message_hash` found in Astar event should be **equal** to the `message_hash` found in Asset Hub (`0x1f8781c44023719f47deac9f6c207e80a4c40444f1efebb3b624aa392680a353`) ### 6. From Relay to System - [Example XCM](https://assethub-polkadot.subscan.io/xcm_message/polkadot-40bbefb5b94fdf4b9cb422efed56797ac73a0cf2) - From Polkadot - [Extrinsic #17488424-5](https://polkadot.subscan.io/extrinsic/17488424-5?event=17488424-69) - To Asset Hub - [Extrinsic #4677320-0](https://assethub-polkadot.subscan.io/extrinsic/4677320-0?event=4677320-4) - [XCM Transfer](https://polkadot.subscan.io/extrinsic/17488424-5?tab=xcm_transfer) to Look For in Polkadot - **`XCM Transfer Hash`** - [Event](https://assethub-polkadot.subscan.io/event?extrinsic=4677320-0) to Look For in Asset Hub - **`dmpqueue (ExecutedDownward)`** - check param **`message_id`** - How to link the two - The `XCM Transfer Hash` found in Polkadot should be **equal** to the `message_id` found in Asset Hub (`0xcdf6bb71d74439042bd157323fe76eddd5e482b4e5e661793a9c1cb9da8d83a1`) ### 7. From System to Relay - [Example XCM](https://polkadot.subscan.io/xcm_message/polkadot-82249489c2dbb87b07636855ae005877eb21379b) - From Asset Hub - [Extrinsic #4674516-2 ](https://assethub-polkadot.subscan.io/extrinsic/4674516-2?event=4674516-5) - To Polkadot - [Extrinsic #17482809-0](https://polkadot.subscan.io/extrinsic/17482809-0?event=17482809-3) - [Event](https://assethub-polkadot.subscan.io/event?extrinsic=4674516-2) to Look For in Asset Hub - **`parachainsystem (UpwardMessageSent)`** - check param `message_hash` - [Event](https://polkadot.subscan.io/extrinsic/17482809-0?event=17482809-3) to Look For in Polkadot - **`messagequeue (Processed)`** - check param **`id`** - How to link the two - The `message_hash` found in Asset Hub should be **equal** to the `id` found in Polkadot (`0x16bec31e4a403acc125686625c23000195b661fa8953775db7d4fa4611459d5f`)