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地址
Relay Chain Alphanet xcUNIT 0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080
Basilisk Alphanet xcBSX 0xFFfFfFfF4d0Ff56d0097BBd14920eaC488540BFA
Clover Alphanet xcCLV 0xFfFfFffFD3ba399d7D9d684D94b22767a5FA1cCA
Crust/Shadow Alphanet xcCSM 0xffFfFFFf519811215E05eFA24830Eebe9c43aCD7
Integritee Alphanet xcTEER 0xFfFfffFf4F0CD46769550E5938F6beE2F5d4ef1e
Kintsugi Alphanet xckBTC 0xFffFfFff5C2Ec77818D0863088929C1106635d26
Kintsugi Alphanet xcKINT 0xFFFfffff27C019790DFBEE7cB70F5996671B2882
Litentry Alphanet xcLIT 0xfffFFfFF31103d490325BB0a8E40eF62e2F614C0
Pangolin Alphanet xcPARING 0xFFFffFfF8283448b3cB519Ca4732F2ddDC6A6165
Statemine Alphanet xcTT1 0xfFffFfFf75976211C786fe4d73d2477e222786Ac

*您可以在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与预编译合约交互的部分。

Last update: March 17, 2023
| Created: June 24, 2022