公钥是私钥经ECDSA单向推导出的公开密钥,不可逆;地址是对公钥多层哈希及编码生成的简短标识符,用于收款且不暴露公钥,二者为不可逆映射关系。

一、公钥的本质与生成原理
公钥是由私钥通过椭圆曲线数字签名算法(ECDSA)单向推导出的公开密钥,不可逆向还原为私钥。它在区块链系统中承担验证签名合法性的核心职能,是地址生成过程中的必经中间层。
1、私钥输入至 secp256k1 椭圆曲线算法,执行点乘运算:公钥 = 私钥 × G(G 为固定基点)。
2、输出结果为 65 字节非压缩公钥(以 04 开头)或 33 字节压缩公钥(以 02 或 03 开头)。
3、该运算具有确定性:同一私钥每次生成的公钥完全一致,且无法从公钥反推出私钥。
二、公钥到地址的转换流程
地址并非公钥本身,而是对公钥进行多层密码学处理后生成的简短标识符,用于接收资产。该过程确保地址可公开分享,同时维持底层密钥的安全隔离。
1、对公钥执行 SHA-256 哈希运算,得到 32 字节哈希值。
2、将上一步结果再进行 RIPEMD-160 哈希,输出 20 字节公钥哈希(比特币系)。
3、在公钥哈希前添加网络版本字节(如比特币主网为 0x00),后追加 4 字节双 SHA-256 校验和。
4、将组合数据进行 Base58Check 编码,生成以 1 或 3 开头 的传统地址;若采用 Bech32 编码,则生成以 bc1 开头 的新型地址。
三、公钥与地址的不可逆映射关系
地址由公钥派生,但地址本身不包含公钥全部信息,也无法唯一还原原始公钥。在交易验证阶段,当用户发起转账时,系统需提供对应公钥以完成签名验证,此时公钥才随交易广播上链。
1、未花费交易输出(UTXO)模型中,地址仅作为锁定脚本的收款标识,实际解锁需提供匹配的公钥与签名。
2、以太坊等账户模型中,地址直接由公钥 Keccak-256 哈希取后 20 字节生成,格式为 0x 开头的 42 字符字符串。
3、任意地址均对应唯一公钥,但同一公钥可生成多种格式地址(如 P2PKH、P2SH、Bech32),取决于封装方式与网络规则。









