通俗易懂的理解区块链和比特币


一. 什么是区块链?

区块链(Block Chain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点(电脑),把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。


区块链的概念首次于2008 年 11 月 1 日在论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中提出,作者为自称中本聪(Satoshi Nakamoto)的个人(或团体)。


上面听起来是不是很拗口?这样表达会不会好点:区块链本质上是一个去中心化的分布式账本数据库,其本身是一串使用密码学相关联所产生的数据块,具体来讲:一个随机哈希算法的结果,它唯一做的事情就是获得一些输入然后进行计算,并得到一串64位的随机数字和字母的字符串,每一个数据块中包含了多次比特币网络交易有效确认信息,区块链就是由一连串、不重复、的数据块组成的。例如:000000000000084b6550604bf21ad8a955b945a0f78c3408c5002af3cdcc14f5


小编你到底在说什么?我还是听不懂。。。好吧,这很正常,只要您记住“区块链是去中心化的”就行,去中心化,去中心化,去中心化。 但是要理解去中心化,就要了解什么是中心化,以及中心化的缺点。



什么是中心化?


要在淘宝上买一台电脑,交易流程是:你将钱打给支付宝-支付宝收款后通知卖家发货-卖家发货-你确认收货-支付宝把钱打给卖家。


在这个过程中,虽然你是在和卖家交易,但是这笔交易还牵扯到了除了你和卖家的第三方,即支付宝,你和卖家的交易都是围绕支付宝展开。因此,如果支付宝系统出了问题便会造成这笔交易的失败,因此考虑极端情况,如果支付宝跑路了或者是拿了钱不却不承认你的交易或者是支付宝所在的城市因为开G20把所有人都赶走了,那么就。。。


在金融领域中,中心化的例子就更多了:

1、银行作为中心平台嫁接借贷双方

2、交易所作为中心平台嫁接投资人和上市公司

3、SWIFT作为中心平台嫁接A国家的支付机构和B国家的支付机构


这样不是挺好的嘛?为啥要去中心化?



为什么要

去中心化?

(1)心化的处理方式就要显得简单很多,就拿你在淘宝上买电脑的事情举例,你只需要和卖家交换钱和电脑,然后双方都声称完成了这笔交易,结束。其实如果只考虑两个人的交易并不能把去中心化的好处完全展示出来,设想如果有成千上万笔交易在进行,去中心化的处理方式会节约很多资源,使得整个交易自主化、简单化。


(2)安全可靠。在区块链系统中,整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,所有的节点都有能力去用计算能力投票,从而保证了得到承认的结果是过半数节点公认的结果。即使遭受严重的黑客攻击,只要黑客控制的节点数不超过全球节点总数的一半,系统就依然能正常运行,数据也不会被篡改。


(3)去信任化,公开透明。传统的交易建立在信任的基础之上,尽管信任中心平台获取了大量信息,但是从中流出的、披露的信息却极为有限,导致大量数据被浪费和隐藏。参与区块链系统的每个节点之间进行数据交换则无需互相信任。在区块链系统中,因为整个系统的运作规则是透明的,所有的数据内容也是公开的,因此在系统指定的规则范围和时间范围内,节点之间不能也无法相互欺骗。


(4)集体维护,降低成本。在中心化网络体系下,系统的维护和经营依赖于数据中心

等平台的运维和经营,成本不可省略。区块链则构建了一整套协议机制,系统中的数据块由整个系统中所有具有维护功能的节点来共同维护的。这些具有维护功能的节点是任何人都可以参与的,每一个节点在参与记录的同时也来验证其他节点记录结果的正确性,维护效率提高,成本降低。


(5)排除了被中心化代理控制的风险。


谁还可以依靠?

但是如果没有了中心监管平台支付宝、银行、交易所、SWIFT等权威机构,怎么能保证每笔交易的准确性和有效性呢?你付了钱收不到货怎么办?或者你借给张三钱,张三后来不承认怎么办?这就引出来一个著名的难题:拜占庭将军问题(Byzantine failures),简单来讲,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。 这个难题也被称为“拜占庭容错”或者“两军问题”,(百度百科有详细解释,此处就不赘述了)


此问题是由莱斯利·兰伯特提出的点对点通信中的基本问题,含义是在存在消息丢失的不可靠信息通道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信息通道是可靠的,或不存在本问题,但实际上,信息通道往往是不可靠的, 怎么来解决这个问题呢??。。简单答案就是“群众一起监管”但是群众监管怎么来实现呢?


举个“栗子”

我们先来建立一个去中心化的借贷系统:


1、如果A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是B,A借给了我100块钱!”,此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱”。请注意:这个时候一个去中心化的系统就建立起来了,这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如B突然又改口说“我不欠A钱!”,这个时候群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!”)。

