XCM Monitor

Track cross-chain interactions and asset transfers effortlessly.
Agent ID
xcm
APIs
webhooks, streams
Networks
all with open XCM channels

The XCM Monitor tracks cross-chain interactions and asset transfers via the XCM protocol. Subscribe to events like xcm.sent and xcm.received to monitor message lifecycles in real time, with configurable options and detailed metadata for each stage.

Input Arguments

Argument Description Required
origins A set of origin network IDs .
Use “*” for any.
yes
destinations A set of destination network IDs .
Use “*” for any.
yes
senders A set of account addresses.
If the address is in SS58 format, it will be converted to a public key for matching.
Supports public keys as hex strings.
Use “*” for any.
yes
events The events to subscribe to.
Supported values: xcm.sent, xcm.received, xcm.relayed, xcm.timeout, xcm.hop, xcm.bridge.
Use “*” for all.
no

You can retrieve the input schema from https://api.ocelloids.net/agents/xcm/inputs external link .

XCM Monitor Arguments JSON Schema
XCM Monitor Arguments
{
  "type": "object",
  "properties": {
    "origins": {
      "anyOf": [
        {
          "type": "string",
          "const": "*"
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "senders": {
      "anyOf": [
        {
          "type": "string",
          "const": "*"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        }
      ]
    },
    "destinations": {
      "anyOf": [
        {
          "type": "string",
          "const": "*"
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        }
      ]
    },
    "bridges": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "pk-bridge",
          "snowbridge"
        ]
      },
      "minItems": 1
    },
    "events": {
      "anyOf": [
        {
          "type": "string",
          "const": "*"
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "xcm.sent",
              "xcm.received",
              "xcm.relayed",
              "xcm.timeout",
              "xcm.hop",
              "xcm.bridge"
            ]
          },
          "minItems": 1
        }
      ]
    }
  },
  "required": [
    "origins",
    "destinations"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Examples

Hint

Check out the XCM Tracker application for a complete example: XCM Tracker Repository external link

Track Polkadot Transfers through WebSocket

This example demonstrates how to subscribe to XCM transfers originating from Polkadot to specific destinations (Polkadot Asset Hub, Moonbeam, Bifrost, and Hydration). The delivery channel is set to WebSocket only.

Informant Deposit Events Example
{
  "id": "polkadot-transfers",
  "agent": "xcm",
  "public": true,
  "args": {
    "senders": "*",
    "origins": ["urn:ocn:polkadot:0"],
    "destinations": [
      "urn:ocn:polkadot:1000",
      "urn:ocn:polkadot:2004",
      "urn:ocn:polkadot:2030",
      "urn:ocn:polkadot:2034"
    ],
    "events": "*"
  },
  "channels": [
    {
      "type": "websocket"
    }
  ]
}
Subscribe to Polkadot Cross-chain Transfers.

For integration examples with the Ocelloids client library, please refer to the Subscription Example .

XCM Event Types

The XCM Monitor sends different XCM events through the configured delivery channel throughout an XCM journey.

xcm.sent

Triggered when an XCM message is sent from the origin network.

xcm.received

Triggered when an XCM message is received on the destination network.

xcm.relayed

Triggered when an XCM message is relayed through the relay chain in Horizontal Relay Messaging Protocol (HRMP).

xcm.timeout

This event is triggered when no xcm.received event is detected for a corresponding xcm.sent event within the configured timeframe. The timeout threshold is currently set to 5 minutes.

xcm.hop

Triggered on XCM execution on intermediate networks for multi-hop XCMs.

Note

The order in which XCM events are emitted is not guaranteed. Variations in block times and network conditions across chains can cause events to arrive out of sequence. You could use event metadata, such as timestamps and waypoint.legIndex, to accurately reconstruct the XCM journey.

Output Messages

The output contains metadata and payload.

Metadata

Field Description Type
type XCM event type.
Possible values are: xcm.sent, xcm.received, xcm.relayed, xcm.timeout, xcm.hop.
enum
subscriptionId Corresponding subscription ID. string
agentId Corresponding agent ID.
Always "xcm".
string
networkId Network ID of the chain that emitted the XCM event. string
timestamp Timestamp of message delivery. Unix timestamp in milliseconds. number
blockTimestamp Timestamp of the block at which the XCM event is emitted. Unix timestamp in milliseconds. number

An example of the metadata structure:

{
  "type": "xcm.sent",
  "subscriptionId": "polkadot-assethub-transfers",
  "agentId": "xcm",
  "networkId": "urn:ocn:polkadot:1000",
  "timestamp": 1736784783869,
  "blockTimestamp": 1736784756000
}

Payload

Field Description Type
type XCM event type.
Possible values are: xcm.sent, xcm.received, xcm.relayed, xcm.timeout, xcm.hop.
enum
subscriptionId Corresponding subscription ID. string
legs Legs of the XCM journey. Leg[]
sender Account information of the sender. Sender
messageId Unique Topic ID of the XCM, if any. Optional<string>
direction Direction of the XCM hop, only applicable to xcm.hop events.
Possible values are: out, in
Optional<string>
waypoint XCM waypoint information. XcmWaypointContext
origin XCM origin information. XcmWaypointContext
destination XCM destination information. XcmWaypointContext

Leg

Contains information about the legs of an XCM journey.

Field Description Type
from Network ID of the origin network for the leg. string
to Network ID of the destination network for the leg. string
type Leg type.
Possible values are: vmp, hrmp, hop
eunm
relay Network ID of the relay chain in case of HRMP message. Optional<string>
partialMessage SCALE-encoded partial XCM to be executed on leg destination. Optional<string>

XCM Waypoints

The XCM waypoint provides detailed information about the current step or location in the journey of an XCM message. Its value depends on the type of event:

xcm.sent

The waypoint field matches the origin network where the XCM message was sent from.

xcm.received

The waypoint field matches the destination network where the XCM message was successfully received.

xcm.relayed

The waypoint field contains information about the relay chain that processed the XCM message during horizontal relay messaging (HRMP).

xcm.hop

The waypoint field contains information about the intermediary network where the XCM message was executed during a multi-hop journey.

XCM Waypoint Context

The XcmWaypointContext contains all the context information for the XCM waypoint, origin or destination.

Field Description Type
chainId Network ID of the waypoint network. string
legIndex Position of the leg in the legs array. Starting from 0. number
outcome The outcome of the XCM execution.
Possible values are: Success, Fail
enum
blockHash Block hash of the block where the XCM event is emitted. string
blockNumber Block number of the block where the XCM event is emitted. string
timestamp Block timestamp of the block where the XCM event is emitted. Unix timestamp in milliseconds. number
extrinsicHash Extrinsic hash of the extrinsic where the XCM event is emitted, if any. Optional<string>
extrinsicPosition Extrinsic position in the block of the extrinsic where the XCM event is emitted, if any. Optional<number>
event Event object of the emitted XCM event. json
messageData SCALE-encoded XCM instructions. string
instructions Array of decoded XCM instructions. json
messageHash XCM message hash. string
error XCM execution error, if any. Optional<json>
assetsTrapped Information about the assets trapped, if any. Optional<json>

How to Handle Outcomes and Errors

The XCM Monitor provides execution outcomes and error diagnostics in the message payload waypoint, origin and destination fields. Here’s how to manage these effectively:

Outcome handling on XCM sent

Check the outcome field in the payload.origin object to confirm successful or failed execution.

Example origin field in message payload on successful execution
XCM origin on sent
{
  "chainId": "urn:ocn:polkadot:1000",
  "blockHash": "0x414c67e042454d58ebf8b411e1e9309e8bbca8de8d744e164d325faaac78c1b3",
  "blockNumber": "7984956",
  "extrinsicHash": "0x3899d51a6008b50d5ae331a538f42498baebdc56cbd6ac5a5bdb4e862925d080",
  "timestamp": 1736784756000,
  "extrinsicPosition": 7,
  "event": {
    // XCM event data
  },
  "outcome": "Success",
  "error": null,
  "messageData": "0x0314010400010300a10f043205011f0003211346ca0a1300010300a10f043205011f0003211346ca000d01020400010100140f4b4ede3215fa43e3c8396ed5003e40a8157cec6f4dd0b3735f8160493f032c800086d458e317a805e8a9513139221e5d6e0d661f083e44f79cde55789b88c4",
  "instructions": {
    // XCM instructions
  },
  "messageHash": "0x9ce3782210175d4d35cfd8a39f7d9dfab6ca547e3e3b9f9c0c9c18ce6f1c8e18"
}

Outcome handling on XCM received

Check the outcome field in the payload.destination object to confirm successful or failed execution.

Example destination field in message payload on successful execution
XCM destination on received
{
  "chainId": "urn:ocn:polkadot:2034",
  "blockNumber": "6765888",
  "blockHash": "0xb26cde4ac466c5fbdc8bef19b06754fcd1d5e94d3ac15958cd916606ac3fb555",
  "timestamp": 1736784780000,
  "event": {
    // XCM event data
  },
  "outcome": "Success",
  "instructions": {
    // XCM instructions
  },
  "messageData": "0x0314010400010300a10f043205011f0003211346ca0a1300010300a10f043205011f0003211346ca000d01020400010100140f4b4ede3215fa43e3c8396ed5003e40a8157cec6f4dd0b3735f8160493f032c800086d458e317a805e8a9513139221e5d6e0d661f083e44f79cde55789b88c4",
  "messageHash": "0x9ce3782210175d4d35cfd8a39f7d9dfab6ca547e3e3b9f9c0c9c18ce6f1c8e18"
}

Outcome handling on intermediate XCM hop execution

Check the outcome field in the payload.waypoint object to confirm successful or failed execution.

Example waypoint field in message payload on successful execution
XCM waypoint on hop
{
    "legIndex": 1,
    "chainId": "urn:ocn:local:2034",
    "blockHash": "0xfcefde93bba551ab5118aa1fb954b8b3d58ee81a5eef835132f37ab72cc70987",
    "blockNumber": "4624161",
    "event": {
      // XCM event data
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x03100004000002043205011f0007f1d9052a010a13000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b",
    "messageHash": "0x03f0f87c9f89de3b78e730e0c6af44941b3ada5446b46ff59460faa667a0c85d",
    "instructions": {
      // XCM instructions
    }
  }

Handling Multi-Hop XCMs

Multi-hop XCMs involve transferring assets or messages across intermediate networks before reaching their final destination. Here’s how to identify and handle multi-hop XCMs:

Identifying Multi-Hop XCMs

Check the legs property in received subscription messages. If there are multiple legs, the XCM is multi-hop. Multi-hop XCMs generate additional events (xcm.hop) alongside the standard xcm.sent, xcm.relayed, and xcm.received events.

Multi-Hop XCM Success Scenario

A user sends ASTR tokens from Hydration to Bifrost. Since ASTR’s asset reserve is on Astar, the XCM routes through Astar, resulting in two legs:

Leg 1 (HRMP hop):
Hydration → Polkadot Relay → Astar
Leg 2 (HRMP):
Astar → Polkadot Relay → Bifrost

The legs property for this journey will look like this:

[
  {
    "from": "urn:ocn:polkadot:2034",
    "to": "urn:ocn:polkadot:2006",
    "type": "hop",
    "relay": "urn:ocn:polkadot:0"
  },
  {
    "from": "urn:ocn:polkadot:2006",
    "to": "urn:ocn:polkadot:2030",
    "type": "hrmp",
    "partialMessage": "0x040813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "relay": "urn:ocn:polkadot:0"
  }
]

If the XCM executes successfully, you can expect six events:

One xcm.sent from Hydration.

Example Hydration XCM Sent
Multi-hop XCM Sent
{
  "type": "xcm.sent",
  "legs": [
    {
      "from": "urn:ocn:polkadot:2034",
      "to": "urn:ocn:polkadot:2006",
      "type": "hop",
      "relay": "urn:ocn:polkadot:0"
    },
    {
      "from": "urn:ocn:polkadot:2006",
      "to": "urn:ocn:polkadot:2030",
      "type": "hrmp",
      "partialMessage": "0x040813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
      "relay": "urn:ocn:polkadot:0"
    }
  ],
  "sender": {
    "signer": {
      "id": "7NSzbPmboW99jDFj9MoHDU8R1oNxs4pVDnNzWogcoyE2DhVZ",
      "publicKey": "0xd6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356"
    },
    "extraSigners": []
  },
  "messageId": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a",
  "waypoint": {
    "legIndex": 0,
    // same as origin
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:2034",
    "blockHash": "0x41b84a4b9121373df323648b5b2ac59e82828eea6b8f5d0ff4fae4d9290ca086",
    "blockNumber": "6783730",
    "extrinsicHash": "0x54dec578372374b8417738861dfe1ea4185be3e3b6a0183d7c8da4ca69a2e1e6",
    "timestamp": 1737032856000,
    "extrinsicPosition": 4,
    "event": {
      // XCM event data
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x041000040000001b000040b2bac9e0191e020a130000001b00002059dd64f00c0f01000e010204010100b91f0813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "instructions": {
      // XCM instructions
    },
    "messageHash": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:2030"
  }
}

Two xcm.relayed from the Polkadot relay chain (one for each leg).

Example Polkadot XCM Relayed
Multi-hop XCM relayed
{
  "type": "xcm.relayed",
  "legs": [
    // same leg info as in xcm.sent
  ],
  "sender": {
    "signer": {
      "id": "7NSzbPmboW99jDFj9MoHDU8R1oNxs4pVDnNzWogcoyE2DhVZ",
      "publicKey": "0xd6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356"
    },
    "extraSigners": []
  },
  "messageId": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a",
  "waypoint": {
    "legIndex": 0,
    "chainId": "urn:ocn:polkadot:0",
    "blockNumber": "24312899",
    "blockHash": "0x884851a792d29c200fb87cf7a5f7a9fe6dee11e7caa51293e382d559830908e5",
    "timestamp": 1737032862000,
    "extrinsicPosition": 1,
    "outcome": "Success",
    "instructions": {
      // XCM instructions
    },
    "messageData": "0x041000040000001b000040b2bac9e0191e020a130000001b00002059dd64f00c0f01000e010204010100b91f0813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "messageHash": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a"
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:2034",
    "blockHash": "0x41b84a4b9121373df323648b5b2ac59e82828eea6b8f5d0ff4fae4d9290ca086",
    "blockNumber": "6783730",
    "extrinsicHash": "0x54dec578372374b8417738861dfe1ea4185be3e3b6a0183d7c8da4ca69a2e1e6",
    "timestamp": 1737032856000,
    "extrinsicPosition": 4,
    "event": {
      // XCM event data
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x041000040000001b000040b2bac9e0191e020a130000001b00002059dd64f00c0f01000e010204010100b91f0813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "instructions": {
      //XCM instructions
    },
    "messageHash": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:2030"
  }
}

Two xcm.hop from Astar:

One with direction="in" and waypoint.legIndex=0 when Astar receives the XCM.

Example Astar XCM Hop In
Multi-hop XCM hop in
{
  "type": "xcm.hop",
  "legs": [
    // same as xcm.sent
  ],
  "sender": {
    "signer": {
      "id": "7NSzbPmboW99jDFj9MoHDU8R1oNxs4pVDnNzWogcoyE2DhVZ",
      "publicKey": "0xd6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356"
    },
    "extraSigners": []
  },
  "messageId": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a",
  "direction": "in",
  "waypoint": {
    "legIndex": 0,
    "chainId": "urn:ocn:polkadot:2006",
    "blockHash": "0xcd40316a935346c6f6abc43cb986de4c3ad7ef8eecdbbb1a0eff11973e80cb6c",
    "blockNumber": "7898378",
    "timestamp": 1737032868000,
    "event": {
      // XCM event data
    },
    "outcome": "Success",
    "messageData": "0x041000040000001b000040b2bac9e0191e020a130000001b00002059dd64f00c0f01000e010204010100b91f0813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "messageHash": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a",
    "instructions": {
      // XCM instructions
    }
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:2034",
    "blockHash": "0x41b84a4b9121373df323648b5b2ac59e82828eea6b8f5d0ff4fae4d9290ca086",
    "blockNumber": "6783730",
    "extrinsicHash": "0x54dec578372374b8417738861dfe1ea4185be3e3b6a0183d7c8da4ca69a2e1e6",
    "timestamp": 1737032856000,
    "extrinsicPosition": 4,
    "event": {
      // XCM event data
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x041000040000001b000040b2bac9e0191e020a130000001b00002059dd64f00c0f01000e010204010100b91f0813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "instructions": {
      // XCM instructions
    },
    "messageHash": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:2030"
  }
}

One with direction="out" and waypoint.legIndex=1 when Astar forwards the XCM to Bifrost.

Example Astar XCM Hop Out
Multi-hop XCM hop out
{
  "type": "xcm.hop",
  "legs": [
    // same as xcm.sent
  ],
  "sender": {
    "signer": {
      "id": "7NSzbPmboW99jDFj9MoHDU8R1oNxs4pVDnNzWogcoyE2DhVZ",
      "publicKey": "0xd6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356"
    },
    "extraSigners": []
  },
  "messageId": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a",
  "direction": "out",
  "waypoint": {
    "legIndex": 1,
    "chainId": "urn:ocn:polkadot:2006",
    "blockHash": "0xcd40316a935346c6f6abc43cb986de4c3ad7ef8eecdbbb1a0eff11973e80cb6c",
    "blockNumber": "7898378",
    "timestamp": 1737032868000,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x04100104010100591f001b063c6c60acd23f191e020a13010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "messageHash": "0xf61b67b82c5611de54690f204fc358c048cc3c523600604cdff6224d843e89f9",
    "instructions": {
      // XCM instructions
    }
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:2034",
    "blockHash": "0x41b84a4b9121373df323648b5b2ac59e82828eea6b8f5d0ff4fae4d9290ca086",
    "blockNumber": "6783730",
    "extrinsicHash": "0x54dec578372374b8417738861dfe1ea4185be3e3b6a0183d7c8da4ca69a2e1e6",
    "timestamp": 1737032856000,
    "extrinsicPosition": 4,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x041000040000001b000040b2bac9e0191e020a130000001b00002059dd64f00c0f01000e010204010100b91f0813010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "instructions": {
      // XCM instructions
    },
    "messageHash": "0x728e2394a33023af2a21efa3092b4cbecbf52b21d8ad7790fd29728a2972d81a"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:2030"
  }
}

One xcm.received in Bifrost.

Example Bifrost XCM Received
Multi-hop XCM received
{
  "type": "xcm.received",
  "legs": [
    // same as xcm.sent
  ],
  "messageId": "0xf61b67b82c5611de54690f204fc358c048cc3c523600604cdff6224d843e89f9",
  "waypoint": {
    "legIndex": 1,
    // same as destination
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:2006",
    "blockHash": "0xcd40316a935346c6f6abc43cb986de4c3ad7ef8eecdbbb1a0eff11973e80cb6c",
    "blockNumber": "7898378",
    "timestamp": 1737032868000,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x04100104010100591f001b063c6c60acd23f191e020a13010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "instructions": {
      // XCM instructions
    },
    "messageHash": "0xf61b67b82c5611de54690f204fc358c048cc3c523600604cdff6224d843e89f9"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:2030",
    "blockNumber": "6352399",
    "blockHash": "0x538bba53c9f39b260143facdfbf584d6f2a614fd6754ec2adc13b2d95e1f941d",
    "timestamp": 1737032886000,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "instructions": {
      // XCM instructions
    },
    "messageData": "0x04100104010100591f001b063c6c60acd23f191e020a13010100591f001b00002059dd64f00c0f01000d01020400010100d6a5278d06644f0ca64831082203b30484d98d5a34af53f05e41ba6f6a7a8356",
    "messageHash": "0xf61b67b82c5611de54690f204fc358c048cc3c523600604cdff6224d843e89f9"
  }
}

Multi-Hop XCM Failure on Intermediate Chain

When an XCM fails on an intermediate chain, no further events are emitted beyond the point of failure. For example:

Scenario: Polkadot sends an XCM to Hydration to withdraw USDt from its account on Hydration and send it to Polkadot Asset Hub.
Failure: The XCM fails on Hydration, potentially due to insufficient funds to cover execution fees.
Outcome: The XCM is not forwarded to Asset Hub, and the journey terminates on Hydration.

Events Received in This Scenario

Polkadot xcm.sent: The initial event indicating the XCM was sent from Polkadot.
Hydration xcm.hop (direction: in): This event indicates that Hydration received the XCM. The event will include waypoint.outcome="Fail" to signify the failure.

No further events, such as xcm.hop (direction: out) or xcm.received, will occur because the XCM journey terminates at the failure point.

Polkadot XCM Sent
Polkadot XCM Sent Example
{
  "type": "xcm.sent",
  "legs": [
    {
      "from": "urn:ocn:polkadot:0",
      "to": "urn:ocn:polkadot:2034",
      "type": "hop"
    },
    {
      "from": "urn:ocn:polkadot:2034",
      "to": "urn:ocn:polkadot:1000",
      "type": "hrmp",
      "partialMessage": "0x030813000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b",
      "relay": "urn:ocn:polkadot:0"
    }
  ],
  "messageId": "0x83a8919ac73b77e10f0dab10431d88bb21e633b5a09e95717735ce4af3b8d73b",
  "waypoint": {
    "chainId": "urn:ocn:polkadot:0",
    "blockHash": "0xc4ad1854e764ac02a29bc8c26aada45c6164632c1b3c7d8ce11e623ded70539c",
    "blockNumber": "24328340",
    "timestamp": 1737125922000,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x0310000400010300a10f043205011f000700f2052a011300010300a10f043205011f000700f2052a010010010204010100a10f0813000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b2c83a8919ac73b77e10f0dab10431d88bb21e633b5a09e95717735ce4af3b8d73b",
    "instructions": { 
      // XCM instructions
    },
    "messageHash": "0x4e9c1af26b6f3cd3e65043407256c7838d01e7783265f08d39b7d408b058281f",
    "legIndex": 0
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:0",
    "blockHash": "0xc4ad1854e764ac02a29bc8c26aada45c6164632c1b3c7d8ce11e623ded70539c",
    "blockNumber": "24328340",
    "timestamp": 1737125922000,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x0310000400010300a10f043205011f000700f2052a011300010300a10f043205011f000700f2052a010010010204010100a10f0813000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b2c83a8919ac73b77e10f0dab10431d88bb21e633b5a09e95717735ce4af3b8d73b",
    "instructions": {
      // XCM instructions
    },
    "messageHash": "0x4e9c1af26b6f3cd3e65043407256c7838d01e7783265f08d39b7d408b058281f"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:1000"
  }
}
Hydration XCM Hop In
Hydration XCM Hop In Example
{
  "type": "xcm.hop",
  "legs": [
    {
      "from": "urn:ocn:polkadot:0",
      "to": "urn:ocn:polkadot:2034",
      "type": "hop"
    },
    {
      "from": "urn:ocn:polkadot:2034",
      "to": "urn:ocn:polkadot:1000",
      "type": "hrmp",
      "partialMessage": "0x030813000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b",
      "relay": "urn:ocn:polkadot:0"
    }
  ],
  "messageId": "0x83a8919ac73b77e10f0dab10431d88bb21e633b5a09e95717735ce4af3b8d73b",
  "direction": "in",
  "waypoint": {
    "legIndex": 0,
    "chainId": "urn:ocn:polkadot:2034",
    "blockHash": "0x3720e3ae7c60da6f758b39dd057bc38ce989a3e6a9d6bd3a3e1c7a69fe4f6852",
    "blockNumber": "6790464",
    "timestamp": 1737125952000,
    "event": {
      // XCM event
    },
    "outcome": "Fail",
    "messageData": "0x0310000400010300a10f043205011f000700f2052a011300010300a10f043205011f000700f2052a010010010204010100a10f0813000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b2c83a8919ac73b77e10f0dab10431d88bb21e633b5a09e95717735ce4af3b8d73b",
    "messageHash": "0x4e9c1af26b6f3cd3e65043407256c7838d01e7783265f08d39b7d408b058281f",
    "instructions": {
      // XCM instructions
    }
  },
  "origin": {
    "chainId": "urn:ocn:polkadot:0",
    "blockHash": "0xc4ad1854e764ac02a29bc8c26aada45c6164632c1b3c7d8ce11e623ded70539c",
    "blockNumber": "24328340",
    "timestamp": 1737125922000,
    "event": {
      // XCM event
    },
    "outcome": "Success",
    "error": null,
    "messageData": "0x0310000400010300a10f043205011f000700f2052a011300010300a10f043205011f000700f2052a010010010204010100a10f0813000002043205011f0002093d00000d0102040001010081bd2c1d40052682633fb3e67eff151b535284d1d1a9633613af14006656f42b2c83a8919ac73b77e10f0dab10431d88bb21e633b5a09e95717735ce4af3b8d73b",
    "instructions": {
      // XCM instructions
    },
    "messageHash": "0x4e9c1af26b6f3cd3e65043407256c7838d01e7783265f08d39b7d408b058281f"
  },
  "destination": {
    "chainId": "urn:ocn:polkadot:1000"
  }
}