主页 > imtoken冷钱包苹果版下载 > 【区块链/比特币三分钟讲解】之一:区块链简介

【区块链/比特币三分钟讲解】之一:区块链简介

imtoken冷钱包苹果版下载 2023-03-21 07:31:06

区块链(blockchain)是当下的热门话题,新闻媒体大量报道,声称它将创造未来。但是,很少有易于理解的介绍性文章。区块链到底是什么,是什么让它如此特别,很少有人解释。

【三分钟讲清区块链/比特币】之一:区块链入门教程_区块链

接下来,我将尝试编写一个最容易理解的区块链教程。毕竟不难,核心概念也很简单,几句话就能讲清楚。希望看完这篇文章,你不仅可以了解区块链,还可以了解什么是挖矿,为什么挖矿越来越难。

需要说明的是,我不是这方面的专家。虽然我很早就关注它,但对区块链的仔细了解是从今年年初开始的。文中的任何错误和不准确之处,欢迎指正。

一、区块链的本质

什么是区块链?总之,它是一种特殊的分布式数据库。

首先,区块链的主要作用是存储信息。任何需要保存的信息都可以写入和读取区块链,因此它是一个数据库。

其次,任何人都可以搭建服务器,加入区块链网络,成为节点。在区块链的世界里,没有中心节点,每个节点都是平等的,拥有整个数据库。您可以向任何节点写入/读取数据,因为所有节点最终都会同步以确保区块链的一致性。

二、区块链最大的特点

分布式数据库不是新发明,市场上已经有这样的产品。但是,区块链具有革命性的特征。

区块链没有管理员,完全无中心。其他数据库有管理员,但区块链没有。如果有人想在区块链中添加审计,这是不可能的,因为它旨在防止中央权威的出现。

正是因为无法管理,区块链才会变得不可控。否则,一旦大公司和集团控制了管理层,他们将控制整个平台,其他用户将不得不服从他们。

比特币公式是谁推算出来的

但是,没有管理员,每个人都可以向其中写入数据。我们如何确保数据可信?万一坏人改了呢?请继续阅读,这就是区块链的魔力。

三、块

区块链由块组成。块很像数据库记录。每次写入数据时,都会创建一个块。

每个块包含两个部分。

区块头(Head):记录当前区块的特征值;

正文:实际数据;

区块头包含当前区块的多个特征值。

世代时间

实际数据的哈希值(即块体)

前一个区块的哈希

在这里,您需要了解什么是哈希,这是了解区块链所必需的。

比特币公式是谁推算出来的

所谓“哈希”,是指计算机可以为任何内容计算出一个相同长度的特征值。区块链的哈希长度是 256 位,这意味着无论原始内容是什么,最终都会计算出一个 256 位的二进制数。并且可以保证,只要原始内容不同,对应的hash就一定不同。

比如字符串123的hash是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),二进制是256位,只有123才能得到这个hash。(理论上,其他字符串有可能得到这个哈希,但概率很低,可以近似为不可能。)

因此,有两个重要的推论。

推论1:每个区块的hash不同,可以通过hash来识别区块。

推论 2:如果一个块的内容发生变化,它的哈希值必须改变。

四、 哈希的不变性

区块和哈希是一一对应的,每个区块的哈希都是为“区块头”(Head)计算的。也就是说,将块头的特征值连接在一起,以形成一个很长的字符串比特币公式是谁推算出来的,然后计算该字符串的哈希值。

哈希 = SHA256(块头)

1

以上是区块哈希的计算公式,SHA256是区块链的哈希算法。注意这个公式只包含块头,不包含块体,也就是说哈希是由块头唯一确定的,

如前所述,区块头包含很多内容,包括当前区块体的哈希和前一个区块的哈希。这意味着如果当前块体的内容发生变化,或者前一个块的哈希值发生变化,肯定会导致当前块的哈希值发生变化。

【三分钟讲清区块链/比特币】之一:区块链入门教程_区块链_02

比特币公式是谁推算出来的

这对区块链有重大影响。如果有人修改了一个区块,该区块的哈希值就会改变。为了让后续的区块仍然连接到它(因为下一个区块包含前一个区块的哈希),该人必须依次修改所有后续区块,否则更改的区块将从区块链中删除。由于后文提到的原因,hash的计算是耗时的,而且几乎不可能在短时间内修改多个区块,除非有人掌握了全网51%以上的算力。

正是通过这种联动机制,区块链才保证了自身的可靠性。数据一旦写入比特币公式是谁推算出来的,就不能被篡改。就像历史一样,发生的事情就是发生的事情,从此无法改变。

【三分钟讲清区块链/比特币】之一:区块链入门教程_数据库_03

每个区块都连接到前一个区块,这就是“区块链”名称的由来。

五、挖矿

