在以太坊乃至整个区块链世界中,地址是我们进行资产交互的唯一标识,它就像银行账户号,公开且可分享,但这个看似简单的字符串背后,隐藏着从公钥到地址的一套精密而严谨的密码学转换过程,理解这一过程,有助于我们深入把握区块链技术的核心原理,本文将详细拆解以太坊公钥如何一步步“变形”为地址。
起点:公钥从何而来
要理解公钥到地址的转化,首先要明白公钥的来源,在以太坊中,公钥和私钥是通过椭圆曲线数字签名算法(ECDSA,具体使用的是secp256k1曲线) 生成的密钥对的核心组成部分。
- 私钥(Private Key):这是一个由32个随机字节组成的数字,它相当于你的“密码”或“所有权证明”,私钥必须被严格保密,一旦泄露,对应账户里的资产将面临被盗风险。
- 公钥(Public Key):由私钥通过椭圆曲线算法计算得出,是一个64个字节(128个十六进制字符)的数字,公钥可以公开,它由私钥唯一确定,但无法从公钥反推私钥,这就是非对称加密的核心,公钥的作用是验证私钥的签名,证明资产的所有权。
私钥 → (ECDSA算法) → 公钥,这个过程是单向的、不可逆的。
核心:“变形”四步曲
以太坊地址并非直接使用公钥,而是对公钥进行一系列特定的加密哈希运算后得到的结果,这个过程可以概括为以下几个关键步骤:
第一步:获取原始公钥
如前所述,通过私钥使用ECDSA算法在secp256k1椭圆曲线上生成一个64字节的原始公钥,这个公钥通常表示为两个大整数(x, y坐标),组合起来就是64字节。
第二步:Keccak-256哈希运算
这是转化过程中最核心的一步,以太坊没有使用比特币常用的SHA-256哈希算法,而是采用了Keccak-256哈希算法(尽管SHA-3标准与Keccak略有不同,但以太坊选择的是Keccak的原版)。
- 将第一步得到的64字节(128个十六进制字符)的原始公钥作为输入数据。
- 使用Keccak-256算法对其进行哈希运算。
- 输出一个固定长度为32字节(64个十六进制字符)的哈希值,这个哈希值可以看作是公钥的“指纹”。
第三步:取后20字节作为地址雏形









