🌐

哈希函数与区块链联动

 

目标

本节的目的是学习:
  • 什么是哈希函数
  • 哈希函数在区块链中的应用

哈希函数的历史

哈希函数的概念可以追溯到 20 世纪 50 年代,最初用于哈希表等数据结构,用于快速定位和检索数据。此后,哈希函数不断发展,旧标准被新的、更安全的标准所取代:
MD4—>MD5—>SHA0—>SHA1—>SHA2—>SHA3
目前最先进的标准是SHA-3,它基于Keccak算法,由比利时密码学家设计,并于2015年成为NIST标准。

什么是哈希函数

哈希函数,也称为散列函数,接受任意长度的输入(通常称为“消息”),并通过数学算法将其转换为固定长度的字符串,通常称为哈希值、哈希码、消息摘要或数字指纹。下图演示了使用 SHA3-256 哈希函数,无论输入是什么,输出始终是 64 个字符的十六进制字符串。
notion image
notion image

哈希函数类比

想象一下哈希函数是一台复杂的榨汁机。想象一下你有各种各样的水果和蔬菜,比如苹果、香蕉、胡萝卜、西红柿等。无论你放入的水果和蔬菜的类型和数量(输入),它们都会在机器内部被切碎和挤压(哈希),最后你会得到特定体积(哈希值)的果汁。不同组合和数量的水果和蔬菜会产生具有不同风味的果汁,仅从果汁中,你无法准确推断出所用成分的类型和数量。

哈希算法的特点

  • 计算速度快:无论输入的长度如何,都可以快速计算哈希值。例如,您可以快速计算单个字符或整本书的哈希值。
  • 不可逆反:在合理的时间内从哈希值推导出输入几乎是不可能的。例如,从哈希值 0x8a5e1d339fafc39350fd8cf1d7ca7982091c27f6b77f75bd4ddab3df425b4f8c ,您无法逆向工程输入 123。
  • 对输入的敏感性:即使输入发生微小变化,也会导致输出发生重大变化。例如,123 和 124 的哈希值差别很大,而且看起来毫无关联。
  • 抗碰撞性:很难找到两个产生相同哈希值的不同输入(即碰撞)。例如,除了 123 之外,很难找到另一个输入,导致哈希值为 0x8a5e1d339fafc39350fd8cf1d7ca7982091c27f6b77f75bd4ddab3df425b4f8c 。
  • 不可预测性:无法根据输入预测输出,这就是为什么挖矿中的nonce必须从1开始并依次递增。

区块链应用

哈希函数在区块链技术中起着至关重要的作用,主要应用在以下方面:
  • 确保交易数据的完整性和不变性。每笔交易都有一个唯一的哈希值,数据的任何细微变化都会导致哈希值发生剧烈变化,从而使网络参与者能够快速检测到篡改。
  • 将区块连接在一起形成区块链。每个区块都包含前一个区块的哈希值,从而确保链上数据的一致性和不可逆性。
  • 构建Merkle树来有效地验证数据。
  • 实施工作量证明机制,通过解决计算难题来限制新区块生成的速度,从而增强区块链安全性。
此外,哈希函数与非对称加密相结合,为交易提供数字签名,确保交易的真实性。这些应用共同保障了区块链网络的安全性和可靠性。

概括

在本节中,我们学习了哈希函数的基本概念及其在区块链中的应用。
总结来说,哈希函数就是将任意长度的数据转换成固定长度字符串的方法。在区块链中,哈希函数确保每笔交易和区块都是唯一的,保障数据安全,防止篡改,是区块链基础设施中的核心工具。