调用IDOmaster合约创建IDO时报execution reverted: call to non-contract错误如何解决
错误原因
你遇到的execution reverted: Address: call to non-contract是OpenZeppelin Address库的标准报错,触发条件是合约尝试对一个没有部署任何合约代码的地址发起合约调用。
结合你给出的调用参数和场景,该问题90%以上的概率是地址/链环境不匹配导致的:你本地单独测试IDOmaster时,已经在本地测试环境部署了对应的Token等依赖合约,但是通过Web3 Inject连接到目标链部署后,你传入调用参数里的地址,在当前连接的链上没有对应合约。
排查解决步骤
- 确认Remix当前连接的链与你要使用的Token、依赖合约部署的链完全一致,打开钱包查看当前链ID,和依赖合约部署的链ID核对,避免连错链
- 校验你调用时传入的Token地址、元组第一个参数
0x9cE15ffdb115248137c6578C4f7C28083E8957Bd,在当前连接的链上是否为有效合约地址:直接在对应链的区块浏览器搜索地址,确认地址下存在已部署的合约代码 - 检查IDOmaster创建IDO的逻辑中,是否存在硬编码的固定调用地址(比如手续费合约、路由合约地址等),确认这些固定地址在当前部署的链上也已部署有效合约
- 确认Remix传参格式正确:元组参数不要加多余的转义符,数值类型参数不要套字符串引号,避免地址解析异常被识别为无效合约地址
内容的提问来源于stack exchange,提问作者Admin Vitwi
相关产品推荐
相关产品推荐

