已部署至Goerli的Web3合约莫名新增doMath方法问题咨询
问题原因及解决办法
可能原因
- 部署了错误的合约:你本地编译并部署的可能不是你提供的
Inbox合约代码,而是另一个包含doMath方法的合约版本,导致链上地址对应的合约和你预期的不一致。 - 地址记录错误:你保存的部署地址有误,该地址实际对应其他用户部署的带有
doMath方法的合约。 - 交互工具的ABI/缓存问题:你使用的区块链浏览器、钱包或合约交互工具,可能自动关联了错误的合约ABI,或者缓存了旧的合约信息,导致错误显示出
doMath方法。
解决办法
- 验证链上字节码:将你本地用
solidity ^0.4.17编译Inbox合约得到的字节码,与Goerli测试网区块浏览器中对应地址的字节码进行比对。如果不一致,说明链上的合约不是你要部署的版本。 - 核对ABI与地址:确保交互时使用的是你提供的
Inbox合约的正确ABI,而非其他合约的ABI。若工具自动加载ABI,手动替换为你自己的合约ABI。 - 重新部署正确合约:如果确认链上合约确实不是你编写的
Inbox版本,重新编译正确的合约代码,部署到Goerli测试网,并记录新的正确地址。 - 清除工具缓存:若为工具缓存问题,清除浏览器或交互工具的缓存后,重新加载目标地址的合约信息。
附你提供的合约代码
pragma solidity ^0.4.17; contract Inbox { string public message; function Inbox(string initialMessage) public { message = initialMessage; } function setMessage(string newMessage) public { message = newMessage; } }
内容的提问来源于stack exchange,提问作者A dev
相关产品推荐
相关产品推荐

