题目
团队在讨论哪些操作可以乐观更新。有人认为链上操作都适合乐观更新以提升手感,也有人认为涉及资金就不能乐观。
请给出你的判断标准,并分别举例说明适合与不适合的操作。
考察目标
- 能否给出可操作的判断标准而非笼统结论。
- 是否理解回滚成本与用户预期。
- 能否区分「展示层乐观」与「业务层乐观」。
考察乐观更新的适用条件与回滚成本,以及不可逆操作的保守处理。
团队在讨论哪些操作可以乐观更新。有人认为链上操作都适合乐观更新以提升手感,也有人认为涉及资金就不能乐观。
请给出你的判断标准,并分别举例说明适合与不适合的操作。
链上操作有两个可观测节点:eth_sendRawTransaction 返回交易哈希(进入待打包),收据出现才说明被打包,收据的 status 取 0 表示执行失败,失败交易同样按已用 gas 结算。因此「哈希已返回」不足以支撑业务层的乐观更新,展示层的乐观值可以先行,业务动作适合等收据。
eth_sendRawTransaction 的返回是交易哈希,哈希可用不代表交易已经执行(依据:EIP-1474 §Specification 的 Methods 条目 eth_sendRawTransaction)eth_getTransactionReceipt 在交易未打包时返回 null,收据的 status 取 0 表示执行失败(依据:EIP-1474 §Specification 的 Methods 条目 eth_getTransactionReceipt)4001 表示用户拒绝请求,这类失败不产生链上效果(依据:EIP-1193 §Provider Errors)发现这道题有问题? 反馈此题