算法|揭秘区块链之哈希算法(挖矿)

算法|揭秘区块链之哈希算法(挖矿)

文章图片

算法|揭秘区块链之哈希算法(挖矿)

文章图片



之前 , 为大家综合介绍了区块链和比特币 , 接下来 , 我将为大家逐一介绍区块链技术中包含的各类技术要点 。

1.什么是哈希算法
哈希算法是区块链中用的最多的一种算法 , 它被广泛的使用在构建区块和确认交易的完整性上 。 它是一类数学函数算法 , 又被称为散列算法 , 需具备三个基本特性:其输入可为任意大小的字符串、它产生固定大小的输出、能在合理的时间内就能算出输出值 。
哈希算法有很多 , 区块链主要使用的哈希算法是 SHA-256 算法:将任意数据串作为输入值代入公式 , 可以得到一个独一无二的 64 位输出值 , 但是用输出值无法倒推出输入值 。
对于同一个哈希算法来说 , 相同的输入必定会得到相同的输出 , 不同的输入必定会得到不同的输出 。 区块链就是利用哈希函数为区块生成签名的 , 将区块中的数据作为输入 , 得到的输出就是区块的签名 。

2.如何找到合格的签名

在区块链中通过运算找到合格的签名 , 就我们常说的挖矿 。
区块链协议会预先确定一些要求 , 比如 , 在比特币区块链上 , 只有以连续的零开头的数字签名相对应的区块才能上链 。 例如 , 只有在数字签名以不少于 连续 10 个零 开头的情况下 , 对应的区块才能上链 。
每个数据串对应的哈希值都是唯一 的 , 为了获得符合条件的区块签名 , 需要反复改变输入的数据串 , 直到能生成以连续 10 个零开头的签名为止 。 但由于交易数据和元数据(区块编号、时间戳等等)需要保持原样 , 想把区块添加到链上 , 人们就需要不断在区块里面添加“一段特定长度的、全随机的数字” , 直到找到一个合格的签名 , 然后确定下这段数据的具体值 。
这种通过反复对区块数据进行哈希运算、寻找合格签名的过程就叫做 挖矿 。 矿工投入大量电力 , 转化成算力 。 矿工手中掌握的算力越多 , 哈希运算的速度就越快 , 抢先找到合格签名的可能性就越高 。 这是一种反复试错的过程 。

3.恶意篡改了怎么办

【算法|揭秘区块链之哈希算法(挖矿)】通过以上简介 , 我们就能发现:一个矿工恶意篡改了某个区块内的交易 , 会导致它的签名改变 , 与后续区块记录的对不上 , 从而与后面的区块断开链接 。 如果他想让网络中的其他参与者都接受被篡改过的交易 , 那么这个矿工需要重新计算所有区块的签名 , 保证所有区块都链接在一起 , 包括不断被添加到链上的新区块 。 这是一个不可能完成的任务 , 除非这个矿工拥有的算力超过全网其他人的总算力 , 否则他永远赶超不了其他矿工 。
换个说法 , 这就是比特币区块链共识机制中的“最长链原则”:所有矿工都在自己看到的最长区块链上挖矿 , 算力就会随时间自然汇聚到一条主链上 , 而恶意矿工只有制造出一条比当前主链更长的链 , 才能成功改变大家共同认可的交易记录 。


    推荐阅读