想象你带着身份证去酒店办理入住。前台接过证件,咔嚓复印一份,塞进抽屉;三个月后,这份复印件可能出现在某个不明渠道的“数据交易群”里。更糟的是,这个场景每天都在重复:银行、健身房、外卖平台、租房中介……你的身份复印件像雪片一样散落四处,你根本不知道谁在保管、谁在倒卖。 去中心化身份 DID(Decentralized Identifier)要改变的,正是这种“复印件泛滥”的世界。它好比一张“由你自己发行、随身携带、按需出示”的智能身份证:你在数字世界里有一个全球唯一的编号(DID),手握一枚只有自己能盖的“私章”(私钥);需要证明身份时,只需出示由权威机构签过字、带着你私章印记的凭证,对方用公开的“验证码”(公钥)一验,真假立判——全程不用交出整本证件,也不用把隐私塞进别人的抽屉。 从这个比喻出发,我们会一步步看到 DID 的证件长什么样(DID 文档)、验证台怎么运作(解析器)、盖章凭证怎么签发(可验证凭证),以及怎么让整个流程更快、更安全。

岗位关联

掌握 DID,你就掌握了 Web3 信任层的核心拼图——这是数字身份、去中心化应用与未来 AI 代理协作的基石,也是当下身份与合规领域最稀缺的工程技能之一。

目录
  1. 可视化演示
  2. 传统身份痛点
  3. DID基础概念
  4. 密钥与安全
  5. 可验证凭证
  6. 解析与互操作
  7. 性能与优化
  8. 工程实践展望
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示去中心化身份(DID)的信任三角架构:持有者、签发者、验证者与链上注册表的交互流程,以及DID标识符结构与认证验证过程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

DID信任三角架构 持有者(Holder)自主管理身份数据 签发者(Issuer)签发可验证凭证(VC) 验证者(Verifier)通过DID文档验证 DID = did:method:specific-id 链上注册表确保不可篡改

传统身份痛点

你住酒店,前台把你的身份证复印件塞进抽屉;你注册 App,平台把你手机号、生日、常用地址存进数据库。这些“复印件”你控制不了:不知道谁在保管、会不会倒卖、何时泄露。这就是传统身份的日常——复印件泛滥成灾,而真正的“原件”你从未握在手里。

这种模式叫“中心化身份”:你的账号、密码、实名信息由各家服务商分别保管,信任完全押在它们的服务器安全上。W3C 把这种模式总结为——用户只是“租用”身份,平台才是真正的主人。你换个城市、换个平台,一切都要重新证明一遍。

中心化带来三个典型问题。一是单点故障:数据库被拖库,千万账号裸奔;二是数据孤岛:每个平台一套账号,互不通用,你的消费记录、信用数据被割裂成一地碎片;三是身份盗用:复印件越多,被冒用的概率越大。这个风险的粗略模型是:

R泄露∝N机构×C字段\displaystyle R_{\text{泄露}} \propto N_{\text{机构}} \times C_{\text{字段}}

1. 风险因子 R:表示身份信息泄露事件发生的整体风险高低。

R泄露\displaystyle R_{\text{泄露}}

2. 机构规模 N:保存你身份副本的服务商与平台的数量。

N机构\displaystyle N_{\text{机构}}

3. 数据密度 C:每个机构采集并留存敏感字段的数量与敏感度。

C字段\displaystyle C_{\text{字段}}

4. 正比关联 ∝:机构越多、字段越密,风险非线性叠加、水涨船高。

∝\displaystyle \propto

DID 的解法很直接:不把“复印件”交出去,而是随身带一张自己控制、可验证的“原件”。复印件少一张,风险就少一分;原件由自己保管,谁也无法靠偷袭数据库盗走你。

DID基础概念

你终于拥有一张“自己签发的智能身份证”。它长得像一串编号:did:edu:university-01,或 did:person:alice-2026。这串编号全球唯一,不直接依赖任何公司——谁都不能因为某家平台倒闭就抹掉你的身份。

