主页 > imtoken钱包怎么下载 > 八、区块链分叉

八、区块链分叉

imtoken钱包怎么下载 2024-01-13 05:07:26

区块链是当下的热门话题,新闻媒体大量报道它将创造未来。

但是,很少有易于理解的介绍性文章。区块链到底是什么,是什么让它如此特别,很少有人解释。

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

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

一、区块链的本质

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

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

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

二、区块链最大的特点

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

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

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

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

三、封锁

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

每个块包含两个部分。

区块头包含一些关于当前区块的元信息。

这里,你需要了解Hash是什么,这是了解区块链所必需的。

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

比如字符串123的Hash是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),二进制是256位,只有123才能得到这个Hash。

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

四、哈希的不变性

Blocks和Hash是一一对应的,每个block的Hash都是为“块头”(Head)计算的。

哈希 = SHA256(区块头)

以上是区块Hash的计算公式。哈希是由区块头唯一确定的。 SHA256是区块链的哈希算法。

如前所述,区块头包含很多内容,包括当前区块体的hash(注意“区块体”的hash,不是整个区块的hash),以及前一个区块的hash。这意味着如果当前区块的内容发生变化,或者前一个区块的Hash发生变化,那么当前区块的Hash就会发生变化。

这对区块链有重大影响。如果有人修改了一个区块,该区块的 Hash 就会改变。为了使后面的块仍然连接到它,该人必须同时修改所有后面的块,否则更改的块将从区块链中删除。由于后文提到的原因,Hash的计算是耗时的,几乎不可能同时修改多个区块,除非有人掌握了全网51%以上的算力。

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

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

五、挖矿

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

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

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

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

六、难度系数

读到这里,你可能会有一个疑问,人家说挖矿难,但挖矿不就是用电脑计算一个Hash吗?这就是电脑的实力,怎么会变难,半天也算不出来?

原来不是任何Hash都可以使用,只有满足条件的Hash才会被区块链接受。这个条件特别苛刻,以至于大部分Hash都不满足要求,必须重新计算。

原来区块头包含一个难度系数(difficulty),它决定了计算Hash的难度。例如第 100000 个区块的难度系数为 14484.16236122。

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

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

区块头中还有一个Nonce值,记录了Hash重新计算的次数。第 100,000 个区块的 Nonce 值为 274148111,即经过 2.74 亿次计算,可以得到一个有效的 Hash,这个区块就可以加入区块链了。

七、难度系数动态调整

即使挖矿困难,也不能保证十分钟就能出块,有时一分钟计算,有时数小时无结果。总的来说,随着硬件设备的提高和矿机数量的增长,计算速度肯定会越来越快。

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

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

八、区块链的分叉

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

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

由于新区块的生成速度是由算力决定的,所以这条规则意味着算力最大的分支就是真正的Bitchain。

九、总结

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

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

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

没有被所有成员信任的管理权限写入数据。它不需要实时使用挖矿收益来支付自己的成本

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

目前,区块链最大的应用场景(也可能是唯一的应用场景)是以比特币为代表的加密货币。在下一篇文章中,我将介绍比特币的基础知识。