资讯专栏INFORMATION COLUMN

区块链概念 That You Must Know 第四期(2)

Sourcelink / 2972人阅读

摘要:下图给出一个简单的列表图什么是哈希和哈希值为理解挖矿的代码机制,首先解决几个概念。第一个就是哈希。哈希值为十六进制表示的数,且长度固定。也正是哈希值的这些特点,赋予了其加密信息时更高的安全性。

第四期 挖矿的相关算法(2)
卡酷少

Wechat:13260325501


看过(1)篇,相信你一定对挖矿的机制有了一点了解。那么本篇,我们来一起看一下挖矿中涉及的算法。

在本篇文章中,如果在前半篇你遇到了不理解的词汇,也许在文章的后半段就会给出答案。另外本篇主要是零散知识点的介绍,逻辑上不会有那么强。最后关于不理解的部分欢迎大家在文章下面留言,我会及时给出答复。

区块链的区块到底是什么?

挖矿是为了生成一个区块,那么区块到底是什么?区块的作用又是什么?一个区块又包含了哪些信息呢?

简单理解的话,一个区块可以理解为一个结构体。我们知道结构体可以存储不同类型的信息,这些信息可以是字符串,可以是数字,也可以是日期。那一个区块里包含了哪些信息呢?这里我们给出一张图来,先来了解一下区块信息有哪几大类。

图1

如图一个区块中信息按类别划分,主要分为的这四大类,这点大家做为了解即可。其中区块头包含了如下信息,这些信息也是真正有作用于生成区块的信息,我们来列举其中的重要项:

index(记录当前是第几个区块)

current hash(当前哈希值)

previous hash(承接的上一区块的哈希值,可保证区块按时间串联)

timestamp(时间戳,记录该区块的生成时间)

data(交易详情,详细记录了每笔交易的转出方和收入方,金额及数字签名)

nounce(随机数,即全网矿工一起pk计算的的,能满足哈希难度要求的答案)

其中希望大家先对nounce值有个印象。这个nounce值不仅与挖矿有关,也在之后的代码实现中有非常重要的身份。

下图给出一个简单的列表:

图2

什么是哈希和哈希值?

为理解挖矿的代码机制,首先解决几个概念。第一个就是“哈希”。

在上一篇挖矿中我们提到了算力。也说到算力就是一台矿机每秒钟能做多少次哈希碰撞。那么,什么是哈希,什么又是哈希碰撞呢?

简单理解的话,哈希就是一个函数。哈希碰撞的本质,就是cpu在随机穷举数值的过程中,不断寻找能够生成匹配现阶段比特币“难度”条件的数值。一旦找到这个数值,那么就产生了一次成功的哈希碰撞。

现在你一定很好奇哈希是一个什么样的值呢?我们通过hash算法 ==SHA256== 来测试一下。这里提供一个网址,感兴趣的同学可以跟我一起做一些测试。

link

hello

helloworld

hello world

hello,world

测试之后,我们可以发现,哈希函数有一些非常独特的特征:

任意内容都可以生成哈希值。

哈希值为十六进制表示的数,且长度固定。

不同的内容生成不同的哈希值。哪怕非常相似的内容生成的值也完全不同,且无规律可循。

相同的内容每次都会输出相同的哈希值。

通过对比"hello","helloworld",“hello world”和“hello,world”的输出结果,可以验证验证我们对于哈希算法的总结。感兴趣的同学可以再验证别的数值,你会发现,无论多么微小的差别,都会导致哈希值完全无迹可寻的改变。

也正是哈希值的这些特点,赋予了其加密信息时更高的安全性。比如“公钥”“私钥”,以后我们会做出介绍。

有关挖矿的“难度”

最后一个概念就是挖矿的难度。这里的难度,由浅及深,我们先举个例子来理解它的原理。

如图所示,比如我们将一个5位数进行排列组合,分个十百千万位。假如第一个排列组合,我指定万位和千位都是5,其他位数不限;第二个排列组合,我只指定万位为5,那么得到谁的几率大,得到谁的几率小呢?