DID 全称 Decentralized Identifier(去中心化标识符),由 W3C 制定标准。它有三个关键部件:标识符本身、DID 文档、DID 方法。文档是身份证的“公开面”——写清这身份由谁控制、怎么验证;方法是“发证规则”——说明这串编号该上哪条链、按什么格式注册和查询。

一个完整 DID 遵循三段式语法。method 决定“去哪查”,例如 did:ethr 表示以太坊上的注册表,did:web 则依托域名解析;specific-id 是方法内的唯一编号。核心理念是“自主权身份”(Self-Sovereign Identity,SSI):身份不归平台,归你——表现为一种可携带、可验证、不可被单方撤销的标识符。

DID=did:method:specific-id\displaystyle \text{DID} = \text{did} : \text{method} : \text{specific-id}

1. 固定前缀 did:表明这是一个去中心化标识符,类似网址开头的 https。

did\displaystyle \text{did}

2. 方法名 method:指定该 DID 采用哪套注册与解析规则,如 ethr、web、key。

method\displaystyle \text{method}

3. 唯一标识符:在该方法命名空间内全局唯一的字符串,可能对应某条链上记录。

specific-id\displaystyle \text{specific-id}

有了这张“证件”,剩下就是证明“证件是我的”。这需要另一件宝贝——藏在口袋里的私章(私钥),也就是下一节的主角。

密钥与安全

古代人盖私章,木章一按,印泥图案独一无二,他人无法伪造。在 DID 世界里,这枚私章就是私钥:一个只有你知道的随机数,任何你要“盖章”的消息都要经过它。对应地,证件上印着“公章校验码”——公钥,人人可查、专门用来核对章的真伪。

签名机制很简单:用私钥对消息签名得到 σ,任何人用公钥、消息和 σ 就能验证。密码学保证:没有私钥绝对造不出可通过验证的 σ。这比你手写签字强得多——数字签名可以精确到“某个字节”级别的防篡改,改一个字符,验签立刻失败。

技术实现上常用 Ed25519、secp256k1 等椭圆曲线算法。安全实践要注意三点:私钥不能上网、不能写入链上文档;备份要有多重机制(助记词、Shamir 分片、社交恢复);为了长期安全,DID 文档支持“密钥轮换”——旧章作废、新章启用,身份编号保持不变。

Sign(sk,m)→σ,Verify(pk,m,σ)→{True,False}\displaystyle \text{Sign}(\text{sk}, m) \to \sigma, \qquad \text{Verify}(\text{pk}, m, \sigma) \to \{\text{True}, \text{False}\}

1. 签名函数 Sign:输入私钥与消息,输出一串独一无二的签名。

Sign(sk,m)→σ\displaystyle \text{Sign}(\text{sk}, m) \to \sigma

2. 验证函数 Verify:输入公钥、原文与签名,输出布尔结论。

Verify(pk,m,σ)\displaystyle \text{Verify}(\text{pk}, m, \sigma)

3. 私钥 sk:必须完全保密的签名密钥,是身份控制权的唯一凭据。

sk\displaystyle \text{sk}

4. 公钥 pk:可公开写入 DID 文档,用来核对签名真伪。

pk\displaystyle \text{pk}

DID 世界的铁律因此是:握紧私章,身份就在;私章一丢,身份难寻。这把“章”保管好,你盖出的凭证才有人认。

可验证凭证

学生证为什么管用?因为上面有学校盖的钢印。可验证凭证(Verifiable Credential,VC)就是这个逻辑的数字版:权威机构(签发方)把你的某项事实写进凭证,用自己私钥“盖钢印”(签名),再把凭证交到你钱包。你拿着它去任何地方,对方不用打电话回学校核实,验章即可。

VC 的结构由三部分组成:声明(claims,如“学生:属实”)、元信息(metadata,签发时间、有效期、签发方 DID)、签名(signature)。验证时只需要签发方的公钥,过程可以写成:

