Ethereum 如何从UI中的合同修改器获取错误消息?

Ethereum 如何从UI中的合同修改器获取错误消息?,ethereum,solidity,web3,Ethereum,Solidity,Web3,当在Remix上测试契约时,我注意到如果一个方法没有传递修改器,您实际上会看到契约代码下面的窗口中显示的错误消息。这是我可以从web3获得的信息吗?或者,当合同提供时,我如何在自己的UI中从合同中获得此错误消息 这是一份简单的合同: address public owner; modifier onlyOwner() { require(msg.sender == owner, "Owner account is required"); _; } constructor()

当在Remix上测试契约时,我注意到如果一个方法没有传递修改器,您实际上会看到契约代码下面的窗口中显示的错误消息。这是我可以从web3获得的信息吗?或者,当合同提供时,我如何在自己的UI中从合同中获得此错误消息

这是一份简单的合同:

address public owner;

modifier onlyOwner() {
    require(msg.sender == owner, "Owner account is required");
    _;
}

constructor() public {
    owner = msg.sender;
}

function doStuff()
external
view
onlyOwner
returns (bool) {
    return true;
}
当我在remix中不是从
owner
调用合同时,在控制台中我收到以下消息:

调用Contract.doStuff出错:VM错误:恢复。
还原事务已还原为初始状态。
合同提供的理由:“需要业主账户”。调试事务以获取更多信息。


它是否给出了我可以从web3事务中获得的信息?我看不到

嗯,您没有指定要使用的客户端。尚未添加对web3js的支持:。如果您对使用Java版本感兴趣,则该客户端更新的频率更低。@AdamKipnis Oh intersting。我只是在混音Javascript虚拟机上进行本地测试。那么,他们是从Java服务器提供错误消息字符串吗?你是说Java客户端?我不这么认为,但我还没有测试过。错误消息支持仅添加到0.4.22版本的Solidity中。