——答案是第一个概率小,第二个概率大。因为被限定的个数越多,其他可选的可能性也就越少了。

同理,挖矿就是去匹配已经被指定了位数的哈希值。而挖矿的“难度”,就是由被指定位数的多少来决定的。这和被指定的是十六进制下的哪个数无关。

如上图框内所示,当哈希值难度设定了前四位为“0”的时候,只有当匹配上前四位为“0”的时候,才产生了一次成功的哈希碰撞。如果设定的“0”的个数越多,那么哈希成功的难度也越大,挖矿的难度也就越大。

在比特币最开始的时候,难度是很小的,只有第一位为“0”及碰撞成功。那是的挖矿是非常简单的。而现在随着全网算力的增加,挖矿的难度也大大,现在的哈希难度已经是十几个“0”了。哈希的难度的设定也不是人为操作的,区块链系统会根据当前全网的算力做出调整,将难度保持在能够每10分钟生成一个区块的程度。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24069.html

相关文章

  • 区块概念 That You Must Know 四期(4)

    摘要:我们给出的项数据只是一个简单举例,并没有完全列举生成区块哈希时参与的所有数据。这里的哈希难度是我们认为设定的,并不是真实哈希难度的生成方法。真是的哈希难度是由很复杂的数学模型实现的,是会根据当前全网算力自动调整的。。 第四期 简介go语言下挖矿难度的代码实现(4) 卡酷少Wechat:13260325501 之前的都讲完了,因为代码太多导致文章比较长。所以新增了一片。在这最后的最后...

    funnyZhang 评论0 收藏0
  • 区块概念 That You Must Know 四期(1)

    摘要:挖矿是什么挖矿是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新区块的过程。而成功抢到记账权的矿工,会获得系统新生的比特币奖励。矿机只执行单一的计算程序,实际是矿工之间比拼算力,拥有较多算力的矿工挖到比特币的概率更大。 第四期 有关挖矿和获取比特币(1) 卡酷少Wechat:13260325501 了解了这么多,大家是否想获取一些属于自己的比特币呢?之前我们在第一...

    evin2016 评论0 收藏0
  • 区块概念 That You Must Know 四期(3)

    摘要:区块里的哈希是如何产生的如第四期篇里讲到的,每个区块里包含了,,,,,等信息。,就是将剩下的其他信息拼接成字符串,然后将这个字符串进行哈希的结果。当值取到某数,并使之形成的哈希值匹配上了当前的有效哈希难度,哈希碰撞就成功了。 第四期 简介go语言下挖矿难度的代码实现(3) 卡酷少Wechat:13260325501 经过之前所有的铺垫,这一期我们将对难度的代码实现作出简单演示。(以...

    k00baa 评论0 收藏0
  • 区块概念 That You Must Know 第二期

    摘要:第二期比特币的总量和发行卡酷少上期我们简单了解了比特币的诞生及其创始人。记账完成后,他将获得一定数量的比特币。每万个区块后,每个区块的比特币产量减半。从年至今,比特币产量已经减半次,当前每个区块发行个比特币。早期约有的比特币网站靠其导流。 第二期 比特币的总量和发行 卡酷少Wechat:13260325501 上期我们简单了解了比特币的诞生及其创始人。今天我们将对比特币做一些深入和...

    娣辩孩 评论0 收藏0
  • 区块概念 That You Must Know 第一期.md

    摘要:而比特币,是由中本聪化名提出,一种点对点,去中心化的数字资产。比特币预计共有万枚,大约将在年发行完毕。比特币电子现金系统解决了在没有中心机构的情况下,总量恒定的数字资产的发行和流通问题。比特币通过比特币系统进行转账,全网记录公开透明。 第一期 比特币与中本聪 卡酷少Wechat:13260325501 说起区块链,就不得不提比特币。也正是因为比特币市场的火热,比特币系统的去中心化概...

    zorro 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<