Verify(VC)=VerifySig(PKissuer,  claims∥meta,  sig)\displaystyle \text{Verify}(VC) = \text{VerifySig}\big(\text{PK}_{\text{issuer}},\; \text{claims} \| \text{meta},\; \text{sig}\big)

1. 凭证 VC:由签发方生成、包含声明字段与元信息的受保护对象。

VC\displaystyle VC

2. 签发方公钥:发证机构 DID 文档中公开的验证密钥。

PKissuer\displaystyle \text{PK}_{\text{issuer}}

3. 声明与元信息拼接:凭证主体内容与签发时间等信息的组合串。

claims∥meta\displaystyle \text{claims} \| \text{meta}

4. 验签判定:签名通过则凭证可信,否则视为伪造或篡改。

VerifySig(⋅)\displaystyle \text{VerifySig}(\cdot)

更妙的是选择性披露:你只需证明“我是学生”,不必把姓名、学号、家庭住址全亮出来。技术上可以做部分字段展示,甚至用零知识证明只输出“满足条件”的结论。撤销时,签发方把凭证编号登记到链上撤销列表,验证方验章后顺带查一下即可。凭证本体始终在链下流转,所以快、便宜、保护隐私。

解析与互操作

酒店前台看到你的“智能身份证”,怎么知道该去找哪个发证机关核对?这就是解析器的活——相当于柜台后面那套“验证台操作系统”,帮你把证件编号翻译成可验证的公开档案。

解析流程很清晰:验证方把 DID 交给 DID Resolver → Resolver 看方法名决定去哪个链或网络 → 读取该 DID 对应的 DID 文档 → 返回给验证方。文档里写明了公钥、验证方法、服务端点,验证方拿着它就能完成验签。

互操作的关键在四件事:统一的 DID 语法(W3C 规范);每方法一个解析器适配层(Universal Resolver 的思路);文档的通用数据模型(JSON-LD);跨链登记能力(如 did:ethr 在以太坊、did:iota 在 IOTA,互不冲突但可被统一解析)。

DIDDoc=Resolve(DID,  method-specification)\displaystyle \text{DIDDoc} = \text{Resolve}\big(\text{DID},\; \text{method-specification}\big)

1. 解析函数 Resolve:把 DID 字符串转换为可读的身份文档。

Resolve(DID)\displaystyle \text{Resolve}(\text{DID})

2. 方法规则:决定去哪个链、用哪个注册表查询。

method-specification\displaystyle \text{method-specification}

3. DID 文档:解析结果,内含公钥、验证方法、服务端点等公开信息。

DIDDoc\displaystyle \text{DIDDoc}

理论上,未来任何应用都能用同一套“验证台”识别全世界任何一个 DID——就像银联 POS 机都能刷各种银行卡。跨链互操作,让“一证走天下”成为可能。

性能与优化

如果每验证一次身份都要去民政局调档案、排队、盖章,这套系统再安全也没人用。DID 的性能问题同样集中在上链环节:链上写入要付 gas,链上读取要看节点速度,而真正验签却快如闪电。

一次完整验证的耗时可以拆成三部分:链上读取时间(查 DID 文档、查撤销状态)、网络往返时间、本地验签计算时间。其中验签是微秒级,网络是毫秒级,链上读取可能是它的百倍千倍——瓶颈一目了然。

Ttotal=Tchain+Tnetwork+Tverify\displaystyle T_{\text{total}} = T_{\text{chain}} + T_{\text{network}} + T_{\text{verify}}

1. 总时延 T 总:一次完整身份验证的端到端耗时。

Ttotal\displaystyle T_{\text{total}}

2. 链上读取 T 链:查询 DID 文档与撤销状态的开销,通常最昂贵。

Tchain\displaystyle T_{\text{chain}}

3. 网络往返 T 网:验证方与节点、缓存之间的通信耗时。

Tnetwork\displaystyle T_{\text{network}}

