区块链是什么,如何简单易懂地介绍区块链

针对身边关于区块链各类发问声音,我尝试了不少种不一样的姿式以求简单通俗形象生动地解释什么是区块链技术,可是最后都失败了。所以我萌生了要写一篇BlockChain for Babies(又名:如何向你的弱智室友解释区块链)的想法,以求能简单直观生动形象地向对区块链技术不了解可是想知道区块链是什么的人介绍区块链技术或者比特币。算法

由于面向的读者是不想知道具体技术实现只想了解区块链的人群,所以本文避开了一些底层和算法细节,采用比较主观的方式来展现笔者对区块链技术的感性认识。若是你只是对区块链感兴趣,并无深刻学习的打算,或者只是想像我同样在别人问起来的时候表现一把,本文应该是一篇很好的“导论”。数据库

总览

区块链本质上是一个去中心化的分布式帐本数据库(感谢@程剑宇指出:在与比特币相关的区块链应用中可以使用这一术语,但区块链技术可能并不包含“帐本”)。其自己是一串使用密码学相关联所产生的数据块,每个数据块中包含了屡次比特币网络交易有效确认的信息。 这是区块链的定义,所以要逐步了解区块链,咱们须要一步步了解以下东西。api

去中心化

先来考虑一个中心化集中式处理的过程。你要在某宝上买一部手机,交易流程是:你将钱打给支付宝-支付宝收款后通知卖家发货-卖家发货-你确认收货-支付宝把钱打给卖家。 
跨域

这里写图片描述 
图1: 中心化集中式交易模式

在这个过程当中,虽然你是在和卖家交易,可是这笔交易还牵扯到了除了你和卖家的第三方,即支付宝,你和卖家的交易都是围绕支付宝展开。所以,若是支付宝系统出了问题便会形成这笔交易的失败。而且虽然你只是简单的买了一个手机,可是你和卖家都要向第三方提供多余的信息。所以考虑极端状况,若是支付宝跑路了或者是拿了钱不却不认可你的交易或者是支付宝所在的城市由于开G20把全部人都赶走了(?),那么你就悲剧了。微信

而去中心化的处理方式就要显得简单不少,你只须要和卖家交换钱和手机,而后双方都声称完成了这笔交易,就OK了。网络

能够看出在某些特定状况下,去中心化的处理方式会更便捷,同时也无须担忧本身的与交易无关的信息泄漏。异步

其实若是只考虑两我的的交易并不能把去中心化的好处彻底展现出来,设想若是有成千上万笔交易在进行,去中心化的处理方式会节约不少资源,使得整个交易自主化、简单化,而且排除了被中心化代理控制的风险。分布式

去中心化是区块链技术的颠覆性特色,它无需中心化代理,实现了一种点对点的直接交互,使得高效率、大规模、无中心化代理的信息交互方式成为了现实。学习

固然,上述的例子有一个很大的潜在问题:没有了权威的中心化代理,怎样保证每笔交易的准确性和有效性呢?好比:若是没有了权威的中心化代理,张三某一天借了我100块钱,可是不还钱还不认可怎么办?这里就引出了区块链的其它特性。区块链

两个基础难题

在去中心化之后,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。

问题1:类两军问题

第一次据说这个问题竟然是在TCP的课上,大体说的是有两个相距很远的军队要传递信息,红军派遣一个信使去跟蓝军说:“你他娘的把意大利炮拿出来!”。蓝军收到信息后又派了一个信使去红军说:“收到指令!”。而后红军又派一个信使去蓝军说:“知道你收到指令了!”。而后蓝军又派一个信使去红军说:“知道你知道我收到指令了!”。而后红军又派一个信使去蓝军说:“知道你知道我知道你收到指令了!”……而后就没完没了了。 

这里写图片描述 
图2:在分布式计算中在异步系统和不可靠的通道上达到一致性是不可能的

在这种状况下,由于是点对点的通讯,双方不可能在这种状况下达到信息的一致性。严谨一点,就是“在分布式计算上,试图在异步系统和不可靠的通道上达到一致性是不可能的”。

问题2:拜占庭将军问题

