构建当前互联网堆栈缺失的协议:用于实时数据的去中心化发布/订阅网络

近期在共识会议上推出 Streamr 市场后,我们开发团队下一个战略重点是构建Streamr网络的二次迭代,我们在Transmission#7 中也宣布过这个计划。Streamr 网络也是我们近期总结 (retreat) 的关键主题之一。这篇文章将解释为什么这一层对于我们实时数据去中心化的总体目标,以及制定实施路线图(以及未来的挑战)来说如此重要。

Streamr 网络是什么?

Streamr网络是一个可扩展的实时消息传递系统,该网络能够让物联网传感器、联网汽车等应用程序和设备以及几乎所有“智能”小工具提供他们生成的数据,以及监听来自其它应用程序和设备传入的数据。

该网络采用发布/订阅模式。流(有时也称为主题)产生的消息将会传递给实时监听该流的所有订阅者。它有点像为机器服务的即时通讯工具,在 IM Lingo 中支持“群组聊天”(多对多)、“频道聊天”(一对多)以及“私人聊天”(一对一)的消息传递模式。

此种发布/订阅网络对于应用程序开发人员来说具有以下优势:

* 数据生产者只是“即发即弃”。无需设置可能危及安全性的 API、数据孤岛或开放端口。只需将新数据点发送到网络即可。这样一来,集成就变得非常容易。

* 数据消费者仅需监听即可。他们不需要知道数据源的位置、访问数据源的 IP 地址,或者如何与它们进行交互。他们也不需要打开服务器端口。消费者只需连接到网络,订阅自己需要的东西,并对传输进来的消息做出反应即可。

Streamr网络提供的应用程序示例是我们自己的编辑器和获奖的Streamr 市场,除此之外您也可以通过API或客户端库在自己的应用程序中使用它。(JS available、Java、Go 和Python 库正处于开发过程中,如果您想通过工作客户端库来提供帮助,请与我们联系)。

这样的协议难道不存在吗 ?

其实不是,在 TCP / IP 堆栈(互联网的基础协议套件)上没有在全球范围内提供这样的消息传递模式。目前,即时通讯、金融市场数据交付、多人游戏或由数据驱动的物联网应用等程序的开发人员都需要使用自己的基础架构或采用能提供所需消息传递和存储功能的中心化云服务。

我们相信 Streamr 的网络不仅有用,而且绝对必不可少。我们认为这是当前互联网缺失的数据协议。

如果使用自己的基础架构,即使是最简单的应用程序,开发人员也必须承担相当高的成本。这会减少竞争,降低创造能力。使用中心化云服务的后果是,世界上大部分数据最终都会被少数互联网巨头掌控,这样他们拥有的权力会让消费者的隐私不再安全。

那么,在广泛使用的模式中,这种结构缺陷为何在过去的至少 20年内仍未得到解决?这是因为,现有的诸如 IP 多播之类的广播协议缺乏对互联网服务提供商和大型商业玩家的激励机制。 此外,由于技术限制,这些协议很难扩展到潜在的数百万接收者。

而这种结构性赤字会变得愈加明显,因为消费者对实时数据经济的需求即将爆发。连接到互联网的设备数量有望达到数千亿台,而每台设备都会产生数据。所有这些信息都需要进行安全传输、存储,并能够提供给他人,以创建一个由数据驱动的价值生态系统。

从这个角度来看,我们相信 Streamr 的网络不仅有用,而且绝对必不可少。我们认为这是当前互联网缺失的数据协议。

Streamr构建基础设施以支持百万辆互联的智能汽车  

Streamr 如何解决可扩展性和经济激励的问题?

Streamr 通过使用对等 (P2P) 网络架构来解决广播消息传递协议的可扩展性问题。从技术上来讲,您可能会将其视为实时数据流的 BitTorrent,而非静态文件。随着网络中节点数量的增加,网络吞吐量可以实现线性扩展。

Streamr 通过使用加密货币、加密验证和博弈论来激励人们和组织在网络中运行节点(称为代理节点),以此来解决经济激励问题。Streamr DATAcoin,或者 DATA,它是一种加密令牌,能够在 Streamr 生态系统中表示价值,它在以太坊区块链上是 ERC-20 令牌。伴随区块链用于价值结算、身份以及权限控制,而数据本身则保留在可扩展的 Streamr 网络中。

代理节点为网络提供带宽和存储,并通过网络用户交费获得DATA。从某种意义上讲,运行代理节点与挖矿相当,但是节点并不是解决CPU / GPU 限制的人为问题或浪费能源问题,而是提供有用的网络资源,通过使用 Streamr 协议共同产生可用于应用程序的消息传输服务。

P2P 结构和激励机制共同实现了去中心化。这意味着网络在没有任何中央方的情况下也可以运行,我们不会控制您的数据或从中牟取利益。

这符合 Streamr 的总体目标:确保世界上的实时数据由生产它的人掌控。

