在区块链技术的世界里,哈希算法如同构建大厦的基石,它确保了数据的安全性、完整性和不可篡改性,当我们谈论以太坊时,一个曾经在其核心中扮演过重要角色的哈希算法——RIPEMD,常常被提及,本文将深入探讨RIPEMD算法是什么,它如何在以太坊的历史中留下印记,以及为何如今它已不再是以太坊的核心。

什么是RIPEMD算法?

RIPEMD(RACE Integrity Primitives Evaluation Message Digest)是一族加密哈希函数,由Hans Dobbertin、Antoon Bosselaers和Bart Preneel在1996年设计,它最初是为了响应欧洲RACE(Random Access Cryptographic Engine)项目的需求而开发的。

RIPEMD算法最著名的“变种”是RIPEMD-160,与广泛使用的SHA-256相比,RIPEMD-160的输出长度为160位(20字节),它以其在特定条件下的性能和安全性平衡而闻名,尤其是在某些应用场景下,它被认为比SHA-1(已被证明存在严重漏洞)更安全。

RIPEMD在以太坊中的“高光时刻”:地址生成

RIPEMD-160与以太坊的渊源,主要集中在其早期版本——以太坊测试网(Testnet)的地址生成机制中。

在以太坊的主网(Mainnet)上,地址的生成流程如下:

  1. 对公钥(使用椭圆曲线算法ECDSA生成)进行 Keccak-256 哈希运算。
  2. 取哈希结果的后20位,作为以太坊地址。

在以太坊的早期测试阶段(如Morden测试网),开发者们采用了RIPEMD-160算法,其流程是:

  1. 对公钥进行 SHA-256 哈希运算。
  2. 将SHA-256的结果作为输入,再进行 RIPEMD-160 哈希运算。
  3. 取RIPEMD-160的结果,作为测试网地址。

这种做法借鉴了比特币的地址生成方式(比特币使用SHA-256 RIPEMD-160),对于早期的以太坊开发者而言,这是一个熟悉且经过实践验证的方案,便于社区测试和生态建设。

为什么是SHA-256 RIPEMD-160? 这种组合提供了一种额外的安全层,即使RIPEMD-160未来被发现漏洞,攻击者也无法直接从反推地址得到原始的公钥,因为中间还隔了一层强大的SHA-256哈希,这在当时被认为是一种非常稳健的设计。

从RIPEMD到Keccak:以太坊的选择与演进

随着以太坊项目从测试阶段迈向主网,开发团队做出了一个至关重要的决定:放弃RIPEMD-160,全面拥抱Keccak-256算法

这一转变背后有多重原因:

  1. Keccak是SHA-3竞赛的冠军:2012年,美国国家标准与技术研究院(NIST)举办了一场旨在寻找下一代SHA标准(SHA-3)的全球竞赛,Keccak算法凭借其出色的设计理念、卓越的安全性和性能,毫无争议地赢得了比赛,这为Keccak带来了极高的权威性和信誉。

  2. 算法的简洁与高效:以太坊主网的设计追求简洁和高效,使用单一的Keccak-256算法来生成地址,比“SHA-256 RIPEMD-160”的组合流程更简单,计算效率也更高,这符合以太坊“简洁原则”(Simplicity is King)的设计哲学。

  3. 避免不必要的依赖:依赖两种不同的哈希算法(SHA-256和RIPEMD-160)会增加实现的复杂性,而Keccak是一个独立的、功能强大的算法家族,可以同时满足哈希计算(如区块头哈希)和地址生成的需求,使整个协议更加内聚和易于维护。

  4. 安全性的前瞻性:虽然RIPEMD-160在当时被认为是安全的,但Keccak作为经过全球顶尖密码学家审查的SHA-3标准,其安全裕度更高,生命周期更长,选择Keccak意味着以太坊的底层密码学基础更加坚实和未来。

RIPEMD在以太坊的今天

自以太坊主网诞生以来,RIPEMD-160就彻底退出了核心地址生成的舞台,你几乎不会再在以太坊的官方规范、核心代码或主流钱包实现中看到RIPEMD的身影。

  • 主网地址:全部使用 Keccak-256(公钥) 的后20位。
  • 智能合约:其地址生成机制也基于Keccak-256。
  • 区块哈希与交易ID:全部使用Keccak-256算法。

RIPEMD-160如今更多地存在于历史记录和学术讨论中,作为以太坊发展历程中的一个重要技术注脚,它提醒着我们,在快速发展的区块链领域,技术选型总是随着认知的深入和生态的成熟而不断演进。