设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

被新闻刷屏了的区块链 它到底是个啥?(2)

发布时间:2019-10-28 16:15 所属栏目:47 来源:佚名
导读:对于同一个密码学哈希函数来说,相同的输入必定会得到相同的输出,不同的输入必定会得到不同的输出。比特币区块链就是利用哈希函数为区块生成签名的,将区块中的数据作为输入,得到的输出就是区块的签名。我们再来

对于同一个密码学哈希函数来说,相同的输入必定会得到相同的输出,不同的输入必定会得到不同的输出。比特币区块链就是利用哈希函数为区块生成签名的,将区块中的数据作为输入,得到的输出就是区块的签名。我们再来看看只含有一笔交易( Thomas 向 David 发送 100 BTC )的区块 1 示意图。

被新闻刷屏了的区块链 它到底是个啥?

假设区块 1 中的 数据串 如下所示:

Block 1 Thomas -100 David +100

将这个数据串输入哈希函数,得到的输出(签名)如下所示:

BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

这个签名会被添加进区块 2 的中。再假设现在 David 向 Jimi 转了 100 BTC ,这笔交易被打包进了区块 2 。那么如下图所示:

被新闻刷屏了的区块链 它到底是个啥?

区块 2 的数据串如下所示:

Block 2 David -100 Jimi +100 BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

将这个数据串输入哈希函数,得到的输出(签名)如下所示:

25D8BE2650D7BC095D3712B14136608E096F060E32CEC7322D22E82EA526A3E5

这就是区块 2 的签名。每一个区块都会通过这个密码学哈希函数生成一个数字签名。哈希函数种类繁多,比特币区块链用的是 SHA-256 哈希算法。

但是,(仅有上述措施显然还不够)如果有人想篡改区块中的数据,TA 可以在篡改之后生成新的签名,塞下一个区块中,然后逐个逐个区块生成新的签名,这些改动后的区块还是形成了一条链,他人就没法分辨出数据已经被更改过了。如何防止这种情形呢?

答案是只有符合特定要求的哈希值(签名)才会被区块链接受。这就是第四阶中介绍的挖矿。

第四阶——什么是合格的签名?由谁来签署区块?

并非所有的签名都符合要求。区块链协议会预先确定一些要求,比如,在比特币区块链上,只有以连续的零开头的数字签名相对应的区块才能上链。例如,只有在数字签名以不少于 连续 10 个零 开头的情况下,对应的区块才能上链。

然而,由第三小节可知,每个数据串对应的哈希值都是 唯一 的。如果一个区块的签名(哈希值)开头少于 10 个零呢?为了获得符合条件的区块签名,需要反复改变输入的数据串,直到能生成以连续 10 个零开头的签名为止。但由于交易数据和元数据(区块编号、时间戳等等)需要保持原样(否则意义就改变了),每个区块里面还另外添加了一段特定长度的、可以改动的数据。想把区块添加到链上时,人们可以不断改变这段数据,直到找到一个合格的签名,然后确定下这段数据的具体值。这段数据就是区块的 nonce 。nonce 不是预先确定的数据,而是应实际需要而找出的一串完全随机的数字(注:图中所示的其他数据可以由任意字符组成,nonce 只能由数字组成)。

综上所述,区块包含:1)交易数据;2)上一个区块的签名;3)nonce 。这种通过反复更改 nonce、对区块数据进行哈希运算、寻找合格签名的过程就叫做 挖矿 ,也就是 矿工 所做的事。矿工投入大量电力,转化成算力,不断代入 nonce 进行哈希运算,直到找到合格的签名(输出)为止。矿工手中掌握的算力越多,哈希运算的速度就越快,抢先找到合格签名的可能性就越高。这是一种 反复试错 的过程,如下图所示:

被新闻刷屏了的区块链 它到底是个啥?

-注:nonce 必须是数字(详情请阅读 r/BlockchainSchool 上的讲解)-

区块链网络上的任何用户都可以通过下载并启动 挖矿软件 来参与挖矿,实际上,这就是用他们的硬件计算能力来计算区块的 nonce 。以比特币区块链上的 Block #521,477 为例:

被新闻刷屏了的区块链 它到底是个啥?

-源自区块链浏览器 blockchain.com -

可以看出,这个区块的哈希值(签名)和上一个区块的哈希值都是以相同数量的零开头的。找到这样一个哈希值并非易事,需要付出大量算力和时间,或者 运气爆棚 。没错,有时候运气爆棚的矿工在几分钟之内就能算出合格的签名,花的算力也很少。Block #523034 就是一个极其罕见的例子。一个算力很少的小矿工很快就找到了合格的签名,而其他矿工的算力加起来是他的 7 万亿倍。相比之下,赢得 Powerball 彩票头奖的概率是 2.92 亿分之一,而这位幸运儿挖到矿的概率是中头奖的 1/24000 。

不要小看这些零。这一小节的重点是,找到一个合格的签名很难。

第五阶——区块链的不可变性是如何是实现的?

正如第三阶中所述,更改某个区块会导致它的签名改变,与后续区块记录的对不上,从而与后面的区块断开链接。要想让网络中的其他参与者接受这个被更改过的区块,就要把它跟后面的区块重新链接起来。也就是说,一个区块的签名变了,跟在它后面的所有区块的签名都要改变,才能让别人觉得这是一条前后一致的链。

你想起什么事没有?

如第四节所述,签名必须符合要求!虽然更改所有区块的签名看似可行,但是要花费很多成本和时间,因此被认为是不可能的,原因如下:

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读