【Velocity】能提高区块链节点的数据存储和传播速度吗?

译者注:Velocity (速率)是一个基于 Java 的模板引擎,通过特定的语法,Velocity 可以获取在 java 语言中定义的对象,从而实现界面和 java 代码的真正分离,这意味着可以使用 velocity 替代 jsp 的开发模式。

在使用区块链技术的应用中,游戏是其开发最为广泛的应用。比特币通过共享数据结构或账本提供微量原子数据交易。数据交易的去中心化结构确保了一个高效的系统。

随着区块链技术在物联网范式的使用,新的应用领域也随之出现,我们将其称为去中心化 P2P 自动遥测系统(ADEPT)。

这是设备之间的另外一种自主通信方式,它消除了中介,与区块链方案非常相似。

那么问题就来了,“什么是节点?”

节点通过区块存储并共享数据,并可提高数据批量处理的速度和交易的可扩展性。传统的数据传播是通过网络中的多个节点来进行的。

但如果数据庞大,那么区块也会过大,而且,区块会将数据共享给网络中的所有节点,直到所有节点都获得新信息,而这将导致数据传播的速度变慢。

这就是“Velocity”可以发挥作用的地方——加快数据传播速度。Velocity 使用喷泉码进行高效和细微的交易处理,防止通信通道上的任何数据传输中断,而且还提供了急需的交易吞吐量。

在进一步讨论 Velocity 之前,让我们先来了解一下基础的传播过程。

区块链协议和数据传播:

众所周知,区块链是一个通过若干无需信任的节点参与者批量共享账本数据的网络,这些参与者通过共识算法验证这些相同的数据。

信息抵达节点的过程通常被称为自举,这些自举节点交换数据的过程就被称为区块传播。

以下是几种不同的区块传播方式:


致密区块(Compact Blocks)


这种方式是经过区块链改进协议(BIP)验证的有效降低载荷的方法,这种方法的工作原理是假设必要的信息集已经发送给对等节点,并且只需要与节点交换该信息集的差异。

【Velocity】能提高区块链节点的数据存储和传播速度吗?

图片来源:高带宽致密区块传播

【Velocity】能提高区块链节点的数据存储和传播速度吗?

图片来源:低带宽致密区块传播

该方法通过高、低带宽提供了一个有效的中继过程。它利用额外带宽降低了封包来回时间,这种方式也降低了有效载荷的大小。不过此方法仍然存在两

大缺点:

· 需要“短 ID (Short ID)”来辨别丢失的交易,这也需要更多的存储空间。

· 当单个节点处理多笔交易时,由于无法对未知交易进行优化,就会导致出现差异。

极瘦区块(Xthin)


该方法是由比特币无限改进协议(BUIP)提出并开发的,它通过使用布隆过滤器来更有效地对比信息集的差异,可更有效地检测未知交易,但是它通过编码成员信息增加了传播过程的支出。且由于恶意节点可以发送伪造的过滤器来创建碰撞攻击,因而也存在安全问题。

【Velocity】能提高区块链节点的数据存储和传播速度吗?

图片来源:极瘦区块传播

Graphene


这是一种能够弥补极瘦区块不足的新改进方法。它通过重新传输区块以接收故障。它利用单个对等节点作为关键点,一次性发送所有数据,而不是由多个节点共享部分数据。这些区块仅用于区块传播,而非用于节点自举。

分布式哈希表(DHT)


DHT 主要用于 P2P 发现。系统将 DHT 作为“初始做种者”,负责构建整个系统的单个节点,自举过程允许多个参与者共享公共 DHT。

此方法有效改善了上述三种方法所存在的问题,并利用节点拥有的部分信息作为新资源,缓解了未知交易检测的瓶颈或差异。不过它也存在两大缺点:

· 由于 PoW 挖矿协议,企业参与成了一个问题,因为协议遵守和收入模型问题一直困扰着移动应用开发的使用。

· 该系统需要一个公共的中心节点来引导发现,这本身就违反了区块链的去中心化结构。

喷泉码+Velocity


喷泉码(通常称为无速率擦除码)提供的方式较为独特,它可将信息编码成片段,当片段数达到阈值,就可以将这些片段重组为原始数据。

由于数据的重建基于分段而不是单个区块,因此与 DHT 相比,喷泉码能够提供更稳健、更流畅的数据传输。尽管喷泉码的概念在区块链范式中非常有用,但它尚未应用于区块链领域。

对于区块链应用程序而言,喷泉码是一个理想方案,因为它可以将单个信息分割成大小相等的元素,然后将这些元素编码为特定的“符号(symbol)”。这些符号特定于任务并被传输到一个或多个源,并最终由接收者组合完整信息。

接收者为每个符号编码算法,且算法几乎不可能被破解。“Velocity”可与喷泉码共同使用。

“Velocity”使用这些喷泉码的纠错特性来允许来自多个源并能够同步广播的区块传播。

通过喷泉码进行分布区块传播:


1. 在实现新节点时,发送方节点会将 Inv 发送到附近节点。区块被编码成预定大小的符号。

2. 接收方接收 Inv 消息,并使用 get_sym 请求向所有节点请求所有未知区块。

3. 拥有所请求区块信息的对等节点通过符号响应重复提供响应,并将符号中的每个区块进行编码。

4. 接收方收集所有符号,并使用区块头 ID 提供的映射形成一类符号对。这一过程确保了区块的安全性,因为每个区块必须拥有区块头来避免 DOS 攻击。

5. 接收方有一个关于符号数量的预定阈值,当这些符号达到阈值时,接收方就会开始重构区块。

6. 若重建失败,接收方则会尝试检测不符合的符号对。

7. 若重建成功,接收方则将接收到的消息发送到传输节点,以停止符号传输。

【Velocity】能提高区块链节点的数据存储和传播速度吗?

图片来源:behrens

了解使用 Velocity 的收入点:


矿池通常使用历史数据来确定收入模型的最佳区块大小。然而有时交易费用并不能成为孤块的理由。为了缓解这些问题,并根据交易费用来决定区块大小,我们可以使用以下两个参数:

符号大小:


若我们想在 P2P 通信中聚合符号,那么区块大小与符号大小之间的比率对于确定符号大小来说十分重要。

孤块率:


孤块就是在区块链操作过程中存在时间延迟而不被接受的区块。

结语:


“Velocity”可以优化区块传播以提高收益,并利用区块链为企业带来经济激励。这种方法显然可以改变区块链流程以优化区块大小,从而帮助矿工在达到更高安全性的同时实现更顺畅、更快的交易。

文章来源 | Hackernoon
翻译 | 头等仓(First.VIP)_Saline
转载请保留文末信息!

来源链接:mp.weixin.qq.com