由于必须保证节点之间的同步,因此不能太快添加新块。想象一下,你刚刚同步了一个块,准备根据它生成下一个块,但是此时另一个节点生成了一个新块,你不得不放弃一半的计算,重新同步。因为在每个区块之后,只能跟随一个区块,并且只能在最新区块之后生成下一个区块。因此,您别无选择,只能在听到信号后立即同步。

因此,区块链的发明者中本聪(此为化名,真实身份未知)故意让新增区块变得困难。他的设计是,平均每 10 分钟,整个网络可以生成一个新块,一个小时可以生成六个。

这种输出速度不是通过命令来实现的,而是故意设置海量计算。也就是说,只有通过极其大量的计算,才能获得当前区块的有效哈希值,才能将新区块添加到区块链中。由于计算量大,不能很快起床。

这个过程被称为挖矿,因为计算一个有效哈希的难度就像在世界的沙子中找到一粒合适的沙子。计算哈希的机器称为矿工,操作矿工的人称为矿工。

六、难度系数

读到这里,你可能有一个疑问,人家说挖矿难,但挖矿不就是用电脑算一个hash,这就是电脑的强项,怎么会变难,算不出来很久了呢?

事实证明,不能使用任何哈希,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,以至于大部分哈希不符合要求,必须重新计算。

比特币公式是谁推算出来的

事实证明,区块头包含一个难度系数(difficulty),它决定了计算哈希的难度。例如,第 100000 个区块的难度系数为 14484.16236122。

【三分钟讲清区块链/比特币】之一:区块链入门教程_数据库_04

区块链协议规定目标值(target)可以用一个常数除以难度系数得到。显然,难度系数越高,目标值越小。

哈希的有效性与目标值密切相关。只有小于目标值的哈希才有效,否则哈希无效,必须重新计算。由于目标值非常小,hash小于这个值的几率非常小,可能要计算10亿次才算一次命中。这就是挖矿如此缓慢的根本原因。

如前所述,当前区块的哈希是由区块头唯一确定的。如果要对同一个区块重复计算哈希,就意味着区块头必须不断变化,否则不可能计算出不同的哈希。块头中的所有特征值都是固定的。为了让区块头发生变化,中本聪特意添加了一个名为 Nonce 的随机项。

Nonce 是一个随机值。矿工的作用是猜测 Nonce 的值,使区块头的哈希值小于目标值,从而写入区块链。Nonce 非常难猜,目前只能通过穷举法一一猜出来。根据协议,Nonce 是一个 32 位的二进制值,最大可达 21.47 亿。第 100000 个区块的 Nonce 值为 274148111。可以理解为矿工从 0 开始,一直计算 2.74 亿次才得到一个有效的 Nonce 值,这样计算出来的 hash 才能满足条件。

如果你幸运的话,你可能会在一段时间内找到 Nonce。如果运气不好,可能算了 21.47 亿次都找不到 Nonce,也就是当前块体不可能计算出满足条件的哈希。此时,协议允许矿工更改块体并开始新的计算。

七、难度系数动态调整

上一节提到,挖矿是随机的,不能保证正好十分钟就出块。有时它会在一分钟内出来,有时它可能不会在几个小时内产生。总的来说,随着硬件设备的提高和矿机数量的增长,计算速度肯定会越来越快。

为了保持输出速率恒定在十分钟,中本聪还设计了难度系数的动态调整机制。他规定难度系数每两周(2016 个区块)调整一次。如果在这两周内,平均出块速度为 9 分钟,则意味着比法定速度快 10%,因此下一个难度系数将增加 10%;如果平均生成速度为 11 分钟,则意味着比法定速度慢 10%,因此下一个难度系数将降低 10%。

难度系数越高(目标值越低),越难挖掘。

八、区块链分叉

比特币公式是谁推算出来的

即使区块链是可靠的,还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是同时加入两个区块,因为它们都连接到区块链上。上一个区块,形成了一个分叉。此时应该采用哪个区块?

【三分钟讲清区块链/比特币】之一:区块链入门教程_数据库_05

当前规则是新节点总是使用最长的链。如果区块链中有分叉,它会查看分叉后面是哪个分叉,并首先到达 6 个新区块(称为“六次确认”)。按10分钟一个区块计算,1小时即可确认。

由于生成新块的速度是由计算能力决定的,所以这条规则说,具有最大计算能力的分支是真正的区块链。

九、总结

作为非托管分布式数据库,区块链从 2009 年开始运行了 8 年,没有出现重大问题。这证明它有效。

但是,为了保证数据的可靠性,区块链也有自己的成本。一是效率,数据写入区块链,至少要等十分钟。所有节点同步数据需要更多时间;另一个是能源消耗,出块需要矿工进行无数次无意义的计算,非常消耗能源。

因此,区块链的适用场景其实是非常有限的。

没有所有成员都信任的管理机构;

写入的数据不需要实时使用;

挖矿的收入可以弥补自己的成本;

如果以上条件都不能满足,那么传统数据库是更好的解决方案。