比特币现金 比特币现金能进行链上扩容吗?

aaron67 · 2018年02月08日 · 最后由 YJP123 回复于 2018年05月24日 · 66 次阅读
本帖已被设为精华帖!

本文由 @rattler 翻译(微博) | 原文 Can Bitcoin Cash Scale On Chain?


与其和Core粉陷入无意义的争吵,不如多做一些有意义的事,下文是openbazaar的开发者Chris Pacia写的文章,讨论的是比特币现金是否能够进行链上扩容,文章的结论现在就能扩容到100MB。

多年来,核心开发人员及其盟友给比特币打上了比特币不能扩容的标签,或者说如果想要进行链上扩容,至少会带来中心化的结果,而我们当中有许多人反对这种说法的。至少自2015年以来,这种反对意见在/r/bitcoin或其他任何沟通渠道中都是不被允许的。 像我这样的人已经放弃了表达我们的意见,因为

  1. 他们终归会删除我的评论
  2. 我会受到一群只会群体思维的暴徒的2分钟仇恨攻击。

但现在比特币现金(Bitcoin Cash)已经分叉,并且将自己置于实际的链上扩容的境地,同样是这些人,再加上一群受害于言论审查的新手,现在公然宣传着Bcash不可能扩容! 这不可能!

但是事实真的如此吗?

中心化

扩容被认为是“不可能”的主要原因是这样的: 如果你增加网络处理的交易数量,那么你将提高运行比特币全节点的成本。 人们将不得不花钱购买更昂贵的硬件,将有更少的人会这样做,这会导致网络中心化。

还有一个是关于区块广播的问题,我将留后处理,现在我想先解决上述的问题。

当我们增加交易量后,我们真的需要更昂贵的硬件来运行一个全节点吗? 是的,但只是超过某一特定点后才需要。 个中原因是现在几乎每台电脑都有多余的资源。 有些设备,比如我现在用于输入这些文字的笔记本电脑,就依然有非常多的空闲资源。

现在我倾向于认为,针对最低系统要求,让终端用户可以在家里运行一个全节点可能是过于保守了(即使只有企业运行节点,去中心化水平很可能是可以维持的),但保守一点总没错。 因此,为了本文的目的,我将假设我们希望保持家庭运行全节点的可行性。

先问自己一个问题,如果像比特币网络一样,在家用电脑上运行一个全节点仍然可行的话,比特币现金(Bitcoin Cash)的网络可能会有多中心化?

但我听到的答案是1MB已经太大了

不要依靠直觉,让我们做一些实际的科学研究吧。 好吗?

比特币无限公司(Bitcoin Unlimited)的Peter Rizun和Andrew Stone开展了一项研究计划,以确定最大可行的区块大小。 为了达到研究目的,他们使用的电脑配置是能够满足人们家用以及在大部分西方国家都可以买到的电脑 - 四核CPU,内存为16GB,网络连接速度为30 Mbps。

以下是他们在斯坦福大学展示他们研究成果的视频链接:

那么初步的结果是什么? 基本上他们在大约22MB时(我的估计)遇到了一个瓶颈。 但事实证明,瓶颈的原因并不是硬件,也不是网速,而是比特币Core软件本身的问题。 尽管Core开发人员得到了如此多的赞赏,但Core的软件可以说是可怕的欠优化。 对于精通技术的人来说,这意味着软件没有充分利用可用的资源。

安德鲁斯通认为这个瓶颈是内存池的接纳问题,并着手优化了代码,以并行的方式将交易纳入内存池。 单单这一项优化,他们就能够将区块大小增加至100MB,然后他们才遇到另一个瓶颈。

这第二个瓶颈是由于区块广播的问题造成的,我将在下面讨论,但我在这想暂停一下。 我们已经达到100MB了,这已经三倍于PayPal规模了。这是在典型的家用电脑上运行的,用的也是典型的家庭网络的网速。

研究仍在继续, 他们仍然需要以更大的UTXO集合来重复实验,这可能会降低某些性能,但是仍然有大量的软件优化需要进行,这些优化尚未实现,优化完成后可能会平衡一些性能损失。

难道家庭网络带宽不会成为一个瓶颈吗?

我们来看一下比特币节点的带宽使用情况。 你可以在这里找到一些统计数据。 该比特币节点的合并上传和下载带宽约为8.8 Mbps。 如果与我的家庭网速约100 Mbps相比较,可以看到我依然具有相当数量的空余的带宽。 但让我们深入了解一下8.8 Mbps这个数字。 事实证明,被使用的带宽当中约有97.5%与交易或区块处理无关。 相反,所有带宽都被用来将区块上传到正在引导启动的节点或从缺失节点返回数据。 这里又是一个大规模优化的机会。

