Harry
@37206436
Quorum 大概是怎么工作的?
编程 RUM Rum rum rum-app quorum
2022-12-07 16:15
Words count: 1116
rum 真好玩,玩一玩,头就秃了

很早就了解到 RUM,这段时间从开发者视角接触了一下它的核心——quorum的运作,以及恬不知耻地骚扰霍炬一段时间后,觉得自己现在的理解程度可以帮助到一些人了,在这里整理、分享一下,欢迎你纠正我。

quorum 是什么?

启动 quorum full node 的时候,会用到许多 libp2p 格式的网络地址。

libp2p 是一个用于计算机在网络上互相发现、交换数据的 p2p 库,它的开发团队及继承自BT下载的开发团队。如果你把它看作一种“基础设施”的话,那么 quorum 就定义了一种组织和维护数据的协议(很有网络架构的传输层和协议层的那个意思)。

libp2p 是公路和汽车,quorum 提供了一种基于前者的物流服务。

每一个 rum 组的数据都是一条区块链,生产者(producer,默认是 owner)有权限在上面写入新数据,生产了新的数据(trx)可以同步给其他节点。

如果只有一个 producer,也就是 owner,且只有它会向外发送数据,那么就很像传统的中心化服务了:服务器(woner,唯一的producer)往数据库(区块链)里写数据,用户访问服务器(owner)获取新数据。

在 Rum System 描述的网络结构中,中心化只是一种特殊情况。

那么 quorum 的分布式设计是如何把事情变得好玩的呢?

Quorum 至少要解决这几个问题:

  1. 如何保证群组数据的持久化?
  2. 如何让用户能互相同步数据?
  3. 怎么同时拥有多个 producer?

如何保证群组数据的持久化?

传统的社交媒体服务,是不会向用户直接提供元格式(数据库格式)的数据的,即使是用户自己产生的数据,也只能自己用爬虫爬下来。

但是在 quorum 的体系中,每个节点都在本地保存了一份群组的原始数据(那条区块链),所以这个群组内发生的所有事,所有成员都是能通过这条区块链恢复这个群组的全部内容的。

如何让用户能互相同步数据?

目前有两个同步数据的协议,pubsub 和 rex ,前者是直接找 owner 要数据,后者是从相邻所有人手里要。

如果这个群组里有开启 rex 的节点,那么你就可以向网络联通更好的节点获取数据。

你可以在官方的 rum app 的实验室中开启了 “Rum Exchange” 选项,但是会稍微多耗一点流量,因为你在向外发送数据。但是群组的联通性会和数据同步速度会好很多。

如何让大家都能向组中写入新的数据(怎么同时拥有多个 producer)?

这可能还是个拜占庭将军问题,现在的 quorum 主分支(包括 rum app)其实是把添加 producer 的权利给到了群组 owner,但是会出现很多问题,最致命的就是这个新的 producer 的设备性能和网络联通性都很差(类似拜占庭将军问题中不可靠的兄弟部队),会导致群组出块很不流畅。

目前官方在 producer_sync 这个新分支上开发新的共识机制,试图“自动化”地添加 producer,或者是在被 owner 添加 producer 之后,再动态地调节他们的工作。

有兴趣的可以试一下。

以上是我在接触 rum 的代码(quorum)时真实遇到的一些的疑问以及我自己的解答,谢谢霍大大和 rum 团队不耐其烦地给我解释我的问题。

如果文章有错误,请直接指出,感激不尽。

如果你还有什么其他问题,欢迎你直接评论或私聊我 Mixin:37206436

Arweave TX
kwplbn0nfvZ8umamdjRBpqdnsbLmQGQ2tbVU8Qs4w9g
Content Digest
1468732574dcd69b156633829d2e479f66df1e498df3ec88f8151dd2a2213ef5
Reward
3 : 0
0 times bought, 0 times reward
0.0
Price(XIN)
0
Paid Times
0.0
Revenue(USD)
0.0
My Share(%)
Comments
Subscribe
Harry
@37206436
Subscribing: 10 Subscribers: 7
Subscribe
Related Posts
Defi乐高之借贷协议(2)--MarginFi 隐身3个月通关编程实战项目,升级进取型思维分享。 macOS系统多开Google Chrome浏览器 从小白到科学家(二)之脱胎换骨 Invoke the closed source contract tutorial with MetaMask
Rules Stats Help Github Twitter Discord
Harry
@37206436
Subscribing: 10 Subscribers: 7
Subscribe
Related Posts
Defi乐高之借贷协议(2)--MarginFi 隐身3个月通关编程实战项目,升级进取型思维分享。 macOS系统多开Google Chrome浏览器 从小白到科学家(二)之脱胎换骨 Invoke the closed source contract tutorial with MetaMask
Rules Stats Help Github Twitter Discord