Viem:使用simulateContract从智能合约写入函数获取返回值

问题描述 投票:0回答:1

在 viem 文档中,它提到

writeContract
仅返回交易哈希并使用
simulateContract
获取从 writeContract 调用返回的值。 https://viem.sh/docs/contract/writeContract.html#return-value

但是,我从

simulateContract
调用返回的唯一结果是在验证后传递给
request
函数的
writeContract
,但我没有看到任何类似于此
request
中的返回值的内容,并且没有其他返回。

那么使用 viem 时如何获取 write 函数返回的值呢?难道不可能吗?另外,根据该块期间发生的情况,模拟结果有时会与实际从写入返回的结果不同吗?

javascript ethereum viem
1个回答
0
投票

尝试在writeContract之前使用simulateContract来模拟返回值。如果函数是非应付或应付的并且它修改状态,您将不会从实际交易中获得返回值(这是典型的Solidity行为)。您只能在模拟期间或通过使用事件/日志获得返回数据。

回顾一下,使用simulateContract来预测结果,并在writeContract之后通过事件或日志进行验证。

© www.soinside.com 2019 - 2024. All rights reserved.