查看原文
其他

技术专题:IC上的去中心化节点

ICPL ICPL 2022-05-16



  背景


IC 的技术特性导致对节点的依赖

互联网计算机 (IC) 由来标准化“节点机器”组成,并安装在独立的数据中心 (DC) 中。与其他区块链相比,IC 对节点的同质性要求更高,因为大部分节点资源都专用于执行需要由给定子网区块链的所有节点执行的有用工作(例如执行智能合约,参与阈值加密算法)。



我们的节点需要更去中心化

IC 旨在完全在链上托管大众市场应用程序,这包含前端资产与数据库等内容。因此,IC 上的容器式智能合约的状态可能比其他区块链上的大得多。节点还需要大量的网络容量来管理和同步该状态。为了满足极高的可用性和高吞吐量的要求,IC 节点托管在 DC 中。为了实现去中心化,节点是由运营者私有的,DC 由独立方运营并分布在全球各地。由于这种对同质性和容量的需求,互联网计算机协会 (ICA) 发布了 IC 节点的硬件以及 DC 的服务级别的规范。


作为区块链共识支撑的系统,节点的数量与去中心化程度衡量着整个网络的安全性与可行性,而当前 IC 节点虽然已有 500 多个,当前还有 1000 多个节点积压在等待入网的排队中,但这些节点多为机构运行,数量也远远做不到足够去中心化。


且在节点硬件搭建、入网、部署等部分,DFINITY 成立了带三方组织互联网计算机协会即 ICA 来集中处理,节点服务商还无法完全自主地部署节点,因此节点的部署也需要更加地去中心化。



 去中心化的目标

中心化不是一个口号,有一些重要的目标:

  • 去中心化:授权节点提商者独立设置、监控和维护节点。

  • 可扩展性:消除阻碍网络增长到数百万节点的技术和运营瓶颈。

  • 自动化:消除错误并加快重复性任务,以降低风险并减少不断增长的 IC 网络所需的资源。


NNS介绍


NNS的作用

NNS 是 IC 的链上治理系统。互联网计算机的 ICP 代币持有者可以将他们的 ICP 代币质押在神经元中,以参与治理并为决策做出贡献,例如投票决定是否应将新的节点集合(也称为子网)添加到网络。


它有很多功能,但与节点去中心化最相关的是:

  • 最大限度地分散节点提供者和控制权;

  • 确定与 IC 的计算/存储需求相匹配所需的节点数量,同时控制通货膨胀(不要铸造太多 ICP 来支付节点提供者的奖励);

  • 为开发人员设置计算和存储操作的成本;

  • 从 IC 中移除故障或慢速节点;

  • 升级网络中运行的节点软件。



设计一个 IC 节点理想部署步骤

  • 使用 NNS 前端 dapp,每个人都可以注册成为节点提供者。注册通过 NNS 提案,由 IC 社区投票来获得批准。

  • 根据硬件规范,节点供应商可以从不同的硬件供应商处订购满足这些规格的机器。

  • 任何人可在 NNS 上发布提案建议引入新的数据中心。NNS 根据数据中心提案如何进一步改善 IC 的去中心化来批准它们。例如,在节点数量不足的地理位置引入新数据中心,比在具有许多现有节点的位置引入新数据中心更受欢迎。

  • 数据中心运营商独立部署节点机器,使用开源节点软件和通过 NNS 前端 dapp 检索的配置数据。

  • 一旦节点加入子网,运行节点就可以获得报酬了。



NNS 如何管理 ICP 的通货量

在互联网计算机区块链上运行的容器式智能合约由底层 gas 代币 cycles 推动,而 cycles 又由销毁的 ICP 产生,从而导致通货紧缩。随着互联网计算机上智能合约数量的增长,添加额外节点的需求也在增加。


