区块链技术的本质

128 阅读8分钟

区块链技术的革命性

说区块链必然要谈比特币,比特币是一种数字货币。但最令人叫绝的是,比特币号称有下面 几个特性。

  1. 去中心化。这意味着没有中心的服务器,不受某个人的控制,整个系统直接由用户端的 电脑构成。这样的技术难度是非常大的,并不像手机 App 或是小网站一样,你想发布就 发布,这需要有人来跟你一起玩。
  2. 数据防篡改。所有交易记录全量保存,并公开给所有的人,而且还被加密和校验。并不 是数据不能被篡改,而是数据被篡改的成本非常大。(有人借此说区块链的不可篡改可 以解决人类的信任问题,这个并不一定。)
  3. 固定的发行量。不会像国家中央银行那样乱印钞票,造成通货膨胀。

这几个东西加在一起,就可以让那些想作弊的人,尤其是那些有权有势有钱的大公司大组织 很难作恶。因为“去中心化”这个事,从本质上来说,造就了整个系统不再需要这些个大的 公司和组织,人民可以达到真正意义上的自治,这些大公司都会倒闭。

简单说来,相信区块链的人都相信,可以通过区块链这个技术来改变整个社会的组织形成 ——不再需要银行、中介机构、电商平台、支付宝等中间机构,人们可以通过一个不受任 何人控制和操作的 P2P 金融系统,进行完全自由和可信的交易。

当然,反区块链的人的观点也很明确。他们认为,所谓的去中心化看似很美好,但实则不可 能。而且从目前的区块链的应用来看,也没有颠覆什么,连迹象都没有。反而,大家都在疯 狂地炒作概念,没有实质的价值。像 ICO 和交易所这样的东西里面充满了大量的投机主 义,泡沫非常大。

于是,这种巨大无比的争议性,把人们分割成了两种阵营,把区块链推向了火热。对此,我 这几篇文章会把区块链这个技术一点一点讲解清楚,让你自己判断。

技术概要

image.png

image.png

去中心化的比特币交易处理流程如下。 注意,整个比特币的世界是没有服务器的,其完全是靠大家用自己的电脑拼出来的一个分布式系统。既然这些电脑都是大家自己的,所以这种 P2P 的去中心化网络有一个前提假设首先,需要交易的用户把交易传到网络中。

然后,网络上有些机器叫记账结点,它们通过比拼计算力的方式竞争记账权。这也叫“挖矿”。获得记账权的结点,会把待记账的交易进行计算打包,并向全网广播。收到新的记账包的结点会对其进行验证,验证通过后加入自己的区块。

注意,整个比特币的世界是没有服务器的,其完全是靠大家用自己的电脑拼出来的一个分布式系统。既然这些电脑都是大家自己的,所以这种 P2P 的去中心化网络有一个前提假设“网络中的任何结点都是不能信任的,它们中的任何一个都可能会作恶”。

基于这个前提假设,这个分布式的账本系统就需要有如下的设计:任何人都可以拿到所有的数据。所以,数据要能很容易被验证是合法的没有被修改过的,而且也要是很难被人修改的。

基于这个设计,比特币使用了两个比较大的技术:“区块链技术”和“工作量证明共识机制”。

区块链

第一个技术就是区块链,区块链又叫 blockchain,其中有一个一个的区块,每个区块中包 括着一组交易信息,然后,每一个区块都会有一个 ID(或是一个地址),这些区块通过记 录前一个区块的 ID 来形成一条链。下面的图有助于你形象地理解这一概念,感兴趣可以看 看。

image.png

