找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

区块链到底是什么

区块链到底是什么-1.jpg

[indent][b]导读:[/b]

距离 2008 年,比特币的创始人中本聪在《比特币的白皮书》中首次提出“区块链”这一概念时,已十年有余。自大众首次接触“区块链”这一词,也有 2、3 年了。但当我对朋友说,想要从事这一行时,每个人都在问我:“区块链到底是什么呢?”

我努力想张开口说道说道,最后也只能悻悻地憋出一句话“你知道比特币吗?区块链就是它的底层技术。” “哦……”大家都这么回复了一句。他们当然没懂,因为我自己也不懂。

对于仍处于萌芽中、尚未发育成熟的协议时期的区块链,没有几个人敢说自己是专家,所有人都还在探索当中。但我们不妨先抛开复杂、不明朗的因素,回到区块链最初的样子——一个分布式账本。人人可记账、人人可查账;公开、透明;不可篡改、安全性高;去中心化的、没有第三方垄断(也就是没有银行或支付宝等机构的参与)……

本文作者 Mohit Mamoria 从简单易懂的故事场景出发,详尽、有趣地说明了这个账本是如何运作的,它的价值又有哪些?我确信,任何一个认真看完这篇文章的读者,都将对“区块链是什么”这个问题有了自己的答案。[/indent]

与网上的其他文章不同,我们先不急着定义区块链是什么,我们会从[b]它解决了什么问题[/b]的角度对其进行理解。

假设,Joe 是你最好的朋友。他在国外旅行,而在旅行的第五天,他突然打电话给你说:“兄弟,我快花完钱啦,借我一些。”

你回复他:“马上汇给你。”
区块链到底是什么-2.jpg

然后你打电话给你银行的客户经理,告诉他:“麻烦从我的账户里转 1000 美元到  Joe 的账户。”

客户经理回复说:“好的。”

他打开登记表,确认你的账户是否有足够的余额可以转给 Joe 。因为你是一个土豪,你的账户里有大把的钱,所以他在登记表做了以下的登记:
区块链到底是什么-3.jpg 交易登记表


注意:为使事情简单化,在这我们就不讨论计算机的操作了。

你打电话告诉 Joe:“我已经把钱汇出去了。你下次去银行就可以取出我汇给你的 1000 美元了。”
区块链到底是什么-4.jpg
刚都发生了什么?你和 Joe 都信任银行去管理你们的钱。银行转账并没有实际的物理账单。它需要做的只是在登记表上做一个登记。更确切地说,这登记也不是你或者 Joe 所能控制或拥有的。

这就是现有系统的问题所在。

[b]我们需要依赖于第三方个体,以建立我们之间的信任。[/b]

多年来,我们一直依赖于这些中间商以达成彼此的信任。你可能会问:“依赖他们又有什么问题呢?”

问题是:他们是单一的个体。社会要变得混乱,只需一个人/一个机构有意或无意地开始腐败就够了。


[list]如果记录交易的登记表被火烧毁了呢?如果你的客户经理不小心把 1000 美元写成 1500 美元呢?如果他是故意这么做的呢?
[/list]
[b]这么多年来,我们一直把我们所有的鸡蛋放在一个篮子里,而这个篮子还在别人手里。[/b]

那么,会不会有这样一个系统,使我们不通过银行也能实现转账呢?

为回答这个问题,我们需要钻研得更深一点,去问自己一个更好的问题(毕竟,只有更好的问题才能带来更好的答案)。

思考一下,转账是什么意思?只是登记表上的一个记账。那么,更好的问题会是:[b]有没有一种方式能实现我们自己之间的记账,而不需其他人来为我们做这一件事?[/b]

现在,这个问题就值得探索了。你可能已经猜到答案了。

这个意义深远的问题的答案就是——区块链。

它是一个让我们实现自己之间记账的方法,而不需其他人的介入。

可能你脑子里已经有了好几个疑问了,那接下来我们就带着疑问来学习这个分布式的登记表是如何工作的吧。


[size=5][b]01[/b][/size]

[size=5][b]区块链是怎么做到的呢?[/b][/size]

区块链方法的实现前提是,必须要有足够的、不想依赖于第三方的人。只有这样,这个群体才能实现自行记账。


[b]“入手一些比特币或许是有意义的,万一它流行起来呢。如果有足够多的人这么想,那么这就会变成一个自我实现的预言。”——中本聪,2009[/b]

