Type DeFi 伯克利公开课
Created Oct 08, 2026, 00:00:00 / Updated Oct 08, 2026, 00:00:00
Views — / Comments — / Words 5,854
链接外部账户到 DeFi,理解匿名凭证、真名与监管、CanDID,以及信任网络和人格证明等低权威身份方案。
系列:DeFi 伯克利公开课
提示|鸣谢与来源
本文经授权完整转载自 Dapp Learning|【伯克利公开课】第十一课 - 去中心化身份。原文发表于 2026 年 3 月 15 日 20
。感谢 Dapp Learning 团队的整理与分享;原文文字、配图及文末署名完整保留。

去中心化金融(DeFi)重塑了借贷、交易与治理的底层逻辑。但有一个核心问题始终悬而未决:在一个无需许可、匿名优先的系统中,"你是谁"这件事该怎么处理?
传统金融靠政府身份证件、信用评分和中心化 KYC 流程来建立信任。DeFi 则以公钥地址作为身份的基本单元。任何人都可以随时创建无限多个地址,无需许可,也无需透露任何个人信息。这种设计给了用户前所未有的自主权,但也带来了结构性的挑战:空投如何防刷?治理如何做到一人一票?借贷为何必须超额抵押?监管合规又如何在链上落地?
这些问题的答案,最终都指向同一个方向:去中心化身份。本文系统梳理去中心化身份的三个核心维度:如何将外部账户链接到 DeFi 并通过零知识证明实现匿名凭证;权威身份与真名制度在链上世界的角色与局限;以及信任网络和人格证明等减少对权威依赖的未来方案。
Andrew Miller,现任伊利诺伊大学厄巴纳-香槟分校电气与计算机工程系的副教授,兼任计算机科学系的联聘教授,他担任加密货币与合约倡议组织(IC3)的副主任,以及Zcash基金会的董事会成员。Andrew Miller教授的研究兴趣广泛涉及计算机安全领域,尤其专注于去中心化系统与加密货币的安全设计。

一、链接外部账户到 DeFi
二、真名、监管与 CanDID
三、低权威身份的未来方案
我们从一个最简单的例子讲起:向 Twitter 用户发空投。
假设有一个新的以太坊代币,想让每个有 Twitter 账户的人都能领一份空投。Alice 的 Twitter 是 @AliceToGo,她想对智能合约说:"我有这个 Twitter 账户,把空投给我吧。"
怎么实现呢?最简单的做法:Alice 生成一个以太坊地址,登录 Twitter,在个人资料里写上这个地址。代币开发者(或者一个预言机)去读 Alice 的 Twitter 主页,看到地址后就把代币发过去。如果不想让开发者做中间人,也可以用预言机来自动完成这个过程。

但空投只是一个起点。链接外部账户在 DeFi 中至少有六大用途:
空投、打赏和赠送。
你想给某个 Twitter 博主打赏加密货币,即使他还没有链上地址。只要他后续创建地址并关联到账户,就能领取。
声誉当抵押品。
DeFi 借贷通常要求超额抵押,成本高昂。如果能把一个有声誉的社交账户关联进来,声誉就成了一种"软抵押"。你违约了?你的粉丝会知道。
简化登录。
用区块链地址登录 DeFi 系统当然可以,但对于仪表板之类不需要动私钥的场景,用已有的社交账户登录更方便。
防女巫攻击。
如果谁都能注册无限多账户来刷空投,系统就废了。Twitter 这些平台已经花了大力气防止垃圾注册,链接这些账户等于借用了它们的反作弊能力。
账户恢复。
密钥管理一直是个老大难。如果能通过控制外部账户来证明身份,就多了一条找回资产的路。
一人一票。
DAO 治理中,"一币一票"是自然选择,但"一人一票"更公平。光数以太坊地址不行,谁都能创一堆地址。链接一个确保每人只能有一个账户的外部系统,才能真正实现公平。
在深入技术细节前,先来理解一个通用框架:证明模型(Attestation Model)。
这个模型有三个角色。主体(Subject),就是用户,比如 Alice。签发者(Issuer),就是身份或账户的提供方,比如 Twitter。依赖方(Relying Party),就是需要验证身份的一方,比如空投合约。
所谓"证明",就是签发者对主体做出某种声明。比如:"这是 @AliceToGo 的账户,真名是 Alice,个人资料里写的以太坊地址是 0x932..."

