专栏名称: Libra天秤座
我们处在巨变前夕,加入我们,一起创造未来,见证数字货币时代的来临。
目录
相关文章推荐
白话区块链  ·  2025年跑赢比特币的赛道,你最看好哪个? ·  昨天  
白话区块链  ·  祝Web3全体小伙伴蛇年大吉👋! ·  2 天前  
疯狂区块链  ·  如何拒绝被PUA? ·  3 天前  
疯狂区块链  ·  为什么西方不用卷? ·  4 天前  
51好读  ›  专栏  ›  Libra天秤座

比特币的另类视角——比特币在技术上其实是非常落后的

Libra天秤座  · 公众号  · 区块链  · 2017-10-30 22:43

正文

本文内容整理知乎专栏:区块链演义。这是一个非常棒的专栏,深入浅出地讲解了数字货币的原理。原作者是maxdeath,是TU Delft大学的信息学博士。


这篇文章是本系列的第六期。在第一比特币交易与支付宝转账的区别》中,我们从另类视角,讲述了什么是比特币,以及比特币交易与支付宝转账的区别。


在第二中本聪是人,不是神》中,我们深入浅出地讲解了比特币设计的相关概念。比特币的确设计得十分巧妙,许多设计中同时达到了多个目的。然而中本聪也绝对不是什么ai,或者穿越者,他没有“发明”这些看起来不明觉厉的机制——无论是工作证明,权益证明还是拜占庭容错算法,其实都可以在人类社会发展进程中的社会形式里,找到影子。


在第三期 - 第五期货币体系的价值比特币这个货币体系只值21亿美元》《如何摧毁比特币这个货币体系中,我们指出了比特币也是一个货币体系,并且从货币体系的角度,评估了一下比特币的价值,结果是不足21亿美元。而摧毁这个货币体系,甚至连21亿美元都用不上。这个结果是大大出乎人们意料的。


今天,我们想讲一些技术上的问题,比如扩容和分叉。在此之前,我们想先提出一个观点:比特币作为区块链的开山怪,到现在为止没有进行过哪怕一次技术上的更新,从技术上相比于其他的区块链已经是非常落后的而这一点,就算是比特币的支持者也不得不承认。


以下是今天的内容:


一、首先,什么是扩容?

扩容不是增发比特币,每次看到有人跟风拿这个黑比特币都很心塞。

其实,我每次看到别人黑比特币都心塞。不是因为比特币好,是因为都黑不到点上,一下就被反驳回去了。

扩容是指增加交易量上限

而为什么要增加交易量上限呢?因为交易量不够。

为什么交易量不够呢?

简单地说是比特币规定每10分钟(左右)挖出一个大小为1MB的区块,每笔交易平均下来是250字节,于是,每块可以放进4000笔交易,除以600,得出一个著名的数字——每秒7笔交易。

这是个什么概念?

其他的交易平台,最差的paypal是每秒100笔量级的,最强的,例如支付宝这种,在双十一的时候可是每秒100000笔量级的。

比特币和他们一比,根本就没法称之为交易系统。

于是,随着最近比特币涨价,参与人数增多,就出现了这种状况:

图上可以看出来,最近稍有缓解,但是前几个月多到什么程度呢?大概有20万条交易在池里等待加入链中。而且,从整体来看,这东西是一直呈增长趋势的——不过这正常,毕竟使用人数一直在增加嘛。

于是呢,比特币就和北京的交通差不多了。

怎么解决拥堵呢?可以多收点交易费嘛。

于是:

交易费翻了几倍。

