带宽与区块链:开发人员如何最小化负担

更新日期: 2019-06-13阅读: 1.7k标签: 区块链

区块链使整个世界保持在同一页面上。当每个区块被铸造时,新的账本状态就将取代先前的状态。共识机制致力于确保更广泛的社区同意该状态。在一个设计良好的系统中,激励措施可确保不变性。经过足够的时间之后,状态就不会被篡改。这些区块链为我们提供了可编程的货币,并顺理成章地引起了许多人的兴趣。

比特币和以太坊是最早的两种区块链。事实证明,这些账本受人欢迎且健壮,但通常被诟病难以扩展。为什么会这样?我们还可以做什么来改善这种情况?


背景

区块链本身被称为 第1层 (layer 1)。对全网所有加密资产的当前位置,区块链扮演了一种全球性的真实来源。网络上的全节点跟踪帐本的当前状态。 为了保持去中心化或不出现权力中心,小矿工必须能够验证区块链并为其做贡献。而小矿工的系统资源和带宽可能远低于大玩家。

为了让区块链去信任和抗审查,它们不能被任何单个实体或小团体控制。 开发者们认为这一点非常重要:保持各种规模的玩家都能参与,以避免出现权力集中和单一控制点。 正因为如此,提高比特币的区块大小限制才会遇到阻力。该限制用于限制整个系统,保持其可以被广泛访问。

应该注意的是,我们可以在各方之间签订本地协议来转移币,而不进行全局更新。这通常被称为 第2层 (layer 2)或 链下 (off-chain)交易 ,对扩大交易(不一定是用户)有着深远的影响。这个想法是,在写入区块链之前,各方之间可以对交易进行汇总。在某些设计中,将本地状态刷新到全局区块链的窗口可能需要几个月甚至更长时间。

工程师们乐观地认为,第2层解决方案将为区块链带来巨大的可扩展性,并且在加密货币能够满足大规模用户群体的需求之前,这将是至关重要的。然而,即使第2层充当了巨大的杠杆作用,它也只能放大基础区块链的容量。第2层无法自行提供无限制的容量。因此, 优化网络以便让每笔交易使用尽可能少的资源非常重要。  


问题

去中心化的比特币区块链是全球共享的广播媒介——可能是人类设计的最疯狂低效的交流方式。——格雷格·麦克斯韦尔

第1层的基本问题是 账本的副本必须在全球范围内保持同步。 每个完整节点都存储区块链的副本,这些副本必须彼此相同并由每个节点独立验证。

当矿工找到一个新区块时,必须将其传递给所有其他节点。 延迟对于挖矿节点尤其重要,因为它们需要始终在最近的区块上工作,否则它们的努力就会浪费掉。 为了验证最近的区块,矿工需要知道包含哪些交易以及拥有所有这些交易的副本。

目前,比特币软件使用一种不成熟的(naive)方法来传播交易和区块。节点在收到交易时会把它们转发给所有节点。 区块被批量传输而不考虑接收者可能已经有的数据。 对于需要确保他们能够访问最新区块的矿工来说,这些低效率是不可容忍的。  

补救措施

比特币中的这些低效率是众所周知的。多年来,人们一直在努力使网络在减少带宽开销和加速传播上更加高效。在2014年,前比特币维护者加文·安德森(Gavin Andresen)发布了一份 O(1)区块传播路线图 。此后路线图发生了重大变化,但这些想法仍然具有现实意义。

FIBER网络图示。来源: bitcoinfibre.org


中继网络

矿工们已经主动采取措施实施区块中继网络,如FIBER和Falcon。这些中继网络通过使用 低延迟 + 高带宽 连接来工作,但它们具有诸如中心化和使用大量带宽来尽量最小化延迟的缺点。 它们并不会降低运行一个非挖矿节点的总体带宽需求,但只有满足了这一点之后,工程师们才会在扩容系统时感到轻松自在。


紧凑区块

在传输一个区块时,传输那些接收者已经拥有的交易是不到最佳标准的。密码学家格雷格·麦克斯韦尔认识到,接收者已经知道了许多新发现的区块中所包含的内容。具体地说, 接收者的内存池 (mempool,一组已接收但未确认的交易) 可能包含新区块内的许多交易 。他研究了这个问题并在2015年12月起草了一份提案。  