4. 本地验签 T 验:验签与解析 JSON 的本地计算,量级可忽略。

Tverify\displaystyle T_{\text{verify}}

优化有三板斧。其一,“链下验证优先”:凭证签发与验签都在链下,链上只做锚定和撤销登记;其二,“批量聚合”:撤销状态用 Merkle 树或累积器压缩,一条交易更新成千上万条撤销记录;其三,“二层扩展”:把 DID 锚定放到 Layer2 或侧链,主链只留最终状态根。再加上 Resolver 缓存,命中后连链都不用上。

工程实践展望

当证件、卡包、验证台凑齐,生活开始变化:打开一个新 App,不再填手机号注册,而是掏出身份钱包扫码,对方验证你的 DID 签名——这就是无密码登录(SIOP)。身份从“注册制”变成“出示制”。

金融场景里,监管要求的 KYC 不必再“上传身份证原件照片 + 手持身份证自拍”,而是由合格机构发放“已完成实名认证”凭证,平台验签即可合规,敏感数据不进它的服务器。DAO 治理中,DID 一人一号,有效防女巫攻击;更进一步,AI 代理也需要“可验证的身份”代表用户参与链上事务——DID 凭证就是它的聘用书。

趋势与挑战并存:标准仍在演进,生态存在多方治理和割裂;密钥管理依旧是最大的教育门槛;而零知识谓词证明则把最小披露推向极致——你能证明“我年龄≥18”,却不必暴露生日:

Prove(age≥18)=π,Verify(π)=True 且年龄不泄露\displaystyle \text{Prove}(\text{age} \ge 18) = \pi, \qquad \text{Verify}(\pi) = \text{True} \ \text{且年龄不泄露}

1. 证明生成 Prove:构造一个能证明谓词成立但不泄露具体值的证明。

Prove(age≥18)=π\displaystyle \text{Prove}(\text{age} \ge 18) = \pi

2. 零知识证明 π:一张不包含年龄数字、却能通过检验的“小票”。

π\displaystyle \pi

3. 验证 Verify:确认小票有效,验证者仍得不到任何年龄信息。

Verify(π)=True\displaystyle \text{Verify}(\pi) = \text{True}

从酒店复印件的灾难,到口袋里那张由你自己掌控的智能身份证,DID 把“你是谁”的主动权交还给了你。记住三句话:私钥即主权,凭证即证书,链上只锚定。

AI 应用场景

无密码登录与跨站身份

阶段:身份认证与访问控制

解决的问题:传统网站各自为政的账号密码体系导致密码疲劳、撞库泄露频发;DID 让用户用一个身份钱包即可完成登录,平台只验证 DID 签名,不保存密码,账号密码这个最大的泄露面被直接取消。

具体案例:某 Web3 社区 DApp 接入 DID 登录后,用户扫码授权,DApp 通过 Resolver 获取用户 DID 文档并验签,登录流程从“填表 + 收验证码”的 30 秒降到 2 秒,且后端不再存储任何密码哈希,日志里只有一串 DID 编号。

金融 KYC 最小化披露

阶段:合规审查与风险控制

解决的问题:传统 KYC 要求用户上传身份证照片、住址证明甚至手持证件自拍,机构存储大量敏感数据,一旦泄露就面临巨额罚款;引入可验证凭证后,由持牌机构签发“已验证客户”凭证,平台验签即完成合规,敏感数据从“收集-存储”变成“出示-验证”。

具体案例:某数字银行在开户流程中采用政府签发的 KYC 凭证,用户本地生成证明“年满 18 岁 + 不在制裁名单”的零知识凭证,银行 3 秒完成验签,原始证件照片全程不出用户手机。

DAO 治理与 AI 代理协作

阶段:链上治理与机器身份

解决的问题:DAO 投票易受女巫攻击(一人多号刷票);DID + VC 让每个成员持有唯一身份凭证,同时 AI 代理也需要可信“身份”代表用户执行链上操作,否则无法审计责任归属。

