什么是区块链?

当下我们每天聊的区块链技术,以及比特币,都是由一个化名中本聪的神秘人物发明出来的。但是区块链底层依托的各项技术,其实在很早就出现了。区块链的最大特点是实现了一个公开的但是又绝对安全的数据库。那么区块链是如何在一个公开的环境下达成安全的?如何在没有特定主人的情况下保证数据的不可篡改的呢?

区块链的最基本构成

区块链,英文叫 Blockchain ,字面意思是由区块连成的一条链。所谓的一个区块,其实就是一个不是很大的数据块,一般就几兆。简而言之,一个区块本身就是一个文件,里面记录了一些信息。对于比特币来说,一个区块里面记录的信息是很多条交易,但是对于其他区块链项目来说就不一定了。你可能会说,哦,比特币是加密货币,那么这个区块是不是经过加密的,一般人不能读,也不能修改呢?其实不是。区块本身就是要让任何人都可以读到的,至于修改,当然是不鼓励的,因为区块链的一大特征是历史数据不可修改,但是如果攻击者想要修改自己机器上的某个区块,也不是难事。

那么区块链的安全性怎么来保证呢?区块本身是能改动的,但是别忘了这里还有链的概念呢。先说众多的区块是怎么连成一条链的吧。第一个区块,也就是所谓的创世区块,是不算的,从第二个区块开始,每个区块中都保存着上一个区块的文件名。你想想看,这样的话,假如我拿到第 1000 个区块,是不是就很容易找到第 999 个区块了,有了 999 找 998 也就不难。如此反复,给我一个最新的区块,我都能拎起来一串区块,就是一个区块链了。如果你是程序员就会明白,区块链的概念其实和链表是类似的。

好,我们总结一下:区块是文件,文件形成了链,这就是区块链的基本结构了。说到这里我们还是没明白,安全性是怎么达成的呢?如果区块中记录了我的比特币,同时我又可以修改区块,那我就先给自己加一万个比特币再说。其实,魔鬼隐藏于细节之中,安全性的一个保证就体现在之前我们聊过的文件名上了。第三个区块中,保存了第二个区块的文件名,这个文件名可不是随便起的,每一个区块的文件名都是自己内容的哈希值。哈希,是密码学的一个常用概念,可以把哈希算法理解为一个算法公开的函数,函数的输入是一个数据,在这里就是一个区块的内容,而输出的结果就是一个所谓的哈希值,或者就简称为哈希。哈希算法有个特点,就是如果输入的数据不变,那算出来的哈希就不会变,如果输入的数据变了,哪怕就变一点点,那哈希也会变得面目全非。

所以,一条区块链上的某个块如果被人恶意修改过,那么文件名也就变了,它之后的区块也就找不到它了,这也就意味着这条链断开了,所以这个哈希特性就构成了保证数据安全的第一层屏障。

去中心化网络

但是,断开的链子,我就不能再接上了吗?如果所有数据都只是受我自己控制,那我在链断开的位置,算出新的哈希值,把之后的所有区块都逐一修改,那么这条链也还是能连起来的。所以,仅仅有第一层屏障,并不能达成真正的安全。

区块链的这个概念中,还包含另外一层,那就是去中心化。为了便于记住,我们把区块链做一个形象的比喻,一条区块链就是一个账本,一个区块就是账本上的一页。任何人,只要有个足够大的硬盘,就可以下载一份账本到自己的电脑上,这样就形成了一个节点,众多的节点就构成了一个区块链网络。对于中心化的网络,网络上只有一个老大,只有一个中心,数据如果存疑,那么就以老大的数据为准。而区块链的网络是去中心化的网络。特点就是没有老大,所有账本都是平等的,我如果对自己的账本数据存疑,那么就跟周围几个朋友的账本对比一下,这样就可以确认数据是否可靠了。

中心化网络有个明显的弱点,就是一旦老大崩溃,整个网络就完蛋了。所以从这一点上去中心化网络就有明显优势,如果我的数据损坏了,只需要找我信任的几个朋友,把他们的数据拿来,做一下交叉对比,然后就可以获得可信数据了。跟大家的数据都不一致的个别区块链,也会自动被网络忽略。

所以,网络的去中心化,是保证数据安全可信的第二层屏障。

达成共识

但是,去中心化网络似乎也不是万能的,它能工作的前提是我要有一个可信任的网络,我至少得相信我那几个朋友不会串通起来骗我。所以区块链技术的真正挑战在于如何在全球范围内,达成陌生人之间的完全可信的网络。

如果仅仅是把区块连成链并且组织成一个去中心化网络,那么这些其实都不算比特币原创,Git 版本控制技术,早在2005年就用这样的架构了。而比特币的出现之所以革命性,就是因为比特币实现了网络的达成共识的机制,从此之后,全球人有了一个共同可信的账本,于是陌生人之间也可以在没有权威机构参与的情况下进行交易了。

比特币达成这种共识的方式就是 POW ,全称是 Proof Of Work ,也就是“工作量证明”。工作量证明虽然不是中本聪的原创,但是是在比特币系统下才发挥出了强大的威力。工作量证明是一种通过运算能力竞争达成的一种投票机制,简单可以理解为一台电脑一票。为啥大家要费很多电能拼命挖矿呢?其实挖矿的本质就是进行这个运算能力的竞争。最终达成的效果是什么?简单来说,就是整个比特币网络上有一半以上的电脑,联合起来撒谎,才有可能恶意修改数据。仔细想想就知道,这的确是不太可能的事情。事实也验证了这一点,比特币网络从 09 年到现在,已经安全运行十年了。

需要提一下的是 POW 不是唯一的达成共识的方式,另外一种共识方式叫 POS 也就是“股权证明”,粗略的来讲就是一股一票。总之,去中心化网络中共识的达成,形成了区块链安全的第三层屏障,也是最终极的屏障。

总结

关于什么是区块链就聊到这里,我们来总结一下。首先介绍了区块链的基本结构,知道了每个区块中都保存了前一个区块的文件名,所以各个区块能连成一条链。而每个文件名又都是对应文件内容的哈希,这就保证了任何对区块的修改都会造成链的断裂,这一点形成了对安全性的第一层保证。接下来咱们聊的去中心化网络,在去中心化网络中,数据的是否可信,可以通过各个节点之间进行交叉验证来达成,这个就构成了区块链网络安全性的第二层保证。最后,POW 和 POS 这种去中心化网络中共识算法的出现,为区块链的安全性达成了第三层、也可以说是最终极的保证。注意,今天我们热议的区块链技术,是同时包含这三层保证的,缺一不可。