多少人就是足够的?最少三个。在本文的例子中,我们将假设有 10 个人想要放弃依赖于银行或者其他的第三方。根据多边协议,在任何时候他们都了解其他任何一个人账户的细节——但不知道账户对应的人的身份。
区块链到底是什么-5.jpg
[b]1. 一个空的文件夹[/b]
一开始,每个人都有一个空的文件夹。在我们不断记账的过程中,这十个人会不断地在他们现有的空文件夹中添加页面。这些页面会形成一个最终交易信息的登记表。

[b]2. 交易何时发生[/b]
接下来,他们每一个人都持有一张空白页面,手里拿着一支笔。每个人都准备着记下发生在系统里面的每一笔交易。

现在,如果 2 号想给 9 号转账 10 美元。为了做出交易,2 号高声告诉其他人:“我想要给 9 号转账 10 美元。麻烦你们在页面做好记录。”
区块链到底是什么-6.jpg
然后,每个人都去确认 2 号的账户里是否有足够的余额转给 9 号。如果她余额足够,每一个人都会在他们空白的页面上做好记录
区块链到底是什么-7.jpg


页面上的第一条交易信息
那这个交易就被确认完成了。

[b]3. 交易继续进行[/b]
随着时间推移,有更多人需要给其他人转账。每当他们想要做出交易,他们都会通知其他人,其他人一旦听到通知,就会在他们的页面上写下交易信息。

这个行为一直持续到每个人都用完现有页面的空间为止。假设一个页面只能记录 10 条交易信息,一旦写下了 10 条交易信息,每一个人都用完了空间。
区块链到底是什么-8.jpg 写满交易信息的页面

[b]4.  存好页面[/b]
在我们把页面存储到文件夹之前,我们需要用一个独一无二的 “封条”把它密封好,而这“封条”是遵循每个人的意见的。密封好后,我们可以确认,一旦页面存储到文件夹里,就没有任何一个人可以修改它——现在不能,以后也不能。

一旦被放在文件夹里,它就永远存储着,且密封着。还有,如果每个人都信任这个“封条”,那么每个人也都会信任页面的内容。页面的 “封条” 正是这个方法的关键。

[b]【术语解释】在区块链中,给交易加密的方式叫 “挖矿” ,但为了更容易理解,我们会继续用 “密封” 的说法。[/b]

早些时候,第三方/中间商给予了我们这种信任:无论什么时候,他们做好登记的交易信息绝不会被篡改。而在像我们的这个分布式、去中心化的系统中,“封条” 会取代他们来提供这种信任。
[size=5][b]02[/b][/size]

[size=5][b]那我们如何对页面进行密封呢?[/b][/size]

在我们学习如何密封页面之前,我们要知道这 “封条” 怎么来的。了解这点的关键前提是,我们得先弄懂一个东西,我喜欢把它叫做……

[b]神奇机器[/b]
想象这是一个被厚墙环绕着的机器。你在机器左边把一些东西装到盒子里,并把盒子放到机器里,它会在右边吐出来,但里面的东西变了。

[b]【术语解释】在区块链中,这个机器称作 “哈希函数(Hash Function)”,但为了避免文章太过技术范儿,我们就直接叫它 “神奇机器” 吧。[/b]
区块链到底是什么-9.jpg 神奇机器(又称 “哈希函数”)

假设,你从左边输入了数字 “4” ,接着我们会发现它从右边吐出了这个单词 “dcbea”。

它是如何把数字 “4” 转成了这单词的呢?没有人知道。而且,这是一个不可逆的过程。已知字单词“dcbea”,不可能推出机器左边的数字是什么。但每次你输入 “4”,总会得出相同的单词 “dcbea”。
区块链到底是什么-10.jpg hash(4)= dcbea

我们试着输入一个不同的数字,比如 “26”。
区块链到底是什么-11.jpg hash(26)= 94c8e

这次我们会得到 “94c8e”。非常有趣!单词里也会包含数字。

现在,如果我问你:如果我想得到一个以三个 “0”开头的单词,比如 “000ab” 或 “00098” 或 “000fa” ,我应该输入什么数字呢?

区块链到底是什么-12.jpg 预测输入值


认真思考一下这个问题。

上文已经说过,这个机器有一个特性:我们无法根据右边的输出值计算出左边的输入值。因为机器有了这样的属性,我们要怎么推出以上问题的答案呢?

我想出了这样的方法:我们为什么不把宇宙中的数字一个一个地输入试试,直到我们得到以三个 “0” 开头的输出值呢?
区块链到底是什么-13.jpg 尝试不同的数字以计算输出值

