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

部署智能合约传递参数时报错,请求排查原因

部署Solidity合约时no matching function错误排查

问题背景

我尝试部署一个带有如下构造函数的智能合约:

constructor(
        string memory name,
        string memory symbol,
        uint256 initialSupply,
        address _marketingWallet
    )

部署脚本deploy.js代码:

const token = await Token.deploy("MYTOKEN", "TOK", 1000000000, "0x047B2f4Da90dA60916CbB007158f3900BcF3084f"); // 已修改营销钱包地址

执行部署命令:

npx hardhat run --network testnet scripts/deploy.js

出现错误:

npx hardhat run --network testnet scripts/deploy.js
Deploying contracts with the account: 
TypeError: no matching function (argument="key", value="address", code=INVALID_ARGUMENT, version=6.5.1)
    at makeError (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\utils\errors.ts:670:21)
    at assert (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\utils\errors.ts:694:25)
    at assertArgument (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\utils\errors.ts:706:5)
    at Interface.getFunctionName (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\abi\interface.ts:542:23)
    at buildWrappedMethod (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\contract\contract.ts:334:34)
    at BaseContract.getFunction (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\contract\contract.ts:841:22)
    at Object.get (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\node_modules\ethers\src.ts\contract\contract.ts:747:39)
    at main (C:\Users\son\Documents\Crypto Tuto\Hardhat_testbsc\scripts\deploy.js:21:39)
    at processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'INVALID_ARGUMENT',
  argument: 'key',
  value: 'address'
}

可能的错误原因

  • ABI不匹配:合约修改后未重新编译,导致部署脚本引用的是旧ABI。执行npx hardhat clean && npx hardhat compile重新生成最新ABI。
  • 参数类型或格式问题:构造函数中uint256类型的initialSupply,若传入的数值格式不符合要求(比如误传字符串)会触发错误。可尝试用ethers.parseUnits("1000000000", 18)标准化数值格式(根据合约小数位数调整)。
  • 版本兼容性问题:ethers 6.5.1与当前Hardhat版本不兼容,导致合约方法调用逻辑异常。检查package.json中的版本配置,升级或降级到匹配版本(比如Hardhat 2.19+适配ethers 6.x系列)。
  • 部署脚本代码错误:错误指向脚本第21行,需检查是否误写了类似Token.address的代码(错误访问合约属性而非调用deploy方法),确保是正确调用Token.deploy()。
  • 网络配置错误:hardhat.config.js中testnet网络的url、chainId、accounts配置有误,导致ethers无法正确获取签名账户,间接引发函数匹配错误。验证网络配置的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:15:30