首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

环球视野:区块链 TM 到底是啥?

“听听区块链”的环球视野栏目,旨在把海外的最新资讯、权威调研和大家观点,第一时间分享给大家。内容每周不定期更新。

区块链究竟是什么?

除非你住在地底,我相信你一定听说过比特币和Blockchain。毕竟,它们是如今的流行趋势所在,也是最近这几天媒体最喜欢的话题。这两个词更是早就成为了今年的流行语。即使是那些从没有挖过矿或者完全不了解它是如何运作的人,也都在谈论它。

有趣的是,在我的朋友中,大多数技术人士并不太关心区块链,反而是那些不太懂技术的人,对其抱有很大的兴趣。最近这几个星期,他们都很希望我能解释一下区块链究竟是什么。这让我意识到,不仅仅是他们,可能很多人都对这个问题感兴趣。我想,是时候写一些接地气的,能让普通人理解的文章。这样,当别人对区块链有疑惑的时候,你就可以把这篇文章给他看。这也正是这篇文章的目的所在。

顺便说一下,我是每周通讯 Unmade 的作者,定期为你提供来自未来的观点

区块链:为什么我们甚至需要这样复杂的东西?

“对于每一个复杂的问题,都有一个清晰,简单和错误的答案。” - HL Mencken

与互联网上的其他文章不同,首先我们要做的不是定义区块链,而是先了解它究竟想要解决什么问题。

想象一下,乔是你最好的朋友。正在海外旅行,就在假期的第五天,他打电话给你说:“老兄,我钱花光了,得和你借一些。“

你回复,“马上打给你”,然后挂断电话。

然后,你打电话给你的银行客户经理,并告诉他:“请将我账户中的1000美元转账到乔的账户。”

您的客户经理回复说:“好的,先生。”

他打开账本,确认你的账户余额是否足够向Joe转账1000美元。因为你是个有钱人,所以这笔转账可以完成。因此,他在账本中输入如下内容:

交易记录

注意:我们谈论的不是电脑,只是为了简单起见所以才这样说。

你打电话给乔,告诉他,“我已经转账了。等你再去银行的时候,就能把钱转出来了。“

刚刚发生了什么?出于对银行的信任,你和乔都把钱放在银行里。因此,在转账过程中,不需要转交实物的账单。所需要的仅仅是在账本中添加一个条目。或者更准确地说,是一个不属于你们,你们也无法控制的账单中的一个条目。

而这,正是目前系统的问题所在。

为了建立彼此之间的信任,我们必须依靠独立的第三方。

多年来,我们对彼此的信任都需要依靠这些中间人。你可能会问,“依靠他们有什么问题吗?”

问题就在于它们数量单一。只需要某个人或某个组织有意或无意地腐败,就有可能给整个社会带来混乱。比如说:

如果记录交易的账册在火灾中烧毁怎么办?

如果您的客户经理无意间把1000元写成1500元呐?

如果他是故意这么做,会怎么样?

多年来,我们一直把所有的鸡蛋放在一个篮子里,而且是别人的篮子里。

有没有一种系统可以让我们在不需要银行的情况下转账?

为了回答这个问题,我们需要进一步深入研究,并问自己一个更好的问题(毕竟,只有更好的问题才能带来更好的答案)。

想一想,转移金钱意味着什么?只是账本中的一个条目。那么更好的问题是 ——有没有办法由我们自己记账,而不是别人帮我们?

这是一个值得探讨的问题。而且你可能已经猜到了,区块链就是这个深刻问题的答案。

区块链,本质上是一种让我们能够不再依赖他人,而是自己独立记账的方法。

你还能跟上我的思路吗?很好。我相信你脑海中已经浮现出一些问题了,没关系,接下来,我们就要开始了解这种分布式账本究竟是如何运行的。

告诉我,它是如何工作的?

这种分布式记账的方法能够实现有一个重要前提是,必须有足够多的人不愿意依靠第三方(来记账)。只有这样,这些人才能够共同维护一个账本。

有多少才够呐?至少三个。就我们的例子而言,假设有十个人想放弃银行或任何第三方(来帮助他们记账)。经双方同意,他们将拥有对方账户的详细信息 ,当然,是在匿名的前提下。

