[Referendum: 79] Register XC-20 xcWBTC.multi, xcETH.multi and xcUSDC.multi tokens

[Referendum: 79] [Status: Voting] Register XC-20 xcWBTC.multi, xcETH.multi and xcUSDC.multi tokens

The Multichain team in collaboration with the Equilibrium dev team has developed a solution for cross-chain transfers by using xTokens system contract. This development allows for user-friendly asset transfers between EVM networks like Ethereum, Polygon, e.t.c., and Polkadot ecosystem parachains.

Multichain is a cross-chain router protocol designed for bridging assets between different blockchains. Multichain supports more than 70 blockchain networks both EVM and non-EVM with ~$1.6B TVL.

We propose a creation of 3 distinct XC-20 tokens to leverage the cross-chain smart contract functionality on Moonbeam. Here are the details of proposed tokens including corresponding Ethereum and Moonbeam ERC-20s:

Symbol Name Decimals Ethereum ERC-20 Moonbeam ERC-20
xcWBTC.multi Wrapped BTC 8 WBTC WBTC
xcETH.multi Ethereum 18 ETH ETH
xcUSDC.multi USD Coin 6 USDC USDC

When registered, these assets will be available to all of the Polkadot parachains connected to Moonbeam, opening up a way for a first truly cross-chain asset bridging solution for the entire Polkadot ecosystem.


Hey, multichain, thank you for your proposal.

do I understand correctly, if the proposal passes, then the existing USDC/WBTC/ETH.multi will be replaced by xcUSDC/xcWBTC/xcETH.multi?

if not, what’s the point of using multiple .multi tokens in the ecosystem? because it can create some confusion.

in addition, what will these tokens be provided with and how will it work, could you give some examples?

for example, when we bridge USDC from Ethereum to Moonbeam, then we lock the native USDC on the Ethereum side and get a bridged representation in Moonbeam. but what will it look like with xc.multi assets?

1 Like

Hello, thank you for the questions, here are some clarifications:

  1. New mintable XC-20 tokens will be created, existing tokens will remain.
  2. XC-20 tokens are XCM compatible and allow for cross-chain transfers across Polkadot ecosystem and its parachains.
  3. Example: Send XC-20 WBTC to DeFi Parachain and use it as collateral or lending liquidity there.
  4. You are correct, but there is more to this: the xTokens smart contract acts as a router built-in to Multichain technology: when users select as destination a Polkadot parachain, the XC-20 token is created through this router and is transferred directly to the parachain via Polkadot’s XCM. When the destination is Moonbeam the bridged representation of token is created which is ERC-20
1 Like

thanks for the answer. yeah, I understand what XC-20 tokens are and their purpose. but I want to understand how it will work via multichain technology. do you have any document where the community can get acquainted with how this will work?

1 Like

This is will work throw XcmTransferProxy contract which uses the xTokens system contract to do an XCM transfer from Moonbeam to one of the Polkadot ecosystem parachain.

Proxy call flow

  • user sign a transaction on source chain with one of these methods: anySwapOutNativeAndCall, anySwapOutAndCall, or anySwapOutUnderlyingAndCall.
  • MPC network catch user tx and sign execution transaction to Moonbeam
  • one of two router methods on Moonbeam called: anySwapInAndExec or anySwapInUnderlyingAndExec
  • mint/transfer XC-20 tokens from Router to XcmTransferProxy contract
  • call XcmTransferProxy::exec() proxy method
  • construct and execute xTokens::transfer call from proxy
  • if error is catched - send tokens to emergency receiver address

Source code:

1 Like

We tested it with Mumbai <-> Moonbase <-> Equilibrium scheme.
Here additional information about our tests:

Contracts on Mumbai (Polygon testnet):

  • Router: 0x8E680018D67C57889083c23786C225F730C54Fb5

Contracts on Moonbase (Moonbeam testnet):

  • Router: 0xDC42728B0eA910349ed3c6e1c9Dc06b5FB591f98
  • XcmTransferProxy: 0xa545680bD22058b7479c16E59a286df9b6Be2F6E

Example of deposit transaction:

  1. User deposit tx on Mumbai: 0xd0a449c0920a91c91fe3551e7f63c6070bedcfd6beaec10d1a76dd62271573aa
  2. Router call XcmTransferProxy on Moonbase: 0x94c87e95f4d8e4217a49cad0b7e331a0b76f086fd46a671a04cd612506f18e4b
  3. Funds received on Equilibrium Parachain: Polkadot/Substrate Portal

As a new user I can’t post more than 2 links in a post, so please go to mumbai.polygonscan to check the first tx, and moonbase.moonscan for second

1 Like

awesome, thanks for sharing the detailed answer, I really appreciate it!