具体案例:某去中心化内容平台要求投票前出示“活跃创作者”VC,票数按凭证校验,刷票率下降 90%;同时用户授权的 AI 代理持临时凭证自动参会投票,凭证到期自动失效,所有操作都能追溯到用户 DID。

Python 演示

python64 行
import jsonimport timefrom cryptography.exceptions import InvalidSignaturefrom cryptography.hazmat.primitives import serializationfrom cryptography.hazmat.primitives.asymmetric import ed25519  class DIDWallet:    """去中心化身份钱包: 管理密钥, 签发与验证可验证凭证(VC)"""     def __init__(self, method, identifier):        self.did = "did:{}:{}".format(method, identifier)        self.sk = ed25519.Ed25519PrivateKey.generate()        self.pk_hex = self.sk.public_key().public_bytes(            serialization.Encoding.Raw,            serialization.PublicFormat.Raw).hex()     def did_document(self):        """DID 文档: 公开的验证方法信息, 绝不含私钥"""        return {            "id": self.did,            "verificationMethod": [{                "id": self.did + "#keys-1",                "type": "Ed25519VerificationKey2018",                "publicKeyHex": self.pk_hex,            }],        }     def issue_vc(self, subject_did, claims, ttl=3600):        """签发可验证凭证: 对声明内容签名后交给持有者"""        vc = {            "issuer": self.did,            "subject": subject_did,            "claims": claims,            "issuedAt": int(time.time()),            "expiresAt": int(time.time()) + ttl,        }        payload = json.dumps(vc, sort_keys=True).encode("utf-8")        vc["signature"] = self.sk.sign(payload).hex()        return vc  def verify_vc(pubkey_hex, vc):    """验证凭证: 用签发人公钥校验签名是否有效"""    body = dict(vc)    sig = body.pop("signature")    pubkey = ed25519.Ed25519PublicKey.from_public_bytes(        bytes.fromhex(pubkey_hex))    payload = json.dumps(body, sort_keys=True).encode("utf-8")    try:        pubkey.verify(bytes.fromhex(sig), payload)        return True    except InvalidSignature:        return False  if __name__ == "__main__":    uni = DIDWallet("edu", "university-01")   # 学校签发机构    alice = DIDWallet("person", "alice-2026")  # 学生 Alice    vc = uni.issue_vc(alice.did, {"studentStatus": True})    print("DID 文档:", uni.did_document())    print("首次验证:", "通过" if verify_vc(uni.pk_hex, vc) else "失败")    vc["claims"]["studentStatus"] = False    print("篡改后验证:", "通过(异常)" if verify_vc(uni.pk_hex, vc) else "拒绝(正确)")
目的:用 Ed25519 实现一个微型 DID 身份体系——生成密钥对、构造 DID 文档、签发可验证凭证(VC),并演示验签通过与篡改拒绝。
  1. self.did = "did:{}:{}".format(method, identifier)按 W3C 三段式语法拼出 DID 编号。
  2. self.sk = ed25519.Ed25519PrivateKey.generate()生成私钥,它就是用户的“私章”。
  3. self.pk_hex = self.sk.public_key().public_bytes(...)导出公钥十六进制,可安全写进 DID 文档。
  4. payload = json.dumps(vc, sort_keys=True).encode("utf-8")把凭证内容序列化成字节串,保证签名前后数据一致。
  5. vc["signature"] = self.sk.sign(payload).hex()签发机构用私钥对凭证内容“盖钢印”。
  6. body = dict(vc)` 与 `sig = body.pop("signature")复制凭证并取出签名,避免签名混进被校验的原文。
  7. pubkey.verify(bytes.fromhex(sig), payload)用签发人公钥验签,核心的“验章”动作。
  8. vc["claims"]["studentStatus"] = False篡改测试:改动一个字段后验签必然失败,证明防篡改。

常见误区

