1. Web3与DID概述:从互联网身份演进到去中心化身份

大家好,我是这门课的主讲人。今天咱们聊聊Web3和DID——去中心化身份。说实话,我最早接触这个领域是在2017年,当时还在做传统的OAuth2.0认证系统。那时候我就觉得,用户把身份信息交给第三方平台托管,这事儿怎么看都不太对劲。

嗯,咱们先不急着讲技术细节。先搞清楚一个问题:互联网身份到底是怎么演变成今天这个样子的?

1.1 互联网身份的演进:从账号密码到DID

我习惯把互联网身份的发展分成三个阶段。你想想看,是不是这样?

阶段 代表模式 典型问题
Web1.0 账号+密码 每个网站一套密码,记不住
Web2.0 OAuth/微信登录 平台控制你的身份数据
Web3.0 DID+VC 用户自己掌控身份

第一阶段:Web1.0的孤岛式身份

说白了就是每个网站自己搞一套用户系统。你在A站注册了,去B站还得再注册一遍。我在2010年做第一个创业项目时,光用户注册模块就写了三遍——因为每次换项目都得重新造轮子。那时候的痛点很明显:密码太多,用户记不住;数据分散,没法互通。

第二阶段:Web2.0的联邦式身份

后来OAuth协议出来了,大家觉得终于解放了。用Google账号、微信账号就能登录各种网站。方便是真方便,但代价是什么?你的社交关系、浏览记录、消费习惯,全被平台拿走了。我记得有一次做用户画像分析,发现平台比用户自己还了解用户——这其实挺可怕的。

第三阶段:Web3.0的去中心化身份

DID的出现,本质上是在回答一个问题:凭什么我的身份数据要由平台说了算? 你想想看,现实世界里你的身份证是自己保管的,到了互联网上反而要交给别人托管?这不合理。

1.2 DID的核心概念:你真正拥有你的身份

DID的全称是Decentralized Identifier,去中心化标识符。我给它下过一个定义:DID是一种全球唯一的、可验证的、不依赖任何中心化注册机构的数字身份标识。

来,咱们拆开看几个关键点:

  • 全球唯一:每个DID在全世界范围内都是独一无二的
  • 可验证:任何人都能验证这个DID的真实性,不需要找第三方
  • 去中心化:没有哪个机构能控制你的DID,包括创建它的系统

我在项目中遇到过不少人对DID有误解,觉得DID就是钱包地址。其实不是。钱包地址只是DID的一种实现方式。DID是一个更抽象的概念,它定义了一套标准——W3C的DID规范。

核心要点:DID的核心价值在于「自主权」。你拥有你的身份,而不是平台租给你一个身份。

1.3 DID的技术架构:三层模型

我个人习惯把DID系统分成三层来看:

  1. 底层:DID方法(DID Method)—— 定义DID怎么创建、解析、更新、删除
  2. 中层:DID文档(DID Document)—— 描述DID的元数据,比如公钥、服务端点
  3. 上层:可验证凭证(Verifiable Credential)—— 基于DID的声明和证明

举个例子你就明白了。假设你有一个DID:did:example:123456789abcdef。这个DID对应的DID文档大概长这样:

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:example:123456789abcdef",
  "verificationMethod": [{
    "id": "did:example:123456789abcdef#keys-1",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:example:123456789abcdef",
    "publicKeyMultibase": "zH3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
  }],
  "authentication": ["did:example:123456789abcdef#keys-1"]
}

看到没?这个文档里记录了你的公钥。别人可以用这个公钥验证你的签名,确认你就是这个DID的主人。整个过程不需要任何中心化服务器。

避坑指南:我曾经在项目里直接把DID文档存在链上,结果Gas费高得离谱。后来才意识到,DID文档不需要全上链——只需要存个哈希值,文档本身可以存在IPFS或者分布式数据库里。嗯,这个教训花了我不少ETH。

1.4 DID的核心价值:为什么我们需要它?

你可能会问:现有的身份系统用得好好的,为什么要折腾DID?

我总结了三个核心价值:

  • 隐私保护:选择性披露。比如你证明自己年满18岁,不需要出示身份证号,只需要出示一个「年龄≥18」的零知识证明。我在做KYC方案时,这个特性帮了大忙。
  • 互操作性:一个DID可以在不同平台、不同链上使用。不像现在,你在以太坊上的身份到了Solana上就废了。
  • 抗审查:没有谁能冻结或删除你的DID。除非你把私钥丢了——嗯,那是你自己的问题。

⚠️ 重要提醒:DID不是银弹。它解决的是「身份自主权」问题,但解决不了「身份真实性」问题。一个DID可以证明「这个签名来自这个私钥」,但证明不了「这个私钥的主人叫张三」。后者需要可验证凭证(VC)来解决,咱们后面会详细讲。

1.5 实际应用场景:DID能做什么?

我参与过几个DID落地项目,分享几个真实场景:

场景 传统方案 DID方案
用户登录 账号密码/OAuth DID签名登录,无需密码
学历认证 学校出具纸质证明 学校签发VC,学生自主管理
供应链溯源 中心化数据库 每个环节DID签名,不可篡改

举个例子,我在做一个去中心化招聘平台时,用了DID+VC的方案。求职者用DID登录,持有由前公司签发的「工作经历VC」。招聘方验证VC的签名,确认经历真实。整个过程不需要求职者把简历发给第三方平台——隐私问题就这么解决了。

好了,这一章的内容就到这里。下一章咱们会深入DID的具体实现——怎么创建DID、怎么解析DID文档、怎么用DID做签名验证。到时候我会带大家手写一个简单的DID方法实现。

记住一句话:在Web3的世界里,你不是用户,你是主人。