以太坊作为全球第二大区块链平台,其货币地址(通常称为“以太坊地址”)是用户接收、发送ETH及ERC-20代币的核心标识,理解以太坊地址的生成规则、格式要求及安全机制,对确保资产安全、顺利完成交易至关重要,本文将从地址生成原理、编码格式、校验规则及安全注意事项等方面,全面解析以太坊货币地址的核心规则。

以太坊地址的本质:从公钥到地址的转换

以太坊地址并非随机字符串,而是通过非对称加密算法从用户私钥推导而来,其生成过程遵循严格的数学逻辑,具体步骤如下:

  1. 私钥生成
    私钥是一个随机生成的256位(32字节)无符号整数,相当于用户的“密码”或“所有权凭证”,私钥必须由用户妥善保管,一旦泄露,地址中的资产将面临被盗风险。

  2. 公钥生成
    通过椭圆曲线数字签名算法(ECDSA,具体使用secp256k1曲线),将私钥转换为对应的公钥,公钥同样是一个256位整数,但格式上会编码为64字节(32字节x坐标 + 32字节y坐标)。

  3. 地址生成
    以太坊地址的生成过程是对公钥进行多次哈希和编码:

    • 第一步:对公钥进行Keccak-256哈希(一种加密哈希算法),得到一个32字节的哈希值;
    • 第二步:取哈希值后20字节(即去掉前12字节),作为地址的核心“标识符”;
    • 第三步:在20字节地址前添加以太坊网络前缀(主网为0x),最终形成42位的以太坊地址格式。

以太坊地址的格式规则:长度、前缀与编码

以太坊地址的格式需严格遵循以下规则,以确保网络识别和交易验证的准确性:

  1. 长度与结构

    • 标准以太坊地址长度为42位字符,其中前2位为固定前缀0x,后40位为16进制(Base16)编码的地址主体(即前文提到的20字节哈希值,每字节对应2个16进制字符)。
    • 示例:0x742d35Cc6634C0532925a3b8D4cD9e1c1b2a3c4d(这是一个有效的以太坊主网地址)。
  2. 字符集
    地址主体(0x后的40位)仅允许包含16进制字符,即数字0-9和字母a-f(不区分大小写,但通常习惯用小写),若出现其他字符(如g-z、等),地址将被视为无效。

  3. 前缀0x的意义
    0x是以太坊地址的“网络标识符”,用于区分不同区块链网络(如以太坊主网、测试网Ropsten/Kovan等)或其他加密资产(如比特币地址以13开头)。所有以太坊地址必须以0x开头,否则无法被钱包或节点识别。

地址校验规则:如何验证地址有效性

为确保地址的正确性,以太坊通过校验和(Checksum)机制防止输入错误(如手动输错字符),校验和规则由以太坊改进提案EIP-55提出,具体实现如下:

  1. 校验和生成原理

    • 将地址的40位16进制字符(不含0x)转换为大写形式
    • 对这40位字符进行Keccak-256哈希,得到哈希值;
    • 取哈希值的前4字节(8个16进制字符),与原始地址字符逐位进行“异或(XOR)”运算,标记哪些字符需要大写。
  2. 校验和验证方法

    • 一个有效的以太坊地址,其0x后的字符中,大写字母的位置必须与校验和标记的位置一致
    • 示例:地址随机配图