什么是公钥

TokenPocket 带您认识 BTC 公钥

什么是公钥?

公钥是密码学中的一个核心概念,在比特币网络中扮演重要角色。它是由私钥(Private Key)通过椭圆曲线加密算法(ECDSA,具体是secp256k1曲线)生成的数学结果。简单来说:

  • 定义:公钥是一个由数字和字母组成的长字符串(通常是256位),可以公开分享,用于接收比特币或验证交易签名。

  • 与私钥的关系:私钥是你的“秘密钥匙”,用来签名交易证明你是资金的所有者;而公钥是从私钥推导出来的“公开钥匙”,别人用它来确认你的签名有效。

  • 生成过程:从私钥生成公钥是单向的(不可逆),保证了安全性。

公钥与比特币地址的关系

在比特币中,公钥并不是直接用作收款地址,而是经过进一步处理生成实际的地址。不同的地址类型(如上面提到的P2PKH、P2SH、SegWit、Taproot)决定了公钥如何被转化和使用:

  1. P2PKH(传统地址)

    • 公钥经过哈希处理(先用SHA-256,再用RIPEMD-160),生成一个较短的公钥哈希(Public Key Hash)。

    • 然后加上版本字节和校验码,最终编码为以“1”开头的地址。

    • 例子:公钥 → 哈希 → 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。

  2. P2SH(脚本地址)

    • 公钥可以作为脚本的一部分(比如多重签名脚本),然后生成脚本哈希,最终编码为以“3”开头的地址。

    • 这里公钥不直接显示在地址中,而是嵌入脚本逻辑。

  3. SegWit(隔离见证地址)

    • 公钥依然是基础,但SegWit优化了签名数据的存储方式。公钥哈希或脚本哈希通过Bech32编码生成“bc1q”开头的地址。

    • 公钥本身在交易中以“见证数据”(Witness)的形式提供。

  4. Taproot(P2TR地址)

    • 公钥结合Schnorr签名技术处理后,生成一个Taproot输出,结果编码为“bc1p”开头地址。

    • 公钥在这里支持更复杂的条件脚本,同时保持隐私性。

公钥的作用

  • 接收比特币:你把地址(由公钥衍生)给别人,别人就能向你发送BTC。

  • 验证交易:当你花比特币时,公钥会被用来验证你的私钥签名,确保交易合法。

  • 安全性:公钥可以公开,因为从公钥反推出私钥在计算上是不可行的(依赖椭圆曲线加密的数学难度)。

通俗比喻

想象公钥是个“邮箱号码”,私钥是“邮箱钥匙”。你把邮箱号码(地址)告诉别人,他们就能寄信(BTC)给你;但只有你用钥匙(私钥)才能打开邮箱取信。公钥则是邮箱号码的“技术蓝图”,用来生成地址并验证寄信过程。

实际例子

  • 一个私钥可能是:5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

  • 从中生成的公钥可能是:04x1...(很长的十六进制字符串)

  • 最终的地址可能是:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa(P2PKH类型)。

Last updated

Was this helpful?