但需要注意下面这几个方面。

  • 每个块的 ID 都是通过其内容生成的,所以,只要是内容有一丁点儿的变化,这个 ID 都会完全不一样。
  • 而生成 ID 的内容中还包括上一个块的 ID。于是只要上一个块的内容变了,其 ID 也要跟着变(不然就不合法了),那么后面指向这个块的 ID 也要变。于是,后面指向这个块的ID 也要重新计算,而变成另一个,这样就会形成一个连锁效应——一个块被修改,后续的所有块都要跟着一起改。于是导致了修改成本的提升。
  • 这种一处改,处处改的方式,并不代表不能篡改,而只是让修改面比较大,让你的改动麻烦一点。
  • 越旧的区块的篡改会造成越大面积的修改,于是越旧的区块就不容易篡改,就越安全。反之,越新的区块就越不安全。 而真正让区块链做到非常难篡改的是工作量证明的共识机制。 工作量证明共识机制 我们知道,分布式网络的数据一致性是最难的问题了,在这种去中心化的网络集群下就更难 了。其中最大的本质差别是,一个公司内的分布式系统中的结点是被假设成可信任的,而在 去中心化的网络下,结点要被假设成不可信任的。 想象一下,在一堆不可信的结点上做一 致性是不是一件很难的事? 这里,需要解决几个与“数据一致性”相关的问题。 是的,这种没有人组织的玩法真是乱啊。

为了解决这几个问题,比特币使用了 Proof-of-Work 工作量证明机制,也就是“挖矿”。 所谓的“挖矿”其实就是用大规模的计算来找到一个符合系统要求的区块 ID。要找到符合 条件的区块 ID 只能通过暴力穷举的方式,所以要付出大量的系统计算资源和电力。 这样一来,我们用这种“极度消耗计算力”的方式来提高成本,从而有效地遏制或解决下面 几个问题。

以谁的数据为准? 任何结点都可以修改自己所下载的账本,也就是任何一个人都可以伪 造账本。那么,谁的数据才是对的?在去中心化的网络下,我们只能认为,大多数人认识 的数据是对的。只要我控制了一半以上的结点,我让这“大多数人”伪造同一份账本,那 么相当于整个账本都被我修改过来了。因为在没有服务器的去中心化的网络下,所谓的真 理只不过是大多数人同意的东西。

“大多数人”的问题。 是人数吗?在网络世界里,我可以用程序模拟出无穷多 的“人”出来投票,所以,用人数来解决去中心化的问题,在分不清是人还是狗,是生物 还是程序的计算机世界里,是一件很愚蠢的事。

意见分歧问题。 如果在同一个时刻,有多个人都在告诉其他人,这账应该这么记。比如 说,有人说,左耳朵转了 10 块钱给了耗子叔,有人说,左耳朵转了 20 元给了耗子叔, 还有人说,左耳朵没有花钱,是陈皓花的钱。而且,他们的数据都合法,那么,整个网络 应该听谁的?

  1. 修改几乎变得不可能。试想,如果生成一个区块需要大量的长时间的计算力。也就是在 世界上最好的电脑集群下计算 10 分钟才能打好一个包。那么,当我们要去修改数据内容 的时候,这个过程也是一样的。前面说过,如果你要伪造一个块,那么你就要修改后面 所有的块,修改一个块的成本如此之高,那么修改整个链的成本也就非常之高了。
  2. 能掌握 51% 的算力的人变得几乎不可能。除了伪造一条链的成本很高,还要控制大多数 人的算力,这意味着需要巨额的资金投入。这两个难度加起来,几乎不太可能。
  3. 解决分歧。一方面,这么大的工作量找出来的区块 ID,已经有效地降低了大家有意见冲 突的概率。另一方面,就算是出现了合法冲突的区块(同时出现了多个合理的区块,即 区块链出现分支 / 分叉),也就是多个合法的账本。而因为挖矿的成本太高,导致要同 时跟进多个账本是不可能的,所以矿工们只能赌跟其中一个。大多数人所选择的那一个 分支的链就会越来越多,于是另外一边也就无人问津,从而作废了。 你别看 Proof-of-Work 成本这么高,还这么耗电不环保,但是,这是目前去中心化系统中 最安全的玩法。