拜占庭罗马帝国在军事行动中,采起将军投票的策略来决定是进攻仍是撤退,也就是说若是多数人决定进攻,就上去干。可是军队中若是有奸细(好比将军已经反水故意乱投票,或者传令官叛变擅自修改军令),那怎么保证最后投票的结果然正反映了忠诚的将军的意愿呢?

拜占庭将军问题反映到信息交换领域中来,能够理解为在一个去中心的系统中,有一些节点是坏掉的,它们可能向外界广播错误的信息或者不广播信息,在这种状况下如何验证数据传输的准确性。

区块链技术的诞生

如今让咱们来一步一步在去中心化的系统中解决这些问题,见证区块链技术雏形的诞生。

01 
咱们先来创建一个去中心化的系统,为了方便理解,咱们来看一个简单的去中心化借贷模型:若是A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是B,A借给了我100块钱!”,此时路人甲乙丙丁都听到了这些消息,所以全部人都在心中默默记下了“A借给了B100块钱”。你看,这个时候一个去中心化的系统就创建起来了,这个系统中不须要银行,也不须要借贷协议和收据,严格来讲,甚至不须要人与人长久的信任关系(好比B忽然又改口说“我不欠A钱!”,这个时候人民群众就会站出来讲“不对,个人小本本上记录了你某天借了A100块钱!”)。 

这里写图片描述 
图3:去中心化借贷模型

02 
可能你已经发现了,在上述的模型中,所谓的“100块钱”已经不重要了。换句话说,任何东西均可以在这个模型中交换,甚至你能够凭空杜撰一个东西,只要你们认可,你就可让你杜撰的东西流通。好比:我在人群中高喊一声“我创造了10个查克拉!”,我甚至不须要知道查克拉是什么,也不须要关心世界上是否是真的有查克拉,只要你们都听到,而后在本身的小本本上记下“LaiW3n有10个查克拉”,因而我就真的有100个查克拉了。今后之后,我即可以声称我给了某人1个查克拉,只要路人甲乙丙丁都收到而且认可了这一信息,那我就算完成了此次交易,哪怕世界上没有查克拉。

你如今脑海中是否是浮现出了三个字——“比特币”?因为真正的区块链和比特币比我上述的模型复杂太多,细节也丰富太多,所以如下仍是以查克拉举例,毕竟本文是Blockchain for Babies.(笑) 
03 
假设过了很长一段时间,我凭空创造的查克拉已经在这个系统中流通了起来,你们都开始承认了查克拉。可是这个系统中一共就只有10个查克拉,因而有人动了坏心思,他在人群中高呼“我有10个查克拉!”怎么办?你们是直接在本本上记下他有10个查克拉么,这样不是人人均可以伪造查克拉了么?

为了防止这种现象发生,我决定在我创造查克拉的时候给个人查克拉打上标记(更准确地说,我是给我喊的那句“我创造了10个查克拉”打上标记,好比标记为001),这样之后在每一笔交易的时候,我在高喊“我给了某某1个查克拉!”的时候,会附加上额外的一句话:“这1个查克拉的来源是记为001的那条记录,个人这句话标记为002!”。咱们再抽象一点,某人喊话的内容的格式就变成了:“这句话编号xxx,上一句话的编号是yyy,我给了某某1个查克拉!”,这样就解决了伪造的问题。其实上述模型就变成一个简化的中本聪初版比特币区块链协议: 

这里写图片描述 
图4:查克拉模型和中本聪初版区块链协议对比图

好了,看到这里你基本已经可以生动形象又不涉及任何细节地向你的弱智室友解释区块链了。可是也许你的室友是一个有打破沙锅问到底精神求是学子,所以你最好继续准好回答如下这几个问题。

1. “凭啥?”

你室友可能会问:“凭啥你喊一句话我就帮你记?个人小本本不要钱么?”。为了激励你们帮我传话和记帐,我决定给第一个听到我喊话而且记录在小本本上的人一些奖励:第一个听到我喊话并记录下来的人,你就凭空获得了1个查克拉,这个查克拉是整个系统对你幸苦记帐的报酬,而你记录了这句话以后,要立刻告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你本身的记录编号让别人有据可查,而后你再把个人话加上你的记录编号一块儿喊出来,供下一我的记帐。

当这个规则定下之后,这个系统中必定会出现一批人,他们开始竖着耳朵监听周围发出的声音,以抢占第一个记帐的权利。对的,你脑海中是否是又浮现出了“比特币挖矿”的字眼?

