Self Protocol 综合评估
核心用法
Self Protocol 是一个隐私优先的去中心化身份验证解决方案,允许用户通过零知识证明(ZKP)从护照或身份证 NFC 芯片中证明特定属性(如年龄 ≥18、国籍、人类证明),而无需暴露任何原始个人数据。
主要集成模式:
- 链下验证(推荐):通过
SelfBackendVerifier在服务器端验证证明,适合 Web 应用和 API - 链上验证:在 Celo 智能合约中继承
SelfVerificationRoot进行验证,适合 DeFi、空投、代币门控等无需许可场景 - 深度链接:移动优先流程,直接唤起 Self 应用而非扫码
技术栈:@selfxyz/qrcode(前端 QR 组件)+ @selfxyz/core(后端验证),要求版本 ≥ 1.1.0-beta.1。
显著优点
1. 隐私保护核心:采用零知识证明,验证方仅获知「满足条件」的布尔结果,无法获取姓名、证件号、照片等原始数据
2. 真实世界身份锚定:基于政府签发的 ICAO 9303 标准电子护照/身份证,Sybil 抵抗性强于纯链上方案
3. 合规友好:支持 OFAC 筛查、年龄验证、国籍限制等监管常见需求,无需中心化 KYC 服务商
4. 多链部署:Celo 主网 + 测试网合约已部署,生态整合成熟
5. 开发者体验:提供 React 组件 SelfQRcodeWrapper 和完整的 TypeScript SDK,快速集成
潜在局限性与风险
1. 硬件依赖:用户需持有带 NFC 芯片的护照/身份证及支持 NFC 的智能手机,覆盖面受限
2. 配置严格性:前后端披露配置(disclosures)必须完全匹配,否则静默失败,调试难度高
3. 网络限制:Self 应用需直接向开发者端点发送证明,要求公网可访问,本地开发需 ngrok 等工具
4. 国家代码限制:排除列表最多 40 个国家,ISO 3 位代码易出错
5. 版本碎片化:当前为 beta 版本(1.1.0-beta.1),API 可能变动
适合人群
- DeFi 协议:需抗女巫攻击的空投、流动性挖矿资格验证
- GameFi / SocialFi:年龄分级内容访问、一身份一账号限制
- 合规 DApp:需满足 AML/OFAC 要求但拒绝中心化 KYC 的隐私敏感项目
- DAO 治理:国籍/居住地限制投票资格的链上治理
常规风险
- 智能合约风险:继承
SelfVerificationRoot的合约需审计,自定义customVerificationHook可能引入漏洞 - 配置错误风险:
mockPassport误用于主网或真实护照用于测试网会导致验证失败 - 端点安全:验证端点需防重放攻击,建议结合
userId和 nonce 机制 - 依赖风险:协议依赖 Self 移动应用和中心化 Hub 合约,存在单点故障可能
安全建议
- 生产环境严格禁用
mockPassport - 使用
DefaultConfigStore确保前后端配置一致性 - 链上验证时确保 scope 唯一性(Poseidon 哈希防止跨合约重放)
- 监控
ScopeMismatch、InvalidIdentityCommitmentRoot等常见错误日志