时间:2022-02-21|浏览:7261
用戶喜愛的交易所
已有账号登陆后会弹出下载
区块链在这段时间里很受欢迎。大量新闻媒体报道称,它将创造未来,但区块链是什么?它是如何工作的,有什么特别之处,它可以解决什么问题,以及如何使用它?今天,我们将尝试制作一个最好的区块链教程。我希望在阅读了这篇文章后,你不仅能理解区块链,还能理解什么是采矿,为什么采矿越来越困难。
什么是区块链?正如它的名字所示,区块链是一系列包含信息的数据块。它是一个特殊的分布式数据库。该技术最早由一组研究人员于1991年提出,以确保人们不能像公证人一样追溯或篡改时间。首先,区块链主要用于存储信息,就像存储您的聊天记录一样。任何需要保存的信息都可以写入区块链或从中读取,因此它是一个数据库。其次,任何人都可以设置服务器,添加区块链网络,成为一个节点。区块链世界中没有中心节点。每个节点都是平等的,整个数据库都保存着。您可以将数据写入或读取到任何节点,因为所有节点最终都会同步以确保区块链的一致性。
例如,栗子,我们常用的信是集中服务器,新闻主机是集中节点,所有聊天内容,通过他们的节点发送给你想发送的人,然后聊天记录将保存在他们的服务器上,如果使用区块链,您的信息可以发送到任何节点,然后整个网络节点同步,所以所有机电都是数据库,然后您的计算机也可以安装程序成为节点,加密后,保存所有聊天记录,新闻服务器,具有相同的权限和水平。
事实上,分布式数据库并不是一项新发明。市场上早就有这样的产品,但区块链有一个革命性的特点。区块链没有管理员。它完全没有中心。其他数据库都有管理员,但区块链没有。如果有人想审查区块链,它就无法实现,因为它的设计目标是防止管理当局处于中心地位。正是因为它无法管理,区块链才无法控制。否则,一旦大公司和集团控制了管理权,他们将控制整个平台,其他用户必须服从他们。然而,如果没有管理员,每个人都可以将数据写入其中。如何确保数据可信?如果坏人改变了怎么办?区块链有一个区块组。区块与数据库记录非常相似。每次写入数据时,都会创建一个区块。每个区块包含两个部分:区块头和区块体。区块头记录当前区块的特征值,区块提取当前区块的特征值,区块的实际数据包括当前区块的特征值等。
你需要理解什么是哈希,也就是说,理解区块链是必要的。所谓哈希,就是计算机可以计算出任何长度相同的特征值。区块链的哈希长度是256位,也就是说,无论原始内容是什么,最终都会计算出一个256位的二进制数字,可以是笑脸、声音、段落或视频。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。比如字符串123的哈希就是这样,转换成二进制的哈希是256位,只有123位才能得到。理论上其他字符创作也可能得到哈希,但概率极低,可以近似认为不可能发生。所以有两个重要的推论,1.每个块的哈希都不一样,可以通过哈希识别块,2.如果块的内容发生变化,它的哈希肯定会发生变化。块对应于哈希,每个块的哈希都是为块头计算的,也就是说,块头的特征值按顺序连接在一起,形成一个长字符串,然后计算字符串,Hash=SHA256(区块头)这是区块哈希的计算公式。SHA256区块链的哈希算法,请注意,该公式只包含区块头,而不包含区块体,即哈希是由区块头唯一决定的。
前面提到的区块头包含很多内容,包括当前区块的哈希和上一个区块的哈希,这意味着如果当前区块的内容发生变化,或者上一个区块的哈希发生变化,肯定会导致当前区块的哈希发生变化,这对区块链具有重要意义。如果有人修改了一个块,块的哈希就会改变。为了使后面的块仍然连接到它,必须依次修改后面的所有块,否则被更改的块将与区块链分离。由于后面提到的原因,哈希的计算非常耗时,几乎不可能在短时间内修改多个块。除非有人掌握了整个网络51%以上的计算能力,否则区块链通过这种联动机制正式保证了自身的可靠性。数据一旦写入,就不能篡改。就像历史一样,它发生了,再也不能改变了。每个区块链都与前一个区块相连。这就是区块链名称的起源。因为必须保证节点之间的同步,新区块之间的添加速度不能太快。
想象一下,你刚刚同步了一个块,准备基于它生成下一个块,但此时其他节点有一个新的块,你必须放弃一半的计算再次同步,因为每个块的后面只有一个块,你只能在最新块的后面生成下一个块,所以你别无选择,一旦你听到信号,你必须立即同步,所以区块链的发明者中本聪故意让添加新的块变得困难,它的设计是平均每十分钟生成一个新的块,每小时只生成六个块,这个输出速度不是通过命令实现的,而是故意设置大量的计算。也就是说,只有通过这些大量的计算,我们才能得到当前块的有效哈希,从而迅速将新区添加到区块链中。由于计算量太大,它不能太快,这个过程被称为采矿,也被称为采矿。
因为计算有效哈希的难度,就像在世界各地的沙子里找到合格的沙子一样。计算哈希的机器叫矿机,操作矿机的人叫矿工。看到这里,你可能会有一个问题。人们说采矿很难,但采矿不是用计算机来计算哈希吗?这就是计算机的优势。怎么会变得困难?我不能开门。事实证明,不是任何哈希。只有符合条件的哈希才会被区块链接受。这种情况特别苛刻,使得大多数哈希不能满足要求,必须重新计算。
事实证明,哈希头包含一个难度系数,这决定了计算哈希的难度。例如,第10万块的难度系数是1.4万块。区块链协议规定,目标值可以通过使用常量除以难度系数来获得。显然,难度系数越大,目标值越小,哈希的有效性与目标值密切相关。只有低于目标值的哈希才有效,否则哈希无效,必须重新计算。由于目标值很小,哈希小于该值的机会极其渺茫,可能只能计算10亿次,这就是为什么采矿速度如此之慢。
正如我刚才所说,当前区块的哈希是由区块头决定的。如果你想反复计算同一块的哈希,这意味着区块头必须不断变化,否则不可能计算出不同的哈希。区块头中的所有特征值都是固定的。为了改变区块头,中本聪故意添加了一个随机项,称为Nonce” Nonce 是一个随机值,矿工的作用实际上是猜测 Nonce 的值,使区块头哈希能小于目标值,从而写入区块链,Nonce 很难猜测。目前只能通过穷举一个个试错。
根据协议,Nonce 是一个32位的二进制,最大可达2147亿,第十万块Nonce 是2.74亿,可以理解,矿工从零开始计算了274亿次,获得了有效的 Nonce 值使计算出的哈希能够满足条件。如果你幸运的话,你可能会在一段时间内找到 Nonce 运气不好的话,算完2147亿可能找不到 Nonce 当协议允许矿工改变块体,开始新的计算时,不可能计算出符合条件的哈希和当前趋势话题。
正如我刚才所说,采矿的随机性不能保证一个块在十分钟内生产,有时一分钟即使出来,有时几个小时也没有结果。一般来说,随着硬件设备的改进和矿机数量的增加,计算速度会越来越快。为了将输出速率保持在十分钟内,中本聪还设计了难度系数和动态调整机制。它规定难度系数每两周调整一次。如果区块的平均生成速度在过去两周是九分钟,这意味着它比预定速度快10%。因此,下一个难度系数将提高10%。如果平均速度上升为11分钟,则意味着与预定速度相比,难度系数将减少10%。
现在还有一个问题还没有解决。如果两个人同时将数据写入区块链,也就是说,两个块同时加入,因为它们都连接到前一个块,形成分叉。此时应使用哪个块?现在的规则是新节点总是使用最长的链。如果区块链有分叉,看哪个分支,在分叉点后面打六个块,称为六次确认。
由于新区的快速生成速度是由计算能力决定的,这一规则意味着具有大部分计算能力的分支是正宗的区块链,区块链作为无人管理的分布式数据库。自2009年以来,它已经运行了11年,没有大问题,这证明了它是可行的。然而,为了确保数据的可靠性,区块链也有自己的成本,1.在效率问题上,数据写入区块链至少需要十分钟,所有节点同步数据需要更多的时间,2.能耗问题,块的生成需要矿工无数无意义的计算,这是非常浪费能源,因此,区块链应用场景有限,没有所有成员信任管理,数据不需要实时使用,采矿收入可以弥补自己的成本,如果不能满足上述两个条件,那么传统的数据库将是一个更好的解决方案。
区块链最大的应用场景是以比特币为代表的加密货币,分散的金融和通信行业也在迅速发展。