“Removed”这个词放在交易监控里很容易被读成“失败”,但我看到@Dusk 的RUES事件时会先停一下,因为一笔交易离开本地mempool并不等于它被链拒绝。这不是文字游戏,Dusk官方说明里transactions/removed只表示它离开某个节点的本地mempool,原因可能是进块、被更高gasPrice的冲突交易替换、过期、容量淘汰或者只是冲突交易离开,单看这一条事件系统并没有告诉你最终结果。
这让我重新看待$DUSK 的开发者体验,监控器把removed映射成失败时后台就会过早提醒,而把它当成功时又可能漏掉真正被淘汰的交易。一个状态字段实际上把“节点眼前发生了什么”和“账本最后记住了什么”分成了两层。压力场景其实很普通,用户转账后钱包收到removed并提示“请重试”,他再发一笔后才发现第一笔已经进块,结果多付了一笔gas,客服还要解释哪笔有效。错误提示如果不看账本而只看事件,就会把本地视图放大成事实。
所以我不会把RUES的removed当成失败信号,@Dusk 的文档给出了更稳妥的方向,回查交易和区块状态再决定是否重试。接下来我会看钱包是否把“本地移出”与“最终结果”分开显示给用户,这才是Dusk让用户少踩坑的细节。#dusk
这让我重新看待$DUSK 的开发者体验,监控器把removed映射成失败时后台就会过早提醒,而把它当成功时又可能漏掉真正被淘汰的交易。一个状态字段实际上把“节点眼前发生了什么”和“账本最后记住了什么”分成了两层。压力场景其实很普通,用户转账后钱包收到removed并提示“请重试”,他再发一笔后才发现第一笔已经进块,结果多付了一笔gas,客服还要解释哪笔有效。错误提示如果不看账本而只看事件,就会把本地视图放大成事实。
所以我不会把RUES的removed当成失败信号,@Dusk 的文档给出了更稳妥的方向,回查交易和区块状态再决定是否重试。接下来我会看钱包是否把“本地移出”与“最终结果”分开显示给用户,这才是Dusk让用户少踩坑的细节。#dusk


