主页 > imtoken官方版下载安卓最新版 > 比特币中的密码学:哈希函数的五个属性和挖掘原理

比特币中的密码学:哈希函数的五个属性和挖掘原理

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

比特币本身就是密码学发展的产物。它是利用密码学中的“单向散列函数”和数字签名两项重要技术构建而成的。今天我们将重点讲解哈希函数的单向5个重要性质以及比特币挖矿相关的技术原理。

先说一下哈希函数的特点:

单向散列函数,又称散列函数。

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

散列函数不需要知道输入信息代表什么,也不需要知道信息有多长。只要输入的哈希函数是一个固定长度的位值。比如非常有名的SHA256哈希函数,输入任意值,输出256位0,1.输入一个“三国志”或者只输入一个字母a,输出256位数据. .

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

这常常被大家忽略。因为单向哈希的计算速度非常快,所以可以保证加密或验证的速度。

第三个特性,抗碰撞性(Collisionresistance)

X≠y,H(x)=H(y) 输入空间远大于输出空间,比如256-bit的hash值表示输出空间有这么多2^256,输入为无限可能,并且输出是固定长度。

但是,目前没有很好的方法来找到 x 可以使 H(x) 等于右边的值。

可以通过遍历所有输入找到这个值,是不是叫做brute-force暴力破解,这就是所谓的矿机“哈希碰撞”的根源。

hash防冲突的目的是保证上传和下载的数据是一样的,但是稍微改变一下结果就差很多了。比如你输入的信息是一个《红楼梦》(当然电脑识别为0和1),然后你在第100页第五句把逗号换成句号红楼梦,然后输出的hash值完全不一样,这是hash函数的一个很重要的特性。

但目前没有数学证据表明这种碰撞不会发生。 MD5 就是最好的例子,它以前非常安全。 ,不过后来找到了破解方法。

第四个功能:隐藏或单向

hash函数的计算过程是单向introduce H(x)到irreversible.x,但是没有办法逆向(单向),即hash值不泄露信息输入 x。也就是说x的信息是隐藏的,这也是隐藏的。

输入空间要足够大,取值要统一,这样就很难暴力破解了。

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

例如,预测事件。在现实世界中,预测和结果往往密切相关。比如三国时期,曹操去找当时的人事和法医专家徐绍,让他看看他是什么材料,徐绍评价曹操是“能干的大臣”。天下,乱世叛徒”。很难说他是否准确。或许是因为这番话影响了曹操的心理,他才往这个方向走。经过发展,它成为一个自我验证的预言。因此,很难判断预测是否真的准确。

一个更简单的例子是,一位有影响力的股市分析师今天预测明天的股价是否正确。增长,那么,如果他公开声明币价,可能会影响币价。

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

然后,可以使用哈希算法,预测结果(信息)为x,查看x的哈希函数,公布哈希值,次日收市后发布x。如果你改变昨天的数据,hash就会改变。大家可以用hash来计算这个x,然后和昨天公布的hash值进行比较。

其实实际输入的空间并不是很大,而且输入的随机性也不够。词法语句被组合和排列以找到这个 x。为了保证安全,会添加一个nonce随机数。公式如下。

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

表示预测结果信息x后跟一个随机数,一起得到hash。

第五点:拼图Puzzlefriendly

这意味着当你看 x 时你不知道 H(x) 是什么?无法从输入数据判断输出的样子。也就是说,知道输入信息,是不可能一眼看出输出的哈希值是什么的。谜题的友好性是值得的:你不能通过控制输入值 x 得到想要的输出值 H(x)。

因此,结合隐蔽性和解谜友好性两个特点,知道输入信息,不知道hash值是什么,可以快速计算比特币特性,但无法提前判断;知道hash值,就无法知道输入的值是What,逆向计算非常非常难,只能蛮力。

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

您想获得前 K 位为 0 的哈希值。您无法知道如何获得前面有这么多零的 x。

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

H(block header + nonce)≤target

这就是比特币挖矿的基本原理,就是通过哈希碰撞来找到这个nonce,使其小于一个目标(比如32 0等)。块头(或块头)是指块头所包含的信息是所有矿工都知道的(例如版本、prehash、merkle root、ntimenbits等),所以谁抢先猜出nonce。

备注:在二进制世界中,因为每一位都是0或1,所以比值就是前面0的个数。前 32 位为 0,自然小于前 31 位。 0(第32位是1),这个目标的所谓比例是一个有限的范围,因为来自sha256的数字都是256位的二进制数(输出值定长的特点) hash函数),谁比较多 前面的0个数是一种很方便的划定结果值区域的方法,很多人忽略了这一点,但其实是很基础的数学知识比特币特性,值得注意。

挖矿的基本思路是从上面的信息。在比特币挖矿的过程中,其实就是找nonce,也就是确定输出范围后,找到输入值。 H(区块头+随机数)≤目标

对输入值(各种信息+nonce)进行hash时,hash运算后得到的值符合目标范围。例如,前 35 个 0 就足够了。输入你猜到的值后,哈希值的前 40 位全为零。 ,那么它必须满足要求。其实前35个0满足条件。

然后你发布这个信息,其他矿工看到你的nonce值去hash,很快我就知道你的nonce合适,可以满足目标的要求。这里用到了哈希函数计算速度快(第二个特点)。

本文总结了奇异散列函数和奇异散列函数的区别,散列函数的特点是许多区块链应用的基础,也是比特币加密挖掘的基本原理。文章开头,比特币使用的密码学除了函数功能外,还有一个非常重要的内容:数字签名。我们很快就会讨论这个问题。

目前世界上所谓的区块链应用,其实有时使用比特币的数据结构(默克尔树等),有时使用UTXO模型进行结算。有时说是溯源,有时说是合同。很多应用,不管是什么概念,大部分都需要用到Hash函数,并且用到了Hash函数的5个特性中的一部分。

随着文章的深入讲解,关于比特币和行业的信息越来越多,大家也逐渐能更好的理解,为什么哈希函数是比特币和区块链行业的基础。