题目
一个「质押」按钮直接用 readContract 预检,然后把 writeContract 的结果提示为成功;另一个表单在模拟时不带 account,导致权限判断结果与真实执行不同。请说明 viem 三个合约方法各自做什么,以及推荐的调用链路。
考察目标
- readContract、simulateContract、writeContract 的职责边界。
- 模拟在写路径中的作用与参数要求。
- 从模拟到收据的完整状态链。
说明三个合约方法各自的职责与返回值,以及从模拟到写入再到收据的推荐调用链路和失败处理。
一个「质押」按钮直接用 readContract 预检,然后把 writeContract 的结果提示为成功;另一个表单在模拟时不带 account,导致权限判断结果与真实执行不同。请说明 viem 三个合约方法各自做什么,以及推荐的调用链路。
合约调用存在读路径与写路径:读路径返回调用结果且不写入链上状态;写路径以交易形式提交,执行结果与所在区块记录在收据中。题面三个方法覆盖读、模拟与提交这三步。实现差异与工程取舍见深入回答。
发现这道题有问题? 反馈此题