Nimiq: 过去、现在及未来— 升级与研究

转载自Nimiq知乎

系列文章──升级与研究

最近,我们完成了两个特别的 Nimiq 黑客马拉松,由 Nimiq 核心团队领头开始。为提高性能,我们已将 Nimiq 核心移植到 Rust,随后 Nimiq 前端团队也修改了 Nimiq 键盘守卫来提高安全性。

以 Rust 编写的 Nimiq 核心

JavaScript 在 Node.js 上客户端和服务器之间的共享代码库使开发更迅速。虽然我们将继续支援流行的 Node.js 平台,但移植 Nimiq 核心到 Rust 是对未来的投资,因为它提供以下几个明显的优势:

  • 原生支持代码并发执行,真正的 CPU多线程
  • Rust 编译到WebAssembly,浏览器节点将受益于此次改动
  • 性能与 C 和 C ++不相上下
  • 和Java类似的 内存安全

Rust 兼具两个最棒的特性:内存安全与高性能。更详细来说,它可在静态检查 C,C ++ 或像 JavaScript 等脚本语言间共有的许多潜在问题,因此在编译时即可避免。Rust 不做垃圾收集提高了性能,拥有更明确的内存模型减少了内存泄漏的可能性。同时,它仍是相当新的语言,因此更弹性、灵活,且有像 Mozilla 如此可靠的赞助商,能确保未来以及适当的开源。

即便如此,挖矿能力不会就此增加。但随着硬体性能显著提高,算力稳定性将明显增加。然而最重要的是,目前客户端的每秒交易数量因架构关系受到限制,非挖矿相关的内容受限于单核处理。因此,Rust 本机并发执行代码的能力将突破此瓶颈。此外,因软件堆迭要小得多,代码能直接在CPU上运行,所有内核皆可充分利用硬件特性,同步处理所有任务。

简而言之,虽然 Node.js 是一个功能强大的平台,但 Rust 编译为原生代码,让机器能够发挥更大功能。

架构的实现仍在进行当中,我们已移植了加密原语和多个组件,但尚未完全整合。当我们询问核心团队 Rust 截至目前的移植情况为何,他们回答 “令人耳目一新”。

Websockets和社区种子节点

根据我们对种子节点的连接统计,几乎95%的骨干节点以 “虚节点” 配置运行,此支持了我们网路算力,但却不支持节点之间的通讯(更多详情,请参考我们关于网路性能的文章)。Nimiq 核心1.2.0版添加了 websocket 的支持,允许节点透过普通的 websockets 和公共 IP 相互通信,因此无须设置域名及证书。虽然尚未公开宣布,我们已见证了500个节点使用此新功能的状况,根据网路统计曲线显示,此功能将快速被采用。 我们相信透过此新设置,部分以虚节点模式运行的节点,将能利用其公共IP地址来支持网络内的通信。 此外,在 1.2.0版中接受虚节点连接的限制,将可透过设置改变。

我们强烈建议每个运行完整节点的人都进行升级

在1.2.1版本中,我们计划发布社区种子节点的功能。目前,我们正在整理种子节点列表及让社区成员可自行编辑的权限。此外,Nimiq 种子节点也从8个增加到20个,此将被整合到原始代码中。

这些种子节点分布在全球,除了将风险降到最低外,同时也缩短了全球节点的反应时间。事实上,这些新的种子节点已使用在网路上,证明了高度随机的传播演算法 (propagation algorithm) 效果很好。

键盘守卫 (Keyguard) 和帐户管理器 (Accounts Manager)

修改 Nimiq 键盘守卫的最终目标是删除所有外部软件依赖,使其达到与Nimiq 核心代码类似的可审核 (reviewability) 程度。

在分析 Nimiq 键盘守卫目前的原始码和结构时,我们意识到更细致的架构将很大程度上降低我们的顾虑,因此决定采用此新架构:

在这个新的架构中,Nimiq 键盘守卫更精确的角色为私钥储存软件,意即一个高度安全、除了专门用于保护您的私钥外什么也不做的软件,达到将复杂度降到最低,安全性提到最高。

在键盘守卫的前端,将是全新的 Nimiq 帐户管理器也是一种保护手段。它将管理来自 Nimiq 键盘守卫或 Ledger Nano S 的钥匙,结合标签及用户自定义的第三方应用程序权限。

Nimiq 帐户管理器将成为新的共同界面,协调及保护背后的钥匙存取与互动。

在黑客马拉松期间,以纯 JavaScript、HTML 和 CSS 重新编写的 Nimiq 键盘守卫有了很大进展。我们删除了所有外部依赖,如此一来,能够达到完整的代码可审查性,随即便可将此添加到 HackerOne 漏洞赏金奖励计划 ( bug bounty program)。同时,我们也开始规划、设计 Nimiq 帐户管理器,并将根据具体情况更新进度。

另外,Nimiq 保险箱的工作仍持续进行中,为提升社交互动和可用性,我们增加了一个易于使用的联络人功能。因为针对定期回报资金发布了一个新的支付功能,相信早期的贡献者将会很开心。

我们特别的 “系列文章” 在此告一段落,请持续关注更多的更新,以及关于运营开放的下一系列计划文章。最后,请务必在 Twitter,Discord 和 Telegram 上关注 Nimiq,了解有关 Nimiq 核心,键盘守卫,保险箱 (Safe) 和钱包的更新。

更多 Nimiq 中文内容请关注 知乎微博优酷 频道。

评论