Is the "xc" prefix necessary?

Hey all,

I wanted to start a discussion around the use of the “xc” prefix for assets on Moonbeam.

After chatting with a bunch of people privately, there seems to be an agreement that including “xc” in token names on Moonbeam, for example xcDOT, is very confusing and perhaps unnecessary.

A few questions that might help begin discussions:

Does the xc prefix confuse retail users?

Is xcDOT really that different from “native” DOT that we need to confuse users with a different naming system?

How are non-native assets handled on Ethereum L2s or other parachains? Is there anything we can learn from other chains?

How do applications on Moonbeam currently display xcDOT? Is it good enough that applications adjust their front ends, or should we kill the entire “xc” system altogether?

Is xcDOT real DOT?

Why do bridged tokens like Wormhole USDC get away with not naming their token correctly?

Let’s discuss!


Dear All,

I don’t understand why we must lost time during the next 10 years to explain to every new user one by one why xcDOT is the same than DOT inside MoonBeam.
It’s a lost of time, a filter on the entry of the network.

Technically, inside the chain it can be xcDOT the technical name have no importance.
My point is only regarding all web interface / chain explorer / wallet.
The fact than they used an xcDOT must be transparent for an end user and never seen xcDOT nowhere.

I can be only agree on a governance choice to make disapear this prefix inside all communication/document/wiki/web interface/chain explorer/wallet at destination to normal user.
To be used only inside technical or very precise communication read by a very advanced or technical public.

Best Regards,

No Risk - No Fun


Thanks No Risk!

Yes, I should clarify that I’m talking about retail facing channels, as you mentioned, block explorers, wallets, applications, on social media and other public forums.

From a technical perspective, DOT on Moonbeam would continue to be an XC-20 asset, but it’s not necessary for retail users to understand what this means.


Thanks for opening this discussion. I think that’s definitely the right place to have such debates.

First of all the truth is: xcDOT is definitely different from the native DOT token, even if it’s backed 1:1. There is a huge difference between native tokens and ERC20 in the EVM world. On Moonbeam, the “xc” prefix makes the distinction between assets that are (and aren’t) on the reserve chain. Here, of course, we’re talking about a technical point, but everything is technical in the blockchain world.

Words have a precise meaning, in everyday life, and even more so when talking about technical terms. For example, HTTP is not HTTPS. Just because the average user doesn’t understand the difference doesn’t mean they should be mixed.

I really don’t want it, but if one day a problem arises on this parachain, it may very well be that the xcDOT suffers the consequences while the DOT is doing very well.

That’s why I am personally very happy to have DOT in my DOT wallet and xcDOT in my Moonbeam wallet.

On the other hand, our ecosystem has a reputation for being elitist and overly complex. It’s probably true. But, in my humble opinion, that has to be settled at the dApps level!

On StellaSwap, we talk about “DOT.xc”. On BeamSwap we talk about “xcDOT”. On Moonwell we talk about “xcDOT” and on Orbiter we also talk about xcDOT.
Have these lexical discrepancies ever stopped anyone from using a dApp on Moonbeam? I highly doubt it.

If we consider the normal user, he probably won’t even notice it, because he will only see the token logo. I’m hardly exaggerating.

My opinion: let dApps do whatever they want on the front-end part, the Moonbeam blockchain is absolutely right to distinguish between native token and xcToken.

Why do bridged tokens like Wormhole USDC get away with not naming their token correctly?

This is a completely different subject, which is probably more debatable. When you type “USDC” into Moonscan, you have at least 4 or 5 tokens. It’s not very user-friendly but anyone can deploy a token with the ticker of their choice. Web3 is permission-less per nature: I could also create my own USDC on this chain and airdrop you billions of them (you’re welcome).

I believe the question should rather be: how do we highlight native USDC when it’ll arrive here over bridged tokens versions (Wormhole, Nomad, Multichain) ?


hey Don, thanks for starting this discussion. I appreciate your effort!

In fact, based on my experience with the community, I’ve rarely seen any confusion. I can’t recall ever being asked questions about why it’s called xcDOT instead of just DOT. on the contrary, it seems quite logical to me. the xc signifies that this is a cross-chain asset. It can’t be directly sent to an exchange / polkadot itself or another parachain. Instead, one must use XCM to transfer it to its native chain. by removing xc, we’d be taking away a distinctive feature. I personally like the xc prefix, it reminds me somewhat of the 0x vibe in Ethereum.

considering the smart contracts are already deployed, changing the token’s name isn’t straightforward and would require significant work. I agree with Marin that ecosystem devs might not include xc in their UI if it causes confusion.

I’m not arguing, just thinking out loud


As we’re discussing about retail, some might attempt to send XCDOT directly to CEX and face potential losses. Moreover, sending XCDOT to a non-ZRX address could result in additional issues.
I find it more confusing because we have to explain it user by user, as there is an actual difference.

Other parachain have also this issue to don’t send direct to CEX, and they name it DOT.

Also in the future, we will have native USDC create by Circle.
It will be so naming xcUSDC.
We can already see a wormhole bridge USDC name USDC.
It’s confusing than the native token will not have the USDC name but the bridge token will have it.

I understand both sides of the coin tbh.

On one hand you have probably a bit better UX but then a bit more risk of confusion, and a less accurate representation of what the asset really is (I entirely agree with the statement of “xcDOT” is not “DOT” from a technical perspective!)

On the other hand you sacrifice a bit UX but by being more accurate from what the asset actually represents, a wrapped representation.

For example, Statemint’s DOT it is actually DOT! It is not wrapped because the actual DOTs are not being held by a Statemint Sovereign account on Polkadot etc. When you move DOTs, they are burned on Polkadot, and minted on Statemint. In the case of Relay Chain ↔ Parachain or Parachain ↔ Parachain, this is a reserve transfer asset, in which you are actually trusting the reserve chain (Polkadot for DOT) and its governance system to hold true to their word of keeping the DOTs locked in the Parachain’s Sovereign account while that liquidity is being used in the Parachain.

I understand end users don’t really need to know all this, but IMO, UX can be solved on a UI perspective (Wallet, dApps) more than at a on-chain perspective. On-chain should represent and depict the true state of what the asset means.

With Wormhole’s assets or any other bridge, is important to represent who is vouching for that asset, so a user understands what risk profile is associated ot that asset. Right now, you would not want to have a Multichain asset for example, so if a wallet just displays USDC, that is BAD.

Love the discussion tho!


Agreed. UX can be solved by improving the UI. xcDOT and DOT are different.

Agreed. Something in the UI can remind users about the difference between xcDOT and DOT. As you mentioned in the post, there is a difference between xcDOT and DOT.