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

基于ETH区块链开发待办清单dapp新增任务报invalid address错误

问题原因

invalid address错误触发的核心原因是调用合约写入类方法时,truffle-contract没有获取到交易发起方的地址,无法构造合法的交易 payload。

修复步骤
    1. 修正账户获取逻辑
      web3 1.0+ 版本中web3.eth.accounts已废弃,需使用异步的getAccounts方法获取账户列表,修改loadAccount方法:
loadAccount: async () => {
    // Set the current blockchain account
    const accounts = await web3.eth.getAccounts()
    App.account = accounts[0];
    console.log(App.account);
}
    1. 合约调用显式传入发送方地址
      所有修改链上状态的合约方法调用,都需要显式传入from参数指定交易发起地址,分别修改createTask和toggleCompleted方法:
// 修改createTask方法内的合约调用
await App.todoList.createTask(content, { from: App.account });
// 修改toggleCompleted方法内的合约调用
await App.todoList.toggleCompleted(taskId, { from: App.account });
    1. 如上述修改后仍报错,可重置Metamask本地缓存
      如果Ganache重启过,Metamask本地缓存的账户nonce会和链上实际nonce不一致,也会触发地址相关错误。操作路径:Metamask > 设置 > 高级 > 重置账户,该操作仅清除本地交易缓存,不会影响账户资产。
额外检查项

确认Metamask添加的本地网络链ID和Ganache的链ID完全一致,Ganache默认链ID为1337或5777,两者不匹配也会导致交易构造失败。

内容的提问来源于stack exchange,提问作者S. N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:21:02