但这不是长久之计,至少,并不符合比特币长远的利益——尤其是当比特币还想要更广阔的用户群和更多的功能的时候,提高交易费只会降低比特币的受众。虽然和一些主流交易平台相比比特币的交易费还可以接受,但是有一个问题是竞争——就算是比特币的支持者也不得不承认,比特币作为区块链的开山怪,到现在为止没有进行过哪怕一次技术上的更新(早期做出过一些更新以及修复过一些bug),从技术上相比于其他的区块链已经是非常落后的了于是,如果未来比特币不扩容,就会导致要么拥堵,要么交易费高。这样,虽然比特币可能现在用户多,安全性高,但是势必有一些对安全性要求没那么高的用户会转投其他交易费低或者不拥堵的数字货币的怀抱,久而久之,比特币的价值就会受限于一个特定的用户群的固定的交易量。

所以,比特币需要扩容,差不多是业界的共识。

而且,这个共识,已经达成了很多很多年了……

但是为什么现在才扩呢?

首先,我们要讲,究竟怎么扩容?


二、如何扩容?

这个问题有两个层面:1. 技术上如何实现;2. 工程中如何实施。

而对于比特币,第二点的难度远远大于第一点,所以,咱们先说第二点。

扩容如何实施?

听起来好像是个很高深的问题。

那么换个问法:

软件如何升级?

这你一定会觉得,不就读个条就好了吗?

但问题来了——比特币和那些随随便便就读条的妖艳贱货不一样!比特币是分!布!式!系!统!

分布式系统就是说,比特币没有中心服务器和客户端,不存在服务器升级然后给客户端发个补丁或者升级包大家读个条就都升级好了的情况。

分布式系统想升级,你得让每个节点都升级才行。

有人不升级会怎么样?

会分叉(fork)。

三、那么,什么是分叉?

令人非常遗憾的是,在网上看了这么久没找到特别直观和准确的解释分叉的文章,甚至,广泛转载的某一篇根本就是错的。而且,在我看来软分叉和硬分叉这个名字非常有误导性——似乎软分叉就不会分叉而硬分叉就一定会分叉一样,实际上并非如此。软和硬,实际上是站在比特币这个特定场景里,在普通用户(而非矿工)的角度说的,实际上和分不分叉没有必然联系。至于为什么叫这个名字,这种误导造成了什么问题,我们稍后再说。

先说定义,简单地定义的话,就是:

-> 软分叉(不分叉):旧节点接受新区块,新节点也接受旧区块。

-> 软分叉:旧节点接受新区块,新节点不接受旧区块。

-> 硬分叉:旧节点不接受新区块。

我们先来看最简单的情况,也就是:

  • 软分叉(不分叉):旧节点接受新区块,新节点也接受旧区块,这个时候会发生的情况如下图所示:

也就是说,这种情况并不会导致分叉,因为这种升级并没有改变区块的格式。于是双方都可以如同以前一样愉快滴在对方的区块上挖矿。这种情况压根就不会分叉,之前的P2SH的升级就是这类。但问题是,在很多地方,人们称这种情况也为“软分叉”,导致了很多人认为软分叉就一定是这种情况,于是,这就与真正的“软分叉”,也就是下述情况混淆起来了。

  • 软分叉:旧节点接受新区块,新节点不接受旧区块。

这个时候,可能会出现两种情况。

1,如果新节点的算力超过50%,那么会发生下图的情况:

这个时候虽然旧节点会在新区快上挖矿,但是由于新节点不会在旧区块上挖矿,然后新节点的算力较大,那么最终最长的链一定是全部由新区块组成的链。而且,这条最长链是双方都认为合法的一条(所以图里两个小人在同侧)。而旧节点这个时候,出于自身利益的考虑,也会升级成新节点——这就是软分叉的最好结果。

然而,软分叉并不一定会出现这种结果——如果新节点的算力不够,就会出现下述情况:

2,如果新节点的的算力不足50%,那么:

在这种情况下,由于新节点不会在旧区块上挖矿,所以即便新节点先挖出了几块矿,但是后面肯定会全都是旧区块。然后,新节点会认为只有新节点的才是合法的,而旧节点虽然认为两条都合法,但是新区块的那条算力不足导致不是最长链,所以它仍旧会选择上面那条。