2、在上述的模型中,所谓的“100块钱”已经不重要了。换句话说,任何东西都可以在这个模型中交换,甚至A可以凭空创造一个东西,只要大家承认,A就可以让这个东西流通。比如:A在人群中高喊一声“我创造了50个DX!”,A甚至不需要知道DX是什么,也不需要关心世界上是不是真的有DX,只要大家都听到,然后在自己的小本本上记下“A有50个DX”,于是A就真的有50个DX了。从此以后,A便可以声称A给了某人1个DX,只要路人甲乙丙丁都收到并且承认了这一信息,那A就算完成了这次交易,哪怕世界上没有DX。你现在脑海中是不是浮现出了三个字——“比特币”


3、假设过了很长一段时间,A凭空创造的DX已经在这个系统中流通了起来,大家都开始认可了DX。但是这个系统中一共就只有50个DX,于是有人动了坏心思,他在人群中高呼“我有10个DX!”怎么办?大家是直接在本本上记下他有10个DX么,这样不是人人都可以伪造DX了么?


4、为了防止这种现象发生,A决定在A创造DX的时候打上标记(更准确地说,A是给A喊的那句“我创造了50个DX”打上标记,比如标记为001),这样以后在每一笔交易的时候,A在高喊“A给了某某1个DX!”的时候,会附加上额外的一句话:“这1个DX的来源是记为001的那条记录,A的这句话标记为002!”。我们再抽象一点,某人喊话的内容的格式就变成了:“这句话编号xxx,上一句话的编号是yyy,再上句话编号是zzz...我给了某某1个DX!”,这样就解决了伪造的问题。其实上述模型就变成一个简化的中本聪第一版比特币区块链协议。 也就是说在群中的监督下,交易发生并且不可被逆转。但是为什么群众愿意帮忙记录呢?


5、为什么群众会听话记账?


为了激励群众帮A传话和记账,A决定给第一个听到他喊话并且记录在小本本上的人奖励:1个DX,这个DX是整个系统对你幸苦记账的报酬,而你记录了这句话之后,要马上告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你自己的记录编号让别人有据可查,然后你再把A的话加上你的记录编号一起喊出来,供下一个人记账。当这个规则定下以后,这个系统中一定会出现一批人,他们开始竖着耳朵监听周围发出的声音,以抢占第一个记账的权利。对的,你脑海中是不是又浮现出了“比特币挖矿”的字眼?


关于比特币挖矿,有个很形象的例子:单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,解出一个就给其中一个姑娘的微信号。单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有办法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到25个货币单位的彩礼,简直人生赢家。


6、群众听谁的?


在这个系统中,如果A和另一个人C几乎同时地喊出一句:“我看到了!”。由于听众所处的位置不同,一定会有人先听到A说的那句话,而另外一些人则先听到C的那句话,如果我们规定只能有一个人说出这句话,那到底这句话是谁说的?


