区块链科学——一文理解哈希函数
免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。
小编:记得关注
原标题:学习区块链过程中的高频概念:哈希函数|白话区块链介绍250
作者|富力青年出品白话区块链
想深入了解区块链技术和比特币的朋友们要翻过技术墙了。从技术角度“睁眼”看比特币在区块链世界的第一杀手成功应用。为什么中本聪可以被称为外星人,而说到区块链技术就不得不提,学习区块链技术中经常用到的一门知识——哈希函数。
哈希函数是一种从任何类型的数据中创建小型数字指纹的方法。哈希函数将消息或数据压缩成摘要,减少了数据量,固定了数据的格式。此函数对数据进行加扰以重新创建称为哈希值的指纹。
百度百科和维基百科如果真有别的名字,应该叫(专业到让人)看不懂的百科。给散列函数一个简洁的白话定义:散列函数是一系列复杂的数学变换,具有固定数量的输出值。
变换不能随意变换,应遵循以下过程:
1. 任意长度的内容(数据)
2. 经过这一系列复杂但固定的数学变换
3. 会输出固定长度和格式的数据(值)
脚注:在数学领域,H会被用来表示变化后输出的值。中文名称为消息摘要或数字指纹。
比如在比特币中,公钥生成地址时使用的是哈希函数SHA256,后面的“256”表示输出的是固定长度为256位的数据。
这种数学变换不是任何可以称为散列函数的变换。将一个数学变换升级为哈希函数,必须满足三个条件:唯一性、单向性、暴力解:
1.哈希函数的唯一性
直观的理解是:只有输入X才能得到H(X)。理解这个特性的时候,可以把哈希函数理解为你和你的指纹。你是输入,你的指纹是输出。唯一性意味着只有您可以拥有指纹。在比特币中,就是说你转账时用的只有你的公钥才能生成比特币地址,就像你的指纹是独一无二的一样,世界上没有其他人可以生成和你一样的转账地址。
2.哈希函数的单向性
哈希函数的单向性质意味着H(X) 不能反向推导X。
如果给你一个指纹,只有一个指纹的你永远无法想象指纹的主人是男是女,长什么样子。你只能知道这是指纹。
哈希函数的单向性可以用一个不准确但很形象的类比——来直观理解,猜下巴的主人是谁?
白宇就是这个男人味十足的下巴的主人?是张震吗?还是赵又廷?
答案揭晓:是我们最爱的坤坤,不是蔡徐坤,而是国足F4谢广坤
因为哈希函数的单向性,在比特币中,即使我们的接收地址是公开的,也没有人能知道生成接收地址的公钥是多少,更不用说生成公钥的私钥是什么了它。
市场上有一种说法,量子计算机的出现会让比特币变得一文不值,但现在大家应该知道,即使量子计算机出现,目前也很难破解哈希函数。哈希函数是由中本聪为比特币设定的。希望比特币有足够的时间升级到抗量子加密算法。
3、hash函数暴力破解
如果知道hash值H(X),真的想求输入值X,只能从源头开始,试着一个一个的数,把每个数放到hash函数中,再看输出的hash是不是值不等于H(X)。
就像如果你真的想知道某个指纹属于谁的指纹,你只能在世界上找到一个人,将每只手上的指纹与这个指纹进行比较,看看是否完全相同,没有任何偏差。 02
正因为这三个特点,哈希函数成为了中本聪手中的利器,帮助他解决了比特币设计路上的诸多难题。在比特币白皮书中,除了前言和结语这10章,几乎每一章都看到了哈希函数的使用。
利用哈希函数的唯一性来防止——数字签名被盗用
利用哈希函数的唯一性提高效率—— Merkle树检索交易记录
利用哈希函数的单向性,保留——公钥生成比特币地址
利用哈希函数的暴力破解设计比特币的工作量证明——,当范围足够大时,用指纹是不可能找到指纹拥有者的。如果在几万人的城市里找,难度会低很多。这就是比特币挖矿难度调整机制。如果你想要更高的难度,你可以稍微扩大范围。
1953年出现哈希函数,1970年哈希函数蓬勃发展,2001年出现SHA-256。不可动摇的基石。
从这一点来看,专家和大牛们忍不住夸赞中本聪的天才,甚至怀疑中本聪是不是外星人,就有些可以理解了。
至此,虽然你只了解比特币白皮书技术原理中哈希函数的一个基础知识,但这并不妨碍你理解比特币白皮书想要表达的50%。
除了“哈希函数”,你觉得还有哪些高频词?欢迎在留言区分享你的看法。