密钥恢复
Fystack Recovery 可在离线环境中,基于达到阈值数量的密钥分片重建钱包私钥。你可以用它来迁出 Fystack、迁移钱包,或在 Fystack 不可用时找回资金。
恢复过程会还原出完整私钥,并使钱包失去阈值安全保护。请仅在离线机器上运行,且仅用于恢复或迁移。
概述

每个签名方都会导出各自加密后的分片:
- Fystack 分片:从控制台导出为
.encRSA 包,使用你提供的 RSA 公钥加密。 - Cosigner 分片:使用
cosigner-cli export导出为.mshare文件,使用六个单词组成的口令加密。
Fystack Recovery 会解锁每个文件,合并分片,并将结果与钱包公钥进行比对。单个分片无法重建密钥。

开始之前
请在联网时下载最新的 Fystack Recovery 版本,然后将其转移到离线机器上。它是开源的,你可以自行审查和构建。
第 1 步:生成 RSA 密钥对
Fystack 分片会使用你的 RSA 公钥加密。请在离线机器上生成密钥对,并将私钥保留在该机器上。
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out recovery.key
openssl rsa -in recovery.key -pubout -out recovery.pub
只有 recovery.pub 可以离开这台离线机器。
第 2 步:导出 Fystack 分片
在控制台中打开钱包,进入 Signers 标签页。Fystack 签名方旁有一个 Export Share 按钮。

- 点击 Export Share。
- 将
recovery.pub的内容粘贴到 Recipient RSA public key (PEM) 中。 - 输入钱包名称进行确认,并勾选确认声明。
- 点击 Export Share 下载
.enc包。

只有持有对应 RSA 私钥的人才能解密该包。
第 3 步:导出 Cosigner 分片
在 Cosigner 主机上停止 Cosigner 并运行 export。它会为每个钱包写出一个 .mshare 文件,并仅显示一次恢复口令。详情请参阅运维操作。
cosigner-cli stop
cosigner-cli export --out-dir /secure/recovery
cosigner-cli start

每个文件的命名格式为 <wallet-id>-<cosigner>-<date>.mshare。将要恢复的钱包对应的文件复制到离线机器上。
口令只会显示一次,可解锁本次导出的所有文件。请将口令与文件分开保存。
第 4 步:添加并解锁分片
在离线机器上打开 Fystack Recovery,点击 Add share file。

Recovery 支持两种格式:
- RSA 包(
.enc):使用第 1 步中的 RSA 私钥解锁。 - 口令(
.mshare):使用第 3 步中的六词口令解锁。
添加你拥有的所有分片。无需输入阈值:计数器会显示钱包参与方中已解锁的 ECDSA 和 EdDSA 分片数量。

输入口令并点击 Unlock。当所有分片都显示 Unlocked 后,点击 Continue。

对于 HD 钱包,还需在 Child wallets 下添加与主分片一起导出的子钱包列表,以恢复所有子钱包。
第 5 步:恢复
核对钱包 ID 和分片数量,然后点击 Recover keys。

第 6 步:使用恢复的密钥
Recovery 会合并分片,然后将每个密钥与钱包公钥比对,并使用该密钥进行测试签名。两项检查都必须通过。

每条曲线的结果会显示:
- ECDSA:Ethereum / EVM 地址、私钥(十六进制)和压缩公钥。
- EdDSA:Solana 地址、私钥和公钥。
私钥在你点击 Reveal 之前保持隐藏。使用 Copy 或 Export... 将其转移到目标钱包,然后点击 Start over 将其从内存中清除。
安全检查清单
- 在物理隔离的机器上运行 Recovery。保持离线,切勿对恢复出的密钥截图。
- 将 RSA 私钥和 Cosigner 口令与分片文件分开保管。
- 恢复后将资金转移到新钱包。旧钱包已不再具备阈值保护。
- 完成后删除分片文件、RSA 私钥以及所有导出的密钥。