Web3安全指南
Web3的安全性是一个永恒的话题。
今天我们聊聊MPC钱包、无助记词钱包、零知识证明,以及实际的安全操作步骤。
MPC钱包
什么是MPC钱包?
MPC(Multi-Party Computation,多方计算)钱包是一种将私钥分割成多个碎片,由多方共同保管的钱包。
核心原理:私钥被分割成n个碎片,只需要其中k个碎片(k<n)就能重构私钥。这避免了单点故障——即使某个碎片被盗,攻击者也无法恢复完整私钥。
MPC钱包的优势
无需助记词:不需要备份那12/24个单词,降低了丢失风险。
社交恢复:可以通过设置多个"监护人"来恢复账户。
分布式托管:私钥碎片分布在不同设备或服务商手中。
代表项目
Fireblocks:企业级MPC钱包服务商。
Coinbase Wallet:提供MPC功能。
Privy:嵌入式MPC钱包解决方案。
无助记词钱包
传统钱包的问题
传统钱包需要用户自行保管助记词。但这带来了很多问题:助记词一旦丢失,资产永久无法恢复;助记词一旦泄露,资产立即被盗;助记词需要物理备份,不够便捷。
无助记词解决方案
**托管型服务商保管私钥服务商保管私钥,用户通过账号密码登录。类似传统银行。
MPC钱包:私钥碎片分散保管,用户不需要知道完整私钥。
社交恢复钱包:通过设定"监护人"来恢复账户。
账户抽象(ERC-4337)
账户抽象让智能合约钱包可以实现:社交恢复——通过多签或监护人恢复;无Gas交易——项目方代付手续费;生物识别——指纹/面部识别解锁。
零知识证明
什么是零知识证明?
零知识证明(Zero-Knowledge Proof,ZKP)允许证明者向验证者证明某个陈述是真实的,而不需要透露任何除真实性之外的信息。
经典例子:A要向B证明自己知道某个密码,但不告诉B密码是什么。A可以提供一个"证明",B验证后确认A确实知道密码,但B仍然不知道密码是什么。
零知识证明在Web3中的应用
隐私交易:如Tornado Cash,用户可以证明自己存过钱,但不透露具体是哪个地址存的。
Layer2验证:ZK Rollup使用零知识证明来验证链下交易的正确性。
身份验证:用户可以证明自己满足某个条件(如"年满18岁"),而不透露具体身份信息。
zk-SNARKs与zk-STARKs
zk-SNARKs:需要可信设置, proofs 较小,验证快。
zk-STARKs:无需可信设置, proofs 较大,抗量子。
安全操作实践
助记词安全
物理备份:将助记词写在纸上或刻在金属板上。
分散存放:不要将助记词放在同一个地方。
Passphrase:添加第13/25个词,增加安全性。
交易安全
验证地址:始终确认收款地址正确。
小额测试:大额转账前先测试小额。
授权管理:定期使用Revoke.cash撤销不需要的代币授权。
防范钓鱼攻击
不要点击可疑链接:只访问官方域名。
验证合约地址:通过Etherscan等工具验证。
使用硬件钱包:大额资产使用Ledger、Trezor等硬件钱包。