核心开发者马特·克拉洛(Matt Corallo)接下了格里格的工作并对其进行了改进,在2016年初,将其形成了为名为“ 紧凑区块 ”的比特币改进提案(BIP)152。紧凑区块是一种协议,它发送区块头、缩短的交易ID列表和发送者认为接收者不太可能拥有的一组交易 ,而不是发送一个包含所有数据的区块。这一改变旨在 节省带宽 ,但也具有 减少延迟 的良好副作用。


Erlay

比特币中基于洪水广播的方法显然不是在网络内传播交易的最佳方法。节点会接收到每笔交易的多个副本,并且必须将它们转发给所连接的每个节点。这导致消耗了大量的带宽,造成不必要的开销。它还鼓励节点连接到较少的其他节点,因为每个其他节点都会增加每笔交易的带宽。  

连接到较少的其他节点确实限制了带宽消耗,但它可能是危险的,因为它会让用户暴露在所谓的 日食攻击 (eclipse attack)之下。TumbleBit的创造者伊森·赫尔曼(Ethan Heilman)发表了一篇关于2015年日食攻击的研究论文。基本思想与女巫攻击(Sybil attack)有关。攻击者伪装成许多不同的实体,以此来迷惑受害者。攻击者独占所有与受害者节点相连的传出连接。 通过充当受害者唯一的信息来源,他们挖出特殊区块来伪造当前状态。 这是代价高昂的,但如果攻击者可以让受害者相信自己已经收到了大量的比特币,而实际上资金已被转移到其他地方,受害者可能会被说服他们已经收到资金并释放财产。  

Erlay可以提供更好的连接和健壮的网络。如果一个节点连接到32个其他节点,Erlay研究人员发现,他们的优化将导致节点使用的带宽比当前软件少75%。  


下一步是什么?

通过矿工使用的中继网络和普通节点用户的紧凑区块,人们对区块传播进行了大量优化。尽管如此,研究人员仍在努力消除系统的开销,使其尽可能简化。只有当开发者满意于当前吞吐量的带宽要求已经尽可能低时,他们才能提高吞吐量。


原文链接: https://medium.com/scalar-capital/bandwidth-and-the-blockchain-2ad35c57dbdf
本文版权归原作者所有,仅代表作者本人观点


链接: https://www.fly63.com/article/detial/3683

从概念到底层技术,一文看懂区块链架构设计(附知识图谱)

区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。

200行JS代码实现超级简单的区块链,带你入门区块链

本文通过JavaScript源码实现一个简单的区块链框架,带你入门区块链的相关知识。区块链的基本概念非常简单:一个分布式数据库维持不断增长的有序记录列表。

用JavaScript写一个区块链

几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术。在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的

初识区块链_用JS构建你自己的区块链

区块链太复杂,那我们就讲点简单的。用JS来构建你自己的区块链系统,寥寥几行代码就可以说明区块链的底层数据结构、POW挖矿思想和交易过程等。当然了,真实的场景远远远比这复杂。本文的目的仅限于让大家初步了解、初步认识区块链。

刚入门区块链的程序员应该看些什么?

区块链有很多的定义,大家的说法都不一样,业界都还没有统一。每个人心中都有自己的哈姆雷特。所以此处就不做定义了。那么我主要推荐一些关于区块链概念的学习资料,看完我所推荐的资料,你应该对这门技术有一个自己的了解

区块链 PoW 与 PoS 的纷争

有关注区块链的,肯定会经常看到这两个名词 -- PoW 与 PoS。但是很多人对他们的含义的理解存在很多偏差。那么他们的含义与区别是什么呢?简单而言,PoW 和 PoS 是 2 种不同的对记账权利的分配方式。

使用javascript实现小型区块链

区块链概念狭义:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码方式保证的不可篡改和不可伪造的分布式账本。

NodeJS实现简易区块链

很多区块链接在一起,就组成了一条链。这条链,也用class来表示。并且其中实现了很多方法:按照加密规则生成hash,插入新块和检查操作,批量插入块和检查操作以及可信度计算

区块链开发中使用的最流行的编程语言

我们目前正处于一个新兴的区块链开发行业中。区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣。由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的应用程序

探索区块链的原理

之前经常听别人说,挖矿、比特币、区块链之类的东西,听起来好高大上呀,后来在网上了解相关知识,但是网上大部分都是转载,没一个能讲明白的,后来不知不觉接触到了一些易懂的点

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!