误区我一开始以为,DID 不就是那个 0x 开头的钱包地址吗?反正我转账都用它,把钱包地址当身份就行了。

正解钱包地址只是“密钥派生出的公开标识”,而 DID 是 W3C 标准化的完整体系——标识符 + DID 文档 + 解析方法 + 可验证凭证。地址只能证明“你控制这笔资产”,DID 要证明“你是谁、谁能验证你、你持有哪些凭证”。可以说地址是 DID 的亲戚,但身份证不能简写成银行卡号。

为何常见:大多数人接触区块链的第一印象就是钱包和转账,容易把“链上唯一的字符串”都当作同一种东西。

误区很多小白以为 DID 意味着彻底匿名,谁也查不到我,我就能随便干坏事了。

正解DID 追求的是“用户掌控 + 可审计”,而不是“无法追踪”。签发凭证的机构(大学、政府、银行)仍然是可信中心,只是身份数据不再集中在单一数据库;合规场景下,凭证可以呈现给审计方。匿名只是零知识场景中的可选能力,不是 DID 的默认属性。

为何常见:大众习惯把“去中心化”和“匿名”画等号,忽视了“分散信任”与“没有信任”的本质区别。

误区我以为验证身份就像查征信,得调区块链数据库,每验一次都要付 gas 费,那得多贵啊。

正解凭证本体(claims + 签名)完全在链下,验证本质是本地验签;链上只锚定 DID 文档和撤销状态。只有当 DID 文档没缓存、或需要查询撤销列表时才碰链。绝大多数验证是“零链上交易、零 gas”的,这正是 DID 能落地的前提。

为何常见:受“区块链一切都要上链”的宣传影响,把“链上存证”和“链下验证”混为一谈。

误区有学员问,私钥丢了去公安部门挂失、补办一张不就行了?反正身份还是我的。

正解传统身份证由公安局存档,可以补发;DID 的私钥是“你是 DID 控制者”的唯一证明,链上没有你的密码副本。丢了私钥,等于把身份证的钢印丢掉,只能靠恢复机制(助记词、Shamir 分片、社交恢复、托管恢复)找回,否则只能废弃旧 DID、重建新身份。

为何常见:人们习惯把身份交给机构保管,难以理解“自主权”意味着“自我担责”——自由与责任永远成对出现。

面试题

Q1. DID 标识符的标准格式是下列哪种?

单选题 · easy

  • A.did:方法名:唯一编号← 正确答案
  • B.https://域名/用户路径
  • C.0x开头的哈希地址
  • D.ipfs://内容寻址格式

答案:A。DID 遵循 W3C 标准的三段式语法 did:method:specific-id。B 是普通 URL,C 是区块链地址,D 是 IPFS 内容地址——它们虽也是标识符,但格式与语义都不属于 DID 标准。看到“标准格式”,就要想到“did + 方法名 + 唯一编号”。

Q2. DID 文档中可以包含下列哪些内容?

多选题 · mid

  • A.公钥与验证方法列表← 正确答案
  • B.私钥与助记词信息
  • C.服务端点的地址信息← 正确答案
  • D.哈希后的唯一身份ID← 正确答案

答案:ACD。DID 文档是公开的身份描述,必须包含 id 字段、验证方法(含公钥)与服务端点;B 的私钥和助记词绝不能写入文档,否则等于把身份主权公之于众。D 的“唯一身份 ID”就是文档首行的 id 字段,容易被漏选。

Q3. 验证可验证凭证(VC)时,真正决定“凭证是否可信”的是?

单选题 · mid

  • A.凭证内容是否详细丰富
  • B.签发机构公钥验签是否通过← 正确答案
  • C.凭证在钱包中保存时间的长短
  • D.持有者钱包地址是否余额充足

答案:B。凭证可信与否取决于签发方签名能否用其公钥验证通过,与内容多少、存放时间、钱包余额无关。验签通过意味着签发方确实对这份声明签过字,之后只需再查撤销列表判断当前是否有效。

