作者:币圈金马奖
来源:金色财经
很多人反对比特币扩容?
我们都知道比特币现金(BCH)由比特币硬分叉而来,而比特币现金诞生的背后就是著名的扩容之争。
那么为什么很多人反对比特币扩容?—— 这个问题其实不够准确。
扩容问题不能简单地等同于区块大小之争。确切来讲,比特币社区并不反对扩容,而只是反对 BCH 直接粗暴地通过提高区块大小上限来实现硬扩容;实际情况是比特币通过隔离见证和闪电网络实现了软扩容,提高了整个网络交易的承载量。(是的,隔离见证和闪电网络本身就是扩容)
所以,比特币和比特币现金所谓的扩容之争不是扩容和不扩容之争,而是扩容路线之争,是具体采取何种方式来扩容之争。
BCH和BSV的大区块有什么问题?
前面我们已经提到:比特币并没有通过直接提高区块大小上限来实现扩容。那么为什么比特币在提高区块大小上限方面极为谨慎?大区块究竟有什么问题呢?我们不妨来看一看BCH和BSV。
首先介绍一下它俩的背景:
BCH 是从 BTC 硬分叉而来,当时它把比特币的区块上限由 1M 修改为 8M ,目前已经升级为 32M 。
BSV 是从 BCH 硬分叉而来,当时它把 BCH 的区块上限由 32M 修改为 128M ,目前已经升级为 2G 。总之,BCH和BSV都是走“大区块”的路线,当然 BSV 要更加极端一些。
然后我们来看看它俩曾经遇到的问题(只是两个案例)
2018年9月,BCH 进行了压力测试,压力测试其实就是故意刷交易量来看看网络的实际承受情况。最终的测试结果为平均区块大小3.6M,最大区块达到21.35M,其中有16%的全节点掉线,无法同步数据。(可想而知,如果平均区块大小达到21.35M,全节点极有可能全部掉线)
2019年4月,BSV 因为压力测试还造成过6个区块的重组(6个区块的重组其实是很严重了)推测原因也是因为区块过大导致算力节点无法及时验证与广播,导致矿工站错队,从而引发重组。
BCH和BSV所遇到的问题,已经向我们证明:当区块过大,全节点就会面临掉线的风险,区块也可能出现异常。这是因为部分全节点受到网络和硬件的物理条件限制,来不及验证和广播,从而无法及时同步账本。
所以,全节点太大其实是加大了运营全节点的门槛,导致最后只有少量全节点,从而加剧网络的中心化。
不妨对比一下比特币和以太坊的全节点大小和个数:
据 coin.dance 的数据显示,当前比特币的全节点个数大约是九千多个;全节点数据大小约为250G,也就是说一般人的电脑都是可以运行的。
以太坊的节点分为全量节点和存档节点,根据最新的csdn大会发布,以太坊的全量节点有八千多个,根据 BlockCypher 年初数据,存档节点只有3个。也就是说以太坊真正的全节点只有3个,全节点的大小为2T。# 普通人运行全节点的意义
2010年7月,中本聪将比特币的区块大小上限设置为1M,当时并没有给出具体的理由。而现在看来,应该是为了降低全节点的门槛从而实现高度的去中心化,使得整个网络更加安全。
但是关键问题在于,我可以运行但我为什么要运行?对于普通的电脑来说,只能够单纯同步账本的信息,因为没有算力所以没有出块奖励,反而耗硬盘耗电耗网,那么普通人运行全节点到底有什么意义呢?
这里推荐BTC狙击手的两篇文章:
《普通人保持全节点的意义在哪里》《普通人如何用全节点保护自己》
简单总结一下其中的观点:
普通人运行全节点,意味着普通人对这个账本具有“监督权”和“修复权”,在任何一个金融体系中这两项权力都是很重要的。
区块链的本质是“分布式记账体系”,而不是“算力记账体系”,所以算力和挖矿从来只是手段,账本的安全、数量才是目的。
文章中两个案例都说明了普通人运行全节点,是可以遏制矿工作恶的。而且在那种情况下,就算作恶矿工的算力占全网的99%,也无济于事。(其实也可以理解成全节点是网络规则的守护者,有算力也不能乱来,假如矿工不按照规则打包,账本也是不认的,这个区块就会成为一个孤块)
出块时间和区块大小的影响
最后,回到最开始的问题:出块时间和区块大小对一个项目的影响有多大?
在正常情况下,假设A挖到一个区块,A就会尽快广播到全网,别人就会继续在A后面挖。假如A的这个区块并没有来得及被B接收到,B就不会在A后面挖,B会自己挖一个块,然后尽快广播到全网,也会有人在B后面挖。这样会形成分叉。
所以本质是,同步账本的时间应该远小于出块时间,否则就会增加分叉的概率。
比特币的区块大小为1M,数据传输和验证的时间很短,所以全网能同步账本的时间也很短,然后比特币又是大约每十分钟出一个块,所以比特币同步账本的时间远小于出块时间。
如果增大区块,以目前的物理条件就会增加同步账本的时间,同步账本的时间如果和出块时间没有那么悬殊,将会增加分叉的概率;如果同步账本的时间大于出块时间,那么网络就会出现越来越多的分叉。缩短出块时间也是同理。
总结
首先对于比特币来说,1M区块大小上限降低了全节点的门槛从而实现高度的去中心化。而对于POW的项目来说,出块时间和区块大小的设置都是为了使同步账本的时间远小于出块时间,从而减少网络中的分叉,最终使得网络更加安全。