哈希函数、非对称加密和数字签名等在区块链系统中都有较广泛的应用。在比特币区块链中,哈希函数SHA-256用于计算区块头和交易数据的哈希摘要。并且,我们知道比特币区块链中采用的PoW共识机制也采用“寻找一定前缀的哈希值”作为数学难题。以太坊中采用的哈希算法是SHA-3的变种。
哈希函数的另一个应用是Merkle树,这种树形结构能够高效地验证数据是否曾被篡改。例如,在比特币区块链系统中每一个区块的Header中都包含Merkle根,其计算方法就是用Merkle树的结构,基于该区块涉及的所有交易数据计算“组合”哈希。Merkle根的计算过程示意图如图3-5所示,主要使用SHA-256算法。在比特币区块链中,每向区块数据中添加一笔新交易,都会引起Merkle计算过程的变化。Merkle树对数据完整性的检验高效、快捷。
图3-5 Merkle根计算示意图
公钥加密体制应用于区块链系统的最典型案例是椭圆曲线算法。在比特币区块链系统中采用的是经典的Secp256k1椭圆曲线。比特币钱包地址生成的过程分为几步。客户端首先用一个随机数生成私钥,然后将私钥用椭圆曲线Secp256k1进行加密得到公钥,最后利用公钥的哈希计算钱包地址。这样通过钱包地址是很难反推用户私钥的。