每个节点都会收到以 cycles 计算的固定月度奖励,cycles 是对法币稳定的,然后以 ICP 的形式支付。该模型确保了网络为运行节点所承担的成本在法定条件下始终是恒定的。通过保持可预测的成本,网络能够确保开发人员为互联网计算机上的每个操作支付固定费用,而不受 ICP 波动性的影响。奖励根据节点的地理位置略有不同,以确保 IC 能够实现更广泛的节点地理分布。只要每个节点提供者保证正确的服务质量,他们就会继续获得奖励。奖励是通过铸造新的 ICP 代币来支付的,从而导致通货膨胀。


NNS 有一种算法方法来响应 IC 的需求和供应需求,以控制社区期望的通货膨胀/通货紧缩范围。社区通过 NNS 提案进行更新或与算法交互。


节点介绍


节点的功能

在每个节点上运行的互联网计算机软件组件称为副本,因为它们在子网区块链中的所有节点之间复制状态和计算。

 副本的核心组件被组织成以下逻辑层:

  • 一个点对点(P2P) 网络层,它从用户、其子网区块链中的其他节点以及其他子网区块链收集和发布消息。对等层接收到的消息被复制到子网中的所有节点,以确保安全性、可靠性和弹性。

  • 一个共识层,它选择和排序从用户和不同子网收到的消息,以创建区块链块,这些区块可以通过拜占庭容错共识进行公证和最终确定,从而形成不断发展的区块链。这些最终确定的块被传递到消息路由层。

  • 消息路由层在子网之间路由用户和系统生成的消息,管理 dapp 的输入和输出队列,并安排消息的执行。

  • 一个执行环境,通过处理从消息路由层接收到的消息来计算执行智能合约所涉及的确定性计算。

  • 下图提供了在开发环境中部署为本地容器执行环境的 Internet 计算机协议组件的简化概述。



节点硬件组成

互联网计算机子网区块链为执行软件操作提供物理硬件和资源(如 CPU 和内存)。每个子网都是一个区块链,由一些分散的、独立拥有和控制的机器(称为节点的连接的对等计算机)组成,这些机器运行互联网计算机协议的软件组件。IC 节点运行在专业的数据中心基础设施上。云实例不能用于运行 IC 节点。


与我们常认识的区块链节点不同,由于互联网计算机的网络运行的智能合约包含 8GB 大小的独立存储,而这个存储在硬件上对应着内存,IC 的节点除了常见的 CPU 等需求外,对内存也有这较高的需求。



当前状态

截止 2022 年 1 月 28 日

节点提供商:76 个

(see: Internet Computer Network Status )

节点:518 个

