比特币中的私钥是访问和使用某个比特币地址中资金的唯一凭证, 一旦私钥泄露, 资金将会被盗。
公钥是由私钥计算生成的, 计算过程不可逆, 故公钥可以暴露给任何人。
地址是公钥按照特定的算法生成的, 目的为不同类型的 UTXO
创建锁定脚本。例如地址是 P2PKH
类型, 则创建的锁定脚本也是 P2PKH
类型。
私钥
私钥是随机生成的 256 个比特位, 即随机生成 256 个 0 或 1, 一个字节是 8 个比特位, 共 32 个字节。
私钥
公钥
公钥由私钥计算而来。私钥乘以椭圆曲线 secp256k1
的基点 G 得到公钥。主要应用在 P2PK
类型的 UTXO
。
公钥
地址
比特币地址用于接收比特币。并根据地址类型生成不同的锁定脚本。
地址的计算方式有 Base58
, Bech32
, Bech32m
。
Base58
Base58
用于生成 P2PKH
和 P2SH
地址。
Base58 地址生成器
-
P2PKH
地址在主网上总是以1
开头, 测试网上总是以m
或n
开头。 -
P2SH
地址在主网上总是以3
开头, 测试网上总是以2
开头。
Base58Check
从 Step 2 到 Step 4 这整个过程称作 Base58Check
编码。
相比于单一的 Base58
编码, Base58Check
添加了版本前缀, 可以快速识别不同的地址类型, 另外添加校验和也保证了数据的完整性和安全性。
如果将比特币发送到 P2PKH
地址, 通过 Base58Check
解码, 可计算出 公钥哈希
并创建创建一个 P2PKH
锁定脚本。
Base58
地址格式也用于 P2SH
锁定脚本, 不同的是 P2SH
使用的是脚本哈希
Bech32
Bech32
用于见证版本V0 的地址生成。
Bech32 地址生成器
当将比特币发送到 P2WPKH
地址, 将从地址中解码出公钥哈希,并创建一个 P2WPKH
锁定脚本。
Bech32
地址格式也用于 P2WSH
锁定脚本,不同的是 P2WSH
使用的是赎回脚本哈希。
P2WPKH
和 P2WSH
地址在主网上总是以 bc1q
开头, 测试网上总是以 tb1q
开头。
Bech32m
Bech32m
用于生成 Taproot
地址。与其他类型的地址不同, Taproot
地址由 Taproot
公钥生成的。
Taproot
公钥是原始公钥的 X 坐标 加上 脚本树的 Tweak
值乘以 Secp256k1
的基点 G 的和 , 其中 P
是原始公钥的 X 坐标, t
是脚本树的 Tweak
值。
Taproot 地址生成器
Taproot
地址在主网上总是以 bc1p
开头, 测试网上总是以 tb1p
开头。
当接收地址是 Taproot
地址时, 对地址进行 Bech32m
解码, 可以得到 Taproot
公钥, 从而创建 Taproot
锁定脚本。
WIF
随机生成的私钥不能直接导入钱包, 需要将原始私钥转换为 WIF 私钥。
WIF(Wallet Import Format
)是一种在钱包之间导入导出时使用的私钥格式。
WIF私钥生成器
WIF 私钥总是以固定字符开头:
- 主网: 未压缩私钥以
5
开头, 压缩私钥以K
或L
开头 - 测试网: 未压缩私钥以
9
开头, 压缩私钥以c
或t
开头