回到 Twitter 空投的例子。Alice 是主体,Twitter 是签发者,空投合约是依赖方。但这里有个明显的问题:隐私。
Alice 把以太坊地址贴在 Twitter 公开资料里。这意味着什么?她参与空投的意图被 Twitter 看得一清二楚。她的以太坊地址和 Twitter 账户的关联关系被全世界看到了。隐私几乎为零。

再想一个更贴近生活的例子。你去酒店办入住,前台要求你出示身份证。前台只需要确认你的姓名和预订信息匹配就行了,但你的身份证上还写着家庭住址、民族、出生日期……这些信息全都暴露给了前台。
跟 Twitter 空投相比,这种方式有一个好处:签发者(公安局)和依赖方(酒店前台)之间没有直接通信。 公安局不知道你住了哪家酒店,也没法阻止你出示身份证或护照。但它的缺点也很明显:你泄露了远多于必要的个人信息。
分析任何身份系统时,有四个关键问题值得追问。
隐私性: 签发者能获知多少关于你和依赖方之间交互的信息?
可用性: 签发者能不能阻断你和依赖方的交互?
撤销能力: 签发者能撤销你的凭证吗?你自己能撤销吗?
含义: 证明到底说了什么?签发者是否为其准确性担保?
OAuth 是目前最常见的身份链接方式。比如你在某个论坛点击"用 GitHub 登录",浏览器会跳转到 GitHub 的页面,问你是否允许论坛读取你的邮箱。你点同意,GitHub 就告诉论坛:"这是用户 @amiller,邮箱是 amiller@email.com。"

OAuth 比 Twitter 空投方案好一些——至少邮箱地址只在论坛和 GitHub 之间传递,而不是公开广播。
但问题是 GitHub 仍然在中间:你必须依赖 GitHub 保持在线,而且 GitHub 知道你正在尝试登录哪个网站。

有没有办法让签发者不参与后续验证?有。用数字签名。
假设 DeFi 大学给你签了一份在读证明(Enrollment Certificate)。拿到这份签名文件后,你可以直接出示给任何验证方。验证方只要检查签名确实来自 DeFi 大学就行了。大学不需要在线,也不知道你把证明出示给了谁。

但这份证明可能包含了太多信息。如果我只想证明自己是在校生来获取学生折扣,为什么要连邮箱和生日也一起暴露?
改进方案是:将一份大证明拆分成多个独立签名的小块——邮箱一个、入学日期一个、出生日期一个。向学生折扣网站只出示入学日期那一份,向年龄折扣网站只出示出生日期那一份。
这是一个进步,但仍然有两个隐私问题。
为了验证年龄折扣,我暴露了完整的出生日期——其实我只需要证明"年龄在某个范围内"就够了。
由于每份子证明中都包含账户名 @amiller,不同的验证方可以关联到同一个用户——它们可以追踪我多次使用凭证的行为。

为了解决这些问题,我们请出一个重量级工具:匿名凭证(Anonymous Credentials),基于零知识证明(zkSNARK)。核心思路很简单。我不再直接出示凭证,而是构造一个关于这份凭证的零知识证明。
这个证明分两部分:
公开声明(Statement): 我有一份由 DeFi 大学签名的有效文件,证明我在 2022 年注册在案。加上我想关联的会话密钥。
隐藏见证(Witness): 签名后的完整凭证、我的邮箱、我的账户名、DeFi 大学的签名。这些全部隐藏,不会泄露。
零知识的意思就是:验证方只能知道声明中明确写的东西(我是在校生),推断不出关于见证的任何其他信息。

