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

在互联网计算机上,用户可以使用互联网身份密码认证系统登录各种dapp,如NNSdapp、OpenChat等。这样做时,他们相信该服务会妥善保管他们的凭据-但他们可能想直接确认互联网身份真的没有跟踪他们。互联网身份是否真的在运行它声称运行的代码?为了帮助回答这个问题,我们将完成验证步骤。

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

找出正在运行的内容

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

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

现场 | 姚前:某种意义上而言,数字资产实际上更加可控,监管更加精准:在2019上海区块链国际周·万向峰会上,中国证券登记结算公司党委副书记、总经理姚前表示:数字金融发展将模糊场内和场外的界限。数字是价值,数字的流转就是价值的流转。数字金融自由而开放,不依赖传统金融中介,资产数字化将催生金融的零售革命,将带来更具深远的金融变革。Libra提及的百分之百资产准备实际上是交由第三方存管,与央行数字货币不同。央行数字货币不仅仅只是法币的数字化,未来的数字货币需要修补现有货币的弊端,未来的数字货币要超越美元,升级换代。未来自金融模式下传统金融业务将成为智能合约业态,智能合约承载着各种金融业务,从某种意义上来说管住了智能合约,就管住了自金融。某种意义上而言,数字资产实际上更加可控,监管更加精准。与其担忧监管的不可控,不如担心监管的过于严格。[2019/9/18]

声音 | 姚前:虚拟货币缺乏价值支撑,未来得有一个“去虚拟”的过程:据第一财经消息,昨日央行数字货币研究所前所长姚前发文称,全球那么多的货币,根本的区别在于背后的价值支撑而不是铸币技术。相信现有的数千种加密货币,在追求极客技术的同时,也会逐步认识到这一点:当前的经济社会是一个高度发达的信用经济,货币发行和管理功能有缺陷的“比特币”们实难担当大任,核心问题在于这类“可转让数字资产”很难构建自身的价值支撑体系。 所以,必须把目前虚拟货币缺乏价值支撑这一根本性的缺陷给矫正过来。技术固然可以向典型的虚拟货币、加密货币取经,但人类社会长期形成的货币的本质内涵,理应是数字货币发行的基石。从这个意义上说,虚拟货币的未来得有一个“去虚拟”的过程,一个可能的变化是在前述所言的“点对点+电子支付系统”的基础上,再加上强有力的“央行信用”,也就是“点对点+电子支付系统+央行信用”。目前央行数字货币已成为国际央行会议最重要的主题词之一。[2019/5/6]

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

声音 | 央行姚前:去中心化资产交易与中心化交易所并不冲突:数字货币研究所所长姚前认为,去中心化资产交易具有低成本、准实时、系统稳健等优点,但在性能提升、安全增强、隐私保护、监管接入以及场景挖掘等方面仍需进一步研究和探索。特别是,如何为监管提供“接入口”,应是各种去中心化资产交易技术方案的“不可或缺”要素。应看到,去中心化资产交易与传统的中心化交易所并不冲突,两者并不是完全替代的关系,传统的中心化交易所也可以采用去中心化资产交易技术,从而充分发挥区块链技术的能量,更好地提升金融市场的价格发现功能和资金配置效率,更好地服务于实体经济发展。[2018/7/13]

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

找到正确的提交

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

DFI.Money社区发起YIP 6提案:为YFII机池建立iToken系统:9月6日,DFI.Money(YFII)社区发起YIP 6提案:为YFII机池建立iToken系统。据悉,iToken是YFII核心业务机池(Vault)的权益Token,将投资者存入YFII Vault的普通Token转化为生息Token,并通过机池的自动优化收益策略,持续提升iToken的价值。同时iToken符合ERC20标准,可用于与其他DeFi产品进行乐高式组合,生成更为复杂的DeFi衍生品。[2020/9/7]

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配置足够的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.appURL时下载的“CertifyingServiceWorker”。然后,这段代码将拦截对该域的所有请求,将其映射到查询调用,然后使用认证变量来验证响应。事实上,映射在代码中:

其他容器呢?

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

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:46ms0-2:617ms