1.空文件夹

首先,每个人都各自拥有一个空文件夹。随着交易的不断进行,这十个人将不断添加页面(pages)到他们当前的空文件夹中。最后,所有这些页面将会形成一个记录全部交易记录的大账本。

2.交易发生时

网络中的每个人都会有一份空白的页面和一支笔。大家都准备好记录系统内发生的任何交易。

现在,如果#2想要转$ 10给#9。

为了让交易正常进行,#2向所有人宣布,“我想将10美元转移给#9。大家请在自己的页面上记下它。”

每个人都会检查#2的钱是不是够$ 10,因为只有这样才可以转账给#9。如果她余额充足,每个人都会在自己的页面上记录下这笔交易。

页面上的第一笔交易

当所有人记录完成的时候,交易也就完成了。

3.交易继续发生

随着时间的推移,越来越多人需要进行转账。每当他们想进行交易时,他们都会向其他人宣布。只要一个人听到这个声明,他就会将这条交易记录写下来。

这个过程会一直持续到所有人用完了当前页面上的空间。假设一个页面的空间足够记录十笔交易,只要第十笔交易完成,每个人当前页面的空间就用完了。

当页面被填满时

这时,就可以将这个页面放在文件夹中,取出一个新页面,并重复上述步骤2中的过程。

4.保存页面

在将页面保存到文件夹中之前,我们需要使用一个独特的,并且网络中全体成员都认可的方法来对它进行加密。通过加密,我们就能够确保,当它的副本放在大家的文件夹中时,任何人都无法对它进行任何更改。 今天不可以,明天不可以,甚至一年以后也不可以。一旦进入文件夹,它将始终以加密的状态保存在那里。只要每个人都信任这个加密方法,那么每个人都会信任该页面的内容。这时,如何将页面进行加密就成了关键所在。

这种将页面加密的过程我们通常称之为“挖矿”,但为了简单起见,我们将继续称其为“加密”。

早些时候,第三方或中间人让我们相信他们在账本中写的任何内容都不会被更改。不过,在我们这种分布式的,去中心化的系统中,信任来源于加密的方法。

有趣!那么我们该如何加密?

通常来说,在我们了解如何加密页面之前,我们首先需要了解一下加密方法的工作原理。这种加密方法我称之为“魔法机器”,为了能够更好的了解它,让我们先想象一个场景,一台被厚厚的墙壁所包围的机器。如果你从左边放入一个包含各种信息的盒子,它会从右侧吐出另一个包含各种信息的盒子。

这台机器被称为“哈希函数”,但我们不想过于技术化。所以,今天,他就是“魔法机器”。

魔法机器(又名哈希函数)

假设你从左边输入数字4,会发现它在右边吐出这个单词:“dcbea”。

它是如何将数字4转换成这个单词的呐?没人知道。更重要的是,这是一个不可逆转的过程。而且,即使你拿到了“dcbea”这个词,也不会知道我们从左边输入的内容是4。但每次你把数字4送到机器上,它总是会吐出同样的单词“dcbea”。惊不惊喜,意不意外。

哈希(4)== dcbea

接着,我们试试把不同的数字放进去。比如说,26?

哈希(26)== 94c8e

我们这次得到“94c8e”。有趣!所以,其实输出的单词也可以包含数字。

那么,我想问你这样一个问题:

“你能告诉我应该在机器左侧输入什么,才能在右侧得到一个以’000’开头的结果?例如,000ab或00098或000fa或其他内容。“

预测输入

想一想这个问题。

就像我之前说的,这台机器的一个重要特点是,我们无法根据右侧输出的结果计算出左侧输入的内容。既然机器有这样的特点,我们该如何回答刚刚的问题呐?

我能想到一种方法。我们可以逐一尝试宇宙中的每个数字,直到我们得到一个以“000”开头的单词。

尝试各种可能性,计算输入的内容

乐观的预测,只要尝试几千次,我们就可以得到一个能够产生预期结果的数字。

已知结果的情况下,计算输入值是非常困难的。但要证明某个输入值是否能产生所需的结果却非常容易。请记住,每次输入相同的数字,机器都会输出相同的结果。

