比特币在今天凌晨暴跌至7800美元,相信很多持币小伙伴都快心塞坏了。
没事,虽然比特币总是趁你不盯盘的时候下穿,但平复平复心情,找点别的事情做做,还是可以缓过来的——例如,可以来看看随着比特币数量的减少,比特币区块大小限制到底从中起了什么作用?区块大小的改变到底意味着什么?
比特币的可拓展性一直是一个老大难,其中一个重要的原因就是比特币区块大小限制了交易量的上限,你可能会问了,那增大区块大小不就行了,区块大小为什么不能多多益善呢?
你别说,区块大小还真不是一拍脑袋决定的,里面的门道多着呢。前些日子就有一堆网友为这个问题撕来撕去。区块大小限制有什么好撕的?又是出于什么原因让他们撕起来了呢?让我们在文中一探究竟。
什么是比特币区块大小限制?
比特币区块大小限制是比特币协议中的一个重要参数,它决定了比特币区块的大小,从而决定了在 10 分钟的区块间隔时间内比特币区块链可以确认的交易数量。
中本聪在比特币白皮书中并没有说到这个参数,但后来在领导开发比特币项目时,他将区块大小限制选定为 1MB ,换算过来就是我们常说的比特币每秒可以处理七笔交易。不过在现实场景中,每笔交易占据的空间大小不一,因此比特币每秒处理的交易数在三笔到七笔之间波动。
2017 年,比特币的区块大小限制被区块重量(weight)限制所替代,伴随而来的标准变成了 400 万个“重量单位”。这大大改变了区块链中数据的“计费策略”:一些数据比其他数据更重。而更重要的一点在于,这样做大大增加了区块大小限制:在新的标准下,比特币区块的理论大小可以达到 4MB ,实际中最大可以达到 2MB ,具体的大小取决于区块中所包含的交易类型。
为什么人们会对区块大小限制存在分歧?
人们对区块大小限制意见不一,其根本原因是谁也说不清这种限制是否算是比特币协议的一部分,如果非要算是比特币协议,那么它应该是多大?
中本聪从未公开说明自己为什么在比特币协议中加入了区块大小限制。据推测,他本打算将区块大小限制作为一种类似于反垃圾邮件的措施,以防止攻击者大量制造虚假的比特币交易而使比特币网络过载。也有一些人猜测中本聪本打算将区块大小限制当作一项临时措施,但目前尚不清楚中本聪的本意是经过多长时间的过渡期还是在满足什么条件之后不再用它。但从代码上来看,区块大小限制并不像是一个临时的过渡。
在中本聪离开比特币开发团队几年之后,开发人员和用户开始对区块大小限制的必要性产生怀疑。随着比特币用户数量的增长,一些人认为是时候增大甚至删除区块大小限制了,以避免将来比特币的区块被交易填满,从而使得比特币网络变得拥堵不堪。而另一些人则坚信区块大小限制是比特币协议中的一个重要的安全性参数,因此它不应被抹去,至少应该更加保守地来删除这种限制。还有一些人则认为中本聪规定的 1MB 实际上太大了,因而主张应该减小区块大小限制。
而由于比特币是去中心化的,这使得问题变得更加复杂。没有任何组织和个人可以决定比特币的区块大小限制该增大还是该减小。由于涉及到利益,是否应该更改比特币的区块大小限制,以什么方式来做这个决定、又由谁来做这个决定,这些由更改比特币区块大小限制引出的问题引起了巨大的争议,甚至超过了比特币区块大小限制本身。在本篇文章中,我们将着重讲述各方的观点,对孰是孰非我们不做过多讨论。
为什么比特币的区块不能太小?
请注意:业界对于比特币区块大小限制有着很大的争议,有人认为区块大小限制过大,也有人认为区块大小限制过小,在本篇文章中我们只介绍那些人们普遍认可的观点。
如果比特币的区块过小,比特币网络所能处理的交易数就会受到限制。支持增加比特币区块大小的一方认为,区块过小会造成两个严重的问题。
1、区块链缺乏足够的空间
首先,比特币区块大小过小意味着区块链没有足够的空间来容纳用户发起的交易,因而肯定会有一些交易迟迟不能确认。为了争夺有限的区块空间,用户之间不得不对区块链的交易手续费进行竞价来督促矿工优先处理自己的交易,这种现象如果不加以管控,将会让大量的用户逃离比特币。那么在未来,比特币区块链中只会有那些类似于银行的机构进行交易,而普通的用户想要进行交易只能在这些机构开立账户,换句话说,这将在区块链世界中打开部分储备金银行、交易审查以及一些传统金融问题的大门,远远违背了比特币创立的愿景。
2、降低比特币的竞争力
支持增加比特币区块大小的一方认为,比特币区块大小过小会带来一个十分紧迫的问题,就是降低比特币的竞争力。如果区块过小影响了用户的体验,久而久之用户会转而使用其他有竞争力的加密货币,更有甚者会直接放弃区块链这项先进技术。
为什么比特币的区块不能太大?
请注意:业界对于比特币区块大小限制有着很大的争议,有人认为区块大小限制过大,也有人认为区块大小限制过小,在本篇文章中我们只介绍那些人们普遍认可的观点。
反对增加比特币区块大小的一方认为,如果区块太大粗略来讲会存在三种风险,而这三种风险准确地说都包含了许多小的风险项。
1、运营比特币节点的成本大大增加
增大区块大小的第一个风险在于,这样做大大增加了比特币矿工运营节点的成本,成本的增加主要来自于以下四个方面:
增加了存储区块链数据的成本,因为这样做会让区块链数据量增长得更快。
增加了上传和下载所有交易信息和区块信息的带宽成本。
增加了验证所有交易信息和区块信息所需的 CPU 计算成本。
区块链越大,新节点加入区块链网络就越费时间,因为新加入的节点必须下载并验证所有过去的交易和区块。
如果运营一个比特币节点的成本过高,用户可能会(或者说是不得不)选择轻量级的比特币节点,这样做他们将无法验证自己收到的交易是否有效。
就比如说,攻击者可能会给使用这些轻量级节点的用户发送自己凭空捏造出来的比特币,由于这些用户不知晓比特币区块链中全部的交易记录,因而无法区分出这笔交易是否有效。在这种情况下,用户只有在使用这笔比特币、然而却花不出去的时候才会发觉自己被虚假的交易骗了,你可能会质疑攻击者的交易已经加入到区块中了怎么可能是无效的,这是因为有些矿工会与攻击者勾结。如果随着时间的推移,大多数的用户都运行这种不能立即鉴别交易是否有效、甚至是根本不能鉴别的轻量级节点,这样会给比特币的生态带来极大的风险。因为在这种情况下,比特币协议很有可能会被矿工所绑架,由于轻量级节点的大规模使用,矿工的数量逐渐减少,其监督力度也会随着降低,矿工们可以任意生成比特币、或者是花费不属于自己的比特币。因而只有那种拥有大量用户、且用户都会验证自己交易的健康的区块链生态系统,才能保证区块链的安全性。在比特币的白皮书中,中本聪承认了会有这样的问题,并建议通过一种被称为“欺诈证明(fraud proofs)”的技术解决方案来保证轻量级客户端的安全。但不幸的是,中本聪并没有详细说明欺诈证明技术的确切含义,到目前为止也没有人能够弄明白欺诈证明到底是怎么一回事儿, 实际上,当下一些比特币开发人员甚至并不认为欺诈证明技术是可行的。
增大区块大小的第二个风险在于,这样做可能会导致挖矿中心化。按照区块链协议的设定,每当矿工找到一个新区块时,它会将此区块发送到区块链网络中的其他矿工处。在正常的情况下,更大的区块需要更长的时间才能传播到网络的其他矿工处,换句话说就是更大的区块有着更长的延迟。然而,区块链协议没有提及的一点是,找到区块的矿工可以立即开始在其基础上进行下一个区块的挖矿,这样会使他在寻找下一个区块时处于领先地位。掌握算力较大的矿工(或矿池)比掌握算力较少的矿工(或矿池)更有可能能挖出区块,而挖出的区块越多,他们获得的领先地位就越多,这意味着掌握算力较多的矿工(或矿池)往往有着更多的优势,最终将逐步淘汰那些掌握算力较少的矿工(或矿池),从而形成更加中心化的挖矿生态系统。如果挖矿过程过于中心化,一些矿工最终可能会占据全网 51% 的算力,从而有了攻击区块链网络的资本。这可能是反对增大比特币区块大小的一方提出的最复杂也最细致的论点,但是,即使是掌握算力较多的矿工有着创造更大区块的动机(因为区块的延迟可以让他们从下一轮挖矿的先机中受益),但如果他们挖到的这个区块在传播到整个区块链网络时有着很大的延迟,那么这个延迟也可能会让他们遭受损失。就比如说,这个区块正在传播时,另一个矿工挖到的区块以更小的延迟传遍了整个区块链网络,这时其他矿工就会在那个区块上开始下一轮的挖矿,这样该矿工上一个区块就大概率作废了,而下一个区块又处于劣势地位,可谓是赔了夫人又折兵。当下有很多技术解决方案可以减缓这些延迟,就比如说一些防范中心化挖矿带来的损害的技术解决方案,但这些解决方案都或多或少地存在一些折中。
增大区块大小的第三个风险在于,这样做会让用户的交易费用大大缩水。在区块空间有限的情况下,用户必须在交易费上提价来保证自己的交易被矿工加入到区块中,并且随着比特币的区块挖矿补贴不断腰斩,交易费用将成为比特币挖矿奖励中的重要组成部分,而比特币的挖矿奖励又是比特币安全模型中的核心。如果没有了区块大小限制,交易费用严重缩水,挖矿奖励越来越没有吸引力,区块链的安全也就越来越没有保障。
你可能会问:交易费用为什么会缩水呢?这是因为即使个别矿工仍然坚持只处理那些费用超过最低交易费用标准的交易,但其他矿工很可能本着有总比没有强的态度处理那些交易费用很低的交易,这样久而久之矿工得到的交易费用奖励就会越来越低。细心的你可能已经注意到了,支持增加比特币区块大小的一方和反对比特币区块大小增加的一方都在拿对交易费用的影响做文章,支持的一方认为高额的交易费用会降低比特币的吸引力,而反对的一方则认为较低的交易费用会影响比特币的安全保障。
比特币核心开发人员在当下比特币网络使用的比特币实现中占据主导地位(但并没有完全控制)。因此,许多支持增加比特币区块大小的用户一直寄希望于比特币核心开发人员,想让他们在比特币的实现中增大区块大小限制。比特币核心开发人员不负众望,确实增大了区块大小限制,只不过是通过隔离见证(SegWit)协议升级实现的。在隔离见证协议中,区块大小限制被替换为区块重量限制,在这种标准下,比特币区块的理论大小可以达到 4MB ,实际中最大可以达到 2MB ,具体的大小取决于区块中所包含的交易类型。非常巧妙的一点是,这是一个向后兼容的软分叉协议升级,这意味着用户可以在不撕裂比特币网络的情况下选择这个更新。然而,由于比特币核心开发人员选择了软分叉的方式,而不是许多支持增加比特币区块大小的用户所推崇的硬分叉,因而有许多用户并不认可这是一种增大区块大小限制的举措。实际上,比特币核心开发人员之所以没有通过硬分叉增大区块大小限制,而是选择一种向后兼容的协议升级。这是因为硬分叉需要得到所有比特币用户的共识,否则比特币网络就有可能被撕裂成为两个部分:一个保持当前区块重量限制的比特币版本和一个增加了区块大小/重量限制的比特币版本。这时保持当前区块重量限制比特币版本的用户可能根本不会认为另一个分叉出来的版本是“比特币”,用户可能会将它称为“比特币核心币(因为由比特币核心开发人员促成分叉)”或类似的名字。也许更重要的是,目前的比特币核心开发人员团队似乎对决定比特币的协议规则并不感兴趣,他们也不想分裂比特币网络。因此,在比特币的用户群体中没有对某一协议(区块大小限制或者其他)的升级达到广泛的共识时,他们不太可能会部署硬分叉。鉴于当下用户对区块大小/重量充满争议,这种共识很难在短时间内形成,但在未来合适的时机就很可能会发生。
为了增大区块大小限制,业界也给出了一些替代解决方案。就比如说 Bcoin 团队发布的扩展区块(Extension Blocks),以及一些可以实现类似功能的解决方案,就比如说名叫“大区块(big block)”的侧链解决方案,但在目前还尚不清楚这些解决方案是否能在短时间内能否扛起增大区块大小的重任,而在当下业界的焦点似乎都放在了像闪电网络这样的第二层可拓展性解决方案上。
可以给你一个很简短的回答,没有。而稍微长一点的答案是,在用户对比特币大小限制吵得热火朝天的时候,互联网上最受欢迎的比特币讨论平台之一,社交新闻站点 Reddit 的比特币子版块加入了严厉的审核措施。当然了,这种审核措施是为了在更多专业用户达成未来前进方向的共识之前避免论坛用户强行推动破坏共识协议的软件。在当时,很多人并没有意识到使用这样的软件可能会导致比特币网络的撕裂(非向后兼容的硬分叉),而宣传总是给人们一种比特币不可能分叉的感觉,因而在不直接推动破坏共识协议的软件的前提下,在论坛中进行比特币区块大小是否应该增加,是否应该进行硬分叉的讨论都是被允许的。这种审核措施在旁观者眼中可能会被认定为“审查措施”,但可以肯定的是,任何不同意这一政策的人都可以自由地发起或参与与 Reddit 比特币子版块的对抗,这正是当时的状况,也正因如此, Reddit 比特币子版块成为那些喜欢讨论硬分叉增大区块大小限制的人们最钟爱的讨论平台。此外, Reddit 只是互联网中相对较小的一部分,在整个世界面前根本不值一提。虽然像 Bitcointalk (直译为比特币讨论)论坛、比特币开发邮件列表这样的平台都被指责进行类似的审查,但不能否认的是在社交媒体,新闻网站,会议上大家也是争得热火朝天。任何有兴趣听取不同论点的用户都可以自由地加入讨论,那些对这个问题毫不在乎的用户也很难躲过这场针锋相对的争论。最后,由于那些支持通过硬分叉增大区块大小的用户们并没有用足够令人信服的分析和案例说服足够多的用户支持自己,似乎有一些狂热的用户将这种深深的挫败感转化为了对某些论坛和版主的愤怒。
在明晰了比特币核心开发人员将会使用隔离见证软分叉协议来更新区块大小限制(当然了,区块大小限制只是其中的一部分)时,一些支持增加比特币区块大小限制的用户,即使在知晓他们将是少数派因而会分叉出新的比特币网络、新的加密货币的情况下,还是选择积极推动通过硬分叉来增大区块大小限制。这个新网络和由此产生新的的加密货币就是比特币现金(Bitcoin Cash)。自从比特币硬分叉出比特币现金以来,比特币已经又实施了几次硬分叉升级,其中一些升级分叉出了新的比特币网络和新的加密货币。当中,最引人注目的是中本聪愿景的比特币(Bitcoin SV,Bitcoin Satoshi Vision),中本聪愿景的比特币松散地围绕在一个自称是中本聪的男子 Craig Wright 周围,现在几乎可以确定 Craig Wright 并不是中本聪本人,因而人们亲切地叫他澳本聪(因为他是澳大利亚人)。中本聪愿景的比特币有着比比特币现金更大的区块大小限制,你没有看错,是 128MB ,这是因为澳本聪认为比特币的区块大小应该没有上限,因而这个数字未来还有可能会扩大。