当前位置: 首页 > 科技观察

被新闻刷屏的区块链是什么?

时间:2023-03-19 13:42:17 科技观察

有些读者可能会有疑惑,“区块链”到底是什么?为什么如此重要?今天,小编就带大家一起来了解一下。首先,区块链是一种存储电子数据的方式。数据以块的形式存在,想象许多块存储数字化数据。这些块都链接在一起,使它们内部的数据具有不变性。当一个数据块链接到这条链上时,它的内部数据就不能再被改变。一旦一个块被添加到链中,里面的数据对任何人都是公开可见的。这项技术是如此具有革命性,它几乎可以用来记录我们能想到的任何数据(例如财产权、身份、余额、医疗记录等),而不会冒记录被篡改的风险。假设我买了房子,把产权证的照片上传到区块链,我就可以证明那一刻我拥有这个房产。换句话说,区块链是一种存储数据并确保数据不可篡改的方法。这听起来不错,但随之而来的问题是:我们如何实现这样的技术?(校对注:为了吹毛求疵,这个说法也不是无懈可击,但可以暂且记住。)第一层——交易数据好吧,我们以比特币区块链为例。比特币区块链是现存最古老的区块链。在比特币区块链上,每个区块的大小约为1MB。截至发稿,这条链上已经积累了52.5万个区块,链上存储的数据总量约为52.5万MB。(校对注:其实远不是525,000MB,因为早期很多区块都没有填满1MB。)比特币区块链上只存储比特币交易数据。它就像一个庞大的交易记录库,可以追溯到第一笔比特币交易。在这篇文章中,我们假设有一个存储交易数据的区块链,就像比特币区块链一样。第二阶段——(通过散列)链接块假设有三个块存储交易数据(如图1所示)。这三个区块都包含一些交易数据。没什么特别的。就像三个独立的word文档,描述了交易的内容和余额的变化。Document1会按照时间顺序记录第一笔交易,直到数据量达到1MB,后续的交易会被记录在Document2中,直到数据量达到1MB,以此类推。这些文件是数据块。它们一个接一个地连接(链接)在一起。为此,每个块都会根据其内部数据字符串生成一个特殊的(数字)签名。如果这个区块中的数据有任何变化,即使只改变一个数字,这个区块的签名也会改变。这怎么可能?详情请阅读步骤3中的Hash部分。(校对注:如前所述,并非所有实际情况下的区块都接近区块大小上限。实际数据大小取决于区块中记录了多少笔交易。由在链上打包区块的矿工出块。他们不会等到他们有1MB的交易数据。实际情况见下文)假设区块1中记录了两笔交易,即交易1和交易2。这两笔交易的数据量为1MB(一个区块中实际上有更多的交易)。根据该块中的数据串生成签名。假设这个签名是“X32”。如下图所示:记住,block1中存储的数据即使改变一个数字,你也会得到一个完全不同的签名!来自区块1的数据可以简单地通过将来自区块1的签名添加到区块2来与区块2相关联。区块1的签名也包含在区块2的数据字符串中,因此该签名与区块2中的其他数据一样,成为区块2签名的数据基础。如下图所示:正是这些签名将区块链接在一起,形成了区块链。现在添加区块3,整个链条的情况如下图所示:现在,假设区块1中的数据发生了变化。假设达米安和乔治之间的交易发生了变化。Damian向George发送了500个比特币而不是100个。由于区块1中的数据字符串发生了变化,其签名也相应发生了变化。更改数据后,区块1的签名不再是“X32”,而是变成了“W10”,如下图:这样,区块1的新签名“W10”就和之前一样添加到区块中了2数据字符串的旧签名“X32”产生了冲突。块1和块2之间的链接断开。该链上的其他用户将知道区块1中的数据已更改。为了维护区块链的不变性,其他用户将拒绝同步变更的交易信息,仍然保持原有的交易记录(即达米安向乔治发送100个BTC)不变,整条链条保持完好。这意味着,为了不留痕迹地篡改交易,必须将区块2的数据串中区块1的旧签名替换为新签名。但是,一旦区块2中的数据串发生变化,区块2的签名也会发生变化。假设区块2的签名从“9BZ”更改为“PP4”。那么block2和block3之间的链接就断了!区块链上的区块对所有人都是可见的。因此,如果篡改者真的要无痕篡改交易,必须保证篡改后的区块仍然是连通的(否则很容易让人发现哪个区块没有和其他区块连通,然后判断块。块已被修改)。也就是说,要更改一个块,必须为所有后续块计算新的签名。这几乎可以被认为是不可能的,但要了解原因,请阅读下文。第三阶段——生成签名(哈希值)然后,我们以区块1为例画出示意图。假设区块1只记录了一笔交易,即Thomas向David发送了100BTC。需要根据这个数据串生成签名。在区块链上,此签名是通过加密哈希函数生成的。加密散列函数是一个极其复杂的数学公式:将任何数据字符串作为输入值代入公式会产生唯一的64位输出值。例如,你可以将“Jinglebells”这个词插入到这个哈希函数中(哈希函数有很多种,这只是一个例子),输出将是:761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868每当这个输入中的一个字符发生变化,包括改变大小写或添加空间和标点符号,您将获得非常不同的输出。如果你这个输入加上加上一个个句号句号变成“Jinglebells。”,B9B324E,得到跟之前一样的输入:761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868对同一个密码学哈希对于一个函数,相同的输入肯定会得到不同的输出,不同的输入。比特币区块链使用哈希函数为区块生成签名。区块中的数据作为输入,得到的输出就是区块的签名。Let'slookatthediagramofblock1whichcontainsonlyonetransaction(Thomassends100BTCtoDavid).Supposethedatastringinblock1isasfollows:Block1Thomas-100David+100Inputthisdatastringintothehashfunction,andtheoutput(signature)obtainedisasfollows:BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFFThissignaturewillbeaddedtoblock2middle.SupposenowthatDavidtransfers100BTCtoJimi,andthistransactionisincludedinblock2.那么如下图所示:区块2的数据串如下所示:Block2David-100Jimi+100BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF将这个数据串输入哈希函数,得到的输出(签名)如下所示:25D8BE2650D7BC095D3712B14136608E096F060E32CEC7322D22E82EA526A3E5这就是区块2signature.Eachblockwillgenerateadigitalsignaturethroughthiscryptographichashfunction.Therearemanytypesofhashfunctions,andtheBitcoinblockchainusestheSHA-256hashalgorithm.However,(onlytheabovemeasuresareobviouslynotenough)ifsomeonewantstotamperwiththedataintheblock,TAcangenerateanewsignatureafterthetampering,stuffitinthenextblock,andthengenerateanewsignatureblockbyblock,thesechangesThelastblockstillformsachain,andotherscannottellthatthedatahasbeenchanged.Howtopreventthissituation?Theansweristhatonlyhashes(signatures)thatmeetcertainrequirementsareacceptedintotheblockchain.Thisistheminingintroducedinthefourthstage.FourthStage-WhatisaQualifiedSignature?Whowillsigntheblocks?Notallsignaturesmeettherequirements.Theblockchainprotocolwillpredeterminesomerequirements.Forexample,ontheBitcoinblockchain,onlyblockscorrespondingtodigitalsignaturesstartingwithconsecutivezeroscanbechained.Forexample,onlyifthedigitalsignaturestartswithnolessthan10consecutivezeros,thecorrespondingblockcanbeuploadedtothechain.However,ascanbeseenfromthethirdsection,thehashvaluecorrespondingtoeachdatastringisunique.Whatifablock'ssignature(hash)startswithlessthan10zeros?Inordertoobtainaqualifiedblocksignature,itisnecessarytorepeatedlychangetheinputdatastringuntilasignaturestartingwith10consecutivezeroscanbegenerated.但是,由于交易数据和元数据(块号、时间戳等)需要保持不变(否则含义会发生变化),因此每个块还添加了一定长度的可以更改的数据。当人们想在链上添加一个区块时,可以不断地修改这条数据,直到找到一个合格的签名,然后确定这条数据的具体值。这条数据就是区块的随机数。Nonce不是预先确定的数据,而是一串完全随机的数字,应该根据实际需要找出来(注:图中其他数据可以由任意字符组成,nonce只能由数字组成)。综上所述,一个区块包含:1)交易数据;2)前一个区块的签名;3)随机数。这种反复更改随机数、对区块数据进行哈希处理、找到合格签名的过程称为挖矿,也就是矿工所做的事情。矿工投入大量电能,转化为算力,不断用nonce代替hash运算,直到找到合格的签名(输出)。矿工手中的算力越多,哈希运算的速度就越快,首先找到有效签名的概率就越高。这是一个试错的过程,如下图所示:-注意:nonce必须是一个数字(详见r/BlockchainSchool上的解释)-区块链网络上的任何用户都可以通过软件下载并开始挖矿参与挖矿,其实就是利用自己的硬件算力计算出区块的nonce。以比特币区块链上的#521、477区块为例:-从区块链浏览器blockchain.com-可以看出,这个区块的哈希值(签名)与上一个区块的哈希值相同values都以相同数量的零开头。找到这样的哈希值并不容易,需要大量的计算能力和时间,或者说需要很大的运气。是的,有时一个非常幸运的矿工可以在几分钟内用很少的计算能力计算出一个有效的签名。区块#523034是一个极其罕见的例子。一个计算能力很小的小矿工很快就找到了一个有效的签名,而其他矿工加起来的计算能力是它的7万亿倍。相比之下,赢得强力球彩票头奖的几率是2.92亿分之一,而这位幸运儿中奖的几率是24,000分之一。不要低估这些零。本小节的重点是找到一个好的签名很难。第五层——区块链的不可篡改是如何实现的?第三阶段提到,改变一个区块会导致其签名发生改变,与后续区块的记录不匹配,从而断开与后续区块的联系。为了让网络中的其他参与者接受这个改变的区块,它必须重新链接到下一个区块。也就是说,如果改变了一个区块的签名,那么它后面的所有区块的签名都必须改变,才能让别人觉得这是一条一致的链。你记得什么吗?第四节提到,签名必须符合要求!虽然更改所有区块的签名似乎是可行的,但考虑到所需的成本和时间,这被认为是不可能的,原因如下:假设矿工恶意篡改区块中的交易,然后根据哈希计算新的签名是为这个块和它后面的所有块生成,允许网络中的其他参与者接受被篡改的交易。问题在于网络中的其他矿工也在不断地为原链上的新区块计算签名。随着新区块不断上传到链上,恶意矿工不得不重新计算这些区块的签名。他必须将所有区块链在一起,包括不断添加到链中的新区块。除非这个矿工的算力超过全网其他人的算力总和,否则他永远追不上其他矿工。(校对注:这一段的实际意思是,只要矿工在他们看到的最长的区块链上挖矿,随着时间的推移,所有的算力自然会汇聚到一条主链上,而攻击者只能创建一条更长的链比现在的主链更能成功改变大家公认的交易记录,这种始终使用最长链作为主链(有效链)的原则就是所谓的“最长链规则”,这就是中本聪共识(Nakamotoconsensus)机制)。另外,并不是所有的区块链都采用中本聪共识。)今天,数以百万计的用户在比特币区块链上进行挖矿,因此可以推定,恶意参与者不可能让一个人或实体的算力超过剩余的算力整个网络的计算能力。这意味着网络中的其他参与者不能接受对区块链的任何修改,从而实现了区块链的不变性。一旦数据被添加到区块链,就不能再修改。只有一个例外,那就是恶意参与者的算力确实超过了全网其他人的算力总和。理论上,在这种情况下篡改区块链是可能的(即改变大家一致认同的历史记录)。这被称为51%攻击(我写了另一篇文章解释这种情况),过去许多区块链都遭受过这种攻击。(校对注:目前为止,遭受51%攻击的知名区块链有bitGold、Verge、EthereumClassic。)事实上,对比特币区块链发起51%攻击的收益远远不值得付出高昂的代价.攻击成本。为了获得足够的计算能力,除了要承担硬件、冷却设备和存储空间的成本外,还必须承担风险。更重要的是,它会对被攻击区块链的生态系统造成极大的破坏。由此产生的收入也会大幅贬值。51%攻击实际上是针对区块链上的其他用户的一对一攻击。这就是为什么参与挖矿的用户越多,整个链条的安全性就越高。恭喜你,你又进了一个层次!您现在应该明白为什么(大型)区块链被认为是不可变的。但是现在一个很重要的问题出现了:如何防止矿工将虚假的交易数据添加到区块链中?这在技术上是不可能的。区块链交易的详细解释可以在这篇文章中找到。(校对注:只有私钥的拥有者才能在对应的地址花费资金,矿工不知道你的私钥,别人只能用你的公钥来验证某笔交易是否是你发起的。因此,伪造交易是不可行的)第六阶段-如何治理区块链?谁来决定规则?…区块链协议自动将最长链上的交易记录作为代表大多数参与者的记录。构建最长的链需要消耗整个网络的大部分计算能力。被篡改的区块与最长链断开连接,因此会被全网大部分节点自动拒绝。在比特币区块链上,所有交易历史和钱包余额都是公开可见的(blockchain.info)。任何人都可以查看任何钱包的余额,或自第一笔交易(2009年1月3日)以来的所有交易。虽然任何人都可以查看钱包余额,但这些钱包的所有者大多是未知的。例如,一个钱包拥有69,000个比特币,在撰写本文时价值约5亿美元。该钱包于2015年4月使用过一次,此后没有进行过任何交易。(校对注:这部分实际上并没有回答“谁来决定规则”的问题,只是粗略地解释了“根据现有的规则,这项技术是可以实现的”)。公链治理是一个复杂的问题,超出了本文的范围需要解释。)七阶-这对加密货币意味着什么?加密货币本质上是比特币的变体。绝大多数加密货币都建立在自己的区块链协议之上,遵循与比特币不同的规则。比特币应该被归类为一种货币,这意味着它显然是一种国库货币。门罗币也是一种做同样事情的加密货币,但它的区块链协议增加了一些规则来增强隐私(使追踪交易变得更加困难)。但是,使用区块链发行的资产可以被赋予很多不同的用途,这是由发行者决定的,这种方式发行的资产一般被称为“代币”。这些代币可以赋予其所有者一定的权利,例如社交媒体渠道、水电等。所有这些资产交易都记录在不同的区块链上,可以通过币安等交易所进行在线交易。代币实际上是一种新型的互联网货币,可能会影响一些行业。一个典型的例子是股票市场。未来,公司股份等产权很可能以代币的形式存储在区块链上。区块链不局限于以代币的形式代表实物价值,还可以安全地记录医疗记录、身份、历史记录、税务记录等数据。