我将在下一节讨论如何优化,但现在我只想指出,如果以“修剪”模式运行节点,则不会将区块链上传到其他节点,从而将带宽使用率降低到 只有220 kBps。 如果我们将220 kBps乘以100来获得100 MB块的带宽使用的粗略估计值,则可以得到22 Mbps。这意味着即使运行100MB块的区块链,仍然富余足够的带宽得以同时在多台电视上传输Netflix。

我知道有些网络服务提供商(ISP),虽然不是全部,每个月都有流量上限。 但是那些使用这些网络服务提供商(ISP)的人如果想要运行一个家庭节点,就只能承受并且升级流量无限的套餐。 而且我怀疑几年之内所有的套餐都将是无限流量的。

区块链所需的存储空间会不会是天文数字?

如果是100MB的区块,那么我们每年的数据存储容量约为5.2TB。 虽然很大,并可能需要一个专用的设备来存储这些数据,但是我们可以通过优化大量降低存储要求。

要运行完全验证的节点,技术上你不需要存储历史区块链信息。 你只需要验证新的交易就行了,区块是一个UTXO集——一个还未使用的比特币数据库。 这就是我上面提到的“修剪”模式。 它删除历史区块链,并使用其UTXO集的副本来验证新的交易。 修剪模式唯一的问题是如果每个人都使用它,那么我们不能引导启动新的节点。

目前,引导启动新节点的唯一机制是让它们连接到另一个节点,并从创世区块开始下载完整的区块链。 这不仅要求某些节点咬紧牙关,将整个区块链存储在硬盘上,而且还会导致一个非常缓慢的引导启动过程,这是导致我们上面看到的超额带宽占用的原因。在这一方面我们可以做得更好。

UTXO承诺背后的想法已经存在了很长时间,从未真正实施过。 有几种不同的方式来使用它们来引导启动新的节点。 每个方式都有不同的权衡,我不会在这里涉及它们,但底线是我们应该能够使引导启动一个新节点达到这样一个地步:我们只需要为他们提供UTXO集,而不是整个历史区块链。

这样一来,除档案节点以外,其它的节点将不再需要储存所有历史区块链的信息,并且会大大减少用于引导启动新节点的带宽。

区块广播

所以我们现在所处的境地是,在百思买(Best Buy)可以买到的笔记本电脑上,往小了说,处理100MB区块似乎是完全可行的。 还有什么其他的原因可能导致大区块产生中心化?

有也是有的。 这似乎有点不直观,但更大的区块实际上为较大的矿工提供了一个微小的竞争优势,从而激励人们只在最大的矿池进行挖矿从而导致挖矿中心化的风险。 造成这种情况的原因是,较大的区块需要较长的时间才能广播给其他矿工,并且该矿工能赶在其他矿工在这个块上挖矿之前,在这个块上获得更长的挖矿时间。 有时候一个矿工会在第一个区块广播完成之前挖出第二个区块。 较大的矿工有更多的机会做到这一点。

我们知道一些高级区块链设计可以消除或降低这种问题的影响。 例如,Emin Gün Sirer的Bitcoin-NG协议完全消除了这个问题。 Brian Levine教授的Bobtail协议显著降低了(尽管我不相信能完全消除)这种影响。

但是,即使没有彻底的共识改变,我们仍然可以通过简单的区块压缩技术,大大降低这种影响 目前,Core的紧凑区块协议可以将块压缩到原来的2%。 这意味着一个100MB的区块只需要大约2MB的数据在网络上传输。 更小的区块意味着它不仅可以使用更少的带宽,而且可以最大限度地减少矿工在自己的区块上开采所花费的时间。

但是我们可以做得比这好得多。 Levine教授的石墨烯(Graphene)协议基于可逆布鲁姆查找表,能够将区块压缩到Core的紧凑区块的十分之一。 这意味着一个100MB的区块只需传输200kB的数据。

但是,我们甚至可以把它压缩得更小。 比特币现金(Bitcoin Cash)开发者在弱区块上已经做了一些初步工作。 这是一种可以预先传输区块中绝大多数交易的技术,所以当实际区块被挖出来时,只需要涵盖它和弱块链之间的差异数据即可。 如果我们将10秒间隔的弱区块与石墨烯(Graphene)技术结合起来,最终的100MB区块将仅需传输3.3kB的数据(其余的是预先传输的)**这是比特币网络在2012年每一区块传输的数据量。

