在区块链里,哈希几乎无处不在:交易 ID 是哈希,区块之间靠哈希串起来,比特币挖矿就是在不停地算哈希。它到底是什么、为什么这么重要,这篇用尽量少的术语讲清楚。
$BTC 的挖矿实际上就是不停计算 SHA-256 哈希,寻找满足难度要求的结果。当前 83,842(24h +0.95%)。
■ 哈希是什么
哈希函数可以把任意长度的数据,变成一串固定长度的输出,这串输出叫哈希值,也叫摘要。比如 SHA-256 的输出固定是 256 位,用十六进制写出来就是 64 个字符。
可以把哈希值理解成数据的“指纹”:同样的数据,算出来的指纹永远一样;数据哪怕只改一个字符,指纹就会变得完全不同。
■ 好的哈希函数什么样
第一,单向:从哈希值几乎不可能反推出原始数据。第二,抗碰撞:几乎不可能找到两份不同的数据,算出同一个哈希值。第三,结果不可预测:不真正算一遍,就没法知道输出是什么。
要注意哈希不是加密。加密的数据可以用密钥还原,哈希是单向的,从哈希值还原不出原来的内容。
■ 区块链在哪里用哈希
比特币用 SHA-256 计算区块哈希和交易 ID,而且连算两次;生成常见的 P2PKH、P2WPKH 地址时,会对公钥先做 SHA-256、再做 RIPEMD-160(Taproot 地址则直接用公钥)。以太坊用的是 Keccak-256,地址就取自公钥 Keccak-256 哈希的后 20 个字节。
每个区块头里都记着上一个区块的哈希。改动任何一个历史区块,它的哈希就会变,后面所有区块都对不上,这是区块链难以篡改的关键之一。比特币挖矿则是不停地尝试不同的输入,直到算出一个满足难度要求的哈希。
■ 对普通用户有什么用
查一笔转账,用交易哈希去区块浏览器搜,比看截图可靠得多。下载钱包软件后,对照官方公布的 SHA-256 校验值,可以确认安装包没有被篡改。
■ 最后说两句
记住一句话:哈希是数据的指纹,能公开、能比对,但不能反推。交易哈希可以随便给人看,私钥和助记词则永远不能。知识不能帮我马上变富,但能让我少交点学费。市场永远有意外,事先想好看错了怎么办。
你是在什么场景弄懂这个的?