Expert Day 24
链上身份方案 (DID / VC)
系统理解去中心化身份(Decentralized Identifier, DID)和 Verifiable Credentials(VC)的 W3C 标准、SSI(Self-Sovereign Identity)原则、ZK 证明在身份系统中的作用,以及主流方案:Polygon ID / Privado ID(Iden3 protocol)、World ID(Worldcoin)、Civic、Dis
2026-05-25
Phase 1 - 监管与合规框架 (Day 15-28)监管合规DIDVCIdentityPolygonIDWorldID
日期: 2026-05-25 方向: 机构DeFi / RWA 阶段: Phase 1 - 监管与合规框架 (Day 15-28) 标签: #监管 #合规 #DID #VC #Identity #PolygonID #WorldID
今日目标
| 类型 | 内容 |
|---|---|
| 学习 | 系统理解去中心化身份(Decentralized Identifier, DID)和 Verifiable Credentials(VC)的 W3C 标准、SSI(Self-Sovereign Identity)原则、ZK 证明在身份系统中的作用,以及主流方案:Polygon ID / Privado ID(Iden3 protocol)、World ID(Worldcoin)、Civic、Disco.xyz、ENS、Lens Profile、Soulbound Tokens(SBT) |
| 实操 | 在 Polygon ID 测试网部署一个简单 DID demo:发行方(Issuer)创建 KYC VC,钱包持有人接收,验证方(Verifier)做 ZK 证明检查 |
| 产出 | "链上身份方案对比"决策矩阵(隐私 / 监管认可 / 用户体验 / 集成成本 / 合规适用性) |
一、SSI 与 W3C DID 标准
1.1 SSI 七大原则
Self-Sovereign Identity 由 Christopher Allen 2016 年提出:
- Existence(存在性):用户必须独立存在
- Control(控制权):用户控制自己的身份
- Access(访问性):用户可访问自己的数据
- Transparency(透明):系统必须开放
- Persistence(持久性):身份长期有效
- Portability(可移植):身份跨平台可携带
- Interoperability(互操作):广泛使用 (Allen 后补充 Consent、Minimization、Protection)
1.2 W3C DID Core 1.0
- 2022-07-19 W3C 正式推荐
- DID URI 格式:
did:method:identifierdid:ethr:0x742d35Cc...(以太坊地址作为 DID)did:key:z6Mko...(公钥)did:web:example.com:user:alicedid:polygonid:polygon:mumbai:2qP...
1.3 DID Document
每个 DID 解析(resolve)后得到 DID Document:
{
"@context": "https://www.w3.org/ns/did/v1",
"id": "did:ethr:0x742d35Cc...",
"verificationMethod": [{
"id": "did:ethr:0x742...#key-1",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:ethr:0x742d35Cc...",
"publicKeyHex": "04ab..."
}],
"authentication": ["did:ethr:0x742...#key-1"],
"service": [{
"id": "did:ethr:0x742...#vc-store",
"type": "VerifiableCredentialService",
"serviceEndpoint": "https://creds.example.com"
}]
}
二、Verifiable Credentials(VC)
2.1 W3C VC 数据模型 v2.0(2023-05)
VC 三方模型(Trust Triangle):
Issuer(发行方,如 KYC 服务商)
│ 签发 VC
▼
Holder(持有人,用户钱包)
│ Present VC
▼
Verifier(验证方,如 DEX)
2.2 VC JSON 结构
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "https://credentials.example.com/vc-001",
"type": ["VerifiableCredential", "KYCCredential"],
"issuer": "did:web:sumsub.com",
"issuanceDate": "2026-05-25T00:00:00Z",
"credentialSubject": {
"id": "did:ethr:0x742d35Cc...",
"kycLevel": "L2",
"country": "US",
"ageOver18": true,
"isAccreditedInvestor": true,
"isOFACClean": true
},
"proof": {
"type": "Ed25519Signature2020",
"created": "2026-05-25T00:00:00Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:web:sumsub.com#key-1",
"proofValue": "z3..."
}
}
2.3 ZK Verifiable Presentation
VP(Verifiable Presentation)= 持有人选择性披露的 VC 子集,配合 ZK 证明:
传统披露:
Holder → Verifier: 整个 VC(年龄=35, 国籍=US, 资产=$5M, 姓名=Alice)
ZK 选择性披露:
Holder → Verifier: 仅证明"年龄 > 18 AND 国籍 != Iran AND 资产 > $1M"
不暴露:具体年龄、姓名、其他信息
三、主流 DID/VC 方案
3.1 Polygon ID / Privado ID
- 底层:Iden3 protocol(开源 ZK 身份框架)
- 2024-05 重命名为 Privado ID(仍保持 Polygon ID 品牌)
- 特点:
- 完全 ZK(Groth16 / PLONK 证明)
- 链上 verification(智能合约 Query-based)
- 离线可证明
- 使用流程:
- 用户在 Polygon ID 钱包(Privado ID Wallet)创建 DID
- KYC 提供商(如 Fractal)发行 KYC VC(claim)
- DApp(Verifier)发起 query:例如"持有 KYC L2 + age > 18"
- 用户钱包生成 ZK 证明(仅证明满足条件,不泄露具体值)
- 链上 / 链下验证 ZK proof
3.2 World ID(Worldcoin)
- 类型:Proof of Personhood(PoP)
- 机制:
- 用户在物理 Orb(虹膜扫描设备)注册
- 生成虹膜 IrisCode
- 链上 nullifier,每个 application 独立
- 隐私:
- 虹膜数据本地处理(不上传原始)
- 通过 ZK 证明独特性(每人仅一个 World ID)
- 覆盖:~10M+ 注册(截至 2024)
- 应用:
- Sign in with World ID(Web3 应用通用 SSO)
- Worldcoin (WLD) 空投发放
- 反女巫工具
3.3 Civic
- 类型:KYC-as-a-Service + DID
- 历史:
- 2017 ICO 项目,转型 KYC 服务
- 推出 Civic Pass(NFT-style KYC 凭证)
- 集成:Solana 生态深度合作(如 Solend、Mango Markets)
3.4 ENS(Ethereum Name Service)
- 不是 DID 标准 但实质履行身份功能
- ENS 名(如 vitalik.eth)→ 钱包地址 + 多元数据(Twitter handle、Avatar 等)
- 与 DID:web 集成可能
- 5M+ 注册(2024)
3.5 Lens Profile
- 类型:去中心化社交身份
- 底层:Polygon
- 特点:每个 Profile = NFT
- 通过 NFT 实现"社交图谱"可携带
3.6 Soulbound Tokens(SBT)
- 概念:Vitalik 等 2022-05 论文 "Decentralized Society"(DeSoc)
- 特征:不可转让的 NFT
- 应用:学历、工作履历、信誉评级
- 实现:Binance 2022-09 推出 BAB(Binance Account Bound Token)KYC SBT
3.7 Disco.xyz
- 类型:综合 DID 钱包("Data Backpack")
- 整合:Ceramic Network + ENS + Bright ID
- 用户聚合多个发行方的 VC
四、五大方案对比矩阵
| 维度 | Polygon ID | World ID | Civic | ENS | SBT |
|---|---|---|---|---|---|
| 标准 | W3C DID + ZK | 自有 PoP | 自有 + W3C | DNS 类 | ERC 5114 |
| 隐私 | ⭐⭐⭐⭐⭐ ZK | ⭐⭐⭐⭐ ZK + 物理 | ⭐⭐⭐ NFT 可见 | ⭐⭐ 全公开 | ⭐⭐ 全公开 |
| 监管认可 | 中(合规导向) | 低(新事物) | 中(KYC 整合) | 低 | 低 |
| UX | 复杂(需要钱包 + ZK) | 简单(扫虹膜) | 中 | 极简 | 中 |
| 集成成本 | 高 | 中 | 低 | 极低 | 低 |
| 链 | Polygon, Ethereum | Optimism + 链下 | Solana 主, EVM | Ethereum | EVM 通用 |
| 适用场景 | KYC + 复杂凭证 | 反女巫 | KYC | 通用身份 | 信誉 |
五、Polygon ID Demo 实操
5.1 准备工作
- 安装 Privado ID Wallet(iOS/Android 应用)
- 部署 Polygon Mumbai 测试网钱包
- 注册 Issuer 账户(Polygon ID Studio)
5.2 Issuer 端:发行 KYC VC
// 使用 @0xpolygonid/js-sdk
import { CredentialWallet, IssuanceFlow } from '@0xpolygonid/js-sdk';
const credential = await issuer.createCredential({
type: ['KYCAgeCredential', 'KYCCountryOfResidenceCredential'],
credentialSubject: {
id: holderDID,
birthday: '1990-01-15',
countryCode: 840 // US
},
expiration: '2027-12-31'
});
// 生成二维码,holder 用钱包扫描接收
const qr = await issuer.generateOfferQR(credential.id);
5.3 Verifier 端:发起 Query
import { proofRequestService } from '@0xpolygonid/js-sdk';
const request = {
id: 1,
circuitId: 'credentialAtomicQuerySigV2',
query: {
allowedIssuers: ['did:polygonid:polygon:mumbai:...'],
type: 'KYCAgeCredential',
credentialSubject: {
birthday: { $lt: 20060525 } // age >= 18
}
}
};
const qr = await verifier.generateRequestQR(request);
5.4 Verification 链上调用
import "@iden3/contracts/interfaces/IZKPVerifier.sol";
contract MyDeFiPool {
IZKPVerifier public zkpVerifier;
function depositWithKYC(
uint64 requestId,
uint256[] memory inputs,
uint256[2] memory a,
uint256[2][2] memory b,
uint256[2] memory c
) external {
zkpVerifier.submitZKPResponse(requestId, inputs, a, b, c);
// ZK 验证通过后处理 deposit
}
}
六、TradFi 监管 → Web3 映射
6.1 传统 KYC 与链上身份对照
| TradFi | DID/VC 对应 |
|---|---|
| 银行 KYC 表单 | KYC VC(Issuer 签发) |
| 护照 | National ID VC |
| 信用报告 | Credit VC(如 Spectral) |
| Accredited Investor 认证 | Accredited VC(Reg D 用) |
| FATCA W-8BEN | Tax Status VC |
| CDD 文件 | 多个 VC 组合 |
6.2 监管认可路径
DID 在监管层面"自下而上"采纳:
- eIDAS 2.0(欧盟,2024-05 通过):欧盟数字身份钱包(EUDI Wallet)必须使用 DID/VC 标准
- MAS Project Greenprint:新加坡探索绿色金融 DID
- NIST Digital Identity Guidelines (SP 800-63-4):美国联邦身份指南,正考虑 DID
- GDPR:选择性披露符合 data minimization 原则
6.3 KYC NFT 与 KYC VC 的演进
2021-2022: KYC NFT
- 一个 NFT 代表用户已 KYC(如 Quadrata)
- 缺点:完全公开(链上可见)、无选择性披露
2023-2024: SBT(Soulbound)
- 改进:不可转让,但仍公开
- 例:Binance BAB Token
2024+: ZK VC(Polygon ID 等)
- 完全隐私(ZK 证明)
- 选择性披露
- 监管友好(合规可解开)
6.4 链上身份在 RWA 中的应用
- BlackRock BUIDL:通过 Securitize 平台 KYC,链上 token 仅持有 KYC 钱包能转移
- Maple Finance:机构借贷,KYC 通过 Centrifuge 等
- Aave Arc:KYC 白名单(中心化 admin 维护)
- 未来:替换为 DID/VC 链上自动化
七、关键速查 Cheat Sheet
| 项 | 数值 / 引用 |
|---|---|
| W3C DID Core | 2022-07-19 v1.0 |
| W3C VC Data Model | 2023-05 v2.0 |
| Polygon ID 启动 | 2022-04 |
| Privado ID 重命名 | 2024-05 |
| World ID 启动 | 2023-07 |
| Worldcoin Orb 数 | 1000+(2024) |
| World ID 注册数 | 10M+ |
| ENS 域名数 | 5M+ |
| Lens Protocol Profile | 1M+ |
| eIDAS 2.0 | EU Regulation 2024/1183 |
| EUDI Wallet 实施日 | 2026-12 |
| ZK 证明算法 | Groth16, PLONK, STARK |
| 知名 ZK 库 | snarkjs, circom, halo2 |
| BAB Token | 2022-09 Binance |
| Quadrata Passport | 2022 上线 |
八、面试题(资深级)
Q1: 一家 RWA 协议(代币化美债)需要 KYC,应选择哪种链上身份方案?
STAR-T:
- Situation:协议在欧美机构市场,需 KYC + Accredited Investor 检查
- Task:选择最合适的链上身份方案
- Action:
- 核心方案:Polygon ID / Privado ID
- ZK 隐私(机构投资者偏好不暴露持仓)
- 监管友好(Issuer 受监管,可解开)
- 选择性披露(仅证"是 Accredited",不暴露资产)
- 集成:与 KYC 服务商(Sumsub、Onfido)合作做 Issuer
- 链选择:在 Polygon、Ethereum、Optimism 多链部署
- 备份方案:传统 KYC(链下数据库)作 fallback
- Audit:Issuer 责任明确(合规法律意见书)
- 核心方案:Polygon ID / Privado ID
- Result:完整合规 + 用户隐私,开发周期 6 个月,预算 $1M
- Trade-off:用户 UX 比 KYC NFT 复杂,需教育
Q2: World ID(Worldcoin)的 Proof of Personhood 与 KYC 的差异和关系?
回答:
- PoP 解决"独一性":每个人仅一个身份(防女巫)
- KYC 解决"合规性":身份与法律实体绑定
- 差异:
- PoP 不暴露姓名、地址、国籍
- KYC 完整识别真实身份
- 互补关系:
- 反女巫(DApp 准入)→ PoP 足够
- 资金往来(合规)→ 必须 KYC
- 高价值机构 RWA → PoP + KYC 双层
- 架构启示:
┌─ Tier 1: 人类验证 → World ID ├─ Tier 2: 法律身份 → KYC VC └─ Tier 3: 财务能力 → Accredited VC
Q3: 链上身份方案如何与 GDPR 兼容?
回答:
- GDPR 关键挑战:
- 被遗忘权(Right to Erasure):链上数据不可删除
- 数据最小化:链上完整 KYC 数据违反
- 解决方案:
- 链下存储 + 链上证明:
- VC 存储在用户钱包(个人持有)
- 链上仅 ZK 证明(不含 PII)
- Issuer 可撤销:
- VC 有 expiration + revocation list
- 用户可请求删除 Issuer 端记录
- Pseudonymization:
- 链上 DID 是 pseudonym,非直接 identifier
- GDPR Article 4(5) 允许 pseudonymized data
- Data Minimization:
- ZK proof 仅证明充分必要条件
- 不在链上存原始数据
- 链下存储 + 链上证明:
- 欧盟 eIDAS 2.0 明确支持这种模式
Q4: 比较 Lens Profile(社交身份)vs Polygon ID(KYC 身份)的设计哲学?
回答:
- Lens Profile(社交):
- NFT 化身份(可转让,但 Lens V2 引入 non-transferable Profile)
- 公开为主(社交关系是公共品)
- 价值:声誉、关注者
- Polygon ID(KYC):
- VC + ZK(隐私)
- 选择性披露
- 价值:合规、隐私
- 共同点:都是去中心化身份层
- 差异:场景驱动
- 社交:可见性 = 价值
- 合规:隐私 = 价值
- 架构启示:未来用户钱包同时持有多种身份组件
User Wallet: - Lens Profile(公开社交) - ENS Name(公开域名) - Polygon ID Bag(私有 KYC + Accredited) - World ID Nullifier(PoP) - SBT 学历凭证
Q5: 如果监管要求"在合法授权下解开 ZK KYC 证明",技术上如何实现?
回答:
- 挑战:ZK 证明本质上"不可解开"——只证明断言为真,不暴露原始数据
- 解决路径:
- Escrow Mode:
- Issuer 保留原始 VC + 加密版本
- 法院命令下,Issuer 解密提供给监管
- Threshold Cryptography:
- 加密 KYC 用密钥分片(n-of-m)
- 多个监管者持有分片
- 法律授权下重组解密
- Trusted Execution Environment(TEE):
- 在 Intel SGX 等 TEE 内部存原始 KYC
- 仅在合法请求下输出
- 链上加密 KYC:
- 用监管公钥加密 KYC 上链
- 法律授权时监管解密
- Escrow Mode:
- 实例:
- eIDAS 2.0 规定 EUDI Wallet 必须支持 lawful access
- Polygon ID 提供 Issuer revocation + selective disclosure
- 架构启示:完全无解的 ZK 在合规市场不可行;需"可控隐私"
九、明日预告
明日(Day 25)我们继续身份合规专题:KYC 代币化与可重用合规凭证。研究 Quadrata、Civic Pass、Aave Arc 的 KYC 流程、Permissioned DeFi 的白名单机制、KYC NFT vs KYC VC 的设计权衡,以及"KYC Once, Use Many"(一次 KYC,多协议复用)的架构。