入门教程区块链?

然而,很少有通俗易懂的入门文章。很少有人解释什么是区块链,什么是独一无二的。

接下来,我会试着写一个最好的区块链教程。毕竟,这不是一个困难的项目。核心概念很简单,两三句话就能说清楚。我希望读完这篇文章后,你不仅能理解区块链,还能理解什么是采矿,为什么采矿越来越困难。

需要注意的是,我不是这方面的专家。虽然我很早就注意到了,但我从今年年初开始就仔细了解了区块链。欢迎纠正文章中的错误和不准确。

1、区块链的本质

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

首先,区块链的主要功能是存储信息。任何需要存储的信息都可以写入区块链并从中读取,因此它是一个数据库。

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

二、区块链最大特点

分布式数据库不是新发明,市场上早就有这样的产品。然而,区块链具有革命性的特点。

区块链没有管理员,完全没有中心。其他数据库都有管理员,但区块链没有。如果有人想增加对区块链的审批,他们就无法实现,因为它的设计目标是避免管理当局处于中心地位。

正是因为无法管理,区块链才无法控制。否则,一旦大企业和集团控制了管理权,他们就会控制整个平台,其他用户就必须服从。

然而,没有管理员,每个人都可以把数据写进去。我们如何确保数据可靠?被坏人改了怎么办?请继续阅读。这是区块链的美妙之处。

三、区块

区块链由一个区块组成(block)构成。块与数据库记录非常相似,每次写入数据,就是创建一个块。

每个块包含两个部分。

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

区块材(Body):实际数据

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

生成时间

哈希实际数据(即块材)

上一块的哈希

...

在这里,你需要了解什么是哈希(hash),了解区块链是必要的。

所谓哈希,就是计算机能够计算出长度相同的特征值。区块链的特征值。 哈希的长度是256位。换句话说,无论原始内容如何,最终都会计算出256位二进制数字。并且可以保证,只要原始内容不同,对应的哈希肯定是不同的。

例如,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转为二进制是256位,而且只有123位能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但概率极低,可能会觉得不可能发生。)

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

推理1:每个块的哈希都不一样,可以通过哈希标识块。

推理2:如果块的内容发生变化,它的哈希肯定会发生变化。

四、 Hash 不可修改性

块和哈希是一一对应的,每个块的哈希都是针对块头的(Head)计算。换句话说,将块头的各种特征值按顺序连接起来,形成一个长字符串,然后计算哈希。

Hash = SHA256( 区块头 )

以上是区块哈希的计算公式,SHA256是区块链的哈希算法。请注意,该公式只包括块头,而不包括块材料,换句话说,哈希是由区块头唯一决定的,

正如我之前所说,块包含了很多内容,包括当前块的哈希和最后一个块的哈希。这意味着,如果当前块的内容发生变化,或者上一块的哈希发生变化,它肯定会导致当前块的哈希发生变化。

这对区块链意义重大。如果有人改变了一个块,块的哈希就会改变。为了使后面的块连接到它(因为下一个块包括上一个块的哈希),此人必须依次修改后面的所有块,否则被更改的块将脱离区块链。由于后面提到的原因,哈希的计算非常耗时,除非有人掌握了全网51%以上的计算能力,否则基本上不可能在短时间内修改多个块。

正是通过这种联动机制,区块链保证了自身的稳定性,一旦数据被写入,就不能被篡改。就像历史一样,它出现了,不能再改变了。

每个块都与上一个块相连,这也是区块链这个名字的起源。

五、采矿

由于必须保证节点之间的同步,因此新块的添加速率不能太快。想象一下,你刚刚同步了一个块,准备根据它生成下一个块,但在其他节点生成新块时,你必须放弃一半的计算,再次同步。因为每个块的后面只能跟着一个块,所以你只能在最新块的后面生成下一个块。因此,你别无选择,一听到信号,就必须立即同步。

因此,区块链的发明者中本聪(这是假名,真实身份至今未知)故意使得很难添加新区块。他的设计是,平均每10分钟,整个网络就能生成一个新区块,每小时只有6个。