出现了这种情况,后续有两种可能的发展,要么:

要么:

两者其实没区别,只是一个态度的不同:前者是我们的算力暂时不够但是更多人加入我们之后我们还是要合起来的,后者就是我们算力少我们认了,我们就是要分,合不上也无所谓。打个比方的话,就好比是常公和马娘娘的区别,一个要光复,一个是一中各表咱们小确幸就好了。这里请注意,在两条链合上之前,是真真正正的分叉了。

那雾岛的玩法是什么呢?那就是硬分叉了:

  • 硬分叉:旧节点不接受新区块。

这里其实还需要分类讨论一下,如果新节点算力超过50%,那么无论新节点能不能接受旧区块,都会出现上图所示的场景。

新节点不能接受旧区块的情况很容易理解,链自然而然分裂成两条,即便算力不超过50%也一样,无非是一边用户多一边用户少而已。

但如果新节点能接受旧区块,我们先考虑算力超过50%:这个时候正好是软分叉的第二种情况反过来——旧节点不接受任何有新区块的链,而新节点虽然接受有新区块的链,但是因为只要有了新区块旧节点就不会在上面挖矿,所以最终会还是会分成两条链,一条只有旧区块,一条只有新区块,和上图所示情况一样。

但一定要切记:硬分叉不等于分裂!因为硬分叉只代表新旧节点会分成两条链,但是不代表两方的节点永远分道扬镳——双方仍旧可以放弃自己的阵营加入对方,也就是说最后大家仍旧可以一起玩耍,只不过其中的一条链会被废弃,这些区块会变成孤块。这并不可怕——这种暂时性的分叉在比特币的世界,几乎每天都在发生。

所以说,与其说硬分叉会导致分裂,不如说先有分裂,才会有硬分叉。如果矿工的阵营没有分裂的话,硬分叉根本就不是问题。

那么,有人会说,还有一种情况没考虑啊!

如果新节点算力不足50%,而且接受旧区块会怎么样呢?

会发生这种情况:

这和软分叉的第一种情况正好相反,简单说就是升级失败了。所以,这么明显的失败升级也压根不会被采用——如果铁了心要硬分叉的话,就干脆不兼容旧区块就好了。

以上,就是分叉了——也就是说,根据升级方式,以及升级节点算力的不同,有可能出现如上所述的几种情况。

从上面能清楚地看到:软分叉不代表不会分叉,硬分叉也不代表分裂。

诚然,硬分叉一定会导致分叉,但论起分叉的危险性而言,硬分叉却不一定会超过软分叉——软分叉的背后,其实更加暗藏杀机。

这一点,圈子里的人都懂,而我会在后面通俗地讲讲这个故事。

那为什么起软分叉和硬分叉这个名字呢?这其实是在比特币这个特定的环境里,站在非矿工的角度说的。

对于矿工而言,我以上的那种分类方式更加精确。而对于非矿工而言,软分叉和硬分叉这两个名字更一目了然。

软分叉:没事,不着急升级软件。

硬分叉:快点!不升级软件就来不及了。

但是只以这两类来定义分叉的话显然是不准确的,尤其是软分叉——软分叉其实涵盖了非常多可能的变化,其中有些甚至是比硬分叉还有风险的。

所以,讲完了分叉,对于升级实施难度有了概念之后,我们终于可以讲扩容的技术方案了。这个我们明天再会。

明天,我们将着重讲一下比特币的扩容和分叉,以及各利益集团背后的江湖。

欢迎关注我们,拨开迷雾,见证数字货币时代的来临。



防止失联,请加微信

推荐文章
白话区块链  ·  祝Web3全体小伙伴蛇年大吉👋!
2 天前
疯狂区块链  ·  如何拒绝被PUA?
3 天前
疯狂区块链  ·  为什么西方不用卷?
4 天前
酱子工厂  ·  山东老板娘,惊艳全场!
7 年前