{"content":{"title":"World ID的基本原理","body":"<!--StartFragment-->\r\n\r\n[https://whitepaper.worldcoin.org/](https://whitepaper.worldcoin.org/)\\\r\n\r\n\r\n1. 概述\r\n\r\nWorldCoin由基于人格证明的ID系统，和WLD代币构成。它在保护隐私的同时，区分人类和人工智能。每个人都因为是”人“而可以分享WLD。\\\r\nWorldCoin需要把人和AI区分开，并且人和人之间也要区分开。它通过定制的[Orb](https://whitepaper.worldcoin.org/technical-implementation%23the-orb)生物识别设备来识别人，通过ZK完成隐私保护。\\\r\nWorld ID 是在 Worldcoin 协议上发布的，它允许个人向任何验证者（包括 web2 应用程序）证明他们是人类，同时通过*[零知识证明](https://en.wikipedia.org/wiki/Zero-knowledge_proof)*维护他们的隐私。World ID 旨在实现个人绑定，这意味着 World ID 只能由其颁发对象的个人使用。窃取或获取 World ID 凭证的欺诈者应该很难使用它。此外，个人应该始终能够重新获得丢失或被盗的世界 ID。\\\r\n可以有很多不同的issuer，发行各种不同的身份凭证。例如：World ID依据生物验证发行，证明持有者是一个人类；Phone Nr由运营商发行，证明是客户；Gov ID由政府发行，证明是公民...\\\r\nWorldCoin整体上非常像W3C的DID协议。\\\r\n\r\n\r\n![](https://pic1.zhimg.com/80/v2-1918e0aba69e0bbb41133aa8056a8ac0\\_1440w.webp)\r\n\r\n\\\r\n\r\n\r\n1. 身份证明 PoP （Proof Of Personhood）\r\n\r\n基本要求：\\\r\n\r\n\r\n* 每个人只能验证一次，重复数据会被删除\r\n* 身份验证：只有合法owner才能使用身份\r\n* 身份恢复：身份证明受损后，可以自己恢复。\r\n\r\n下面图表达了身份发行，验证的关系，非常像W3C的DID\\\r\n\r\n\r\n![](https://pic1.zhimg.com/80/v2-5f3798171466b045cfbdd4f6552dc1e0\\_1440w.webp)\r\n\r\n\\\r\n恢复可以有多种方法：\\\r\n\r\n\r\n* 额外备份的凭据\r\n* 社交恢复\r\n* 恢复密钥，用户向issuer重新证明自己的身份，获得具有相同信息的新ID（有些情况下不可行，如用户自己生成私钥，而私钥丢了）\r\n* 重新颁发：如身份盗窃发生时，可以废弃旧id，颁发一张新id，这让身份转让在经济上不可行。\r\n\r\n其他措施：\\\r\n\r\n\r\n* 撤销：issuer可以撤销颁发的凭据，例如大学颁发毕业证，但是发现学术舞弊后，可以吊销毕业证\r\n* 到期：很多凭证有时限，如护照。\r\n\r\n\\\r\n\\\r\nPOP机制设计：生物识别技术可以满足各种关于PoP的要求：\\\r\n\r\n\r\n* 有包容性，每个人都能用\r\n* 防欺诈：不能重复注册\r\n* PersonBound：不能转让\r\n\r\n![](https://pic4.zhimg.com/80/v2-9097db2d137670b5702ca65be12afdef\\_1440w.webp)\r\n\r\n\\\r\n生物识别是在录入特征后，后续验证时与之前录入的特征进行对比，是1：N的验证。\\\r\n下图是多种生物识别技术与当前目标的对比，虹膜是可行的。WorldID定制了Orb设备来进行虹膜验证。\\\r\n\r\n\r\n![](https://pic1.zhimg.com/80/v2-918615b9a842063b5e6aca46ed396fc8\\_1440w.webp)\r\n\r\n\\\r\n一旦通过Orb验证，用户就可以获得一个World ID，可以定期申请一定的WLD，将来其他凭证也可以基于世界币协议发行。\\\r\n\r\n\r\n![](https://pic4.zhimg.com/80/v2-acebb409af24a114d4eb48d37a308403\\_1440w.webp)\r\n\r\n\\\r\n虹膜代码是在设备本地计算的，但唯一性识别是在服务器进行的，即与已经注册过的所有代码进行比较。随着注册人数越来越多，这个计算量是越来越大的。\\\r\nWorldCoin一开始在polygon上部署，后来迁移到了以太坊的RollUp （基于OP Stack）。\\\r\n用户在手机上生成密钥对，Orb将虹膜和公钥配对，然后公钥（地址）被在以太坊上链注册。会被跨链到polygon POS和Optimism。因此 World ID 可以在这些链上本地使用。\\\r\n注册后，用户可以以不信任和私密的方式向第三方证明他们拥有WorldID，从而证明他们的独特人格。由于很多内容是private的，因此通常需要将证明与特定的操作联系起来（例如投票）。我感觉它跟W3C DID一样。\\\r\n\\\r\n\\\r\n下图高度概括了注册和使用的基本流程。可以看出来，大部分处理是依赖于链下预言机的。\\\r\n\r\n\r\n![](https://pic3.zhimg.com/80/v2-83eac9bf7132d9365c50bb420170c3be\\_1440w.webp)\r\n\r\n\\\r\n用户使用：\\\r\n用户本地生成的sk是随机串，pk是sk的hash，用一个从sk到pk的ZKP作为签名。除了注册外，公钥在日常使用中不会被用到，而是使用一个普通的以太坊密钥对进行日常的链上交互。用户可以直接从WorldApp通过扫描二维码或者用深链接来发起验证，验证通过后，会在本地直接生成一个ZyKP（应该是merkle proof），通过World ID SDK直接发送给发起验证请求的DApp.\\\r\n开发者使用：\\\r\n开发者可以使用链上的验证合约来验证用户提供的ZKP，从而与WorldID集成。开发者至少提供app id和action（也这两个合起来就是context，用来生成无效器-nullifier），无效器用来对抗女巫攻击，因为对一个WorldID来说，一个context是唯一的，只会生成一个无效器。用户的WorldID跟无效器hash在一起，生成无效器hash。对同一个用户来说，无论他开多少个context，只要context一样，就会生成一样的无效器hash，从而对抗女巫攻击。例如对于投票来说，用投票提案的id作为上下文，对空投来说，用用户的钱包地址作为上下文，这样就可以防止重复投票或薅羊毛了。\\\r\n同样的流程也可以用在链外身份验证上，只不过proof的验证要通过rpc服务发送至区块链节点来验证。其他都一样。\\\r\n\\\r\n\\\r\n链上验证流程（比较简单，就不额外解释了）：\\\r\n\r\n\r\n![](https://pic3.zhimg.com/80/v2-2ad75c5fc0fcb1a8af3c56007f6c74fe\\_1440w.webp)\r\n\r\n\\\r\n**多链支持（非常通用的方法，跟ENS的多链支持类似）**：\r\n\r\n![](https://pic4.zhimg.com/80/v2-8ee3573afc7307634f33397055ca546b\\_1440w.webp)\r\n\r\n\\\r\nWorldID被设计为在一处注册（以太坊），可以在各处使用。\\\r\n\r\n\r\n1. 注册发生在以太坊上；每次注册都会触发root改变，root的改变会触发一次复制过程\r\n2. 复制可能由WorldID合约触发（2a)，也可能由三方合约触发（2b），无论哪种，最新的root都被通过跨链桥发送到三方链上\r\n3. root发送到目标链后，会由WorldID Proxy 合约验证，验证之后会更新为新的root，然后三方合约就可以用它来完成验证了。\r\n\r\n通过以上内容，基本了解其技术方案了。其他一些经济学，治理等就不再赘述了。\r\n\r\n<!--EndFragment-->"},"author":{"user":"https://learnblockchain.cn/people/13806","address":null},"history":null,"timestamp":1710312000,"version":1}