当前位置: 首页 > 网络应用技术

区块链技术的深化

时间:2023-03-08 19:46:18 网络应用技术

  在开始分享之前,请从互联网引用以指导所有人。

  “小明的故事”

  小敏是谁?小姐是前端工程师和足球迷。

  他具有神奇的技能:他对足球有深刻的了解,并且可以在每次世界杯之前准确预测最终球队。

  例如,在2010年世界杯足球赛中,小姐预测了正确的结果。比赛结束了,小米无法掩饰他的兴奋,并想在他的女友面前展示它。

  女友自然受到质疑,小米没有证据证明自己,她只能无言以对。

  小姐很痛苦,决定写一个网站以提前记录他的预测。

  最后,该网站看起来像这样:

  接下来,小敏静静地等待下一个世界杯。

  时间迅速过去,2014年。这次小米再次预测了冠军。

  一些网站记录了预测,小明想,这一次他的女友应该相信自己!

  然而……

  女友也知道技术,这次她仍然提出了一个合理的问题。居民再次无语。

  所以问题是,我该怎么做才能让我的女友相信自己?

  如果现在没有结论,您可以继续看不起。

  区块链技术有许多新概念。对于一些不深入的学生来说,他们相对友好并不是很友好。这篇文章首先解释了某些技术的概念。

  特殊分布式数据库。

  链接列表结构,链接列表中的元素作为块。每个链接列表的结构包括:

  该内容暂时无法在飞行文件之外显示

  分布式数据库已经很早就出现了,但是区块链是一个没有管理人员的分布式数据库是不同的。它的初始设计目标是防止出现在中心位置的经理。

  然后下一个问题来了。没有经理的数据管理,如何确保该分布式数据库中的数据被信任?这就是提及下一个未解决的功能。

  每个人都这么说,区块链上的数据不能被篡改网络具有同步逻辑。整个区块链网络始终保持所有节点中最长的链。然后,在修改它之后,连接的网络将被同步,并且修改后的内容将再次覆盖。这是不篡改的一个方面。

  更有趣的是,区块链已确保数据访问需要严格通过加密验证来验证,并且这些验证几乎是无可辩驳的,因此很难篡改。加热并不意味着它不能篡改它通过加密和经济原则来实现。这也是一些形而上学的口味。理论上维护了纯技术。但这是事实。这是传奇的采矿。

  采矿过程实际上是为矿工制造街区的过程。一旦矿山被挖出,这意味着矿工有资格创建一个新的块。如何通过一系列复杂的加密算法从0到∞,找到满足难度的哈希值并获得的哈希值该算法过程称为“共识机制”,也就是说,以哪种形式确定谁具有记录权,有许多共识机制,哪些共识机制是最佳采用的。基于选择的经济原则。

  除此之外,区块链中的加密比无处不在。这些加密的规则和算法使整个区块链遵循规则,因此篡改数据的成本特别高,因此参与者对篡改数据不感兴趣,甚至不感兴趣。

  为了响应这些不令人满意的功能,我们可以解决一开始就提出的问题吗?

  使用JS编写区块链代码来解决小小的混乱。

  区块链通过许多块链接在一起(听起来好像没有问题……)。链条上的块允许我们检测到任何人是否已经操纵任何以前的块。

  那么,我们如何确保数据的完整性?每个块包含基于其内容计算的哈希。它还包括上一个块中的哈希。

  下面是用JavaScript编写的块的粗糙外观:使用构造函数初始化块的属性。

  这里无法修改这里的哈希值。我们可以看到哈希值由多个元素组成。一旦修改了哈希值,就意味着修改它。目前,如果要继续修改块没有意义。哈希值的计算非常耗时,基本上不可能同时修改超过51%的节点。因此,这种连锁机制也确保其未修饰的特征。

  我们通过创建一个包含创建块的数组来初始化整个链。在这样,第一个块很特别,因为他没有向前指向一个块。并添加两种方法:

  最后,我创建了一个以确保没有人对区块链进行教。,它将返回,否则将返回。

  我们的区块链类别已经编写,我们真的可以开始使用它!

  在这里,我们创建了一个区块链的实例,并在其中添加了一个块。数据写为小米对世界杯冠军的预测。

  我将通过一开始运行来验证整个链的完整性。我们已经操作了任何块,因此它返回了TRUE。

  之后,我更改了链条上的第一个(索引为1)的数据。在此之后,我再次检查了整个链的完整性,并发现它返回到false。我们的整个链条不再有效。

  POW是在创建第一个区块链之前已经存在的一种机制。这是一项简单的技术,可以通过一定数量的计算来防止滥用。工作量是预防和篡改的关键。如果需要大量的计算能力,则是不再值得填充垃圾。

  比特币通过要求用特定数字的哈希来实现POW。这也称为困难

  但是请等一下!一个块怎么会更改?在比特币的情况下,一个块包含各种财务交易信息。我们必须不想混淆这些数据以获得正确的哈希。

  为了解决此问题,区块链添加了一个值。nonce用于查找许多有效的哈希。此外,由于无法预测哈希功能的输出,它只能在获得Hash之前尝试很多组合,这很难满足困难条件。在称为采矿的圆圈中找到有效的哈希(创建一个新块)。

  在比特币的情况下,POW确保每10分钟只能添加一个块。您可以想象,垃圾过滤器需要多少计算能力来创建一个新的块,并且他们很难欺骗互联网,更不用说篡改了互联网与整个链。

  该内容暂时无法在飞行文件之外显示

  我们应该如何实现它?让我们修改我们的块类,并在其构造函数中添加nonce变量。我将初始化它并将其值设置为0。

  我们还需要一种新的方法来增加nonce,直到获得有效的哈希。

  最后,我们需要更改函数。由于他没有使用nonce来计算哈希。

  将它们结合在一起,您将获得下面显示的块类:

  既然我们的块已经有了nonce并且可以开采,我们还需要确保我们的区块链支持这一新行为。LET添加一个新属性,以跟踪整个链的难度。我将其设置为2(它意味着块的哈希必须从2 0开始)。

  现在剩下要做的就是更改方法,以便在将其添加到链中之前可以将其挖掘到块中。LET将难度传递给块。

  更大的功绩!我们的区块链现在可以抵抗攻击。

  现在,让我们测试我们的区块链,看看将在POW下添加新的块会添加什么效果。I将使用以前的代码。我们将创建一个新的区块链示例并添加2个块。

  如果运行上述代码,您会发现添加新块仍然非常快。这是因为当前的难度仅为2(或者您的计算机非常好)。

  如果您创建一个有5个困难的区块链示例,您会发现您的计算机将花费大约十秒钟的时间来挖掘。由于难度增加,防御攻击的保护程度就越高。

  在上面计算哈希的过程实际上是采矿过程的简单版本,即计算计算相应的哈希值的计算机,但是并非并非所有提到的哈希都可以满足上述哈希值。这种情况是严峻的。大多数哈希都无法满足要求,需要重新计算。

  在区块链协议中,有一个标准常数和一个目标值。只能使用小于目标值的哈希。使用常数分配难度系数,可以获得目标值。显然,难度系数越大,目标值越小。

  否则,哈希无效只能再次计算,而非CE的大小可以计算相应的工作负载证书。

  总体代码在下面发布

  回到最初的问题。

  小姐使用JS在世界开始之前将预测的内容存储在这里。并成功预测。

  这次,没有人,并成功地在他的女友面前取得了成功。

  本文从一个小故事中得出了区块链的相关内容。作为一种新的技术和想法,它提供了一些不可逆和分布式数据库的概念,并使用前端JS代码来编写小型演示。

  当然,确实没有一个大问题,因为无人没有人管理的分布式数据库,但是有一些缺点。首先,链接列表的结构的难度和哈希值的计算导致其编写数据的效率。数据的效率不高。要确保所有节点都同步。第二,块计算所需的一些毫无意义的计算也更加耗能。

  最后,本文作为纯技术共享而没有任何投资建议。我希望每个人都喜欢?

  原始:https://juejin.cn/post/7104247094470246413