XRPL EVM转XRPL钱包Axelar跨链XRP转账失败求助
问题分析与修复方案
你的转账失败由以下几个核心问题导致:
1. 收款地址编码错误
XRPL的r地址采用Base58编码,你当前用ethers.toUtf8Bytes转换的方式完全错误。正确流程是先将Base58解码为原始字节,再转为十六进制格式。
2. 目标链标识符错误
Axelar测试网中,XRPL测试网的链名称应为xrpl-testnet,而非xrpl(后者是主网标识符)。
3. 原生XRP与Wrapped XRP混淆
你的钱包持有原生XRP(通过0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE地址查询的余额),但代码误用了Wrapped XRP的Token ID。原生XRP转账需要使用专门的跨链函数,而非ERC20代币的转账逻辑。
修复后的完整代码
import { ethers } from "ethers"; import bs58 from "bs58"; // 先执行安装:npm install bs58 // --- 配置项 --- const privateKey = "你的XRPL EVM测试网钱包私钥"; const rpcUrl = "https://rpc.testnet.xrplevm.org"; const itsContractAddress = "0xB5FB4BE02232B1bBA4dC8f81dc24C26980dE9e3C"; const recipientXrplAddress = "raxF7y2wirxDZt1Q1qGHCYN7dMSD41Rdwv"; // 转账金额:1 XRP(原生XRP单位为wei,1 XRP = 1e18 wei) const amountInWei = ethers.parseUnits("1", 18); // --- 主函数 --- async function sendXrpFromEvmToXrpl() { try { // 1. 连接XRPL EVM测试网 const provider = new ethers.JsonRpcProvider(rpcUrl); const wallet = new ethers.Wallet(privateKey, provider); console.log("钱包地址:", wallet.address); // 2. 加载ITS合约 const itsAbi = [ "function interchainTransferNative(string destinationChain, bytes recipient, bytes metadata) external payable" ]; const its = new ethers.Contract(itsContractAddress, itsAbi, wallet); // 3. 正确编码XRPL收款地址 const decodedRecipient = bs58.decode(recipientXrplAddress); const encodedRecipient = ethers.hexlify(decodedRecipient); console.log("编码后的收款地址:", encodedRecipient); // 4. 检查原生XRP余额 const balance = await provider.getBalance(wallet.address); console.log("原生XRP余额:", ethers.formatUnits(balance, 18), "XRP"); // 5. 发起原生XRP跨链转账 console.log("开始跨链转账..."); const tx = await its.interchainTransferNative( "xrpl-testnet", // 测试网链标识符 encodedRecipient, // 正确编码的收款地址 "0x", // 无元数据 { value: amountInWei } // 附带转账金额 ); console.log("交易已提交,哈希:", tx.hash); // 6. 等待交易确认 const receipt = await tx.wait(); console.log("交易已确认,区块高度:", receipt.blockNumber); console.log(`✅ 成功向XRPL地址 ${recipientXrplAddress} 转账1 XRP`); console.log("请等待Axelar中继节点将资金送达XRPL网络。"); } catch (err) { console.error("❌ 转账失败:", err); } } sendXrpFromEvmToXrpl();
额外注意事项
- 安装依赖:确保执行
npm install ethers bs58完成库安装。 - Gas费用:钱包需保留足够原生XRP支付交易手续费。
- 参数验证:始终核对Axelar官方文档确认测试网/主网的链标识符与合约地址。
内容的提问来源于stack exchange,提问作者Mo .
相关产品推荐
相关产品推荐