还可以加上撤销功能。DeFi 大学维护一个公开的"未撤销文档 ID 列表",定期更新。
用户生成零知识证明时,额外证明自己的文档在这个列表上,但不暴露具体是哪一个。
即使你在不同时间多次使用凭证,验证方也无法把它们关联起来。

最后补充一个关于"命名"的话题。
"Alice" 这个字符串能唯一标识一个人吗?不能。一个以太坊地址呢?看起来够唯一了。但别忘了分叉的存在。同一个公钥在 Ethereum 和 Ethereum Classic 上指向完全不同的资产和状态。所以需要加上链的标识:eth:address:0x... 和 etc:address:0x...。
文档也一样。"bitcoin.pdf" 人人都知道是中本聪白皮书,但 bitcoin.org/bitcoin.pdf 和 bitco.in/bitcoin.pdf 可能返回不同版本。有人可能篡改了内容。IPFS 的做法更聪明:把文档哈希直接放进标识符里,无论从哪个节点拿到文件,都能验证完整性。
计算机科学有句名言:"计算机科学只有两个难题:缓存失效和命名。"在 DeFi 生态里,项目多、分叉频繁、技术迭代快,开发者需要在短名称的便捷和长标识符的精确之间灵活切换。
在标识符中加入密码学组件(哈希、公钥、程序),会让它变长,但也带来了内建的访问控制和完整性保障。
综上所述,链接外部账户到 DeFi 有很多用途。不考虑隐私的话,实现起来很简单。
数字签名和 zkSNARK 让我们可以做到最小隐私泄露的匿名凭证。
前面聊的都是在线账户。无论是以太坊地址还是 Twitter 账号。但大家都清楚,这些东西跟政府发的身份证完全不是一回事。在 DeFi 的语境下,这种差异有一个很具体的体现。
在 DeFi 里借钱,必须超额抵押。想借 90 美元的代币?先存 100 美元以上的 ETH。价格跌了、资不抵债了,仓位会被自动清算。
但也就到此为止了。Alice 可以直接走人,她其他地址上的资产一点不受影响。合约能处理的,只有她最初存进去的保证金。

在传统世界里借钱就不一样了,不需要超额抵押,直接借 100 美元就行。
为什么?因为在真名和信用评分的体系里,你跑不掉。催收会找上门,不还钱的记录会写进信用报告,很难洗掉。

真名身份和在线账户有三个根本差别:
你不能丢弃真名来逃债或躲通缉令;
每个人只有一个真名,造不出第二个;
你不能转让真名给别人。
这些特性正是 DeFi 必须超额抵押的根本原因,没有真名体系的追索能力,就只能靠多余的抵押品来兜底。
真名身份在很多地方是硬性要求。注册中心化交易所要过 KYC,用加密货币 ATM 也可能要出示证件。
具体的监管规则方面,OFAC 制裁名单要求金融机构确认交易对手不在美国政府的制裁名单上。银行保密法 / 旅行规则要求所有"货币服务企业"(包括加密交易所和钱包)收集并存储客户的真名身份信息。
这就造成了一个根本性的张力:监管要求收集信息,隐私要求少泄露信息。
真名身份系统还有一些不那么显眼但很重要的特点,任何替代方案在设计时都应该考虑到。
证件丢了可以补办: 护照丢了,虽然麻烦,但去窗口就能重新办一个。
个人信息是负债: 对存储 PII(个人身份信息)的公司来说,信息泄露意味着法律责任和赔偿义务,所以聪明的公司会尽量少存。
被遗忘权: 欧盟 GDPR 赋予用户权利,可以要求服务商删除自己的个人数据,即便你之前同意过存储。
破产保护: 信用记录虽然是永久的,但可以通过破产来消除部分债务。虽然代价很大,但这是一层人道主义的安全网。
如果一个替代身份系统连破产保护都没有,那它可能比现有体系更加冷酷。
匿名凭证听起来很好,但有个现实障碍:它假设有签发者愿意帮你签凭证。
这里面有三个难题。
鸡生蛋问题: 没有签发者就吸引不了用户,没有用户就吸引不来签发者。死循环。
API 有限: 签发者即使愿意参与,提供的接口能力也很有限。而且它们有囤积数据的动机,不愿意让用户自由使用。
隐私泄露: 申请凭证的过程中,签发者可能得知你打算怎么用。
CanDID(Can-Do Decentralized Identity)用一个巧妙的方法绕开了这些障碍。
传统世界中,你去办身份证,需要带户口本、出生证明、银行流水等材料,相关机构核实后给你签发证件。

