You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Hardhat铸造Fantom链IBC代币失败求助

问题分析与解决方案

核心问题定位

你遇到的交易未上链、chainId显示为31337的问题,根源是Hardhat默认使用本地测试网(Hardhat Network)而非Fantom测试网。此外,直接调用代币合约的mint方法可能存在权限限制。


分步解决

1. 强制指定Fantom测试网运行脚本

Hardhat默认会启动本地链(chainId 31337)执行脚本,必须通过--network参数指定目标网络。执行命令时替换你的脚本文件名:

npx hardhat run --network fantom your-script-file.js

这会让交易真正发送到Fantom测试网,之后就能在FTMScan测试网查询到交易哈希。

2. 等待交易上链并检查回执

修改脚本,添加交易确认逻辑,避免仅拿到未上链的交易对象:

const hre = require("hardhat");
const ABI = require("./utils/interchainTokenABI");

const tokenAddr = "0xDEdbd54Ffc534a1aEC6D290E7FC5a337218D2708"
const destAddr = "0xD5070f2a2C706C086407Ac8F3Bd4F21e3E46Cb99"

var main = async () => {
    var signers = await hre.ethers.getSigners()
    var token = new hre.ethers.Contract(tokenAddr, ABI, signers[0])

    var tx = await token.mint(destAddr, 2000, { gasLimit: 300000 }) // 手动指定gas限制避免估算失败
    var receipt = await tx.wait() // 等待交易上链确认
    console.log("交易哈希:", tx.hash);
    console.log("交易状态:", receipt.status ? "成功" : "失败");
}

main().then(() => process.exit()).catch(err => console.error(err));

3. 验证mint方法的权限限制

Axelar门户创建的跨链代币,其mint方法通常仅允许Axelar的Token Manager合约调用,而非普通用户账户。如果直接调用代币合约的mint失败,需要调整逻辑:

  • 改为调用Axelar Token Manager合约的对应方法(需获取该合约的ABI和地址)
  • 遵循Axelar跨链铸币的标准流程(通过Gateway发送跨链消息触发铸币)

4. 确认配置正确性

  • 检查.env中的私钥是否对应Fantom测试网的账户
  • 验证hardhat.config.js中的Fantom测试网RPC地址可用:https://rpc.ankr.com/fantom_testnet
  • 确保ABI文件包含正确的mint函数签名

内容的提问来源于stack exchange,提问作者Erick Calder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:19:57