Nimiq: 过去、现在及未来— 网络性能

转载自Nimiq知乎

系列文章—网络性能

在观察Nimiq区块链发展的同时,我们也从多方面开始辨认、研究,怎样使Nimiq 协议更强大,更有弹性。最突出的任务如下:

  • 减少对 DNS 的依赖及获取SSL证书的麻烦
  • Nimiq FULL节点架设的性能优化
  • 向社区开放种子节点架设

DNS 和证书

在目前的 Nimiq 协议架构中,由于浏览器的两个限制,我们需要 TLS 证书作为浏览器网络的桥梁。首先,某些 Nimiq API 须通过 HTTPS 来提供内容。其次,当网页通过安全连接传递时,只允许安全的WebSocket 连接,因此骨干端 (backbone) 也需要证书。

因为设置证书麻烦,导致 Nimiq 网络许多参与者以 “虚节点” 模式 (dumb node)运行他们的节点,即没有证书。但是 “虚节点” 有一个缺点:它们可以连接到网络中的每个非虚拟的节点,但网络中的其他节点却无法连接到 “虚节点”。这导致已设置证书的骨干节点的负载增加 ,因为这些节点成为所有浏览器和虚节点的枢纽,这违背了 Nimiq 去中心化的理想。我们找到多个解决此问题的方法,并已开始实施解决方案:

  • 不要求骨干网络中的节点取得证书,若没有提供证书,它们则通过 TCP / WS 连接通信。我们目前正在 Nimiq 测试网上测试此项新功能。
  • 我们正在进行安装脚本的工作,此脚本将自动为您的节点选择最合适的配置,并引导您完成必要的步骤(例如在防火墙中打开端口)。包括在多数情况下创建 TLS证书,支持浏览器和骨干网之间的连接。
  • 一旦此自动程序能够可靠运行,我们考虑为节点添加一个过滤 “虚节点” 连接的功能 ,目的为阻止使用此类节点 ,仅在无法使用其他设置的特定情况下支持。

性能优化

保持网络安全的关键步骤是平衡挖矿算力,因此,我们希望将最高性能的 Nimiq 协议开源提供给社区,以确保每个人都有平等的参与机会。为进一步提高网络和挖掘性能,我们计划使用 Rust 重新编写基于 Node.js 的架构,从性能和安全角度来看,这是最理想的语言。此外,WebAssembly可以用Rust 编译,因此在浏览器中可以非常有效地运行。此编写架构目的在于以性能为主要考虑,将与 JavaScript 版本同步开发。然而,Node.js 架构让我们可继续使用热门的平台及 JavaScript 在 Nimiq 上建立其他应用程序。

一旦将 Rust 链接库透过 WebAssembly 流畅地整合至浏览器,我们打算用此具潜力的巨大性能改进,更新基于 JavaScript 的平台及环境。

社区种子节点

新连接上种子节点的临时波动

最近,由 Nimiq 团队提供及维护的八个种子节点,在 Nimiq 网络上意外地出现高承载负荷。为缓解此问题,我们立即采取行动增加种子节点的数量。

为了进一步扩展网络,我们正在研究能够使社区运行种子节点的最佳程序,并尽可能地确保网络的质量及安全性。社区成员表明他们乐意通过提供种子节点来支持 Nimiq 网络的立场,针对此类社区种子节点的第一次整合测试也在运行中。我们希望能够快速地宣布一个适当、透明的解决方案,来实现社区驱动的种子节点设置。

请在 TwitterDiscord 和 Telegram 上关注 Nimiq,了解更多有关 Nimiq 核心更新,包括性能改进和社区种子节点的相关讯息。

​更多 Nimiq 中文内容请關注 知乎微博优酷 頻道。

评论