区块链 · 数字资产知识 · 行业资讯
文章库关于本站

区块链基础

区块链之哈希算法有哪些常见问题:摘要、区块头与验证边界

摘要

哈希摘要用于检测数据变化,但不能单独证明数据真实或交易有效。本文结合安全哈希标准与比特币区块结构,解释哈希与加密的区别、重复哈希的含义、字节序导致的计算差异,以及默克尔根和工作量证明的适用边界。

区块链电子发票的科技主题配图

哈希的主要作用是什么

NIST的FIPS 180-4安全哈希标准规定了生成消息摘要的算法,并说明摘要可用于检测消息是否发生变化。理解区块链中的哈希时,可以先把它看作对特定输入计算出的固定长度摘要:只有明确输入内容和计算规则,比较结果才有意义。

摘要匹配能够支持完整性检查,却不能单独证明内容真实。例如,一条记录即使内容不实,也可以被正常计算出摘要。数据是否可信,还需要结合其来源和业务验证规则判断。

区块链权益证明的科技主题配图

哈希可以像加密一样解密吗

密码学哈希不提供用密钥还原原文的解密过程,其用途与可逆加密不同。摘要也不是原始数据的完整副本,不能依靠一个摘要恢复整份交易内容。

拜占庭区块链的科技主题配图

固定长度输出对应的可能结果有限,不同输入在理论上可能具有相同摘要,这就是碰撞。密码学哈希所追求的是让寻找这类输入在计算上足够困难,因此不宜把哈希描述成绝对唯一或绝不可能重复的编号。

比特币中的哈希怎样连接区块

Bitcoin开发者参考文档说明,比特币对序列化后的80字节区块头进行工作量证明哈希计算。区块头包含前一区块头的双重SHA-256摘要和交易默克尔根;构造默克尔树时,也使用双重SHA-256合并成对摘要。

这些结构建立了数据之间的依赖关系:交易摘要变化会影响默克尔根,根的变化又会影响区块头哈希。它们帮助节点发现改动,但链的安全性仍依赖验证规则和共识机制,不能全部归因于一个哈希函数。

为什么计算出的摘要不一致

排查时首先要确认双方处理的是完全相同的字节。原始字节与其十六进制显示文本不是同一种输入,字段顺序、编码和字节序也会改变结果。比特币区块头序列化和默克尔树计算都有特定规则,不能随意拼接页面上显示的字符串。

双重SHA-256是先计算一次,再对第一次得到的摘要字节计算一次,并非把两份摘要连接起来。协议规定的计算次数也不能自行更改;增加次数不意味着结果仍与协议兼容。

哈希达标是否等于区块有效

比特币工作量证明要求区块头哈希对应的数值不大于目标阈值。这个条件只说明通过了相应的工作量证明检查,不能替代其他区块和交易有效性检查。

同样,默克尔根用于关联交易摘要,不能单独证明交易已获授权。上述区块头格式、双重哈希和目标比较方式适用于这里讨论的比特币机制,其他区块链需要按照各自协议理解。

← 返回全部文章

延伸阅读 · 相关栏目

区块链基础技术原理数字资产知识资料与核验