从小白白到大白白之初识区块链(如何理解区块链)

区块链:为何咱们须要这么复杂的东西?网络

“每个复杂的问题都有一个清晰、简单而且是错误的答案。” ——H.L.Mencken学习

 

放松点,用漫画带你认识:区块链

想象一下,Joe是你最好的朋友。他正在海外旅游。在他假期的第五天,他给你一个电话,“Dude,我把钱花光了,江湖救急。”你回答”立刻汇款“而后挂掉电话。加密

 

 

而后你打电话给你银行帐户的经理,”请从个人帐户转1000美圆到Joe的帐户上“。spa

你的帐户经理回复,”收到,先生“。3d

他打开帐簿,查看你的帐户以肯定你有足够的余额转出1000美圆给Joe。由于你是个土豪,帐上还有大量余额,所以,他在帐簿上登记了一个条目,正以下图所示:blog

 

 

你打电话给Joe,告诉他,“我已经转帐了。下一次你去银行的时候,你就能够取出我刚刚转过去的1000美圆。”资源

 

 

发生了什么事?你和Joe都委托银行来管理大家的钱。并无物理票据的实际流动来转移大家的钱。所需的一切不过是帐簿上的一个条目。或者更准确一点,帐簿上的一个既不受你和Joe控制、也不被大家所拥有的条目。字符串


这就是现有体系的问题。hash



为了在咱们之间创建互信,咱们依赖于独立第三方。

 

多少年了,咱们依赖于这些中介以信任彼此。你也许会问,“依赖他们有什么毛病?”


毛病在于,它们清一色只是数字。若是要在社会上引起一场混乱,它须要的一切不过是一我的或者一个机构走向贪腐堕落,不管是有意识地,仍是无心识地。

 

  • 要是记录下这笔转帐的帐簿在一场大火中烧成灰烬了呢?
  • 要是,你的银行经理搞错了,写了个1500美圆而不是1000美圆呢?
  • 要是,他根本就是有意为之呢?

 

多年以来,咱们一直把本身全部的鸡蛋都放在一个篮子里,而且仍是别人的篮子。


会有这样一个系统吗,在那里咱们无需银行就能够转帐?


要回答这个问题,咱们须要挖得更深,问本身一个更好的问题(毕竟,只有更好的问题才会导向更好的答案)。


想一下,转帐意味着什么?只是帐簿上的一个条目而已。那么更好的问题将是——
是否有某种手段,能够在咱们中间维护那本帐簿,而不是让其余人来为咱们操做?


如今,总算有一个值得探究的问题了。而答案你或许已经猜到了。区块链就是这个深奥问题的答案。


它就是一种在咱们中间维护帐簿而非依赖其余人来为咱们代劳的方法。


你能跟上来吗?很好。由于如今许多问题已经开始在你脑海中爆炸,咱们将学习这一分散式帐簿是如何工做的。



好吧,告诉我,它是怎么工做的?

 

这一方法的要求是:必须有足够的人不想依赖第三方。只有这样,这群人才能靠本身来维护他们的帐簿。


“只让人们在比特币带来的交易中获取比特币,或许是有意义的。一旦有足够的人这样想,它就会变成一个自我实现的预言。”——中本聪,2009


多少人才算是够?至少要3个。打个比方,咱们假设有10我的想抛弃银行以及任何第三方。根据相互之间的协议,他们能够一直拥有彼此的帐号信息——但不知道其余人的真实身份。

 

 

1.一个空的文件夹



一开始的时候,每一个人都掌握着一个空文件夹。正如咱们要进行的那样,这10我的都将持续向他们的当前的文件夹中添加纸张。而这些纸张的集合将造成追踪交易的帐簿。



2.一笔交易发生的时候



而后,这个网络中的每一个人都将有纸笔在手。每一个人都准备着记录下该系统内部发生的任何交易。
如今,假设#2想要转10美圆 给#9。
为了完成此次交易,#2吼了一嗓子,告诉每一个人,“我想转10美圆给#9。你们都在本身的小本本上记下来!”

 

 

每一个人都瞄一下#2是否是有足够的余额能够转10美圆给#9。若是她有足够的钱,每一个人都在本身的空白页上为这笔交易作了一个记录。

 

 