CanDID 的做法类似,但更加去中心化。
核心思想是: 用预言机(Oracle)把任何网站变成签发者,即使那些网站完全不知情。 社保局、医院、银行、雇主这些机构都有网站,登录后能看到个人信息。
CanDID 利用这一点:Alice 通过 TLS 连接登录这些网站,然后和一个由多个节点组成的 Oracle 委员会交互。
通过类似 DECO 的技术,Alice 可以向节点们证明她确实登录了某个网站并获取了特定信息,而不需要网站做任何改动。
Oracle 委员会随后联合签发一份凭证,Alice 就能在匿名凭证系统里使用了。

这个方案有三大优势:
隐私: Oracle 委员会只看到最终凭证,看不到原始个人数据。
遗留兼容: 不需要任何网站做修改。灵活性,任何网站上的任何数据都可以成为凭证来源。
密钥管理: 秘密共享
CanDID 还解决了一个重要问题:密钥恢复。用的是秘密共享(Secret Sharing)。
基本思路:把密钥拆成多个"份额",分给 Oracle 委员会的各个节点。单独一个份额什么也看不出来。只有凑够一定数量(比如 5 个里的 3 个)才能还原密钥。

举一个简单的 XOR 编码示例(3-out-of-3 秘密共享)。
假设要存储密钥 1011:
份额 1:随机选取 = 0001
份额 2:随机选取 = 1010
份额 3:计算得出 = 0000(使得三者 XOR 得到原始密钥 1011)
恢复密钥时,Alice 不是靠出示密钥来证明身份(毕竟密钥就是丢了),而是通过同时登录多个外部账户(Twitter、Google、Facebook)来证明"我就是我"。Oracle 委员会核实后,帮她从秘密共享备份中重建密钥。
所以,CanDID 证明了一件事:匿名凭证的理想特性和权威身份的使用是可以兼容的。
即使遗留的身份提供方什么都不改,CanDID 也能利用它们现有的能力来生成新型凭证。核心技术是预言机,底层可以基于零知识证明、秘密共享或可信硬件。
在讨论未来方案之前,先提一个指导思想: 最小权限原则 ,这来自信息安全领域,意思是:能用"普通用户"权限搞定的事,就别以"管理员"身份登录。
为什么?出问题时损害有限,信任是有成本的,更低信任的方案往往更便宜。收集个人信息本身就是负债,能不收就不收。
能不能不靠权威的信用评分机构,就建立一个去中心化的声誉系统?
信任网络(Web of Trust) 给出了一种思路。
在信任网络中,节点是人或实体,有向边代表"信任",可以是一条信用额度,也可以是历史交互记录。沿着路径传播的"流量"代表传递性信任,也就是"朋友的朋友"。
举个例子。Alice 信任 Carol 最多 10 美元,Alice 还信任 Bob 和 Dave 的推荐,上限 20 美元,Dave 信任 Carol 最多 15 美元。
现在 Alice 和 Carol 之间要做一笔 18 美元的交易,信任网络可以评估是否有足够的传递路径来支撑。

真实案例是 Bitcoin-OTC,一个大约 12,000 名用户的社区。每个人都有 PGP 密钥,相互之间有信任评分。