如果我给你一个数字,比如说’72533’,并问你这样一个问题:“将这个数字输入到机器中,能否产生一个以’000’开头的单词呐?”你认为回答这个问题会有多困难?

事实上,你所需要做的就是把数字输进去,看看你在右边看到了什么。这就够了。

这种机器最重要的特性是:“给定结果,计算输入的数字非常困难。但是,如果给定输入的数字和输出的结果,很容易验证输入的数字是否能够得出输出的结果。”

让我们记住魔法机器(或者哈希函数)的这个属性:

给定一个结果,计算输入的数字是非常困难的,但是给定一个输入的数字和输出结果,很容易验证输入的数字是否能够得出输出的结果。

如何使用这些机器来对一个页面进行加密呐?

我们还是从一个虚拟的场景开始。

想象一下,我给你两个盒子。第一个盒子包含数字20893,接下来,需要你思考这样一个问题:“你能否计算出这样一个数字,当它和第一个数字一起送入机器时,能够出一个以’000’开头的单词?”

就像我们刚刚说的,计算这种数字的唯一方法是尝试整个宇宙中的每个数字。

经过几千次尝试后,我们偶然发现一个数字,比如说21191,它与20893相加(即21191 + 20893 = 42084)之后,再把它加到机器上,就能够得出一个满足我们要求的词。

在这种情况下,20893的加密数字就是21191。假设某个页面上写有20893,为了加密该页面(即实现没有人可以改变其内容的目标),我们将在其上面放置名为“21191”的徽章。只要页面上有加密数字(比如21191),页面就会被加密。

加密数字

加密数字被称为“Proof Of Work”,意思是这个数字证明我们为了计算它付出了很大的努力。不过就我们这篇文章,我们称之为“加密数字”就足够了。

如果有人想确认页面是否被修改,他只需要将页面内容与加密数字一起输入到魔法机器中。如果机器输出的结果是以“000”开头的单词,说明内容没有变化。如果输出的单词不符合我们的要求,这个页面就就可以扔掉了,因为它的内容已经被泄露,已经没用了。

我们所有的页面都会使用类似的加密机制来进行加密,然后才会将它们保存在我们各自的文件夹中。

最后,加密我们的网页......

我们需要计算一个数字,用来加密交易记录文件。当这个数字附加到交易记录上并输入到机器时,我们会得到一个以“000”开头的单词。

注意:我一直只使用以“000”开头的单词这个短语作为例子。它演示了哈希函数的工作原理。但真正的挑战比这要复杂得多。

一旦在机器上花费时间和电力后计算出该数字,该页拥有了专有的加密数字。如果,我是说如果,有人试图改变页面的内容,加密数字可以帮助网络中的每一个人验证页面中信息的真实性。

现在我们已经了解了如何对页面进行加密,让我们将时间拨回到写下第十条交易记录的那一刻,继续用更多的页面,记录更多的内容。

只要人们将当前的页面写满,就立刻开始计算页面的加密数字,以便将其密封在文件夹中。网络中的每个人都会进行计算。而第一个计算出结果的人会将加密数字公布给其他人。

一旦听到这个结果,每个人都会验证它是否符合要求。如果符合要求,每个人都用这个数字标记他们的页面,并将其放在他们的文件夹中。

但是如果某人说,比如说#7,现在这个加密数字不符合要求,该怎么办呐?事实上,这种情况并不罕见。这时候,有几种可能的解释:

他可能误解了网络中公布的交易

他可能把网络中公布的交易记错了

在记录交易过程中,他并不诚实,试图欺骗大家,或者在想要在网络上支持自己或其他人。

无论是因为什么,对于#7来说,他都只有一个选择 —— 丢弃他现有的页面并从别人那里复制一份,这样才能和大家保持一致,也只有这样,他才可以将它放在文件夹中。如果他不把自己的页面放到文件夹中,他就不能继续进行交易记录,这将意味着他被整个网络所抛弃。

大多数人同意的加密数字就变成了真实的加密数字。

那么,既然每个人都知道别人会计算并向他们宣布这个结果,他们为什么还要花费资源进行计算呢?为什么不坐下来等着别人宣布呐?

这是一个很好的问题。接下来,就是激励机制发挥作用的时候。区块链中的每个人都有资格获得奖励。而第一个计算出加密数字的人会因为他所付出的努力获得奖励(即消耗的CPU的算力和电力)。