值得一提的是,关于比特币挖矿,@玲珑邪僧举了一个很形象的例子:

单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给大家出点题目,解出一个就给其中一个姑娘的微信号。 
单身汪们疯狂竞争,想破脑壳去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威所有单身汪,这个姑娘是个人啦,大家放弃吧。其余单身汪们即便不服也没有办法,惆怅懊恼也不是个事儿啊,仍是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母承认后还能获得25个货币单位的彩礼,简直人生赢家。

2. “听谁的?”

在这个系统中,若是我和另外一我的C几乎同时地喊出一句:“为了艾泽拉斯!”。因为听众所处的位置不一样,必定会有人先听到我说的那句话,而另一些人则先听到C的那句话,若是咱们规定只能有一我的说出这句话,那到底这句话是谁说的?

若是不加任何条件,那么上述的状况必定会这样发展:一部分人认为这句话是我说的,在听到这句话以后开始记帐,以后他们所作的全部事情都是基于这个事实,而且随着这个信息一次次的传下去,这条信息链会愈来愈深;而另一群认为是C先说这句话的人,也会按照这样的趋势发展。这样,本来是一条惟一的信息链,在咱们喊出“为了艾泽拉斯”这句话以后,分叉了!? 

这里写图片描述 
图5:“区块链”分叉

这会致使怎样的状况呢?按照咱们的设想,应该每一个人的小本本上记录的东西都是同样的,都是一条能够把全部信息串联起来的链条。可是在这一刻,他们小本本上记录的东西不同了!这还玩毛啊?之后还怎么肯定交易和信息的真实性!?

为了解决这个问题,我又追加了新的规则:每一个人在记录小本本的时候,须要脱鞋而后用脚拿笔,在小本本上用正楷体书写!有了这个规定,因为用脚写字难度很大,每一个人至少须要10分钟才能写完,并且因为每一个人用脚写字的熟练度不通,写完这句话所用的时间也不一样,所以必定会有人先写完而后高呼“我写完了!那句话是LaiW3n喊的!”,这样其它正在写这句话的人便会停笔,而后在小本本上从新开始写“那句话是来文写的,上一句的编号是xxx”。

若是你对上述个人解决方法感兴趣,你能够对照我上面的比喻去了解如下知识: 
“听谁的”——中本聪破解“拜占庭将军问题”的算法 
“在小本本上记录”——比特币挖矿 
“脱鞋用脚写字”——比特币挖矿难度 
“脱鞋写字速度”——算力 
“新的规则”——工做量证实链

3. “双花”问题

这个时候你的室友可能又要问:若是我同时宣布我给了A一个查克拉和我给了B一个查克拉,可是我只有一个查克拉,那咋整?是A和B都收到了查克拉仍是咋地?

这个时候你只须要托起他的下巴,温柔地看着他的眼睛,用手刮刮他的鼻子,说:“小妖精,你把这种状况带到上面的规则中去试试?”



一些私信问题讨论:

1. 为什么目前还鲜有区块链和实体商业业务对接的案例?

从理论上:区块链是一门新技术,保守大众(包括我)还处在观望阶段,只有少数激进或者目标明确的实体开始向区块链进军,而这些少数的实体在现阶段发声的强度还不够。 
从应用上:区块链技术要与实体商业对接,在技术和规则上还须要进一步开拓,区块链解决的所谓“不信任”问题其对象也只局限于区块链上的数据。所以若是区块链要与实体业务对接,还须要进一步推进实体与数据之间跨域的“游戏规则”的创建。

2. 虚拟加密货币最终是否会走向庞氏骗局?

这个问题我也不太好回答,毕竟我是一个技术人员而非这个领域的弄潮儿。我我的的见解是:对于普通人,不建议长期持有某种数字货币,应将数字货币做为法币之间转换的桥梁;对于投机者,“炒币”需谨慎,应将风险控制在本身可以承受的范围内。PS:其实我真的不关心这个问题。

3. 为何听你一讲,感受区块链很弱智的样子?

我在文中已经说明,这只是一篇关于区块链技术的新人导论,其目的在于帮助你快速对区块链有一个感性的认识;若是真的想了解区块链技术细节,请阅读相关文献或访问区块链社区。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------