(see: https://dashboard.internetcomputer.org )

子网:35 个

(see: https://dashboard.internetcomputer.org )


节点具体有(数据暂延后):

美国共 210 个

Portland - 17

Chicago - 16

New York - 11

Atlanta - 23

Atlanta2 - 13

Jacksonville - 17

Orlando - 22

Tampa 20

Dallas - 21

Las Vegas - 11

Fremont - 19

San Jose - 20


比利时共 48 个

Antwerp - 19

Brussels - 19

Brussels2 - 10

德国共 27 个

Munich - 27


瑞士共 58 个

Geneva2 - 21

La Chaux-de-Fonds - 20

Zurich2 - 13

Zurich3 - 2

Zurich5 - 2


罗马尼亚共 25 个

Bucharest - 25


新加坡共 47 个

Singapore - 19

Singapore2 - 9

Singapore3 - 19



节点规格

对成为节点的硬件及其周围要求:

  • 节点机器

  • 带有 10GB 连接的机架空间,节点终端为 RJ45

  • Public /29 IPv4 范围和/64 IPv6 范围

  • 硬件钱包

  • NitroKey HSM

  • 少量 ICP 质押(用于发起提案) 

目前,系统中存在两类节点——“核心节点”和“边缘节点”,这些硬件规格仅适用于第一阶段的 Gen-1 节点。一个 Gen-1 核心节点的成本约为 10000 美元。如果要用于仍在开发中的存储子网中,就需要 20000 美元进行额外的内存升级。 


就节点机器来说,目前 ICA 公布了看部分节点的硬件组成如下。

 




下一阶段的 Gen-2 节点的迭代,将基于 AMD Milan 芯片组,规格细节预计将于后续披露。



收入规则

NNS 的设计是为了让节点提供者在 ICP 中为他们在网络中的表现良好的节点获得报酬。他们收到的 ICP 数量与 cycles 数量挂钩,而 cycles 与一揽子法币的 XDR 保持相对稳定。NNS 和公开市场为节点提供者的报酬设定了异构但透明的标准。 


长期的设计目标是创建一个健康的网络,激励节点提供商在数据中心提供必要的硬件并准备就绪。约束是要确保节点提供者不会获得太多报酬,以免造成不必要的 ICP 铸造(通货膨胀)。


NNS 提案中提出了以下标准:

节点的成本目前还不确定,单以目前的情况来看大概需要一万美元左右。


去中心化方案


当前去中心化遇到的阻碍

在进一步加速 IC 的网络增长之前,必须解决以下障碍:

  1. 可复现的构建:社区,包括节点提供者,应该能够以确定的方式构建复制软件。这使社区能够验证 IC 更新提案确实对应于 NNS 提案中指定的源代码版本。

  2. 自主的节点部署和运营:授权节点提供商安装和维护节点,不再需要官方相关机构如 ICA 的任何支持。

  3. 独立节点提供商注册:新节点提供商应能够直接在 NNS 前端 dapp 中注册。他们将能够提交成为新节点提供商的提案,而无需 ICA 的支持。

  4. NNS 驱动:节点提供商可以参与 NNS 控制的机制来选举新的数据中心。这个过程将激励增加新的 DC,进一步分散 IC 的网络。此外,它平衡了通货膨胀和通货紧缩的力量。

  5. 节点硬件的可用性:计划推出新一代 ICA 指定的节点硬件,以保证全球可用性,并在硬件提供商之间提供更好的选择。此外,下一代将包括 SEV-SNP 技术,以进一步提高节点的安全性。



时间规划


2021 年第四季度(已完成)

(A) 可复现的构建:可复制的复制软件构建计划于 2021 年 11 月向公众提供。该计划有其自己的单独通信,因为它涉及许多部分。


2022 年第一季度(已延后)

(B) 自治节点部署和运行:在 2022 年初,将基于可重现的构建 (A) 引入新的部署过程。在接下来的几周内,将要求现有节点提供商使用新流程更新其部署。

(C) 独立节点提供商注册:2022 年初,未来的节点提供商将能够通过 NNS 前端 dapp 进行注册。在加入当前积压的节点的同时,将使用新的部署方法 (B) 将数量有限的新 DC 和节点添加到网络中。

为了在 NNS 驱动的 DC 分配到位 (D) 之前开始自主节点部署 (B),将使用 (C) 加入一小组新节点提供者。


 2022 年第二季度/第三季度

(D) NNS 驱动的 DC 分配:将引入 NNS 控制的 DC 分配机制并控制所有未来的节点添加。通过这一步骤和新的节点硬件,可以释放加速的网络增长。

(E) 节点硬件的可用性:目前正在研究不同的硬件选项。可以通过两个步骤克服此障碍

  • 对 Genesis 硬件设置进行了少量扩展,以克服当前的可用性限制。

  • 更大的扩展包含额外的硬件技术,例如 SEV-SNP。



阶段规划

以下里程碑是指示性的,其范围可能会随着工作的进行而改变。

  • 阶段一:去中心化节点部署:这个里程碑包含了第一个短期项目,并使节点提供者能够独立地加入和部署他们的节点。

  • 阶段二:使用新部署机制重新部署现有节点

  • 阶段三:NNS 管理的 DC 分配:新的 DC 由 NNS 选择,可能使用拍卖机制。

  • 阶段四:运营成熟度,包括去中心化备份服务和监控

  • 阶段五:基于指标的报酬:对节点提供商报酬过程的改进,将通过分散监控收集的数据考虑在内。

  • 阶段六:自动化:这不是一个里程碑,而是一个持续的努力。


节点的经济模型设计


以 cycles 计算激励

Cycle 反映了互联网计算机的实际运营成本,包括硬件,机架空间,能耗,存储设备和带宽等资源。简单来说,就是执行每个应用程序的 WebAssembly 指令的成本。


 运营成本的相对稳定性使得 Cycle 的使用量是可以预期的。并且,随着磁盘空间越来越便宜,硬件效率越来越高,通信、计算和存储相关的成本将逐渐降低。互联网计算机对容器可容纳和消耗的 Cycle 设置了上限,以防止恶意代码浪费资源。


 ICP 到 Cycle 的转换是单向的,Cycle 不能再换回 ICP,不过可以在容器之间转移用于支付操作费用。

 下图是对于历史节点奖励的统计。




关于激励计划的讨论

DFINITY 一直在考虑的是否要求节点运营商的锁定一定数量的 ICP 作为质押,但在节点的硬件实际上是不可忽略的成本,而质押 ICP 可能增加额外的成本,导致节点部署更难,去中心化程度变弱。


另一个需要考虑改进是可以降低支付给恶意节点的 ICP 来实现处罚。因不良行为而被削减的 ICP 更直接地将节点运营商的利益与 IC 的集体利益绑定在一起。


目前处罚尚未到位。IC 需要做到两件事来实现这一点:自动奖励支付与去中心化地添加节点,这些都是路线图中的一步。


处罚将由 NNS 奖励相同的方式计算,并且节点运营者需要对其节点承担全部责任。


节点运营者目前具有三种类型的节点,根据每个 DC 和机架的节点数量(6,14 和 28),DFINITY 也有三种不同类型的运行成本。从长远来看,会有许多类型的节点具有不同的成本,因此会有不同的回报。


DFINITY 的目标是基于利用率来为节点制定奖励模型,但对于当前的早期网络的节点提供了一些补贴。治理利率的机制会在 NNS 中通过提案更多地被讨论。


边缘节点的去中心化


什么是边缘节点

边缘节点提供互联网计算机 (IC) 的网络边缘服务,包括

  • 启用来自用户的标准 HTTPS 请求,以在 IC 上发送容器智能合约 API,并将容器智能合约 API 调用路由到在相应子网上托管这些合约的节点

  • 缓存 、负载平衡、速率限制、IPv4-IPv6 转换(因为 IC 节点都使用 IPv6)

  • 向用户提供的内容的完整性验证。


可以看出,IC 网络的边缘节点更像是 ETH 中的 Infra 服务,会承载大量来自终端用户的流量。之前 IC 用户遇到的多次无法访问的情况,实际是边缘节点被大量流量冲击后限流所致,而 IC 区块链本身仍在正常运行。目前边缘节点仅有 10 个,且分布不均,这也导致了很多终端用户反映的链接 IC 网络时延迟过高、体验不佳等问题。


因此边缘节点的去中心化涉及用户体验,非常重要。


为了将边缘节点的设计和实现在功能、可扩展性和去中心化方面提升到一个新的水平,当前支持的功能集将被扩展和增强。此外,社区将能够决定边缘基础设施的分配和规模,并提供自定义域。


边缘节点是互联网计算机边缘基础设施。应多方面加强边缘节点的设计和实现,使其部署和运行更加去中心化,便于部署和升级,提高安全性。



什么是去中心化目标

为互联网计算机设计、实施和部署增强的可扩展、分散和安全的边缘节点网络。该网络将作为互联网计算机的边缘框架,由 NNS 管理。它将为 IC 的用户提供端到端的安全性和缓存,同时高度去中心化。增强的边缘节点还将支持自定义域名和 TLS 证书管理。


这样也给边缘节点提出了一些挑战,边缘节点是否足够简单,可否在更基本和多样化的硬件上运行也是去中心化很重要的一点。目标是使 IC 尽可能分布式,这当然包括边缘节点。目前,基金会确实对边缘节点有一些严格的要求,例如可用带宽和 CPU,但随着边缘节点网络的增长,大家也在寻找降低这些要求的方向。



里程碑

以下里程碑是指示性的,可能无法按此处列出的顺序达到。

  • 阶段一:为确定性地构建边缘节点 VM 提供公共和开源流程。

  • 阶段二:在不同域上启用额外的边缘节点,并在 CDK/代理代码中包含对它们的支持。

  • 阶段三:在仅 API 和/或在不同域上具有额外的边缘节点。

  • 阶段四:引入基于额外监测的边缘节点经济模型。

  • 阶段五:使边缘节点能够通过 NNS 提案进行部署和更新。

  • 阶段六:增加 NNS 控制和有报酬的边缘节点和节点提供商的数量。

  • 阶段七:改进的可扩展性、弹性和符合标准的缓存

  • 阶段八:为提高安全性的可信执行

  • 阶段九:分布式发现和指导(Distributed Discovery and Steering)

  • 阶段十:语义缓存



基于边缘节点的去中心化 DNS

终端用户使用 IC 服务时会使用 *.ic0.app 域名,当浏览器向 DNS 查询 IP 地址,*.ic0.app 的 DNS 记录指向所有边缘节点。DNS 引导(steering)用于将您定向到最近的边缘节点。


DNS 引导策略并不基于节点健康(node health),而是基于地理邻近性(geometric proximity)?


之前的边缘节点限流导致用户无法访问服务的事件中,大部分请求都来自同一个区域,DNS 引导会将来自 dapp 的所有请求路由到地理位置附近的边缘节点,这导致了节点超载。因此本提案中的去中心化目标,将请求转发到哪个副本的选择是随机完成的。这样做的原因是用户可以从不同的节点接收结果,因此他们很有可能不会遇到恶意节点(如果存在的话)。


这样也给边缘节点提出了一些挑战,比如可能一个边缘节点需要缓存所有字网的状态。



安全性问题

DFINITY 正在考虑为边缘节点使用受信任的执行环境如 TEE 保证其边缘节点的安全性。


为了防止有恶意的边缘节点为用户提供修改后的响应来发起攻击(例如被篡改的 Service Worker),需要做出一些应对。一个方案可能是网络扩展——这里它只能是一个点解决方案,因为网络扩展需要大量的 API 支持,例如,Chrome 越来越喜欢限制其扩展 API。另一个方案是,对可信执行进行了探索,虽然可信执行如TEE提供了额外的安全性,但由于我们必须考虑到侧信道攻击,所以它并不完全有用。


让第一种方案下,使用 web 扩展(如特定 RPC 的钱包)不会替代 service worker,这是喜欢拥有浏览器体验但不喜欢信任边缘节点的安全敏感用户的替代选项。这个想法是网络扩展将作为一个插件解决方案工作。如果用户使用了扩展插件如钱包,service worker 就不会被加载,这样用户体验不应该成为问题。


关于可信执行,DFINITY 的目标是为用户提供通过浏览器和一些额外的简单工具进行验证的方法,使他可以访问在执行预期边缘节点 VM 映像的正确硬件之上运行的 VM。这包括假设硬件完美无缺并且经过验证的代码是正确的——但需要将把一个恶意管理员排除在外,并在主机操作系统和管理程序级别进行漏洞利用。


关于对代码的验证,DFINITY 的当前方向是通过 SEV-SNP(可能还有后来的 TDX)来保护 VM,并授权用户执行边缘节点 VM 的远程证明。如果通过远程证明用户可以验证信任的唯一代码在 VM 中运行,则 VM 本身受到硬件机制的保护,并且对于与边缘节点的连接,没有办法建立一个中间人。


要知道 VM 中正在运行什么代码,就需要有一个确定性的构建过程来从 IC 存储库创建边缘节点映像。可以通过检查代码,验证 VM 运行后没有人再具备访问修改权限与后门。通过重复构建,可以获得一个哈希值,该哈希值应该与远程证明报告中包含的哈希值相匹配。当然,与(必须)信任任何软件一样,关键点是可能存在可以被利用的错误,或者可能存在使专门的攻击者能够绕过硬件保护的侧信道攻击。





小助手微信号

入群请添加

联系我们

ICPL Twitter

https://twitter.com/icpleague_com

ICPL Medium

https://medium.com/icp-league

ICPL Telegram

 https://t.me/ICPL_en

ICPL 论坛

 https://icpleague.com




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存