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

部署Solidity合约报invalid BigNumber string错误如何解决

报错触发原因

你遇到的Error encoding arguments: Error: invalid BigNumber string (argument="value", value="", code=INVALID_ARGUMENT, version=bignumber/5.5.0)报错核心原因是:
合约的构造函数定义了uint256类型的入参change,部署合约时必须传入符合格式的无符号整数作为初始化参数,但你在部署操作时没有在参数输入栏填入对应值,传入了空字符串。ethers.js在对构造函数参数做ABI编码时,空字符串无法被转换为Solidity要求的uint256类型对应的BigNumber格式,因此抛出参数无效错误,导致合约部署失败。

修复方案

根据实际业务需求选择以下任意一种方案即可:

  • 部署时传参:在部署工具的构造参数输入区域填入合法的正整数值(例如0、100等),不要留空,确认参数填写完成后再发起部署交易。
  • 给构造参数加默认值:如果希望部署时不传参也能正常初始化,可以给构造函数的入参设置默认值,修改后的合约代码如下:
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.5;
contract local{

   uint256 count;
   function getter() public view returns(uint256) {
       return count ;
   }

   // 为入参change设置默认值,示例默认初始化为0
   constructor (uint256 change = 0){
       count  = change;
  }
}
  • 移除不必要的构造入参:如果count的初始值是固定值,不需要在部署时动态传入,可以直接去掉构造函数的参数,在变量声明时或构造函数内写死初始值即可,示例代码如下:
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.5;
contract local{
   // 声明变量时直接初始化
   uint256 count = 0;
   function getter() public view returns(uint256) {
       return count ;
   }

   constructor (){
       // 也可以选择在构造函数内赋值:count = 0;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:27:26