相信大家在近一年一直会在新闻,电视里频繁地接触到“区块链”这个词。由于比特币(Bitcoin)以及其他各种货币(altcoin)在2017年11月至2018年1月期间纷纷创下价格历史最高值,区块链(blockchain) 的概念在整个网络的传播也达到白热化。然后有趣的是,即使区块链这个词语人人皆知,所谓的区块链解读文章比比皆是,大部分人对于区块链还是缺乏足够多的了解。甚至很多普及区块链的文章对于这个名词的解释都是一带而过,常常使用例如点对点传输,去中心化,分叉,算力等等让人摸不着头脑的专业名词。读完这些文章,你仍然没有办法真正理解什么是区块链,因为很可能这些文章作者本身也并不理解;所以,这篇文章会以一个简单的例子来介绍区块链的基本原理,相信看完后你也可以向你的朋友解释什么叫做区块链.
传统转账方式
首先我们要建立一个基本概念,区块链就是一个网络账本(register),可以用来方便高效地传输数据/转账。那么我们先来看看传统方案下转账的流程如何。一般大家生活中常用的转账方式有支付宝/微信/银行转账,这些方法背后的逻辑是一样,需要参与转账的双方A和B,以及一个独立的第三方作为信用背书,转账的过程相信大家也很熟悉,图例如下:
以支付宝转账为例,A和B共同信任支付宝,所以他们在支付宝里都有账户以及存款。当A和B达成了交易协定,A首先要向支付宝发出转账请求,支付宝公司确认A账户里有足够余额后就允许这笔转账达成,再向B发出转账成功的确认信息。在这个流程里面,A和B其实并没有直接进行转账,而是通过支付宝这个作为媒介,银行转账也是如此。
“去中心化”转账方式
那么区块链是如何实现“去中心化”的转账的呢?我们用一个简单的模型来阐述它的原理。
如图所示,假设一共有十三个人围坐在一圈使用区块链技术转账,并且按照座位次序1-13号标号,在交易开始前,给每个人发一张白纸一支笔作为记录的工具,下面交易正式开始。
首先,假设1号给3号转账100元,传统方法是由第三方认证并在交易达成后,1号和3号分别在自己的白纸上记录,比如1号会写:
1号 -100元
3号 100元
而在区块链的系统里面,并没有独立第三方存在,因为这个系统里面的每一个成员都是第三方,这又是什么意思呢?原来,当1号向3号转账时,在这个系统里面的每一个人都会收到交易请求,所以每一个系统都会做出判断,1号是否有足够的余额支付3号100元。当转账成功后,每一个都会在自己的白纸上记录下:
1号 -100元
3号 100元
在这样的情况下,在区块链系统内发生的每一笔交易都会被所有人记录下来,理论上来说,每一个人的白纸上的记录情况就是一模一样的,所以这就是所谓的去中心化(decentralized),点对点传输。
好了,我们让这些人的交易继续进行。过了一段时间以后,假设系统内一共进行了五十次交易,那么按照我们前面的理论,白纸上应该写了五十次的交易记录了,这个时候如果我们假设白纸被写满了,该怎么办呢?答案很简单,换张纸呗!那么这张被写满了的纸就叫做一个区块(block),而一张张被写满了的纸叠在一起就叫做区块链(blockchain)。
区块链的不可修改特性
区块链的原理其实并不难理解,那么它的安全性是如何保证的呢?
相信大家可以想象到,当桌上的人在白纸上做记录的时候,一定是按照时间顺序进行的,而一叠白纸放在一起的时候一定也是按照顺序排列的,所以我们可以假设每一张纸的名字分别为block1,block2,block3…… 所以,这些数字的名字,就是我们平常经常看到的所谓的区块高度(block height)。
那么假设在进行到第50张白纸(第50个区块)的时候,出了一个意外,我们的1号同学突然没钱了,可是1号又不是一个诚实守信的人,他想通过作弊的方法增加自己的财富。于是1号翻自己的交易记录,发现在第一张白纸上(block1),曾经有一笔转给了3号100元的记录,这时候,1号偷偷将自己的白纸的这笔记录抹去,变成了:
1号 0
3号 0
那么,1号本来应该支付给3号的这100元,在1号自己的账本上就被篡改了,所以此时1号的余额就凭空多了100块钱出来,这显然是不符合公平原则的。那么,在区块链的世界里发生了这个问题该怎么办呢?其实,区块链系统里有一个共识:个人的账本上的信息必须和大部分人(超过50%)的账本信息一致,否则就会因为错误而无法继续待在这个系统里和别人进行交易。所以,当1号篡改了自己的账本以后,1号的账本就和剩下的12个人信息不一致,那么,1号修改的这笔交易记录就无法被认可,所以区块链用这种多数人法则保证了一个公平交易的环境。
区块链的分叉
但是,这是不是意味着1号完全没有办法做坏事了呢?其实也不是,只不过成本很高。如前文所述,区块链讲求的是多数原则,所以,1号所要做的事情就是让大多数人都修改他们的账本就可以了,当13个人里面,有6个人支持1号,那么1号所在的阵营就有了7个人,超过了一半,这个区块链就被成功修改成1号所期望的样子了,但是做到这点的成本很高,因为在区块链世界里面,这意味着1号拥有了超过50%的算力,也就是51%攻击的原理。
接着上面的例子。我们现在假设1号真的劝动了另外6个人和他一起修改了账本,那么这时候最大的输家事实上就是3号,因为3号莫名其妙就亏损了100元。这要怎么办呢?毕竟3号是公平正义的一方,而且3号阵营里面也有5个支持者(一共6人)。这时候3号阵营有两个选择,一是认栽,然后修改自己的账本,继续待在这个区块链里面和大家交易(这个方案显然是不大可能的);二就是自立门户,和另外5个公平正义的小伙伴保持账本内容一致,然后3号也只在这个6个人的“公平正义小组”内部进行转账交易。这其实就是区块链分叉(fork)的意思,因为是在第50个区块(block)产生纠纷,所以可以描述成在区块高度50完成了分叉,13个人分为两个阵营,从此各自不再往来。