【区块链】  Hash哈希算法

Yanxiao_xaya Lv2

Hash 哈希

Crypto - currency

加密货币


比特币中主要用到了密码学中的两个功能:



哈希

其中,哈希具有两个重要的性质 :


Collision resistance - 抗碰撞性(实际上指的是冲突)

​ hash没有什么高效的方法人为的制造碰撞(指的是产生冲突),

​ 可以通过brute-force(穷举)来获取到两个值的哈希碰撞

​ 这里的碰撞指的是x,y两个不同的值经过哈希算法后结果相等

​ 即:




​ 在这里,hash指的是哈希函数,经过hash函数计算出的哈希值很难在参数不同的情况下获得相 同的值

​ 这种特性可以实现 massage digest - 信息摘要(又称信息指纹),用来检测文件完整性,是否被篡改 等等



Hiding - 隐藏

​ 是指哈希函数的计算过程是单向的,不可逆的

​ 例如 x -> hash(x)是十分容易计算出来的

​ 但反过来就不可行


这两个性质可以结合在一起,用来实现 :

Digital Commitment - 数字签名

例如想要确定x是否等于y,但又不想公开x和y的信息;可以通过hash(x)与 hash(y)进行比对,




针对于比特币,它要求哈希函数拥有第三个特性:

Puzzle Friendly

它的意思是说,哈希值的计算,事先是不可预测的;

光是看这个输入值,是很难看出来计算后的哈希值的



PoW证明

因此,比特币通过这样的特性

实现

比特币会先设置一个target

随后在blockheader中,给予了一个由用户自由设置的随机数(Nonce),通过这个Nonce的block header计算出的哈希值如果小于target则代表一个工作量,

这个过程就是挖矿

由于PuzzleFriendly特性,在挖矿的过程中,没有捷径,只能通过不停的尝试修改随机值来获取到符合要求的解,因此,这个过程才可以用来作为工作量的证明

总的来说(说人话),PoW证明就是不断的尝试不同的blockheader(这个参数可以被由用户设置的随机数改变)来运行hash函数,当达到比特币的目标target,则代表这次挖矿成功了

PuzzleFriendly特性保证了每个挖矿行为的工作量都是足够多的,因此也可以说挖矿这种行为实际上是进行“无意义”的行为



虽然挖矿需要很多工作量才能找到合格的随机值,但是证明它却很容易,因此,每次有人找到合格的随机值后会向其他人发布这个随机数,其他人来证明这是否合格,当合格率超过5 0%则意味着这个随机值是合法的


Difficult to solve,but easy to verify(难解,但易验证)



SHA-256

SHA-256,哈希算法的一种,它满足上文所说的三个哈希特性,因此被比特币采用



Static Badge

Email  |  GitHub  |  Bilibili
  • Title: 【区块链】  Hash哈希算法
  • Author: Yanxiao_xaya
  • Created at : 2025-03-25 23:07:30
  • Updated at : 2025-06-07 12:11:52
  • Link: https://ssxaya.fun/2025/03/25/Hash_Blockchain/
  • License: This work is licensed under CC BY-NC-SA 4.0.