信任网络还能用于身份验证。
Bob 当面验证了 Carol 的公钥,Alice 信任 Bob 的验证能力,于是 Alice 就能基于传递性信任导入 Carol 的公钥。不需要任何中心化的证书机构。
如果我们只需要"一人一账户"这个属性,不需要知道真名、地址或其他个人信息,能不能用更保护隐私、更少依赖权威的方式来实现?
先看一个具体的场景。
二次方融资(Quadratic Funding) 是一种为公共物品筹资的方法。捐助者向支持的项目捐款,一个大型配捐组织(如 Gitcoin)按每笔捐助的平方根来计算配捐金额。效果是:很多笔小额捐助比少量大额捐助获得更多配捐,鼓励广泛的社区参与。
但如果一个人可以创建几十个假身份呢?他把一笔大额捐助拆成很多小额,分到不同账户。总捐款不变,但配捐金额暴增。机制的激励设计被彻底破坏了。

人格证明的一个具体方案叫假名派对。
运作方式是这样的:
在一个特定时间和地点,组织一场活动。场地是公共空间,出入口有限,有视频监控。任何人都可以进来。
活动开始后,组织者站在唯一的出口。参加者排队,依次离开。每个人离开时,在手机上生成一对公私钥,把公钥展示给组织者扫描。
组织者把公钥记录到公开的公告板上。一旦离开,不允许再进入。

这个过程保证了一人一公钥。
组织者不会给同一个人扫两次,离开后也没法在监控下偷偷溜回去。
最关键的是:组织者不检查身份证,不收集社交账号,不要求任何个人信息。参加者戴面具都行。组织者做的唯一一件事就是:看到一个人站在面前,扫描公钥,放行。
拿到公钥和私钥后,你可以进一步用零知识证明创建匿名凭证。证明"我是公告板上的某个人",但不暴露是哪一个。即使组织者在扫描时看过你的脸,你后续使用凭证时也无法被关联。
DeFi 会议上常见的做法是发 POAP(出席证明协议)代币。组织者给每位参加者一枚实物代币,上面有二维码,可以在链上领取数字纪念品。

POAP 和假名派对想解决的问题一样,但有差别。
假名派对要你用手机扫码,手机一般不会随便递给别人。
而 POAP 代币是自包含的。DeFi 会议结束后,经常能看到一堆丢在桌上的 POAP,有人忘拿了,有人不在乎。站在会场门口问人要一枚也很容易。
两种方案都在尝试通过线下聚集分发凭证,让每个人大致持有一份。但手机扫码的方式确实比实物代币更难转让。
回顾本讲,三个核心要点。
第一,DeFi 开发者手里有一整套密码学工具来处理身份。
数字签名、zkSNARK、预言机。这些技术让我们的协议可以最大程度地减少对签发者的依赖,无论是隐私、可用性还是其他安全目标。
第二,命名方案需要灵活应变。
DeFi 生态里项目众多、互操作频繁、分叉随时发生。今天能唯一标识某个账户的名字,明天可能因为分叉就不够用了。
第三,去中心化身份的未来可能长在"低权威"土壤上。
不再依赖政府或大公司来发身份证,而是用假名派对、信任网络这样的创新方式来实现必要的身份功能。我们讨论了其中一些方案的雏形,但未来一定还有更多我们现在想不到的可能。
拓展阅读:
课程链接:
https://rdi.berkeley.edu/berkeley-defi/f25?sessionid=
视频链接:
https://www.youtube.com/watch?v=3FL-1HMKvYA

★
添加小助手
加入DL社区

https://twitter.com/Dapp_Learning
Youtube
https://www.youtube.com/channel/UCdJKZVxO55N3n2BQYXMDAcQ
discord
★
翻译整理:Annie.F
校对修改:Rubin
图文排版:Xxx
Comments
Notes, questions, and follow-ups are welcome here.