Skip to content

BTC #1:公钥与私钥

比特币的密码学基础与以太坊相同(都用 secp256k1),但地址生成方式完全不同。


核心知识点

比特币和以太坊都使用 secp256k1 椭圆曲线 生成公钥,但地址编码方式不同:

graph TB
    PK["🔑 私钥<br/>256 位随机数"]
    PK -->|"ECDSA secp256k1<br/>点乘运算"| PUB["📢 公钥<br/>65 字节(未压缩)<br/>33 字节(压缩)"]

    subgraph BTC地址生成
        PUB -->|"SHA-256"| H1["哈希1"]
        H1 -->|"RIPEMD-160"| H2["公钥哈希<br/>20 字节"]
        H2 -->|"Base58Check"| ADDR1["1 开头的地址<br/>P2PKH"]
        H2 -->|"Bech32"| ADDR2["bc1q 开头<br/>P2WPKH"]
    end

    subgraph ETH地址生成
        PUB -->|"Keccak-256"| H3["哈希"]
        H3 -->|"取后20字节"| ADDR3["0x 开头<br/>40 个十六进制字符"]
    end

关键差异对比

特性BitcoinEthereum
曲线secp256k1secp256k1
公钥格式压缩(33字节)常用未压缩(65字节)
哈希算法SHA256 + RIPEMD160Keccak-256
地址编码Base58Check / Bech32Hex(十六进制)
地址长度25-62 字符42 字符(含0x)
校验机制内置校验和EIP-55 大小写校验

压缩公钥 vs 未压缩公钥

椭圆曲线上的点有 (x, y) 两个坐标。未压缩公钥存储完整的 x 和 y(65字节),压缩公钥只存 x + y 的奇偶标记(33字节),因为知道 x 就能算出 y。

比特币主要使用压缩公钥以节省空间。

学习资源