外部XC-20¶
概览¶
如同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 |
Astar | xcASTR | 0xFfFFFfffA893AD19e540E172C10d78D4d479B5Cf |
Darwinia | xcRING | 0xFfffFfff5e90e365eDcA87fB4c8306Df1E91464f |
Interlay | xcIBTC | 0xFFFFFfFf5AC1f9A51A93F5C527385edF7Fe98A52 |
Interlay | xcINTR | 0xFffFFFFF4C1cbCd97597339702436d4F18a375Ab |
Parallel | xcPARA | 0xFfFffFFF18898CB5Fe1E88E668152B4f4052A947 |
Phala | xcPHA | 0xFFFfFfFf63d24eCc8eB8a7b5D0803e900F7b6cED |
Statemint | xcUSDT | 0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d |
*您可以在Polkadot.js Apps上查询资产ID
原始网络 | XC-20表现形式 | XC-20地址 |
---|---|---|
Kusama | xcKSM | 0xFfFFfFff1FcaCBd218EDc0EbA20Fc2308C778080 |
Bifrost | xcBNC | 0xFFfFFfFFF075423be54811EcB478e911F22dDe7D |
Calamari | xcKMA | 0xffffffffA083189F870640B141AE1E882C2B5BAD |
Crab | xcCRAB | 0xFFFffFfF8283448b3cB519Ca4732F2ddDC6A6165 |
Crust-Shadow | xcCSM | 0xffFfFFFf519811215E05eFA24830Eebe9c43aCD7 |
Heiko | xcHKO | 0xffffffFF394054BCDa1902B6A6436840435655a3 |
Integritee | xcTEER | 0xFfFfffFf4F0CD46769550E5938F6beE2F5d4ef1e |
Karura | xcKAR | 0xFfFFFFfF08220AD2E6e157f26eD8bD22A336A0A5 |
Karura | xcaUSD | 0xFfFffFFfa1B026a00FbAA67c86D5d1d5BF8D8228 |
Khala | xcPHA | 0xffFfFFff8E6b63d9e447B6d4C45BDA8AF9dc9603 |
Kintsugi | xcKINT | 0xfffFFFFF83F4f317d3cbF6EC6250AeC3697b3fF2 |
Kintsugi | xckBTC | 0xFFFfFfFfF6E528AD57184579beeE00c5d5e646F0 |
Litmus | xcLIT | 0xfffFFfFF31103d490325BB0a8E40eF62e2F614C0 |
Shiden | xcSDN | 0xFFFfffFF0Ca324C842330521525E7De111F38972 |
Statemine | xcRMRK | 0xffffffFF893264794d9d57E1E0E21E0042aF5A0A |
Statemine | xcUSDT | 0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d |
*您可以在Polkadot.js Apps上查询资产ID
原始网络 | 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资产:
-
在selected state query下拉菜单中,选择assets
-
选择 asset extrinsic
- 关掉 include option 滑块
- 点击 + 按钮发送查询
点击按钮后结果将会显现,包含资产以及Moonbase Alpha上已注册的外部XC-20的额外信息。
获取外部XC-20资产的元数据¶
要快速获得特定XC-20资产的信息,如名称、XC-20表现形式或是资产的位数,您可以使用metadata函数以获得其元数据。举例而言,您可以使用资产ID42259045809535163221576417993425387648
,并跟随以下步骤进行操作:
- 在selected state query下拉菜单中,选择assets
- 选择 asset extrinsic
- 关掉 include option 滑块
- 输入调用 asset extrinsic返回的资产ID。请注意,如果您复制并粘贴带有逗号的资产ID,则逗号将被自动删除,并且数字可能会被截断。确保它与资产ID完全相同
- 点击 + 按钮发送查询
在元数据的结果显现后,您可以查看与资产ID相关的VUNIT外部XC-20信息。
计算外部XC-20的预编译地址¶
现在您已经获得可用的外部XC-20资产列表,但在您通过预编译合约与之交互前,您需要通过资产ID生成预编译地址。
外部XC-20预编译的地址通过以下公式计算:
address = "0xFFFFFFFF..." + DecimalToHex(AssetId)
根据上述的计算公式,第一个步骤为获得资产ID的u128表现形式并将其转换为十六进制数值。您可以使用您的搜寻引擎查看适合的转换工具。举例而言,资产ID42259045809535163221576417993425387648
的十六进制数值为1FCACBD218EDC0EBA20FC2308C778080
。
外部XC-20预编译仅可以落在0xFFFFFFFF00000000000000000000000000000000
和0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
范围之间。
由于以太坊地址的长度为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与预编译合约交互的部分。
| Created: June 24, 2022