以太坊地址是怎么生成的?公钥与地址的关系 图 1
以太坊地址是怎么生成的?公钥与地址的关系 · 图 1

结论先说

以太坊地址不是注册出来的,而是从私钥一步步算出来的:私钥(一个 256 位随机数)通过椭圆曲线乘法得到公钥(64 字节),公钥做 Keccak-256 哈希后取最后 20 字节就是地址(0x 开头 40 个十六进制字符)。整条链条是单向的:知道地址推不出公钥,知道公钥推不出私钥——你的资金安全就建立在”逆向计算在算力上不可行”这件事上。

三层结构

私钥:一个 1~2^256-1 范围内的随机整数,通常以助记词(12/24 个英文单词)形式备份。它是唯一的秘密,掌握私钥就掌握地址里全部资产。公钥:私钥乘以椭圆曲线基点(secp256k1 曲线)得到的曲线点,压缩表示 33 字节、非压缩 65 字节。公钥是公开的——每笔交易验证时链上都要用它——它的作用类似”指纹”。地址:公钥做 Keccak-256 哈希取低 20 字节。链上状态、余额、交易都以地址为索引,合约也是地址。

为什么这样设计

椭圆曲线乘法是典型的单向函数:给定私钥 k 和基点 G,算 k·G(公钥)很快;反过来给定 k·G 求 k(离散对数问题)以目前算力不可行——256 位曲线上穷举需要约 2^128 次运算。哈希再补一层:即使未来出现从公钥部分恢复私钥的攻击,地址哈希仍然隔离;同时把 64 字节公钥压缩到 20 字节,更短更好用。代价是地址只含 160 位信息,理论上存在碰撞概率(2^-80 量级级别的风险讨论),实践中可忽略,但意味着”地址唯一”是工程近似而非数学保证。

HD 钱包:从一根种子长出很多地址

现代钱包用层级确定性(HD)派生:助记词生成一个种子,种子沿”路径”(如 m/44’/60’/0’/0/0)派生出成对的子私钥/子公钥,每个路径对应一个地址。好处是备份一次(助记词)就能恢复所有地址,且地址可以”无限”生成。这也解释了两个常见现象:同一个助记词在不同钱包里地址相同(派生路径标准一致);有些链用不同派生标准导致”同一助记词不同地址”(如早期部分链的 BIP44 类型不同),跨链导入助记词前务必核对目标链的派生路径。

使用中的风险

地址输错:地址没有校验位(EIP-55 Checksum 只校验大小写,不校验数字本身),转错地址的资金通常无法追回,大额转账务必先小额测试、核对前后几位。同一地址多链复用:同一 0x 地址在以太坊、BSC、各 L2 上是独立账户,余额和资产互不相通,“我在 Base 上有这个地址的币”不等于”以太坊上也有”。私钥与助记词:任何要求你输入助记词或私钥的”客服""验证""升级”都是诈骗的强信号;硬件钱包的价值就是把私钥移出联网环境。地址归零:用”地址重用”做链上分析是常见追踪手段,高隐私需求场景使用新地址(注意:新地址不解决私钥安全,只增加追踪难度)。

验证习惯

收到转账前核对地址全文(至少前 6 后 4 位加中间抽样),不信任”看起来像”的地址;大额交易用区块浏览器二次确认目标地址历史(是否为已知合约、是否有异常关联);部署合约时区分 EOA 地址和合约地址(合约地址有代码)。这些习惯针对的不是技术缺陷,而是”地址错了没有客服”这个结构性事实。

风险提示

地址推导是确定性的数学过程,没有”官方”参与:不存在注册、找回、申诉。私钥丢失等于资产永久丢失,助记词泄露等于资产永久失守,两者都不存在”冻结”机制。本文解释的推导路径是以太坊及多数 EVM 链的通用标准,个别链(如 Solana)使用不同曲线和地址格式,不要套用本文结论。

小结

一句话记忆:私钥→(椭圆曲线乘法)→公钥→(哈希取 20 字节)→地址,全程单向不可逆。理解这条链,你就理解了”钱包为什么没有客服”、“助记词为什么是命根子”、以及”为什么转错地址没人能帮”。