Nimiq — — 基于浏览器的区块链

Team Nimiq
Nimiq Translations
Published in
6 min readJun 10, 2017

协议

Nimiq 是第一个为了简单而设计的区块链,其核心价值是易于使用,可扩展和速度。

无需安装

为了降低用户和开发者进入门槛,Nimiq 采用基于浏览器的方式。

Nimiq 用 ES6 Javascript 语言编写,并使用 Websockets 或 WebRTC 进行网络通讯。『基于浏览器』并不是说 Nimiq 只能在运行在浏览器上,其 NodeJS 客户端也可以运行在服务器上,它的意思是你可以从浏览器连接到 Nimiq 网络而无需中介。

Nimiq 网络有两种节点:浏览器节点和 Backbone 节点。Backbone 节点在 NodeJS 上运行,使用和浏览器节点相同的代码库。Backbone 的节点之间以及 Backbone 和浏览器节点之间通过 Websocket 通讯。Backbone 节点同时还充当浏览器建立 WebRTC 连接的信令服务器。

浏览器节点使用 IndexedDB 存储区块链数据,Backbone 节点则使用 LevelDB。

快速同步

标准的比特币和以太坊客户端大约要下载100GB数据,用于和其网络建立共识。这对大多数用户而言是一个巨大的障碍,实际上导致只有『精英』用户才能够无中介地参与这些网络。

Nimiq 借助 Mini-Blockchain Scheme 并考虑用 Light-client 来解决这个问题。

通过引入 AccountsTree (类似于以太坊的 Merkle-Patricia-Tree)和 Headers Chain 的概念,协议几乎可以丢弃所有的旧区块,只需下载并存储几MB的数据。

另外,Micro-client 只需要下载 Header Chain 的一个序列,以及和这个用户帐号相关的 AccountsTree 的片段。也就是说为了无中介的参与无信任网络,只需要下载几KB的数据。

快速交易

通过引入 Hashed Timelock Contracts (HTLCs),用户可以互相建立 Payment Channels,用于发送链下(Off-Chain)交易。

链下交易和普通链上交易一样安全,它不占用区块链本身的任何空间。这些交易是即时的,因为一旦对方收到交易信息,支付就立即结算,不需要区块确认,成本最小。

通过 Hashed Timelock Contracts,用户可以建立 Payment Channels 网络,在这个网络里面,参与者可以进行支付交易,即使他们互相之间没有建立直接的 Payment Channels。

生态系统

浏览器库文件和矿工演示程序

浏览器库文件是 Nimiq 生态系统最基本的部分,它使得任意站点能够成为 Nimiq 网络的一等公民。

它可以同步网络,验证区块链,请求查询账户余额,也可以创建和发送交易信息。

Nimiq Betanet 界面展示了这个库文件的特性。

基于 Web 的钱包

基于 Web 的钱包使用浏览器库文件为用户提供了一个钱包,供其每天使用。

主要目标是提供一流的用户体验,并强化没有经验的用户去熟悉区块链技术。

如何教导用户那些他们不熟悉的区块链技术的方方面面,将是钱包界面的关键。比如解释支付确认的必要以及怎样保护私钥安全。

用安全的物理手段把存有资金的冷钱包打印出来的功能也将整合进去。

P2P交易

P2P交易使得 Nimiqs 币和当地法币的交易变得简单、快速和廉价。

有多个步骤来实现这个目标:

起先,获得 Nimiq 币最简单的方式就是通过正规的代币交易所,就跟其他的区块链代币一样。

使用 HTLCs 用于跨链(Cross-chain)交易。跨链交易允许用户在没有托管的情况下在不同的区块链之间交换代币。

这将使 Nimiq 能够利用比特币和以太币之间的交易服务,而不需要为代币交易支付高额的费用。

与 VISA 支付服务合作创建 VISA-to-Nimiq 交易。

创建一个类似 localbitcoins.com 的中心化的 P2P 交易所。主要区别将是彻底改善可用性。

最后一步,我们想要实现自己的基于 Web 协议的去中心化 P2P 交易方面最先进的研究成果,创建一个廉价、快速、人人可用的去中心化交易所。

Betanet

Nimiq Betanet 是 Nimiq 协议的一个预览版。它的目的是向区块链社区介绍概念,收集反馈,并围绕协议建立一个强大的社区。

它是一个 beta 版本,不适用于永久性的 Nimiq 代币创建。其目的是了解 Nimiq 协议在现实场合的行为,并获得真实世界数据,这些数据对协议改进非常重要。为了保持我们的开发敏捷性,我们可能会在任何时候重置这个区块链。这将导致你的所有 Betanet Nimiq 代币丢失。

Betanet 还不包含快速同步和链下交易的特性。

暂时技术规范

出于简化目的,Betanet 使用 SHA256 作为 PoW 算法,它使用 WebCrypto API 来接近原生性能。我们的 Betanet 实现方案的一个缺点是 Nimiq 使用 NIST 曲线进行椭圆曲线签名,因为它们是 WebCrypto 唯一支持的曲线。

对于 Mainnet 版本,我们将使用 WebAssembly 实现一个抗 ASIC 的 POW 和无隐藏?(nothing-up-my-sleeves)的 ECDSA。

基于现有研究,我们选择一分钟出一个区块。这个参数到 Mainnet 启动之前会更改。尽管我们尚未决定是否要引入 GHOST 协议的复杂性,但希望实现类似于以太坊(15秒)的出块时间。

路线图

6月6日:Betanet 发布,开始建立一个社区

在 Reddit 上和提供 Youtube Livestream 进行 AMA 互动

6月:代币发售

7月6日:开始第二界马拉松

继 Mini-Blockchain Scheme 之后实现 Light-Clients

实现 HTLCs

8月8日:Testnet 启动

实现闪电网络设施架构(Lightning Network)

实现 P2P 交易所

2017年12月:Mainnet 启动

参与

如果您是开发人员,并希望查看我们基于浏览器的区块链,请访问我们的 github 仓库,并遵循入门指南。

如果您有功能需求或发现错误:欢迎在 github 上与我们交流。

如果您是区块链技术的新手,请访问我们的 YouTube 频道,了解团队并观看我们围绕区块链和 Nimiq 相关话题的访谈和讲解。

如果您想参加我们的代币销售,请关注我们的 Twitter,Medium 或 YouTube 以保持最新。

如果您想加入该团队,请使用我们的区块链构建示例应用程序,将其发送至 join@nimiq.com,并告诉我们您的技能,经验以及您为 Nimiq 工作的原因。

如果您有任何其他反馈意见,请加入我们的 Telegram Channel

我们也有一个小组

--

--