脱离中心化HTTP服务?来看Bluzelle的小妙招!

巧用区块链替换常用的中心化互联网服务

Bluzelle
The Blueprint by Bluzelle
4 min readAug 2, 2019

--

Bluzelle作为一个分布式数据库,关键目标是整个架构不依赖任何中心化个体运行。然而在通常情况下,应用程序和服务器之间要相互连接时需要知道对方的IP地址和主机名等,因此我们要么把这些信息写死到应用程序上,要么通过“查找”功能去“发现”对方,这些都是非常中心化的概念,即使是“查找”本身也需依赖某种中心化的查找或目录服务,这其中最常见的是使用中心化的HTTP服务。

对于Bluzelle来说,应用程序使用Bluzelle的时候需要找到网络中的集群和节点;新加入的节点也需要(1)发现网络中的集群(2)决定加入哪个集群(3)发现该集群的节点并与之同步。为了保证去中心化的原则,这意味着Bluzelle不能依赖像HTTP这样的互联网服务。那我们怎样才能有效地完成以上的步骤,并确保它始终可运行呢?

Bluzelle巧用以太坊替换HTTP服务

我们发现使用以太坊的智能合约作为“注册表(registry)”和“目录(directory)”服务是区块链的一个很完美的用例。这除了可以免除部署中心化服务所需的运行开销外,我们还可以获得区块链在数据透明性、数据审计等方面的优势。

因此,我们编写了Bluzelle的以太坊集群注册表(Ethereum Swarm Registry,简称ESR),作为去中心化的Bluzelle集群注册服务,这包括集群的独特标识、集群中的节点列表等。这个注册表作为Bluzelle的分布式引导(bootstrap),完美解决了很多Bluzelle架构上的挑战。所有开始使用Bluzelle的应用程序或者新加入的节点:

  • 需要在第一次进入Bluzelle网络时在预设的以太坊智能合约地址与ESR进行连接(只需进行一次)
  • 可以通过ESR发现集群和集群上的节点
  • 去中心化地把自己连接到集群上
1)应用程序(或节点)连接Bluzelle ESR;2)发现网络中的集群、加入节点等

这个过程不依赖任何中心化的方案。我们在之前的Sprint #40更新中演示过节点如何通过把自己添加到ESR中成为Bluzelle的节点,可以回顾以下视频。

演示视频:通过ESR在Bluzelle网络中加入新的节点

Bluzelle ESR已开源

正如我们的客户端软件和节点软件一样,我们已经把Bluzelle ESR开源,并使用开源许可证进行许可。因此,其他开发者可以自由查看我们在Github上的源代码。若你想使用区块链为你的程序实现分布式引导,你可以从我们的Github进行分叉后使用。

总的来说,公链是允许分布式基础设施存在的很重要一环。以太坊为Bluzelle提供了很重要的去中心化引导/发现服务,使应用程序和服务器可以不依赖任何中心化个体实现连接。区块链在这里提供了巨大的价值。

--

--