Q4. 选择性披露相比直接交出完整身份证的优势有哪些?

多选题 · hard

  • A.最小化暴露无关隐私字段← 正确答案
  • B.减少验证方数据存储压力← 正确答案
  • C.完全消除密码登录的需要
  • D.降低身份被滥用的风险← 正确答案

答案:ABD。选择性披露让“只暴露必要字段”成为可能,验证方拿到的数据少了,存储和泄露面自然缩小,滥用风险随之降低。C 不成立——登录方式与凭证披露是两回事,DID 虽能实现无密码登录,但那不是选择性披露的直接收益。

Q5. 在 DID 体系中,私钥的主要用途是什么?

单选题 · easy

  • A.向全网公开身份信息
  • B.对消息签名以证明控制权← 正确答案
  • C.替代密码完成自动登录
  • D.加密所有用户数据存储

答案:B。私钥用于对消息签名,证明你是某个 DID 的控制者,公钥则负责验证。A 是公钥的职责;C 说法不严谨,登录依赖的是签名验证而非私钥本身;D 描述的是数据加密,与身份签名是不同功能。

Q6. 一个酒店 App 只想知道“顾客是否年满 18 岁”,最符合最小化披露的做法是?

单选题 · mid

  • A.上传身份证正反面照片存档
  • B.出示权威机构签发的“成年”凭证← 正确答案
  • C.提供身份证号让酒店后台查询
  • D.绑定手机号并验证短信验证码

答案:B。最小化披露的核心是“够用就好”——出示权威签发的“成年”证明,验签通过即可,无需交出照片、身份证号或手机号。A、C 暴露了更多敏感字段,D 只能证明手机号归属,无法证明年龄。

Q7. DID 解析器(Resolver)在解析过程中负责哪些工作?

多选题 · mid

  • A.根据方法名定位对应的链← 正确答案
  • B.查询并缓存链上的DID文档← 正确答案
  • C.验证调用者私钥是否有效
  • D.将DID映射为完整文档返回← 正确答案

答案:ABD。解析器负责“编号转文档”:按方法名定位目标链、读取 DID 文档、缓存并返回结果。C 是持有者或验证方的验签职责,不属于解析器;A、B、D 恰好覆盖了解析的全过程。

Q8. 关于可验证凭证的撤销机制,下列说法正确的是?

单选题 · hard

  • A.凭证一旦签发就永久有效
  • B.撤销列表登记在链上供验证方查询← 正确答案
  • C.撤销只能由持有者本人发起
  • D.撤销后凭证的签名会自动失效

答案:B。签名本身不会因撤销而自动改变,验证方必须查询链上(或可信状态列表)的撤销登记才能拒绝已撤销凭证。A 错,凭证可撤销;C 错,撤销通常由签发方发起;D 错,签名不变,靠查列表判断。

Q9. 与传统“服务商保管账号”模式相比,DID 所倡导的身份控制理念是什么?

单选题 · easy

  • A.平台审核更严格的登录
  • B.更复杂的账号密码体系
  • C.用户自己掌控身份数据← 正确答案
  • D.中心化数据库加密保存

答案:C。DID 的核心是“自主权身份”(SSI):身份数据由用户掌控、可携带、可验证,而不是托管在平台数据库里由平台审核。A、B、D 都是在强化中心化模式,与 DID 理念背道而驰。

Q10. 关于降低 DID 链上开销的优化,下列说法最准确的是?

单选题 · extreme

  • A.凭证内容全量上链存储最安全
  • B.撤销状态可批量聚合压缩上链← 正确答案
  • C.链上开销与验证次数完全无关
  • D.优化后不需要任何链上数据

答案:B。撤销状态用 Merkle 树或累积器批量聚合后上链,一条交易即可更新海量撤销记录,是核心优化手段。A 全量上链更贵且泄露;C 错,验证次数影响撤销查询频率;D 错,锚定与撤销仍需最小化的链上数据,并非完全不需要链。