第4章:编程实战,用程序编写、理解不同地址类型的交易
本文我们要通过比特币测试网的编程,彻底实践比特币脚本的编程,并理解不同地址类型的交易。
我们的路径是,用前文谈到的脚本产生一系列钱包。先通过水龙头,让传统地址(P2PKH)获得测试币,然后传统地址给Segwit地址(P2WPKH),然后Segwit地址支付到Taproot地址(P2TR),最后Taproot地址付款给Taproot地址。
产生钱包地址
# 生成比特币钱包
key = Key(network='testnet')
# 生成私钥
private_key_hex = key.private_hex # 32 字节(256-bit)
private_key_wif = key.wif() # Base58Check 编码
# 生成公钥
public_key_compressed = key.public_hex # 33 字节,压缩格式
public_key_uncompressed = key.public_uncompressed_hex # 65 字节,未压缩格式
# 生成不同格式的比特币地址
legacy_address = key.address() # P2PKH (Base58, 1...)
segwit_native_address = key.address(encoding='bech32') # P2WPKH (Bech32, bc1q...)
segwit_p2sh_address = key.address(encoding='base58', script_type='p2sh') # P2SH-P2WPKH (3...)
taproot_address = key.address(script_type='p2tr') # P2TR (Bech32m, bc1p...)
# 打印结果
print("===== 比特币钱包信息 =====")
print(f"私钥(HEX): {private_key_hex}")
print(f"私钥(WIF): {private_key_wif}")
print(f"公钥(压缩): {public_key_compressed}")
print(f"公钥(未压缩): {public_key_uncompressed}")
print("\n地址类型:")
print(f"Legacy (P2PKH, Base58): {legacy_address}")
print(f"Segwit Native (P2WPKH, Bech32): {segwit_native_address}")
print(f"Segwit P2SH (P2SH-P2WPKH, Base58): {segwit_p2sh_address}")
print(f"Taproot (P2TR, Bech32m): {taproot_address}")得到如下结果
给myYHJtG3cyoRseuTwvViGHgP2efAvZkYa4获得了水。https://mempool.space/testnet/tx/34b90a15d0a9ec9ff3d7bed2536533c73278a9559391cb8c9778b7e7141806f7。 获得了0.00029606 tBTC。
Last updated