繁体   English   中英

当 self 没有广播交易时,如何使用以太坊客户端从状态恢复异常中获取消息?

[英]How can one obtain the message from state-reverting exception using ethereum clients, when self did not broadcast transaction?

假设以太坊智能合约具有外部函数“foo”,其逻辑具有状态恢复异常require(1 == 0, 'error: you broke the simulation!'); .

如果以太坊客户端 A 广播交易“txA”,这是对 foo 的函数调用,那么以太坊客户端 B 如何访问与“txA”对应的状态恢复消息?

编辑:“怎么做”,我的意思是开发人员实际上如何让以太坊客户端 B 访问这些数据。 即你能指出我从特定工具正确(低级..不是 webui)api/rpc 调用的方向吗?

显然这是可能的,因为区块浏览器为失败的交易提供了这样的消息。 我通读了 etherscan 的一些源代码,但它们的 javascript 被最小化且不易阅读。

提前致谢!

请参阅: https : //ethereum.stackexchange.com/questions/39817/are-failed-transactions-included-in-the-blockchain

失败的交易通常包含在链中。

您有时会看到,如果您正在使用例如 MetaMask,则会将交易发送到链之前出现一个弹出窗口,提示“此交易将失败”。 这是 MetaMask 试图提供帮助并防止您浪费汽油。 但是,你可以强制要送出的交易,你会得到一个失败/恢复交易张贴在链(像这样一个这个密实度的来源)。

所以为了回答最初的问题,如果 TxA 被发布在链上,那么客户端 B 将处理它并自己获取恢复消息。 如果 TxA 没有发布在链上,那么就没有它的记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM