在 viem 文档中,它提到
writeContract
仅返回交易哈希并使用 simulateContract
获取从 writeContract 调用返回的值。
https://viem.sh/docs/contract/writeContract.html#return-value
但是,我从
simulateContract
调用返回的唯一结果是在验证后传递给 request
函数的 writeContract
,但我没有看到任何类似于此 request
中的返回值的内容,并且没有其他返回。
那么使用 viem 时如何获取 write 函数返回的值呢?难道不可能吗?另外,根据该块期间发生的情况,模拟结果有时会与实际从写入返回的结果不同吗?
尝试在writeContract之前使用simulateContract来模拟返回值。如果函数是非应付或应付的并且它修改状态,您将不会从实际交易中获得返回值(这是典型的Solidity行为)。您只能在模拟期间或通过使用事件/日志获得返回数据。
回顾一下,使用simulateContract来预测结果,并在writeContract之后通过事件或日志进行验证。