问题原因: 备份数据中缺少 partyId 字段。恢复到新手机后,签名时使用的是新设备 生成的 partyId,而不是 keygen 时编码到 LocalPartySaveData 中的 原始 partyId,导致 TSS 签名协议无法正确匹配密钥数据而失败。 修复内容: 1. Models.kt: - ShareRecord 添加 partyId 字段 - ShareBackup 添加 partyId 字段,备份格式版本升级到 v2 - 更新 fromShareRecord() 和 toShareRecord() 方法 2. Database.kt: - ShareRecordEntity 添加 party_id 列 - 数据库版本升级到 3 3. AppModule.kt: - 添加 MIGRATION_2_3 数据库迁移脚本 4. TssRepository.kt: - 添加 currentSigningPartyId 成员变量跟踪当前签名使用的 partyId - keygen 保存时包含 partyId (3处) - 备份导入时保存原始 partyId - 签名流程使用 shareEntity.partyId 替代设备 partyId (3处) - gRPC 调用 (markPartyReady, reportCompletion) 使用原始 partyId 关键点: 签名时必须使用 keygen 时的原始 partyId,因为该 ID 被编码 到了 TSS 密钥数据结构中。现在备份会保存此关键字段,恢复后签名 将使用正确的 partyId。 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .claude | ||
| api-gateway | ||
| infrastructure | ||
| mpc-system | ||
| scripts | ||
| services | ||
| .env.windows | ||
| docker-compose.windows.yml | ||