除非你活在与世隔绝的大山里,否则我相信你一定听说过比特币和区块链。毕竟,它们是当今趋势和媒体最喜欢的话题。即使是从未开采过加密货币或了解其工作原理的人也在谈论它。几个星期以来,我那些不懂技术的朋友一直在问我,让我向他们解释这个词到底是什么意思。我想有成千上万的人有同样的感觉。是时候写一些东西,这就是这篇文章的目的——用任何普通互联网用户都能理解的简单语言说清楚这个问题。
为什么我们需要区块链这么复杂的东西?
与互联网上的所有其他帖子不同,我们不会首先讲定义,第一步,是要了解它到底解决了什么问题。
想象一下,乔是你最好的朋友。他正在海外旅行,在假期的第五天,他打电话给你说:“伙计,我需要一些钱。我已经用完了。”
你回答说:“马上给你打钱”,然后挂断了电话。
然后你致电银行的客户经理,告诉他:“请把 1000 美元从我的账户转到乔的账户。”
客户经理回答:“好的,先生。”
他打开程序,检查您的账户余额,看看您是否有足够的余额将 1000 美元转给乔。因此,他在寄存器中输入如下:
交易登记册
注意:在这里谈论计算机并不是为了让事情变得简单。
你打电话给乔,告诉他,“我已经把钱转了。你直接去银行,把我刚转账的1000块钱取出来。”
这说明什么?你和乔都信任银行来管钱。实际的钞票并没有发生转移。只有银行的记录里显示了这样一笔转账。更直白一点说,你们两个作为客户都不能控制或者影响银行怎么写这一条涉及钱的记录。
这就是当前系统的问题。
为了在我们之间建立信任,我们依赖于第三方。
多年来,我们一直依靠这些中间人相互信任。您可能会问,“依赖第三方,有什么问题?”
问题是这些第三方都是单一存在的。如果要给这个系统制造混乱,只需要一个人或组织有意或无意地腐败一下就够了。
如果记录交易的那个服务器硬盘被火烧毁了怎么办?
如果您的客户经理误写了 1500 美元而不是 1000 美元怎么办?
万一他是故意的呢?
长久以来,我们一直把所有的鸡蛋放在一个篮子里,也把它放在别人的篮子里。
是否存在一个系统,我们可以在不需要银行的情况下转账?
要回答这个问题,我们需要进一步深入,问一个深入的问题(毕竟,正确的问题才能得到正确的答案)。
想一想,转账是什么意思?只是登记簿中的一个条目。那么更好的问题是——
有没有办法,让我们自己来维护注册登记表,而不是由其他人为我们做呢?
这才是一个值得探讨的问题。答案您可能已经猜到的。区块链就是这个深刻问题的答案。
这是一种在我们自己之间维护该注册的方法,而不是依靠其他人为我们做这件事。
好的。因为现在,您的脑海中开始出现几个问题时,我们将了解这个分布式存储器是如何工作的。
它是如何工作的?
这种方法的前提是必须有足够多的人不想依赖第三方。只有这样,该组人才能自行维护注册表。
“获得一些比特币以防它流行起来可能是有意义的。如果有足够多的人有同样的想法,那将成为一个自我实现的预言。” ——中本聪,2009
多少才够?至少三个。对于我们的示例,我们将假设有十个人想要放弃依赖银行或任何第三方的服务。在双方同意的情况下,他们一直拥有彼此账户的详细信息——但不知道对方的个人身份信息。
1.一个空文件夹
每个人都包含一个与他们自己开始的空文件夹。随着我们的进展,这十个人将持续将内容添加到他们的空文件夹中。这个页面的集合将形成跟踪交易的寄存器。
2. 交易发生时
接下来,想象一下,网络中的每个人都坐在那里,手里拿着一张空白页和一支笔。每个人都准备好编写系统内发生的任何事务。
现在,如果 #2 想向 #9 发送 10 美元。
为了进行交易,#2 大喊并告诉大家:“我想将 10 美元转给#9。所以,每个人,请在你的页面上记下这笔转账。”
每个人都检查#2 是否有足够的余额将 10 美元转移到#9。如果她有足够的余额,那么每个人都会在他们的空白页上记下这笔交易。
页面上的第一笔交易
然后交易被认定为完成。
3. 交易继续发生
随着时间的推进,网络中越来越多的人有转账交易的需求。每当他们想要进行交易时,他们都会向其他人宣布。一个人一听到公告,就会将其写在他/她的页面上。
这个“记录的动作”会一直持续到每个人都用完当前页面上的空间。假设一个页面有空间记录十笔交易,一旦第十笔交易完成,每个人都会用完空间。
当页面被填满时
是时候将页面放在文件夹中并取出一个新页面并从上面的步骤 2 开始重复该过程。
4. 收起页面
在我们将页面放入文件夹之前,我们需要使用网络中每个人都同意的唯一密钥对其进行密封。通过密封,我们将确保一旦它的副本被存放在每个人的文件夹中后,任何人都无法对其进行任何更改——今天不行,明天不行,甚至一年后也不行。一旦进入文件夹,它将始终留在文件夹中 - 密封。而且,如果每个人都信任印章,那么每个人都会信任页面的内容。而这种封页就是这种方法的关键所在。
在页面上称为“mining”,但为了简单起见,我们将继续称其为“sealing密封”。
之前的情况是,第三方或者中间人,让我们相信他们在登记簿上写的任何内容都不会被更改。现在的情况是,在像我们这样的分布式和去中心化系统中,这个印章将提供大家相互的信任。
有点意思!那我们怎么sealing密封呢?
在我们学习如何密封页面之前,我们将了解密封的一般工作原理。作为它的先决条件是学习一些我喜欢称之为的东西——
魔法机器
想象一台被厚墙包围的机器。如果你从左边发送一个里面有东西的盒子,它会吐出一个包含其他东西的盒子。
这台机器叫做“哈希函数”,我不想讲的太技术化。所以,就今天而言,我们就简单的称之为“魔法机器”。
魔法机器(又名哈希函数)
假设你从左边发送数字 4,我们会发现它在右边吐出以下单词:'dcbea'。
它是如何将数字 4 转换为这个词的?这个不重要。重要的是,这是一个不可逆的过程。给定“dcbea”这个词,就不可能分辨出左边的机器是什么。但每次你将数字 4 输入机器时,它总是会吐出同一个词“dcbea”,这个是确定的。
哈希(4)== dcbea
给定“dcbea”这个词,就不可能分辨出左边的机器是什么。但每次你将数字 4 输入机器时,它总是会吐出同一个词“dcbea”。
让我们试试发送一个不同的数字。26怎么样?
哈希(26)== 94c8e
这次我们得到了'94c8e'。有点意思!因此,单词也可以包含数字。
如果我现在问你以下问题怎么办:
“你能告诉我,如果我想要得到一个以右侧三个零开头的单词,我应该从机器的左侧发送什么?例如,000ab 或 00098 或 000fa 或其他任何东西。”
预测输入
给自己几分钟时间想一想这个问题。
我告诉过你,机器有一个属性,当我们在右边给出预期的输出后,我们无法计算我们必须从左边发送什么。有了这样一台机器,现在来回答我刚才提出的问题?
我想到一种方法。为什么不逐个尝试宇宙中的每个数字,直到我们得到一个以三个零开头的单词?
尝试一切来计算输入
经过数千次尝试,我们最终一定会得到一个符合条件的数字。
在给定输出的情况下计算输入是非常困难的。但与此同时,验证预测的输入是否产生所需的输出总是非常容易。一定记住,机器每次都会为一个数字吐出相同的单词。
如果我给你一个数字,比如 72533,然后问你一个问题:“这个数字在输入机器时会产生一个以三个零开头的单词,你认为答案有多难?”
简单爆了对吧,只需要把数字扔进机器里,看看你在右边得到了什么而已。
这种机器最重要的特性是——“给定一个输出,计算输入是极其困难的,但是给定输入和输出,很容易验证输入是否导致输出。”
在本文的其余部分中,请牢牢记住魔法机器(或哈希函数)的这一属性:
给定一个输出,计算输入是非常困难的,但是给定一个输入和输出,很容易验证输入是否导致输出。
如何使用这些机器来封存?
我们将使用这台神奇的机器为我们的页面生成一个印章。
想象一下,我给你两个盒子。第一个盒子包含数字 20893。然后,我问你,“你能找出一个数字,当它把添加到第一个盒子中的数字输入机器时,我们会得到一个以三个零开头的单词吗?”
我们已经了解到,计算这样一个数字的唯一方法是尝试整个宇宙中可用的每个数字。
经过数千次尝试,我们最终会发现一个数字,比如 21191,当它与 20893 相加(即 21191 + 20893 = 42084)并输入机器时,将产生一个满足我们要求的单词。
在这种情况下,这个数字 21191 成为数字 20893 的印章。假设有一页上写着数字 20893。为了密封该页面(即没有人可以更改其内容),我们将在其顶部放置一个标有“21191”的徽章。一旦封页号(即21191)贴在页面上,页面就被封了。
封号
封号被称为“工作证明”,意思是这个数字是努力计算它的证明。出于我们的目的,我们很乐意将其称为“密封号”。
如果有人想验证页面是否被篡改,他只需要——将页面内容加上密封号,然后喂给魔法机器。如果机器发出三个零开头的单词,则内容不变。如果出来的词不符合我们的要求,我们可以把页面扔掉,因为它的内容被泄露了,没有用了。
我们将使用类似的密封机制来密封我们所有的页面,并最终将它们安排在我们各自的文件夹中。
最后,密封我们的页面……
为了密封包含网络交易的页面,我们需要找出一个数字,当附加到交易列表并输入机器时,我们会得到一个以右侧三个零开头的单词。
注意:我一直使用短语“以三个零开头的单词”作为示例。它说明了散列函数是如何工作的。
机器花费时间和电力后计算出该数字后,页面将用该数字密封。如果有人试图更改页面的内容,密封号将允许任何人验证页面的完整性。
既然我们搞懂了封页的概念,现在回到我们在页面上写完第十笔交易的情况。
每个人一但用完该页,为了将它隐藏在文件夹中,他们就立刻沉迷于计算该页的封号。网络中的每个人都在进行计算。网络中第一个弄清楚封号的人会向其他人宣布。
听到封号后,每个人都会立即验证它是否产生了所需的输出。如果是这样,每个人都会用这个数字标记他们的页面并将其放在他们的文件夹中。
但是,如果对于某人来说,比如 #7,宣布的密封编号不符合条件,没有产生所需的输出怎么办?这种情况并不少见。造成这种情况的可能原因可能是:
他可能听错了网络中宣布的交易
他可能写错了在网络中宣布的交易
他可能在编写交易时试图作弊或不诚实,以有利于自己或网络中的其他人
不管是什么原因,#7 只有一个选择——丢弃他的页面并从其他人那里复制它,以便他也可以将它放入文件夹中。缺少一页,他将不能继续编写进一步的交易,因此,互相的信任将不复存在,他会被排挤出这个网络。
多数人同意的任何封号,都会成为诚实的封号。
那为什么每个人都知道别人会计算并公布给他们,却还要花费资源来计算呢?为什么不坐等通知呢?
好问题。这就是激励措施出现的地方。作为区块链一部分,每个人都有资格获得奖励。第一个计算出封号的人会因为他的努力(即消耗的 CPU 功率和电力)获得免费的奖励。
简单想象一下,如果#5 计算一页的封号,他会得到一些免费的钱,比如 1 美元,这些钱是凭空铸造的。换句话说,#5 的账户余额会增加 1 美元,而不会减少其他任何人的账户余额。
比特币就是这样诞生的。它是第一个在区块链(即分布式寄存器)上交易的货币。作为回报,为了让网络继续努力,人们获得了比特币。
当足够多的人拥有比特币时,它们的价值就会增长,从而使其他人想要比特币;使比特币的价值进一步增长;更多人想要比特币;价值会进一步增长;等等。
奖励使每个人都继续在网络中工作。
一旦每个人都在他们的文件夹中收起页面,他们就会拿出一个新的空白页面并重新重复整个过程——永不停止。
将单个页面视为交易块,将文件夹视为页面链(块),因此,将其变成区块链。
我的朋友们,这就是区块链的运作方式。
除了有一件小事我没有告诉你。
想象一下,文件夹里已经有五页了——全都用密封号密封了。如果我出于利益诱惑回到第二页并修改交易内容怎么办?没错,封号是可以让任何人发现交易中的不一致,如果我继续为修改后的交易计算一个新的密封号码并用它标记页面怎么办?
为了防止有人返回并修改页面(块)以及封号的问题,封号的计算方式有一点扭曲。
保护对密封号码的修改
还记得我告诉过你我给了你两个盒子——一个是数字 20893,另一个是空的让你计算吗?实际上,要计算区块链中的密封数量,不是两个盒子,而是三个——两个预先填充,一个需要计算。
而当这三个盒子的内容全部添加并送入机器时,从右侧出来的答案必须满足要求的条件。
我们已经知道一箱包含交易清单,一箱将包含封号。第三个框包含上一页魔法机器的输出。
通过这个巧妙的小技巧,我们确保每一页都依赖于它的前一页。因此,如果有人要修改一个历史页面,他也必须更改之后所有页面的内容和封号,以保持链条一致。
如果我们一开始想象的十个人中的一个人试图欺骗和修改区块链的内容(包含交易列表页面的文件夹),他将不得不调整几个页面并计算新的密封所有这些页面的编号。我们知道计算密封数字是多困难。因此,网络中一个不诚实的家伙无法击败九个诚实的家伙。
将会发生的事情是,从不诚实的人试图作弊的页面开始,他将在网络中创建另一个链,但该链永远无法赶上诚实的链——仅仅是因为一个人的努力和速度无法超越累积的努力和速度。因此,保证网络中最长的链是诚实链。
最长的链是诚实链。
最长的链是诚实链。
当我告诉你一个不诚实的人无法击败九个诚实的人时,你有没有敲响警钟?
如果不是一个,而是六个人变得不诚实怎么办?
在这种情况下,协议将一蹶不振。它被称为“51%攻击”。如果网络中的大多数人决定不诚实并欺骗网络的其余部分,那么协议将无法实现其目的。
这是区块链可能崩溃的唯一脆弱原因。这不太可能真的发生,但我们都必须知道系统的脆弱点。它建立在大多数人总是诚实的假设之上。
本文链接://www.dmpip.com//www.dmpip.com/showinfo-40-317-0.html区块链到底是个啥?
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
下一篇: 深挖“元宇宙”护城河,高通在下什么棋?