简单地想象一下,如果#5计算出页面的加密数字,他会得到一些奖励,比如说1美元,这些钱是凭空而来的。换句话说,#5的账户余额增加1美元,但其他人的账户余额并不会发生变化。

这就是比特币的来源。这也是第一个在区块链上流通的货币(即分布式账本)。而作为回报,那些为了网络正常运行而付出努力的人都将获得比特币的奖励。

比特币的价值会随着参与网络的人数增加而增加,当人数增加到一定规模时,其他人就会想要获得比特币; 而这将使比特币的价值进一步增长; 进一步使更多人想要比特币; 再使其进一步增值; 循环往复,不断增值。

网络中的成员都在为了奖励而工作

一旦所有人都将自己现在的页面封存在文件夹中时,一个新的空白页面将会出现在大家眼前,然后重复之前的整个过程 ,并且一直循环下去。

[Jargon Box]将单个页面视为交易区块,并将该文件夹视为页面的链(Blocks),然后,整个文件夹就变为区块链。

而我的朋友们,以上就是区块链的工作原理。

不过,除此之外,还有一件小事。

想象一下,文件夹中已有五页 - 全部用密封号码密封。如果我为了个人的一些目的,回到第二页并修改一个交易,这时该怎么办?加密数字会让所有人发现交易中的不一致性,对不对?如果我继续为已修改的交易计算新的加密数字,并将其标记在页面上,该怎么办?

为了防止某人返回并修改页面(块)以及加密数字的现象发生,我们使用了一个稍稍有些复杂的计算方法。

如何防止修改加密数字

想想我刚刚是怎么和你说的,我给了你两个盒子 —— 一个包含数字20893,另一个是空出来,是等待你计算加密数字。而现实中,我们为了计算区块链中的加密数字,我们其实是有三个盒子,并不是之前说的两个,其中两个是提前写好内容的,剩下一个是等待计算的。

当所有这三个盒子的内容都填好并送入机器时,从右侧出来的答案必须满足所需的条件。

我们已经知道一个盒子包含交易记录,一个盒子将包含加密数字。而第三个盒子,则包含魔法机器为前一页设置的加密数字。

有了这个巧妙的小窍门,我们确保了区块链中每一页都必须依赖于它的上一页。因此,如果有人要修改一个历史页面,那么他必须改变所有页面的内容和密码,以保持整个链条的一致性。

如果在开始时我们想象的十个人中的一个人试图欺骗和修改区块链(保存着交易记录文件的文件夹)的内容,他将不得不调整多个页面并重新计算所有这些页面的加密数字。我们知道计算加密数字有多困难。因此,网络中的一个不诚实的人是不可能击败其他九个诚实的人。

真实情况是,从不诚实的人试图修改的页面开始,他就会在网络中创建另一个链,但是这条链永远无法赶上诚实者记录的链条 - 原因很简单,因为一个人在努力,速度再快,也无法超越九个人。因此,我们就可以保证网络中最长的链条就是最诚实的链条。

最长的链条是诚实的链条。

当我告诉你一个坏人没法打倒九个好人时,你是不是想到了什么?

如果有六个人决定欺骗其他人呐?

如果这种情况真的发生了,大家共同信任的基石就不复存在了。这种现象被称为“51%攻击”。网络中的大多数人变得不诚实并开始欺骗网络的其他人,那么,(比特币)这个协议将失去它的意义。

这是区块链可能会崩溃的唯一原因。你要知道,这是不太可能发生,但我们都必须知道系统的弱点。一个你必须要了解的事实是,区块链能够实现的一个重要前提是,大多数人是诚实的。

我的朋友们,以上就是关于区块链的全部内容。如果你身边还有朋友感觉在区块链这个趋势中落伍了,并且十分好奇。那么,这篇文章能够帮助你解答他们的所有疑惑了。

译者:听听团队 张成翼

本文为原创文章,未经授权,不可用于商业用途(转发朋友圈当然可以)。授权与合作事宜,请联系公众号“听听区块链”后台。关注公众号“听听区块链”,获取更多权威接地气的区块链解读!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180301A0OXNH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券