这样,一笔转帐就被认为是完成了。



3.交易继续发生



时间过得很快,这个网络中的更多人想要转帐给其余人。不管何时他们想要作一笔交易,他们就向其余全部人宣告这笔交易。不管是谁,一听到这个宣言,就在他/她本身的纸张上写下来。
这样的实践持续进行,直到每一个人都用完了他们当前页的空间。假设1页纸能够记录10笔交易,一旦10笔交易完成,每一个人就都用完了空间

 

 

纸张被写满的时候


那么,是时候该将这页纸存到文件夹里面,而后拿出一张新的纸、重复上述步骤2了。



4.存放纸张



在你将这页纸存入咱们的文件夹以前,咱们须要使用该网络中每一个人都赞成的惟一一把钥匙来密封它。经过密封,咱们能够保证,一旦该页纸的备份已经被存入每个人的文件夹,没有人可以对它做出任何更改——不止今天,不止明天,也不止是一年之后。一旦放入文件夹中,它将永远呆在文件夹里面——被封存起来。并且,若是每一个人都信任这个封条,那么每一个人都会相信该页纸中的内容。而这页纸的封存手法,就是这一方法的关键。

[术语箱] 这一用来保护纸张内容的东西被人们称为“矿”,但为了简化它,咱们仍是称之为“封条”。



 

早些时候,第三方/中介为咱们赋予信任,其形式是:不管它们在帐簿上已经写了什么,都永远不可变动。在一个分散式的、去中心化的系统中,就像上述咱们的系统同样,这种封条将提供信任替代。

 

因缺斯汀!那咱们怎么密封这份记录呢?



在咱们学习如何能密封这页纸以前,咱们要知道,通常而言,封条是怎么工做的。要作到这些,先决条件是学习一些东西,我喜欢称之为……

 

 

魔法机器



想象一个被厚墙围起来的机器。若是你从左边塞一个存有东西的盒子进去,它就会吐出一个带着其它东西的盒子。


[术语箱] 这个机器被称为“哈希方程”,但咱们又没有心情搞得那么专业。因此,今天,它们就叫“魔法机器”。

 

 

魔法机器(又叫作 哈希方程)

 

假设,咱们从左边塞了个数字4进去,咱们会发现,它在右边吐出了下列字串:‘dcbea’。


数字4 是在怎么转化成这串字符的?没有人知道。并且,这个过程是不可逆的。获得了这串字符‘dcbea’,也不可能搞清楚这机器从左边接收到了什么。可是,任什么时候候,你输入数字4给这台机器,它都老是会吐出一样的字符,‘dcbea’。

 

 

来试试发送一个别的数字进去。26,怎么样?

 

 

hash(26)==94c8e
此次咱们获得了‘94c8e’,看来字符一样能够包含数字。有意思!
假如我如今问你以下问题,事情会变成什么样?

 

 

“你能不能告诉我,要想在机器右边获得三个0开头的一串字符,我该从左边输入什么东西进去呢?好比,000ab,或者,00098,或者,000fa,或者其它状况中的任何一个。”

 

 

想想这个问题吧。


我已经告诉过你,这台机器有个属性:在咱们从右边获得指望的输出值以后,咱们没法计算出来什么是咱们必须从左边输入进去的。给咱们这样一台机器,咱们如何能回答我问的那个问题?


我能够想出一个办法。为何咱们不一个接一个地遍历宇宙中全部数字,直到咱们获得一个三个0开头的一串字符?

 

 

尝试全部数字以算出须要的输入值



乐观估计,通过几千次尝试以后,咱们最终会获得将在右边产生要求的输出值的一个数字。

 

 

在给定输出值的时候,要算出输入值是极其艰难的。但与此同时,若是预测的输入值能够产生须要的输出值的话,它又是极为容易验证的。要记住,投入一个一样数字,这台机器每一次都会吐出一样的字符。


若是我给你一个数字,好比72533,而后问你一个问题:“这个数字,输入这台机器以后,会产生一个以三个0开头的字符串吗”,你以为要得出答案有多难呢?


你要作的一切,不过是丢这个数字进去,而后查看咱们在右边获得了什么。就这样。


