Currently, tracking transactions across chains is not easy. This issue is addressed by XCM Explorer.
What it does
It allows users to list all cross-chain transactions for a given address on Kusama, Moonriver, Karura and Basilisk. Both hex and SS58 style addresses are supported. The information for both sender and recipient is only available for the supported chains, that is why many transactions show only one part (sent or received) part of XCM.
How we built it
We used SubQuery to index the four chains. UI is build with React/TypeScript. Messages between chains are linked by the message hashes. GraphQL queries are made from the UI to fetch two related pieces of XCM across four databases.
Challenges we ran into
The information available for different type of messages (HRMP, DMP an UMP for those in the know) is not consistent. For example, the message hash which is used inside parachains themselves readily available or not available at all.
Accomplishments that we're proud of
We manages index and link all the related parts of XCM on four chains despite the challenge above.
What we learned
It is difficult to make a generic tool for a something so versatile and flexible as XCM format.
What's next for XCM Explorer
The parsing of information can be significantly improved, as for now, most of the information is just given in JSON format. And, of course, more chains should be indexed to make this tool useful for many users.