很多人刚接触区块链的时候,都会听到一个词叫“杂凑”,也有人叫它“哈希”或者“散列”。这三个词其实是同一个意思,英文都叫Hash。简单来说,杂凑就是把任意长度的数据,通过一种固定的算法,变成一段固定长度的字符串。这段字符串就像数据的指纹,不管原始数据是一句话、一张图片还是一部电影,经过杂凑运算后,都会得到一个独一无二的代号。
杂凑函数的特点是什么
杂凑函数有几个非常关键的特性。第一是单向性,你可以轻松地把数据算成杂凑值,但没办法从杂凑值反推出原来的数据是什么。就像你可以把鸡蛋打成蛋液,却没办法把蛋液变回完整的鸡蛋。第二是确定性,同样的数据不管算多少次,得到的杂凑值永远一模一样。第三是雪崩效应,原始数据哪怕只改动一个标点符号,算出来的杂凑值就会面目全非,完全对不上号。第四是抗碰撞性,想找到两份不同的数据却有相同的杂凑值,在计算上几乎不可能做到。
区块链为什么离不开杂凑
区块链这个名字本身就来源于杂凑。它把一笔笔交易记录打包成区块,每个区块里都存着前一个区块的杂凑值,这样区块和区块就串成了一条链。后一个区块牵着前一个区块的手,谁想偷偷篡改历史数据,那个区块的杂凑值立刻就会变化,后面所有区块的链接关系全部对不上,造假行为一眼就能被识破。这就是区块链数据难以篡改的核心原因。
除了连接区块,杂凑还在挖矿中扮演重要角色。矿工做的工作,其实就是不断尝试给区块加一个随机数字,让整个区块算出来的杂凑值满足特定条件,比如开头要有一串零。因为杂凑值的产生毫无规律可循,矿工只能靠算力硬碰硬地一遍遍试,谁先试出来谁就能获得记账权和奖励。
默克尔树让数据验证更高效
区块内部的交易记录也是用杂凑来组织的。系统会把每笔交易的杂凑值两两配对,再算一次杂凑,一层层往上合并,最后得出一个总的杂凑值,这个结构就叫默克尔树。有了它,验证某笔交易是否存在,不需要下载整个区块的全部数据,只需要沿着树的一条路径核对几个杂凑值就够了。这对轻量级钱包和手机用户来说特别友好,大大降低了使用门槛。
常见的杂凑算法有哪些
区块链领域最出名的杂凑算法是SHA256,比特币就采用它,输出256位的杂凑值,通常显示为64个十六进制字符。以太坊早期用的是Keccak256,后来升级为官方标准的SHA3。除此之外,还有MD5、SHA1等老牌算法,但它们已经被发现存在安全漏洞,目前基本不用于区块链这类对安全要求极高的场景。
杂凑技术带来的实际价值
杂凑函数看似只是一个数学工具,却撑起了区块链的信任体系。因为数据改动必然导致杂凑值变化,任何人都没办法悄悄篡改账本;因为杂凑值可以当作数据的指纹,存证、版权保护、电子合同等应用才能落地;因为单向性,用户的隐私和密码安全才有了保障。可以说,没有杂凑函数,就没有今天我们看到的区块链。
理解了杂凑,再看区块链的其他概念就容易多了。它就像整座大厦的地基,默默支撑着上面的一切。对于想深入学习区块链的人来说,把杂凑这个基础概念吃透,是迈出的第一步,也是最关键的一步。
