在Ganache中可以从恢复的事务中提取日志吗?
当然,公共区块链不会为恢复的事务保留日志。
但是,我想知道,在ganache (本地块链)中是否有一种方法可以找出如果事务没有恢复日志(即直到恢复点之前发生的日志)日志会是什么?
我正在使用ganache叉,并在本地模拟一些事务,并且希望提取这样的数据,甚至对于恢复的事务也是如此。
发布于 2022-02-23 08:38:31
是的,您可以通过调试失败的事务来实现它。
从ganache-cli
中获取所需的事务哈希。
在新的终端窗口中,运行npx truffle debug <YOUR_TXN_HASH>
然后,您可以使用o
转到下一行,直到恢复点事务。
以下是命令的详细列表:https://trufflesuite.com/docs/truffle/getting-started/using-the-truffle-debugger.html
发布于 2022-06-22 23:50:59
另一种方法是将ganache-cli
与详细标志一起使用:
--verbose
这将记录请求和响应。
现在,在发送请求之后,您将在日志中输入响应。后者将包含以下信息:
{
"id": 17,
"jsonrpc": "2.0",
"result": "...",
"error": {
"message": "VM Exception while processing transaction: revert",
"code": -32000,
"data": {
"...": {
"error": "revert",
"program_counter": 2145,
"return": "0x8baa579f"
},
"stack": "o: VM Exception while processing transaction: revert\n at Function.o.fromResults (/app/ganache-core.docker.cli.js:4:297036)\n at w.processBlock (/app/ganache-core.docker.cli.js:42:106258)\n at processTicksAndRejections (internal/process/task_queues.js:93:5)",
"name": "o"
}
}
}
return
将包含还原错误。
在这种情况下,它是0x8baa579f
。要知道是哪个error
,您需要知道哪个编码的函数/错误签名与上面的匹配。
您可以使用这个在线编码器。首先,把你的ABI放在那里。然后,将编码输出与0x8baa579f
进行比较。
有关编码工作方式的更多细节,请签出此文章。
https://ethereum.stackexchange.com/questions/122365
复制相似问题