哈希函数的特性和挖矿原理

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

比特币是世界上第一种成功的加密货币,之前的尝试都没有像比特币这样有效解决有关货币的各种问题。

比特币本身是密码学发展的产物,利用了密码学中的很重要的“单向散列函数”以及数字签名两大技术来构建,今天我们来集中精力讲解单向散列函数的5种重要的特性,以及比特币挖矿相关的技术原理。


下面我们先讲哈希函数的特性:


单向散列函数(one-wayhash function),也就是通俗叫的哈希函数。


第一个特点:输入可以任意长度,输出是固定长度

哈希函数不用知道输入信息代表的是什么意思,也无所谓信息的长度有多长,只要输入hash函数出来的都是固定长度的比特值。比如非常有名的SHA256 哈希函数,输入任何值出来的都是256比特的0和1. 输入一本《三国演义》或者仅仅输入一个字母a,出来的都是256位比特长度的数据。


第二个特点:计算hash值的速度比较快

这一点经常被大家所忽略,似乎是习以为常的东西就不去在意,其实这一点同样重要,因为单向哈希的计算很快,才能保证加密或者验证的速度。

第三个特点,防碰撞特性(Collisionresistance


X≠y,H(x)=H(y) 输入空间远远大于输出空间,比如256位的哈希值指的就是输出空间是2^256这么多,输入是无限可能的,输出是固定长度。

但是,目前没有找到没有好的方法去找出一个x能得到H(x)等于右边的值。

遍历所有输入的可能能去找到这个值,叫做brute-force暴力破解吗,也就是现在矿机所谓的“哈希碰撞”这个词的来源。


哈希防碰撞用处是保证上传和下载的数据是一样的,就是改一点点出来的结果差很多。举个例子,你输入的信息是一部《红楼梦》(当然电脑识别出来就是0和1),然后你在红楼梦的第100页的第五句话把一个逗号改成句号,然后输出的hash值就完全不同了。这就是哈希函数一个非常重要的特性。


但是collision resistance目前没有数学证明这个碰撞不会发生,MD5就是最好的例子,之前是很安全的,但是后来找到了破解方法。


第四个特点:隐藏性(Hiding)或者叫做单向性(one-way


哈希函数的计算过程是单向不可逆的。x推出H(x),但是反推没有法子(单向性),也就是说,哈希值没有泄露输入的x的信息。也就是说x的信息被隐藏了起来,这也就就是隐藏性。

输入空间要足够大,取值是均匀的,这样就很难暴力破解。


利用第三和第四个特性可以做出很有趣的应用场景。


比如预测一个事情。现实世界中预测和结果很多时候是有微妙的关系的,比如三国时期,曹操专门去找当时的人物品鉴专家许劭,让他看看自己是什么材料,许劭评价曹操是“治世之能臣,乱世之奸雄”,这个很难说他评的准不准,或许因为这个评语,影响了曹操的心理,他就朝这个方向发展了,就成了自我验证的预言了。所以,很难判断预测是否真的准。


更简单例子是,有影响力的股评师,今天预测一下明天的股价是不是增长,那么,他如果公开表明币价,可能会影响币价。


所以如何表明他确实很准确呢?让他把股评信息写到纸上,或者存到电脑里,但是要求是第二天开盘后,不能偷偷修改内容,这样就不用担心预测影响股价了。那么现在需要做的只是一件事儿:保证他没有篡改自己已经写好的内容。


那么,可以用hash算法,预测的结果(信息)是x,对x 哈希函数一下,公布hash,第二天收盘再把x放出来,如果你改了昨天的数据,hash就变了。所有人都可以用hash算一下这个x和昨天公布的hash值进行对比。


实际情况下,实际的输入空间不是很大,输入不够随机,担心有人对上升下跌这样的词汇语句进行组合排列,找到这个x,为了保证安全性,会加入一个nonce随机数,公式表达如下。

H(x丨丨nonce) nonce是一个随机数

意思就是预测的结果信息x后面加个随机数,一起得到hash。


第五点:谜题友好(puzzlefriendly


就是说看x不知道H(x)是什么?这个无法从输入数据,判断到底输出是什么样子。就是说,知道输入的信息,无法一眼看出来输出的hash值是什么,谜题友好性值得就是这一点:你无法通过控制输入值x来获得想要的输出值H(x)


所以,综合隐藏性和谜题友好性两个特点,知道输入信息也不知道哈希值是什么,可以很快算出来,但是无法预先判断;知道哈希值也不能知道输入值是什么,反向计算是非常非常困难的,只能暴力破解。

所以如果你想要输出的值落在某一个范围里,比如小于某个数值,计算机只能一个一个去试去猜答案,看哪个输入算出来的输出值正好是落在你想要的范围内。


你要得到一个hash值前面K位是0。你无法知道怎么得到前面是这么多0的x。

挖矿就是找nonce,就是这个随机数。

H(block header + nonce)≤target

这就是比特币挖矿的基本原理,就是哈希碰撞去找到这个nonce,让他小于一个target(比如32个0等等)。Block header(或者block head)就是区块头包括的信息都是所有矿工都知道的信息(比如version,prehash,merkle root,ntimenbits等等信息),所以大家竞争的是谁先猜出来nonce。

备注:在二进制的世界里,因为每一位比特都是0或者1,所以比大小,就是比前面的0的数量,前面32位是0,自然小于前面31位是0(第32位是1),这个target的所谓比大小也就是限定个范围,因为sha256出来的数字都是256位的二进制数字(哈希函数输出值长短固定的特性),比谁前面的0多是很方便的划定结果值的区域的方式。这一点大家忽略的人很多,其实是一个很基础的数学知识,值得注意。


挖矿的基本思想就是来自上述的信息。在比特币中的挖矿的过程里实际上就是去找nonce也就是确定了输出范围后,去找输入的值。H(block header + nonce)≤target

当输入的值(各种信息+nonce)进行hash运算后得到的值符合target的范围,比如说前面35个0就可以了,你猜出来的值输入后得到hash值前面40个都是零,那么肯定符合要求,实际上前面35个0就满足条件了嘛。


然后你把这个信息公布出去,别的矿工看到你的nonce值,也去hash一下,很快就知道你这个nonce是合适的,可以满足target的要求。这里就用到了哈希函数的计算速度快的特性(第二个特性)。


本文总结了单数散列函数也就是哈希函数的特性,这就是很多区块链应用的基础以及比特币加密挖矿的基本原理。文章开头说过,比特币运用的密码学除了函数函数,还有一个非常重要的内容是:数字签名。这个我们很快就会讲到。


目前世界上所谓的区块链落地应用,其实有时候用的是比特币的数据结构(默克尔树等),有时候用的是UTXO模型来结算。有的时候说是溯源,有的时候说是合约。很多的应用出来,不管是什么样的概念,多数都要用到哈希函数,利用哈希函数5种特性中的一部分。


随着文章讲解的深入,关于比特币,关于行业的信息都在展开,慢慢的大家更能明白,为什么说哈希函数是比特币和区块链行业的基础了。

24小时热点

如何查询钱包里的USDT是否是黑U?详细教程

“黑U”指的是通过非法手段获取的USDT,这些USDT可能涉 ...

103070

波场区块链浏览器

天翼电子商务旗下的“中国电信翼支付Ofin-BaaS平台”是什么?

中国电信翼支付Ofin-BaaS平台(Business as ...

36014

CCFOX

转一个U需要多少TRX?TRX转账需要多少能量

转一个USDT所需的TRX费用大约在1-5 TRX之间,但这 ...

27909

区块链圈小菜鸡

nopay钱包下载使用方法

nopay钱包是一款功能比较强大的数字货币交易应用,为用户提 ...

166931

波场区块链浏览器

UICC币(联养链)倒闭了吗?

目前尚无证据表明UICC币(联养链)已经倒闭。UICC币是一 ...

13776

区块链网快讯

区块链钱包指南:选择、安全、使用全知道

本文深入探讨了区块链钱包的选择、安全和使用方法,帮助读者全面 ...

4566

区块链网快讯

什么是加密货币流动性?加密货币流动性对市场稳定有哪些影响?

本文深入探讨了加密货币流动性的基础概念、评估方法及其在市场中 ...

647

区块链网快讯

区块链应用产品evm钱包是哪个钱包

在区块链技术不断发展和应用领域不断拓宽的当下,各种加密货币钱 ...

107676

波场区块链浏览器

币圈短线交易必定亏钱吗?短线交易策略详解

币圈短线交易是指持仓时间在几天到几周之间的加密市场交易策略。 ...

6861

波场区块链浏览器

警惕:VITE币 (VITE)可能是传销币吗?

Vite币(VITE)可能会被用作传销币。尽管它也被用作一种 ...

23924

Mine NFT

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5292806

知信链

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2377018

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1827508

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1125849

波场区块链浏览器

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

992187

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

839225

Kusama 测试网

最全传销名单,请告诉家人朋友,别让他们上当受骗后赔到血本无归

因为互联网的发展,让现代传销具备了更强的隐蔽性,更让社会经验 ...

785641

律动 BlockBeats

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

751221

中币交易所

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

722733

Hi元宇宙

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

715222

Mechanism Capital