所以总结一下,除非你认为比特币在2012年时已经是不可接受的采矿中心化了,否则100MB区块应该不需要担心的。

我应该在这里提一下,deadalnix认为我对弱区块技术的空间节约级别的看法是错误的,但他还没有完全说服我¯_(ツ)_/¯

你无法永远都链上扩容。 我们仍然需要二层网络!

所以我们现在可以在家用笔记本电脑上扩容到至少100MB的区块,但是一旦这个性能耗尽之后会发生什么? 是不是说我们不得不放弃并承认(链上扩容)失败了,并接受二层网络成为必然?

或许是,或许也不是。

我只是谈论今日可能之事而已就已经做到了这一步。 我还没有提到摩尔定律 - 大概每两年CPU速度翻一倍的经验。 人们很久之间就开始预言摩尔定律要失效了,但它仍然在嘎嘎向前进。 对于带宽,我们有尼尔森定律,每年带宽增长约50%。

假设CPU速度和带宽继续增加,比特币现金(Bitcoin Cash)将能够继续增加交易量,而不会产生新的中心化压力。

唯一真正的风险是交易需求增长超过摩尔定律(似乎是可能的)。 那么可以肯定的是,我们最终可能会碰到一个实际的(非Core开发者强加的)瓶颈。 但是我们可以预测,至少在一段时间内我们不会遇到这个瓶颈。 如果我们假设交易量在可预见的未来每年会翻一番(这可能是也可能不是一个合理的估计),下面的图表显示了假设不同资源增长率的情况下,我们何时会实际上遭遇这个瓶颈。

即使我们保守估计资源每年只有20%的增长,到2029年我们仍然没有遇到实际的瓶颈,届时家用笔记本电脑将能够处理GB级的区块,这基本上已经是VISA级别的规模了。

好吧好吧,但是在2029年你仍需要二层网络! Greg Maxwell是对的!

我们真的无法预测明年区块链尖端技术的发展状况,更不用说十年之后了。 这个领域的创新快速而激烈。 以太坊(Ethereum)已经在尝试分片(Sharding)技术,对于我来说,这对于提供无限制的链上扩容是非常有希望的。 从现在开始十年之内,当任何一个新的区块链被推向市场时,如果它们不使用分片技术进行扩容的话我一定会觉得很惊讶。

除了分片技术(sharding)之外,zk-snarks似乎也很有潜力。 想象一下,只需下载32个字节,就可以在不到一秒的时间内同步并完全验证区块链。 兴奋吧。 ZK-snarks今天还不能有效地做到这一点,也有可能永远无法做到这一点,但考虑到大量的研究倾注到当中和以及创新的步伐,如果认为这可能在10年内是不可能的话似乎是不太合理的。

最后,任何软件扩容的方式都是将其推至极限,找出瓶颈,优化,然后清洗/冲洗/重复。 这就是比特币现金(Bitcoin Cash)的扩容计划。

结论

尽管有相当强有力的证据证明了相反的论点,但是多年来人们一直声称,比特币不能扩容。在我看来,这个论调之所以能够成功,在于猖獗的审查制度,彻底删除反对意见,严格控制的叙述和社会操纵。 一般情况下,当事实是确凿无疑的时候,你不需要从事这种不诚实的行为。 可悲的是,比特币社区已经显示出很少有独立批判性思维的能力,并且彻底相信了这个叙述。

在这篇文章中,我已经阐明,比特币现金(Bitcoin Cash)确实可以扩容到相当大的区块,并且能够在家用电脑上运行,并且不会牺牲去中心化。

那些集体思维者叫嚣的Bcash无法扩容的说法是错误的,而比特币现金(Bitcoin Cash)开发者正致力于证明这一点。


欢迎各位老板用Bitcoin Cash打赏 @rattler,地址1Gm8qEbhHV4qWet8oiaMqRKTbrmr5WsJKo

共收到 1 条回复
aaron67 将本帖设为了精华贴 02月08日 17:31

AllSpark chain AllSpark 旨在通过区块链技术建立一套社交媒体时代无法有效解决的内容和影响力定价机制。这套机制由一个分布式的内容生产、传播、交易市场和一个分布式的内容评价机制构成,用以建立社交媒体时代正向的内容传播与价值回馈机制。

Official website: https://www.allsparkchain.com

Official Telegram: https://t.me/allsparkchat

Official Chinese telegram group: t.me/AllSparkChinese

Github code repository https://github.com/allsparkchain

微信:pyj6466

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册