乐观预估,在经过几千次尝试之后,我们终于得到一个满足要求的输出值了。
区块链到底是什么-14.jpg
根据输出值计算输入值非常非常困难。但同时,要验证预计的输入值是否能算出满足要求的输出值却相当简单。记住,输入相同的数字时,机器总会得出相同的单词。

你觉得以下问题的答案会有多难:如果我给你一个数字 “72533”,然后问你,把这个数字输入机器后,是否会得到以三个 “0” 开头的字母?

你需要做的只是,把数字输入到机器上,然后看机器输出的结果是什么。这就完事儿了。

这机器的最重要属性就是——[b]已知输出值,很难计算出输入值,但已知输入值和输出值,要验证输出值是否正确却相当容易。[/b]

我们带着神奇机器(或者哈希函数)的这个属性来阅读剩下的文章:

[b]我们如何利用这些神奇机器来密封一个页面呢?[/b]
我们会用这个神奇机器来对我们的页面进行密封。像之前一样,我们继续假设以下情况:

假设我给你两个盒子。一个盒子里的数字是 “20893”,然后我问你:它要加上一个什么数字,才能使得机器输出一个以三个 “0” 开头的单词呢?
区块链到底是什么-15.jpg
这跟之前的情况相似,我们已经知道计算这样一个数字的唯一方法就是尝试宇宙中的每一个数字。

在几千次尝试之后,我们会偶然发现一个数字 “21191”,当它加上 “20893” 时(也就是,21191+20893=42084),把总和输入到机器里,就会得到一个满足要求的单词。
区块链到底是什么-16.jpg
在这个场景中,数字 “21191” 就是数字 “20893” 的 “封条”。假设页面上写着数字 “20893”。密封好页面后(即,没人可以修改它的内容),我们在上面盖上一个标记着 “21191” 的印章。

一旦密封数字(即,21191)被印上页面,这个页面就会被密封。
区块链到底是什么-17.jpg
密封数字

[b]【术语解释】在区块链中,密封的数字称作 “工作量证明(PoW)”,意味着这个数字是努力计算的证明。本文中,我们叫它 “密封数字”。[/b]

如果有人想要验证页面是否被修改过,他只需要一一把页面内容的数字加上密封数字,输入到神奇机器里。

如果机器输出的单词是以三个 “0” 开头的,那么内容就是没被动过的。如果输出的单词不符合我们的要求,那么我们就可以把这个页面扔掉,因为它的内容已经被盗改了、没用了。

我们会用一个相似的机制去对其他页面进行密封,最后把它们整理在我们各自的文件夹里。
[size=5][b]03[/b][/size]

[size=5][b]最后,试着来密封我们自己的页面[/b][/size]

为了密封包含有网络交易信息的我们的页面,我们需要计算出附加到交易列表上的数字,然后输入机器中,我们就会得到一个以三个 “0”开头的单词。
区块链到底是什么-18.jpg
[b]注意:我用的 “以三个 ‘0’ 开头的单词” 仅仅作为一个例子。它说明了哈希函数的工作原理。真实的计算会远远复杂得多。[/b]

在计算上花了很多时间与精力之后,数字一旦被计算出来,页面就会以那个数字来密封。如果有人想要修改页面的内容,密封的数字会允许任何人来验证页面的真实性。

既然我们已经了解了页面的密封,我们回到上面 “[b]我们在页面上已完成了十条交易信息的记录[/b]” 那里,我们已经用光页面的空间了。

一旦页面上没有空间记录下一笔交易信息时,大家就会开始投身于页面密封数字的计算,使得页面可以存储在文件夹里。网络中的每一个人都会进行计算。第一个算出结果的人会通知到其余的所有人。
区块链到底是什么-19.jpg
一听到密封的数字,其他人就会立马验证它是否满足需求。如果满足,大家就会在各自的页面上盖好这个数字的印章,然后把它放到文件夹里。

但如果 7 号参与者认为通知的数字不满足输出要求呢?这种情况很正常,可能是出于以下的原因:


[list]他可能听错了网络中通知的信息他可能写错了网络中通知的信息在写信息时,出于自己或某个人的利益,他可能企图作弊或者故意表现得不诚实
[/list]
无论原因是什么,7 号参与者只有一种选择——丢弃他自己的页面,并且抄下其他人的数字,这样他才能把页面存到文件夹中。除非他不在文件夹中存放页面,那他也不能继续记录下一条交易信息了,从而禁止他成为网络中的一员。

