什么是公钥
TokenPocket 带您认识 BTC 公钥
什么是公钥?
公钥是密码学中的一个核心概念,在比特币网络中扮演重要角色。它是由私钥(Private Key)通过椭圆曲线加密算法(ECDSA,具体是secp256k1曲线)生成的数学结果。简单来说:
定义:公钥是一个由数字和字母组成的长字符串(通常是256位),可以公开分享,用于接收比特币或验证交易签名。
与私钥的关系:私钥是你的“秘密钥匙”,用来签名交易证明你是资金的所有者;而公钥是从私钥推导出来的“公开钥匙”,别人用它来确认你的签名有效。
生成过程:从私钥生成公钥是单向的(不可逆),保证了安全性。
公钥与比特币地址的关系
在比特币中,公钥并不是直接用作收款地址,而是经过进一步处理生成实际的地址。不同的地址类型(如上面提到的P2PKH、P2SH、SegWit、Taproot)决定了公钥如何被转化和使用:
P2PKH(传统地址)
公钥经过哈希处理(先用SHA-256,再用RIPEMD-160),生成一个较短的公钥哈希(Public Key Hash)。
然后加上版本字节和校验码,最终编码为以“1”开头的地址。
例子:公钥 → 哈希 → 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。
P2SH(脚本地址)
公钥可以作为脚本的一部分(比如多重签名脚本),然后生成脚本哈希,最终编码为以“3”开头的地址。
这里公钥不直接显示在地址中,而是嵌入脚本逻辑。
SegWit(隔离见证地址)
公钥依然是基础,但SegWit优化了签名数据的存储方式。公钥哈希或脚本哈希通过Bech32编码生成“bc1q”开头的地址。
公钥本身在交易中以“见证数据”(Witness)的形式提供。
Taproot(P2TR地址)
公钥结合Schnorr签名技术处理后,生成一个Taproot输出,结果编码为“bc1p”开头地址。
公钥在这里支持更复杂的条件脚本,同时保持隐私性。
公钥的作用
接收比特币:你把地址(由公钥衍生)给别人,别人就能向你发送BTC。
验证交易:当你花比特币时,公钥会被用来验证你的私钥签名,确保交易合法。
安全性:公钥可以公开,因为从公钥反推出私钥在计算上是不可行的(依赖椭圆曲线加密的数学难度)。
通俗比喻
想象公钥是个“邮箱号码”,私钥是“邮箱钥匙”。你把邮箱号码(地址)告诉别人,他们就能寄信(BTC)给你;但只有你用钥匙(私钥)才能打开邮箱取信。公钥则是邮箱号码的“技术蓝图”,用来生成地址并验证寄信过程。
实际例子
一个私钥可能是:
5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn
从中生成的公钥可能是:
04x1...(很长的十六进制字符串)
最终的地址可能是:
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
(P2PKH类型)。
Last updated
Was this helpful?