这样的机器最重要的属性就是——“给定一个输出值,要算出输入值是极端困难的。可是,给定输入值和输出值,要检验该输入是否会致使该输出,倒是很是容易的。”


在这片文章剩下的部分,咱们要记住这台魔法机器(或者说哈希方程)的这一属性:



“给定一个输出值,要算出输入值是极端困难的。可是,给定输入值和输出值,要检验该输入是否会致使该输出,倒是很是容易的。”

如何用这样的机器来加密一份文件?



咱们将使用这台魔法机器为咱们的纸张产生一个密封条。按照惯例,咱们将从一种想象的情形开始。


想象我给你了两个盒子。第一个盒子装着数字20893。而后我问你,“你能不能找出一个数字,加上装在第一个盒子里面的数字之后,输进这台机器,最终会给咱们一个以三个0开头的字符?”

 

 

这种情形跟咱们在以前看到的很类似,而咱们已经知道,算出这样一个数字的为惟一方法就是穷举整个宇宙中每个可能的数字。


又是几千次尝试以后,咱们会偶然发现一个数字,好比21191,加上20893之后(好比:21191+20893=42084)输入机器,将产生一串符合咱们要求的字符。

 

 


在这个例子中,数字21191就成了数字20893的封条。假设如今有一张纸,数字20893写在上面。为了密封这页纸(好比:使得没有人能更改这页纸上的内容),咱们将盖一个带有标签‘21191’的徽章在上面。一旦密封数字(好比:21191)被戳在纸上,这页纸就被密封了。

 

 

密封数字



[术语箱] 密封数字又被称为“工做量证实”,意思是,这一数字证实了为了计算出它来已经付出的努力。为了咱们的目的,咱们最好仍是称之为“密封数字”。
若是任何人想验证这页纸是否已经被替换了,他须要作的一切不过是——将这页纸上的内容与密封数字加在一块儿、把和值输入那台魔法机器。若是机器给出了一串三个0开头的字符,那么内容就没有被改变。若是出现的字符不能知足咱们的要求,咱们就能够丢掉这页纸了,由于它的内容已经有了水分,没有任何用处了。
咱们将使用一个简单的密封机制来封存全部的记录,最终在咱们各自的文件夹中编排好它们。

最后,封存咱们的文件



要密封包含着咱们网络中交易内容的记录,咱们将须要算出一个数字,该数字在添加到交易记录清单上、输入机器之后,可使咱们获得一串三个0开头的字符。

 

 

注意:我一直在使用的“三个0开头的字符”,只是一个例子。它阐明了哈希方程是怎么工做的。实际当中的挑战要比这个复杂得多。

 

咱们会在这机器上花费时间与电力,然而一旦咱们算出那个数字,这页文件就被那个数字封存起来。永远永远,若是有人尝试改变这页纸上的内容,这个密封数字容许任何人去验证这页纸的完整性。


如今,咱们既已知道封存记录的手法,咱们将回到咱们在这张纸上写完了10条交易、没有空间书写更多记录的时候。


一旦每一个人都用尽一页纸的空间、没法记录进一步的交易,他们就开始卖力地计算该页纸的密封数字,使得它能够被藏入文件夹中。在网络中,每一个人都进行这个计算,而最先算出密封数字的那我的会向其余全部人宣布这个数字。

 

 

听到密封数字以后,每一个人都当即验证它是否能产生要求的输出值。若是是的,每一个人都为他们的纸张标上这个数字,而后把纸张放入文件夹中。


可是,若是对某人,好比#7来讲,那个被宣布的密封数字没法产生要求的输出值,怎么办?这种情形可并很多见。可能的缘由有:

 

  • 他可能听错了以前在网络中宣布的交易
  • 他可能写错了以前在网络中宣布的交易
  • 他可能在记录交易的时候试图做弊,为了谋私,或为讨好网络中的某些人

 

不管缘由是什么,#7只有一个选择——放弃他的记录、从其余人处得到拷贝,以使他也能够将纸张放入文件夹。除非他不将他的纸张放入文件夹,他也就没法继续记录进一步的交易,这会所以禁止他成为网络中的一员。

 

大部分人赞成的密封数字,不管是它是什么,都会成为那个可信的密封数字。

 

