在移动端 CGGMP21 计算耗时久,DKG时候可达到7~9分钟
对,这个其实是很多“论文党”和“工程党”的分界点。
你这个观察非常真实:
CGGMP21 在论文里是 state-of-the-art,但在移动端实际体验可能非常差。
尤其:
- iOS / Android
- React Native
- WASM
- JS bridge
- 低功耗 ARM CPU
场景下。
你这个观点其实面试里反而是加分项。
因为说明你:
不只是看 protocol round,而是真做过工程落地。
为什么 CGGMP21 在移动端会慢?
很多人误以为:
“1-round signing = 很快”
其实:
错
因为:
round ≠ computation
CGGMP21:
- online round 少
- 但单轮计算量巨大
真正耗时的地方
1. Safe Prime Generation
CGGMP21 最大性能黑洞:
- Paillier modulus
- safe prime generation
比如:
生成:
[ N = pq ]
其中:
- p/q 是 safe primes
safe prime 条件:
[ p = 2p' + 1 ]
这比普通 RSA prime 难很多。
而移动端:
- ARM CPU
- 没 AVX2
- 没大缓存
- BigInt 很慢
所以:
生成 safe prime 可能:
- 单 participant 几十秒
- 多 participant 直接数分钟
这非常正常。 (Docs.rs)
2. 大量 ZK Proof
CGGMP21 不只是 MPC。
它还有:
- range proof
- modulus proof
- Paillier proof
- consistency proof
这些:
全是 Big Integer 运算
移动端最怕这个。
3. Rust/WASM 在移动端 BigInt 不友好
如果你:
- React Native
- Tauri
- WASM
- Hermes/JSC
会更惨。
因为:
wasm bigint 在 mobile js engine 很慢
尤其:
- Hermes
- JSC
和 desktop Chrome V8 差距巨大。
4. 网络 round 少 ≠ 总延迟低
CGGMP21 优化的是:
WAN latency
比如:
欧美跨洲 HSM 集群。
不是:
手机 CPU。
一个经典误区
很多人会说:
“CGGMP21 比 GG20 快”
这其实:
只对 server-to-server 成立
因为:
它减少:
- RTT
- round trip
但:
CPU computation 实际更多
尤其 preprocessing。
DKG 为什么最慢?
因为:
DKG 不只是:
- secret sharing
它还要:
Auxiliary Info Generation
这个才是真正炸性能的。
包括:
- safe prime
- Paillier keygen
- ZK proof
官方文档甚至直接写:
computationally heavy (Docs.rs)
所以你看到 7~9 分钟正常吗?
非常正常。
尤其:
| 条件 | 是否容易爆炸 |
|---|---|
| 手机 ARM | ✅ |
| WASM | ✅ |
| JS bridge | ✅ |
| Debug build | ✅ |
| 多 participant | ✅ |
| threshold > 2 | ✅ |
| safe prime realtime generate | ✅ |
甚至:
有些安卓机会:
- 10+ 分钟
- 发热
- 被系统降频
- 被系统 kill
业界真实做法
真正商业 MPC Wallet:
不会在移动端完整跑 CGGMP21 DKG
而是:
方案1:服务端做 Auxiliary Info
最常见。
客户端:
- 只参与部分 protocol
服务端:
- 预生成 safe prime
- 预生成 Paillier
方案2:预生成 PregeneratedPrimes
官方库已经暗示了:
PregeneratedPrimes::generate()
因为:
生成 prime 最贵。
所以:
会缓存/持久化
而不是每次生成。
(Docs.rs)
方案3:移动端只做 Signing
这是最多的。
移动端:
- 不做 DKG
- 不做 refresh
只做:
- online signing
因为:
signing 已经快很多。
方案4:改用 Schnorr/FROST
这是行业趋势。
因为:
FROST:
- 无 Paillier
- 无 safe prime
- 无 MtA
- 无超大 ZK
性能直接吊打 threshold ECDSA。
所以现在行业出现分裂
Bitcoin/EVM
不得不用:
- GG20
- CGGMP21
因为:
- secp256k1 ECDSA
新链
开始转:
- Schnorr
- EdDSA
- FROST
因为:
MPC 太舒服了。
面试高级回答(非常加分)
你可以这样说:
虽然 CGGMP21 在协议层面实现了更低 online round 和更好的安全性,但在移动端实际落地时,性能问题非常明显。
特别是 DKG 阶段涉及 safe prime generation、Paillier keygen 和大量 ZK proof,这些 BigInt 运算在 ARM 设备和 WASM 环境下非常慢。
实际工程里,CGGMP21 更适合 server/HSM 场景,而移动端通常会:
- 预生成 auxiliary info
- 缓存 Paillier primes
- 只在移动端做 signing
- 或直接采用 FROST/Schnorr 体系
所以 protocol round 少,并不等于移动端实际耗时低。
这个回答已经是:
“真正做过 MPC Wallet 的人”
的回答了。