大多数人同意的密封数字会成为诚实的密封数字。那为什么每一个人都花费资源去计算结果呢?他们明知道其他人会计算并且告知他们。为什么不坐着等通知就好了?

这问题问得好。这就是激励机制所在。区块链中的每一个参与者都有资格获得报酬。第一个计算出密封数字的人会为他所付出的努力(即,CPU 算力和电源消耗),获得一笔钱。

简单假设一下,如果 5 号算出了页面的密封数字,他就可以获得一笔报酬,比如 1 美元,这是凭空出现的。换句话说,5 号账户中增加的 1 美元,并不会减少其他人账户的余额。

这就解释了比特币的诞生。

它是在区块链(即,分布式账本)中交易的第一种货币。为了促进网络上的持续计算,人们会获得比特币作为报酬。

当有足够的人拥有比特币,其价值会增加,使得其他人也想要拥有比特币;比特币的价值随之再度增加;吸引更多的人想要比特币;比特币价值再度增加,以此类推。

报酬使得网络上的每个人保持工作。

而每次人们把页面存储到文件夹中,他们会带来新的空白页面并且重复整个流程——直到永远。

[b]【术语解释】把一个单独的页面看做是区块链交易中的一个 “区块”,而把文件夹看作是页面(区块)的链,因此我们就得到了一个区块链。[/b]

朋友们,这就是区块链工作的原理。

对了,还有一点要补充的。

假设文件夹里已经有 5  个页面了,由密封数字密封好了。如果我出于私人的利益,找到第 2 页,修改了一条交易信息呢?

密封的数字会让其他人察觉到交易信息的不一致性,好的,那如果我再进一步,为这条修改的交易信息计算一个新的数字,然后用新的密封数字来进行该页面的密封呢?

以防出现某些人修改之前的交易页面(区块)与密封数字,在进行密封数字的计算时,其实有一个小设计。
[size=5][b]04[/b][/size]

[size=5][b]防止密封数字的修改[/b][/size]

还记得上文说过的,我给了你两个盒子吗——一个盒子里有数字 “20893”,另一个是空的,需要你计算。

实际上,计算区块链的密封数字时,不是两个盒子,而是三个——两个需要进行计算。

当把三个数字之和输入到机器里,输出的结果必须满足需要的条件。

我们已知一个盒子里包含有交易列表的信息,一个是密封数字,而第三个盒子,是前一个页面的输出结果。
区块链到底是什么-20.jpg
有了这个巧妙的设计,我们可以确保每一个页面的结果都取决于前一页。因此,如果有人想要修改一个历史页面,那么这一页之后的所有页面内容和密封数字全都需修改,以维持这条链的一致性。

如果我们以上假设的十个人之中,有一个人想要作弊而修改区块链(包含有交易信息页面的文件夹)上的内容,那么他需要修改好几页,并且为这些页面重新计算新的密封数字。

我们都知道计算密封数字有多困难。因此,网络上 1 个不诚实的人绝不可能打败其他 9 个诚实的人。

这样做会发生什么呢?

从那个不诚实的人想要作弊的页面开始,他会在网络中创建出另一条链,但这条链绝不可能跟上那条诚实的链——仅仅因为一个人的努力和速度无法打败 9 个人共同的努力和速度。也因此,保证了网络中的最长链是诚实的链。

[b]最长链是诚实的链。[/b]
区块链到底是什么-21.jpg
最长链是诚实的链。

当我跟你说一个不诚实的人无法打败九个诚实的人时,你会想到什么呢?
[size=5][b]05[/b][/size]

[size=5][b]如果,不诚实的人不是一个,而是六个呢?[/b][/size]

在这种情况下,这个协议会一败涂地。这被称为 “51% 攻击”。

如果网络中的大多数人变得不诚实,而欺骗了剩下的那些人,这个协议就失去了它设计的初衷。

这也是区块链会崩溃的唯一一个脆弱的原因。虽然知道这种情况不太可能发生,但我们也必须知道这个系统的脆弱性所在。它的开发是基于这样的假设的:大多数人总是诚实的。

朋友们,这就是所有关于区块链的基本知识。如果你看到还有其他迷茫的人想知道 “区块链到底是个啥啊” ,或许知道哪里可以找到答案。


[i]全文完。点击[/i]此处[i]查看英文原文。[/i]


[i](如果你觉得写得不错,别忘了随手点个赞或分享给朋友,笔芯~)[/i]
回复

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐

© 2018 巨推链(jutuilian.com)百万区块链发烧友聚集平台

中国互联网举报中心 京ICP备14033863号

公司名称:北京巨推科技有限公司