跳到主要内容

比特币地址

介绍什么是比特币和MVC的地址。

地址简介

地址是UTXO接收者的标志,用于表示接收方的身份。它根据形态有多种类型,有些地址是通过公钥哈希 生成的,有些是通过脚本哈希生成的,有些是通过公钥生成的,根据不同的情况,地址的计算方法可能不同。

比特币地址是用户接收比特币的唯一标识符,相当于银行账户号码。它们通常以一串字母和数字组成,用于接收和发送比特币交易。比特币地址本质上是由公钥生成的,确保了用户的隐私和安全。

地址的计算

比特币地址的生成过程如下:

  1. 生成私钥:使用加密算法(如椭圆曲线加密)生成一个随机的私钥。
  2. 生成公钥:通过椭圆曲线数字签名算法(ECDSA)从私钥生成公钥。
  3. 计算地址
    • 公钥通过SHA-256和RIPEMD-160哈希算法得到公钥哈希(Public Key Hash)。
    • 公钥哈希加上版本前缀(通常是0x00,表示主网地址)得到一个新的哈希值。
    • 对新的哈希值进行双重SHA-256哈希运算,取前4个字节作为校验和。
    • 将校验和附加到公钥哈希后,得到最终的比特币地址。
  4. Base58编码:将上述得到的比特币地址进行Base58编码,生成最终的人类可读的比特币地址。

地址编码和校验

比特币地址的编码使用Base58Check编码。Base58是为了避免字符混淆而设计的编码方式,去除了容易混淆的字符(如0, O, l, I等)。Base58Check编码包含两部分:

  1. Base58编码:将地址数据进行Base58编码。
  2. 校验和:在地址数据后添加4字节的SHA-256哈希校验和,确保地址的有效性。

主网和测试网地址的区别

比特币主网和测试网的地址在前缀上有所不同:

  • 主网地址:通常以13开头,前缀为0x00(P2PKH)或0x05(P2SH)。
  • 测试网地址:通常以mn开头,前缀为0x6F(P2PKH)或0xC4(P2SH)。

主要的地址格式

P2PK(Pay-to-PubKey)

P2PK地址直接将公钥用于接收比特币,通常不单独使用,而是作为P2PKH的基础。P2PK交易脚本如下:

<pubkey> OP_CHECKSIG

P2PKH(Pay-to-PubKeyHash)

P2PKH是最常见的地址格式,基于公钥哈希生成地址。P2PKH地址通常以1开头。P2PKH交易脚本如下:

OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

P2SH(Pay-to-Script-Hash)

P2SH地址允许更复杂的脚本和条件支付,基于脚本哈希生成地址。P2SH地址通常以3开头。P2SH交易脚本如下:

OP_HASH160 <scriptHash> OP_EQUAL

P2MS(Pay-to-MultiSig)

P2MS地址用于多重签名支付,需要多个私钥签名才能解锁比特币。P2MS交易脚本如下:

<m> <A_pubKey> <B_pubKey> <C_pubKey> <n> OP_CHECKMULTISIG

其中,m是最小签名数量,n是公钥数量。

总结

地址是比特币和MVC网络中的重要组成部分,用于标识交易接收方。不同类型的地址适用于不同的使用场景,从简单的单一签名到复杂的多重签名机制。了解比特币地址的生成、编码和校验过程,有助于更好地理解比特币的安全性和隐私保护机制。