但是,若是他们知道其余人会算出它而后宣布它,为何每一个人都要耗费资源来进行计算呢?为何不坐视不理、等着抱大腿呢?

 

好问题。这就是激励加入到这幅图景的地方。每个区块链的成员都有资格得到奖励。第一个计算出密封数字的人将获得免费的金钱做为对他的努力(好比:付出的CPU算力和电力)的奖励。


简单地设想一下,若是#5为一页记录算出了密封数字,他获得了一些免费的钱做为奖励,假设是凭空铸造出来的1美圆。换句话来讲,#5的帐户余额增长了1美圆,同时没有任何人的帐户余额有所减小。


这就是比特币变为现实的方式。它是在区块链(好比:分散式的帐簿)上被用来交易的第一种货币。同时,人们被奖励以比特币做为回报,以使在网络上,(计算密封数字的)努力会继续进行。


当足够多的人持有比特币,比特币会升值,使得更多人想要比特币;这会使比特币进一步升值;这升值又使更多人想要比特币;这愿望又进一步使比特币升值;如此循环往复。

 

这种奖励,使得网络中的每个人都不停歇地工做。

 

一旦每一个人都往文件夹中叠进一页纸,他们会拿出一页空白纸张,再一次重复整个过程——直至永远。


*[术语箱] *将一页纸想象为记录交易的一个区块、把文件夹想象为纸张(区块)的链条,结果是,它变身成了一个区块链。


老铁,这就是区块链的工做方式。






然而。我还有一件小事没有告诉你。


想象文件夹中已经有5页纸——都被一个密封数字加密了。若是我回溯到第二页纸、改动交易记录以谋私,会怎么样?密封数字会让任何人察觉到交易记录中的矛盾,对吗?那假如我更进一步、为修改后的交易记录计算出了一个新的密封数字、将这替代品戳到纸上呢?
为了防止这个问题,即有人回溯而且修改纸张(区块)和密封数字,这里还有一个解释,关于一个密封数字是怎么计算出来的。



防止对密封数字的修改

 

还记得我是怎么跟你说的吗?我给了你两个盒子——一个装着数字20893,另外一个空的让你来计算?实际上,为了在区块链上算出密封数字,有三个盒子,而非两个——两个提早装好的,一个被用来计算的。


而当全部三个盒子里面的内容加起来、输入魔法机器后,从机器右边出来的答案必须知足要求的条件。


咱们已经知道了,一个盒子装着交易记录的清单,一个盒子将装着密封数字。而第三个盒子,装着此前纸张的魔法机器输出值。


 


有了这个优雅的当心机,咱们能够保证,每一页纸张都依赖于它以前的纸张。所以,若是有人要修改一张历史记录,他将一样必须改变该页之后全部纸张的内容和密封数字,以使这条链保持一致。


若是某我的,不属于咱们在一开始设想的10我的,试图做弊,修改区块链(保存了全部交易记录清单纸张的文件夹)中的内容,他将不得不调整多页纸张、为全部这些纸张计算新的密封数字。咱们都知道计算密封数字有多么困难。所以,这网络中的一个坏蛋欺负不了九个老实人。


将会发生的事情是,从这个不诚实的家伙尝试做弊的那一晚上开始,他将要在这网络中创造另外一个区块链,但那个区块链将永远没法遇上可信的区块链——仅仅由于一个家伙的努力和速度不可能打败九我的积累起来的努力和速度。所以,这保证了在一个网络中,最长的链就是可信的链。



最长的链就是诚实可信的链。

最长的链就是诚实可信的链

 



当我告诉你一个不诚实的家伙无法欺负九个实诚人的时候,它是否点醒了你什么?

 

万一,不是一个,而是六我的搞事情呢?

 

在这种状况下,这个协议将会落空,流于表面。它就是人们所知的“51%攻击”。若是该网络中的大部分人决定变得不诚实而且欺骗网络中剩下的人,这个协议将没法实现它的目标。 任什么时候候,若是区块链可能会陷落,这就是其脆弱性的惟一缘由。知道了这一点,它也就不太可能发生了。可是,咱们全部人都必须知道这个系统的这个弱点。它创建在这样的假设之上:一群人中的大部分都老是诚实的。

相关文章
相关标签/搜索