如果不加任何条件,那么上述的情况一定会这样发展:一部分人认为这句话是A说的,在听到这句话之后开始记账,之后他们所做的所有事情都是基于这个事实,并且随着这个信息一次次的传下去,这条信息链会越来越深;而另外一群认为是C先说这句话的人,也会按照这样的趋势发展。这样,原本是一条唯一的信息链,在我们喊出“我看到了”这句话之后,就分叉了!?


这会导致怎样的情况呢?按照我们的设想,应该每个人的小本本上记录的东西都是一样的,都是一条可以把所有信息串联起来的链条。但是在这一刻,他们小本本上记录的东西不一样了!这还怎么玩?以后还怎么确定交易和信息的真实性!?


为了解决这个问题,A又追加了新的规则:每个人在记录小本本的时候,需要脱鞋然后用脚拿笔,在小本本上用正楷体书写(即加入:工作量证明Prove of Work,一种哈希算法)!有了这个规定,由于用脚写字难度很大,每个人至少需要10分钟才能写完,而且由于每个人用脚写字的熟练度不通,写完这句话所用的时间也不同,因此一定会有人先写完然后高呼“我写完了!那句话是A喊的!”,这样其它正在写这句话的人便会停笔,然后在小本本上重新开始写“那句话是A写的,上一句的编号是xxx...”,然后系统继续周而复始重复此动作。


下面是一个有趣的比喻:


“群众听谁的”——中本聪破解“拜占庭将军问题”的算法

“在小本本上记录”——比特币挖矿

“脱鞋用脚写字”——比特币挖矿难度

“脱鞋写字速度”——算力

“脱鞋子鞋子规则”——工作量证明链


看完这个例子,让我们再回到理论的高度,无论多大的系统或者多小的网站,一般在它背后都有数据库。那么这个数据库由谁来维护?在一般情况下,谁负责运营这个网络或者系统,那么就由谁来进行维护。如果是微信数据库肯定是腾讯团队维护,淘宝的数据库就是阿里的团队在维护。大家一定认为这种方式是天经地义的,但是区块链技术却不是这样。


如果我们把数据库想象成是一个账本:比如支付宝就是很典型的账本,任何数据的改变就是记账型的。数据库的维护我们可以认为是很简单的记账方式。在区块链的世界也是这样,区块链系统中的每一个人都有机会参与记账。系统会在一段时间内,可能选择十秒钟内,也可能十分钟,选出这段时间记账最快最好的人,由这个人来记账,他会把这段时间数据库的变化和账本的变化记在一个区块(block)中,我们可以把这个区块想象成一页纸上,系统在确认记录正确后,会把过去账本的数据链接(chain)在这张纸上,然后把这张纸发给整个系统里面其他的所有人。然后周而复始,系统会寻找下一个记账又快又好的人,而系统中的其他所有人都会获得整个账本的副本。这也就意味着这个系统每一个人都有一模一样的账本,这种技术,我们就称之为区块链技术(Blockchain),也称为分布式账本技术。


由于每个人(计算机)都有一模一样的账本,并且每个人(计算机)都有着完全相等的权利,因此不会由于单个人(计算机)失去联系或宕机,而导致整个系统崩溃。既然有一模一样的账本,就意味着所有的数据都是公开透明的,每一个人可以看到每一个账户上到底有什么数字变化。它非常有趣的特性就是,其中的数据无法篡改。因为系统会自动比较,会认为相同数量最多的账本是真的账本,少部分和别人数量不一样的账本是虚假的账本。在这种情况下,任何人篡改自己的账本是没有任何意义的,因为除非你能够篡改整个系统里面大部分节点。如果整个系统节点只有五个、十个节点也许还容易做到,但是如果有上万个甚至上十万个,并且还分布在互联网上的任何角落,除非某个人能控制世界上大多数的电脑,否则不太可能篡改这样大型的区块链。

该部分总结


因此,区块链解决的核心问题不是“数字货币”,而是在信息不对称、不确定的环境下,如何建立满足经济活动赖以发生、发展的“信任”生态体系。


你可能感兴趣的:(通俗易懂的理解区块链和比特币)