什么是 Multi Party Computation (MPC)?
Multi Party Computation (MPC) 允许多个参与方在不泄露各自私有输入的情况下共同完成计算。在加密领域,这通常意味着将私钥分割成多个份额,使得没有任何单一人或设备持有完整私钥,但整个组仍能签署交易。可以把它想象成一个只有足够多的朋友同时转动自己钥匙时才会打开的保险库。
“MPC 只是关于保密。”并非完全如此。它确实有助于隐私,但主要收获是更强的安全性与共享控制,同时又不共享实际密钥。
Multi Party Computation (MPC) 的工作原理
下面快速说明使用一个 MPC 钱包签署代币转移的过程:
- 步骤 1:你在手机上批准一笔交易。该请求会通知持有密钥份额的设备或服务。
- 步骤 2:每个参与者在本地执行一系列数学操作,从其份额生成部分签名。没有人会暴露自己的份额。
- 步骤 3:这些部分签名被合并成一个有效签名,而完整私钥从未在任何地方存在。
- 步骤 4:如果满足阈值,区块链会像接受任何普通 ECDSA 或 EdDSA 签名那样接受该签名。
- 步骤 5:份额可以轮换或刷新,这样丢失的设备不会削弱安全性。简洁且高效。
这就是许多现代钱包和托管服务中你会看到的流程。
为什么 Multi Party Computation (MPC) 很重要
一旦考虑清楚,其重要性就很明显:
- 好处:没有单点故障。丢失一台设备不会导致完全丧失控制,因为没有任何设备持有完整密钥。
- 视角:签名在链外完成,这有助于总体的可扩展性,同时让团队和金库的审批更灵活。
- 适用场景:你会在自托管钱包、需要团队审批流程的交易所、DAO 以及政策不可谈判的机构托管中看到它的应用。
选择一个与团队匹配的阈值。例如 5 人中 3 人可以应对出差或手机损坏而不阻碍付款。
Multi Party Computation (MPC) 的关键特性
它的突出点包括:
- 阈值:任何 t 个参与者(共 n 人中的 t 个)就能签名,因此当某个份额离线时工作可以继续。
- 无密钥组装:私钥从未被组装,这减少了签名或备份期间单点泄露的风险。
- 策略:你可以在生成签名前加入规则,例如时间锁、地理围栏或按资产限制。
- 刷新:份额可以轮换而不更改公钥地址,从而限制长期曝露。
- 审计:非常适合风险分析,因为每个签署步骤都可以记录以便审查。
变体
MPC 是一类技术。你可能会遇到这些形式:
- 阈值签名:针对 ECDSA 或 EdDSA 的阈值签名,参与方共同生成一个标准签名。
- 密钥分割:像 Shamir 这样的秘密分享方案用于拆分和刷新密钥份额。
- 加密电路:布尔电路或加密电路用于让各方在不暴露输入的情况下共同评估程序。
- 同态:在加密数据上计算的方法,只在最后揭示答案。
MPC 保护的是签名过程,而不是你在链上的公开活动。若要隐藏金额或通信双方,请查看 零知识证明。
示例
一个 DAO 金库要求五人中三人签名;每个签名者的设备创建部分签名,系统将它们合并成一个有效签名,链上看到的是一笔普通交易。
有趣的事实
这一想法可以追溯到 1980 年代的 Yao“百万富翁问题”,这是一个关于两个人在不透露各自具体财富的情况下比较谁更富的思想实验。加密学把这个思想实验变成了日常实践。
总结
Multi Party Computation (MPC) 让一组人表现得像一个安全的签名者,而无需任何人放弃自己的秘密。那就是团队合作,但由数学担任裁判。
