Remix调用合约view方法报"Invalid account selected"错误如何解决?
错误触发原因
- 只读类的view/pure函数调用
call()虽然不需要支付gas、也不需要签名上链,但Remix内置封装的web3实例执行call()方法时,会默认读取IDE当前选中的账户作为默认的from入参 - 你的代码中
current_supply().call()没有显式指定from参数,当Remix账户面板没有选中有效账户、或选中的账户和当前连接的链环境不匹配时,就会抛出「Invalid account selected」错误 - 之前的
SetMaxSupply.send()调用因为你显式传入了from: accounts[0],会直接使用你指定的账户,不需要读取IDE的默认选中账户,因此可以正常执行
解决方法
两种方案任选其一即可:
- 给
call()调用也显式指定from参数,和send调用的参数保持一致:
let supply = await contract.methods.current_supply().call({from: accounts[0]})
- 运行脚本前,先在Remix左侧「Deploy & run transactions」面板的「ACCOUNT」下拉列表中,手动选中一个可用的链上账户,再执行脚本即可
内容的提问来源于stack exchange,提问作者Peteris
相关产品推荐
相关产品推荐

