验证互联网身份代码:演练

加密做市商GSR承诺全部业务碳中和

据The Block消息,加密做市商GSR已承诺购买碳信用额度使其全部业务碳中和,这还将包括其最近推出的比特币采矿业务,该业务已经部分由水力发电提供动力。GSR 预计将在2021年下半年扩大其北美比特币采矿业务,并计划使用清洁能源。

验证互联网身份代码:演练

验证互联网身份代码:演练

在互联网计算机上,用户可以使用互联网身份密码认证系统登录各种 dapp,如 NNS dapp、OpenChat 等。这样做时,他们相信该服务会妥善保管他们的凭据 – 但他们可能想直接确认互联网身份真的没有跟踪他们。


互联网身份是否真的在运行它声称运行的代码?为了帮助您回答这个问题,我将引导您完成验证步骤。


当然,以下内容也适用于其他容器,但在这种情况下,我将坚持使用互联网身份。


验证互联网身份代码:演练

找出正在运行的内容


互联网计算机上的智能合约,即容器智能合约,是一个 WebAssembly 模块。


互联网计算机故意不会让你只需要下载任何容器的 WASM 代码,因为也许有些开发商想保持其代码私有。但它确实公开了 Wasm 模块的哈希值,最简单的方法是使用 dfx:


验证互联网身份代码:演练

这里的“控制器”是治理容器的容器 ID,这告诉您互联网身份由网络神经系统 (NNS) 控制,并且其代码只能通过投票的提案进行更改。这很好,如果控制器只是,比如说,我,我可以更改互联网身份代码并接管您的所有身份。


“模块哈希”是部署的 .wasm 的 SHA-256 哈希,所以让我们跟随那个踪迹。


验证互联网身份代码:演练

找到正确的提交


由于互联网身份的升级是通过向 NNS 提出的提案完成的,我们应该在 https://github.com/ic-association/nns-proposals 存储库中的 proposals/network_canister_management 目录中找到对此类提案的描述。


验证互联网身份代码:演练
Github 的近期 NNS 提案列表


我们必须找到升级互联网身份的最新提案,不幸的是,该文件夹包含许多容器的建议,并且文件命名不是很有帮助。我通常从底部浏览列表并查看第二列,其中包含创建或修改文件的最新提交的标题。


在这种情况下,倒数第二个是我们关心的:


https://github.com/ic-association/nns-proposals/blob/main/proposals/network_canister_management/20210527T2203Z.md。


该文件列出了基本原理,概述了更改,最重要的是,它表示这 bd51eab 是我们要升级到的提交。


该文件还说 wasm 哈希是 d4a…c04,它与我们上面看到的相匹配。这很好,看来我们真的找到了最新的升级互联网身份的提案,而且提案实际上通过了。


警告:如果你是偏执狂,不要相信这个文件。没有什么可以阻止提案提议者创建一个指向一个修订的文件,同时实际上在提案中包含不同的代码。这就是为什么需要进行下一步验证的原因。


验证互联网身份代码:演练

获取源


现在我们有了修订版,我们可以获取源代码并查看修订版 bd51eab:


验证互联网身份代码:演练

在最后一行中,您会看到互联网身份团队使用包含提案描述文件名的标记名称标记了该修订。很整齐!


验证互联网身份代码:演练

重现构建


README.md 具有以下构建指令:


验证互联网身份代码:演练

实际上,运行第一个命令就足够了,因为它还打印了哈希值(我们不需要从 Docker 容器中复制 .wasm):


验证互联网身份代码:演练

成功!哈希匹配。


你不相信我?自己尝试一下(如果你得到不同的哈希值,请告诉我们 – 也许我被黑了)。如果您没有为 Docker 配置足够的 RAM,这可能会失败,8GB 应该够了。


此时,您拥有了从您面前的代码到运行在 https://identity.ic0.app 的互联网身份的信任路径,包括前端代码,您可以开始审核源代码。


验证互联网身份代码:演练

容器 ID 呢?


如果您密切注意,您可能已经注意到我们获得了容器 rdmx6-jaaaa-aaaaa-aaadq-cai 的模块,但我们正在访问 https://identity.ic0.app 上的 Web 应用程序。那么这个联系在哪里呢?


将来,我希望互联网计算机上有某种形式的类似于 DNS 的“好主机名注册表”,用于存储从好名称到容器 ID 的映射,并且您将能够查询“哪个容器以安全的方式(例如使用认证变量)服务 rdmx6-jaaaa-aaaaa-aaadq-cai”。


但是由于我们还没有那个,但仍然希望您能够为互联网身份使用一个好听的名称(并且以后不必更改名称,这会引起头痛),我们现在对这个映射进行了硬编码。


这里的相关代码是您的浏览器在访问任何 *.ic0.app URL 时下载的 “Certifying Service Worker”。然后,这段代码将拦截对该域的所有请求,将其映射到查询调用,然后使用认证变量来验证响应。事实上,映射在代码中:


验证互联网身份代码:演练

验证互联网身份代码:演练

其他容器呢?


原则上,相同的方法适用于其他容器,无论是 OpenChat、NNS 容器等。但细节会有所不同,因为每个容器开发人员可能有自己的方式:


  • 传达其容器的来源的位置和修订版

  • 建造容器


特别是,如果没有可重复的方式来构建容器,这将失败,这就是为什么像 https://reproducible-builds.org/ 这样的项目通常如此重要的原因。


如果您想讨论这篇文章,请考虑加入 DFINITY 论坛并在以下位置发表评论:


https://forum.dfinity.org/t/verifying-the-code-of-the-internet-identity-service-a-walk-through/4650


开始在 sdk.dfinity.org 上构建并加入我们的开发者社区 forum.dfinity.org。


验证互联网身份代码:演练

作者:DFINITY 高级研究员和工程师 Joachim Breitner

翻译:Catherine


验证互联网身份代码:演练

1

什么是互联网计算机?最新流行的加密货币指南

2

互联网计算机(ICP)– 从无到有

3

ICP凭什么上线一周跻身加密货币前十?




你关心的 DFINITY 内容

技术进展 | 项目信息 | 全球活动


验证互联网身份代码:演练


长按关注 DFINITY 微信公众号

随时答疑解惑


*添加小助手微信 comiocn 进交流社群


Pancakebunny将Rekt团队归还资金用于补偿池

Pancakebunny发推感谢Rekt团队归还丢失的资金,并表示,目前100,073 BUSD已发送并应用于补偿池。此前消息,加密行业媒体Rekt在推特上表示已经将被盗的100,001枚DAI还给了Pancakebunny,并附上了转账哈希。 注:Panca…

Click to rate this post!
[Total: 0 Average: 0]

人已赞赏
Dfinity名家说小白百科币种介绍每日优选

[ICP科普] 如何通过网络神经系统赚取ICP

2021-6-7 13:54:38

Dfinity名家说小白百科每日优选

[ICP科普]一个例子看懂如何验证互联网身份认证的代码

2021-6-9 9:55:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索