目前也存在一些去中心化发布/订阅协议,例如以太坊堆栈中的 Whisper 和 IPFS 堆栈中IPFS pubsub,但它们非常简单且具有实验性,并不适合于实现大规模的机器数据经济。

如今的 Streamr 网络是什么,路线图又是什么 ?

Streamr 网络的第一个版本已经启动,并正在运行中。您可以看到,它为 Streamr 市场、编辑器和用户创建的应用程序提供支持。目前,该网络每天处理数千万个数据点。现有系统已经提供了发布/订阅消息传递功能,以及用于连接到应用程序的 API。长远来看,这个功能接近我们想要实现的目标 - 然而,我们需要进行大规模的改进才能实现去中心。

下面,我将详细介绍我们现在所处的位置,以及我们目前设想的未来网络的主要版本。总的来说,我们遵循渐进式去中心化的原则,这样,我们就可以随时维护一个功能齐全的平台,新的版本会越来越多地放弃对网络的控制。

我们以最喜欢的爵士钢琴家命名我们的网络里程碑:Monk、Corea、Brubeck 和 Tatum。

Monk(当前版本)

当前的网络利用了开源大数据框架,如 Apache Kafka 和Apache Cassandra。这些框架虽然是去中心化的,并且具有可扩展性,但它们不是去中心化系统的构建块,因为这些框架依赖于所有受信任的节点。必须设计一个去中心化系统来容忍不可信和具有潜在恶意的行为者。

一般来说,Monk 缺少以下三个主要组件,因此可以让网络去中心化:

1. P2P 网络:网络拓扑和消息流必须发生于没有中央服务器控制的情况下。

2. 端到端加密:数据将通过去中心化网络中不受信任的节点,这意味着所有非公共数据都需要端到端加密以保证数据隐私。

3. 激励计划:运行节点的用户需要因此而获得奖励。相反,不必要的行为必须得到抑制。

以下三个主要版本将重点实现上述三个主要功能其中之一。

Corea (WIP)

当前的 Monk 网络将会被实现 P2P 网络拓扑并扩展 Monk 中Streamr 协议的网络所替换。由于尚未建立必要的加密机制和激励机制,Corea 网络中的所有节点仍将由我们运行。但是,这一更新会为网络架构去中心化做好准备。

到目前为止,我们已经完成了研究并构建了一些原型来决定采用哪些路径和技术。我们通过使用 libp2p 来获取一些潜在有用的功能,如 DHTs 和 即用 NAT 遍历。我们决定把节点写在 JS 中,这样,我们主要的竞争者是 Go。如果 Go能够带来性能优势或能够提供更成熟的库,我们有可能会在以后进行语言切换或创建并行实现。目前,JS 加速了开发,因为许多协议和 API 代码都可以从 Monk 网络的数据API 中重新使用。

就内部而言,我们希望在 6-9 个月内可以切换到 Corea。

Brubeck

这一版本添加了端到端加密和密钥分发机制。因此,受信方(例如,我们的合作伙伴或选定的社区成员)可以在生产网络中运行节点。在这个阶段,还没有激励机制来阻止不良行为,因此节点需要被信任。端到端加密提供了数据隐私,首次允许去中心化控制网络(即使它尚未达到完全信任)。

Tatum

在这个高级阶段,任何人都可以参与网络运行,包括意图不诚实的人。该版本增加了节点激励机制(表现良好赚取DATA,表现不良丢失 DATA),以实现网络的进一步去中心化,并能够在需要的时候继续运行,且完全独立于其创建者。

从 Brubeck 到 Tatum 的更新最为困难,并且最为耗时。在我们开始研究 Tatum 时,由于空间上的一些障碍已经被其它基础设施所解决,因此我们的研究将更加方便。以下是几个令人兴奋的发展示例,包括用于侧链缩放的 Plasma ,用于BFT 共识的Tendermint,以及几种区块链间协议,它们慢慢朝着向生产准备的方向发展。

从左到右:上个月在 Streamr retreat (总结) 中的Juha、Aapeli、Jarmo、Kare 和 Henri。

我们一直在寻找可以应用的技术,以求更好地实现我们的目标。作为一般经验法则,我们的目标是提供支持、保持合作,并在现有最佳技术和生态系统(如以太坊)的基础上进行构建。

因此,所有这些都是令人兴奋的东西,它们必定会吸引那些热爱软件开发和架构、热衷于去中心化,或者喜欢大数据和物联网的人。接下来的三个季度将非常有趣,敬请期待更多更新。如果您此时还没有这样做,为什么不立即开始使用当前的网络、市场和编辑器应用程序?

关注 Streamr 的 Twitter,sub-Reddit,或在 Telegram 上联系我们。

你可能感兴趣的:(构建当前互联网堆栈缺失的协议:用于实时数据的去中心化发布/订阅网络)