这种输出速率不是通过指令实现的,而是故意设置大量的计算。换句话说,只有通过大量的计算,才能得到当前区块的有效哈希,从而将新区块添加到区块链中。因为计算量太大,所以不快。

这个过程叫做采矿(mining),由于计算有效哈希的困难,就像在世界各地的沙子里找到合格的沙子一样。计算哈希的设备被称为矿机,操作矿机的人被称为矿工。

六、难度系数

读到这里,你可能会有一个问题,人们说采矿很困难,但采矿不是用计算机计算哈希,这是计算机的优势啊,怎么会变得困难,不能计算呢?

原来不是任何哈希都能做到,只有符合条件的哈希才能被区块链接受。这种条件特别苛刻,促使绝大多数哈希不符合要求,必须重新计算。

原来区块头包含了一个难度系数(difficulty),这个值决定了计算哈希的难度。例如,第1万个区块的难度系数是 14484.16236122。

根据区块链协议,目标值可以通过使用常量除以难度系数来获得(target)。显然,难度系数越大,目标值就越小。

哈希的有效性与目标值密切相关,只有低于目标值的哈希才有效,否则哈希无效,必须重新计算。由于目标值特别小,哈希低于该值的机会非常小,可以计算10亿,只有一次。这就是采矿速度如此缓慢的主要原因。

正如我之前所说,当前块的哈希是由块头唯一决定的。如果你想反复计算同一块的哈希,这意味着块必须不断变化,否则就不可能计算出不同的哈希。块内的所有特征值都是固定的。为了改变块头,中本故意增加了一个叫做随机项的随机项 Nonce。

Nonce 这是一个随机值,矿工的作用实际上是猜测 Nonce 数值促使区块头的哈希低于目标值,从而写入区块链。Nonce 很难猜测,目前只能通过穷举法一一试错。根据协议,Nonce 它是一个32位二进制值,即最大可达21.47亿。第 100000 个区块的 Nonce 值为274148111,可以理解为矿工从0开始,一直在计算 2.74 1亿,才得到一个有效的 Nonce 值,促使计算出的哈希能够满足条件。

如果你幸运,也许你会在一段时间内找到它。 Nonce。运气不好的话,可能算了21.47亿,没有发现 Nonce,也就是说,目前的块材不可能计算出符合条件的哈希。此时,协议允许矿工改变块材,开始新的计算。

7、难度系数的动态调整

正如上一节所说,采矿是随机的,不能保证一个块在十分钟内产生,有时即使一分钟出来,有时几个小时也可能没有结果。总的来说,随着硬件设备的改进和矿机数量的增加,计算速度肯定会越来越快。

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

难度系数越来越高(目标值越来越小),导致采矿难度越来越大。

八、区块链的分叉

即使区块链是可靠的,仍然有一个问题没有得到解决:如果两个人将数据写入区块链,换句话说,同时添加两个区块,因为它们与前一个区块相连,就会形成一个分叉。此时应该采用哪个块?

现在的规则是,新节点总是选择最长的区块链。如果区块链有分叉,则取决于哪个分支在分叉点后面,先达到6个新区块(称为六次确定)。按10分钟计算,一小时即可确认。

由于新区块的生成率是由计算能力决定的,这一规则意味着大多数计算能力的支持是纯区块链。

九、总结

区块链作为一个无人管理的分布式数据库,自2009年以来已经运行了8年,没有出现大问题。这证明了它是合理的。

然而,为了确保数据的稳定性,区块链也有自己的成本。首先,效率,数据写入区块链,至少等待十分钟,所有节点同步数据,需要更多的时间;第二,能耗,区块的生成需要矿工进行无数无意义的计算,这是非常消耗能源的。

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

不会有全体成员信任的管理当局

写入的数据不需要即时使用

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

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

目前,区块链最大的使用场景(也许是唯一的应用领域)是以比特币为代表的数字货币

相关推荐