[HIGH] Create-with-nametag 不是原子操作: 在 Nostr 绑定发布后出现失败会永久删除名片
作者: KruGoL创建于 2026年7月23日更新于 2026年7月23日
标签bugmainnet-blocker
摘要
useOnboardingFlow.handleMintNametag (创建分支)调用createWallet({nametag})。SDK存储了密码词,然后registerNametag在最终的persistAddressNametags()IndexedDB写入之前发布了先写赢的Nostr绑定(没有try/catch)。如果在中继器接受绑定后出现任何问题(WebSocket在OK确认之前丢弃,IndexedDB在最近删除数据库后被阻止 - 应用程序自身在SphereProvider.tsx:463处承认的状态),createWallet拒绝,SphereProvider.cleanupOnError运行Sphere.clear(...),销毁拥有名片的唯一密钥。密码词从未显示(备份屏幕稍后显示)。重试 @alice → "已被占用",绑定到不再存在的密钥。身份永久丢失。
内容来源: unicity-sphere/sphere