Skip to content

外部XC-20

Cross-Chain Assets Precompiled Contracts Banner

概览

如同XC-20概况页面中所述,XC-20有两种类型:外部的和可铸造的。外部和可铸造的XC-20之间最大的不同为外部XC-20代表那些在中继链或是其他平行链中锁定在Moonbeam主权账户的资产。相反地,可铸造XC-20代表那些直接在Moonbeam链上铸造或是销毁的资产但拥有原生XCM互操作性功能。此教程将涵盖外部XC-20类型的资产。

虽然XC-20是Substrate资产,Moonbeam通过一个预编译合约构建了一个易于使用的ERC-20接口使与Substrate API之间的交互具体化。这让开发者能够如同与ERC-20交互一般与XC-20交互。请注意,XC-20预编译合约并不支持跨链转移,其为根据尽量与标准ERC-20接口相同的目标构建。

外部XC-20资产使用_xc_作为其名称的前缀。举例而言,Kusama的KSM在Moonriver将会以_xcKSM_表现。在此类资产获得使用之前,他们需要注册并被连接至其他生态系统的资产,此过程将会通过民主提案的白名单过程执行。

如果你对在Moonbase Alpha测试网测试XCM功能有兴趣,请通过我们的Discord Server联络我们。关于XCM的更多信息,您可以查看我们的官方文档网站的XCM概况页面。

本教程将会带您了解如何使用Polkadot.js在Moonbase Alpha测试网上获取可用的外部XC-20资产并计算他们的预编译合约。

现有的外部XC-20资产

目前每个网络可用的外部XC-20资产列表如下所示:

原始网络 XC-20表现形式 XC-20地址
Polkadot xcDOT 0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080
Acala xcaUSD 0xfFfFFFFF52C56A9257bB97f4B2b6F7B2D624ecda
Acala xcACA 0xffffFFffa922Fef94566104a6e5A35a4fCDDAA9f

*您可以在Polkadot.js Apps上查询资产ID

原始网络 XC-20表现形式 XC-20地址
Relay Chain Alphanet xcUNIT 0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080
Basilisk Alphanet xcBSX 0xFFfFfFfF4d0Ff56d0097BBd14920eaC488540BFA
Bifrost Alphanet xcBNC 0xFffFFFfF1FAE104Dc4C134306bCA8e2E1990aCfd
Calamari Alphanet xcKMA 0xFFffFffFA083189f870640b141ae1E882c2b5bad
Crust/Shadow Alphanet xcCSM 0xffFfFFFf519811215E05eFA24830Eebe9c43aCD7
Karura Alphanet xcKAR 0xFfFFFFfF08220AD2E6e157f26eD8bD22A336A0A5
Karura Alphanet xckUSD 0xFfFffFFfa1B026a00FbAA67c86D5d1d5BF8D8228
Khala Alphanet xcPHA 0xffFfFFff8E6b63d9e447B6d4C45BDA8AF9dc9603
Kintsugi Alphanet xcKINT 0xFFFfffff27C019790DFBEE7cB70F5996671B2882
Kintsugi Alphanet xckBTC 0xFffFfFff5C2Ec77818D0863088929C1106635d26
Litentry Alphanet xcLIT 0xfffFFfFF31103d490325BB0a8E40eF62e2F614C0
Parallel Heiko Alphanet xcHKO 0xffffffFF394054BCDa1902B6A6436840435655a3
Statemine Alphanet xcMRMRK 0xFFffffFfd2aaD7f60626608Fa4a5d34768F7892d

*您可以在Polkadot.js Apps上查询资产ID

获取外部XC-20资产的列表

要获取Moonbase Alpha测试网上目前可用的外部XC-20资产列表,请导向至Polkadot.js Apps并确保您已连接至Moonbase Alpha。进入页面后,点击Developer标签并在下拉菜单中选择Chain State。接着,您可以跟随以下步骤查询可用的外部XC-20资产:

  1. selected state query下拉菜单中,选择assets

  2. 选择 asset extrinsic

  3. 关掉 include option 滑块
  4. 点击 + 按钮发送查询

Fetch list of cross-chain assets

点击按钮后结果将会显现,包含资产以及Moonbase Alpha上已注册的外部XC-20的额外信息。

获取外部XC-20资产的元数据

要快速获得特定XC-20资产的信息,如名称、XC-20表现形式或是资产的位数,您可以使用metadata函数以获得其元数据。举例而言,您可以使用资产ID42259045809535163221576417993425387648,并跟随以下步骤进行操作:

  1. selected state query下拉菜单中,选择assets
  2. 选择 asset extrinsic
  3. 关掉 include option 滑块
  4. 输入调用 asset extrinsic返回的资产ID。请注意,如果您复制并粘贴带有逗号的资产ID,则逗号将被自动删除,并且数字可能会被截断。确保它与资产ID完全相同
  5. 点击 + 按钮发送查询

Get asset metadata

在元数据的结果显现后,您可以查看与资产ID相关的VUNIT外部XC-20信息。

计算外部XC-20的预编译地址

现在您已经获得可用的外部XC-20资产列表,但在您通过预编译合约与之交互前,您需要通过资产ID生成预编译地址。

外部XC-20预编译的地址通过以下公式计算:

address = "0xFFFFFFFF..." + DecimalToHex(AssetId)

根据上述的计算公式,第一个步骤为获得资产ID的u128表现形式并将其转换为十六进制数值。您可以使用您的搜寻引擎查看适合的转换工具。举例而言,资产ID42259045809535163221576417993425387648的十六进制数值为1FCACBD218EDC0EBA20FC2308C778080

外部XC-20预编译仅可以落在0xFFFFFFFF000000000000000000000000000000000xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF范围之间。

由于以太坊地址的长度为40个字符,您的预编译地址将会由8个F开始,接着输入0直到地址加上十六进制数值后为40个字符。

十六进制数值的长度已经为32个字符,因此前缀的8个F加上十六进制数值您即会获得40个字符长度的地址,并可用其与XC-20预编译合约交互。举例而言,此示例中提及资产ID的完整地址为0xFFFFFFFF1FCACBD218EDC0EBA20FC2308C778080

现在您已经成功计算外部XC-20的预编译地址,您可以在Remix上使用地址如同与ERC-20交互一般与XC-20资产交互。要学习如何与XC-20资产交互,请查看XC-20概况页面中的如何使用Remix与预编译合约交互的部分。