扩展密钥标准结构 比特币钱包代码示例

2025-09-25 18:00:00
admin
原创 115
摘要:扩展密钥标准结构 比特币钱包代码示例

一、扩展密钥标准结构

1、标准结构:https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki

2、标准结构p2pkh:https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

3、标准结构p2wpkh:https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki

4、bip32默认结构:m account' / change / address_index,默认账户m / 0' / *

5、bip44标准结构:m / purpose' / coin_type' / account' / change / address_index

6、bip84标准结构:m / purpose' / coin_type' / account' / change / address_index

7、purpose密钥结构类型,coin_type加密币类型,account账号change是否找零

8、change=0用于外部收款场景,change=1用于内部找零场景;

9、如果一个账号没有一笔交易,则不应该创建第二个账号;


枚举值:

1、密钥结构类型:https://github.com/satoshilabs/slips/blob/master/slip-0132.md

2、加密币类型:https://github.com/satoshilabs/slips/blob/master/slip-0044.md

3、密钥结构类型:44-0x0488b21e-xpub,84-0x04b24746-zpub

4、加密币类型:BTC=0x80000000,ETH=0x8000003c,Testnet=0x80000001


二、比特币钱包代码示例

1、bitcoinlib帮助文档:https://bitcoinlib.readthedocs.io/en/latest

2、bitcoinlib代码仓库:https://github.com/petertodd/python-bitcoinlib

3、bitcoinlib代码示例:https://github.com/1200wd/bitcoinlib/tree/master/examples

4、解析地址:pprint(deserialize_address("1CJqoFv6Zjq4yTXd5GUSKYrqUpqifWQooh"))


引入依赖:

from bitcoinlib.wallets import *
from bitcoinlib.keys import *
from pprint import pprint


创建钱包:

print("=== Create a wallet ===")
walletName = 'walletDemo'
w = wallet_create_or_open(walletName)
wkey = w.get_key()
print(wkey.address)
print(w.info())


导入私钥:

print("\n=== Import Private key ===")
k = Key('1a4a977d877204edab6ef27b0152fa0a2448aa7eb884e2128e3413810279f60c')
print(k.private_hex)
print(k.public_hex)
print(k.address())


导入公钥:

print("\n=== Import Public key ===")
k = Key('024973089d2ec876daca936cfda64b5e163d64b7d206ab8a7c53e13585b7b29eeb')
print(k.private_hex)
print(k.public_hex)
print(k.address())


导出密钥:

print("\n=== Import from seed ===")
hdk = HDKey.from_seed('1a4a977d877204edab6ef27b0152fa0a2448aa7eb884e2128e3413810279f60c')
print(hdk.private_hex)
print(hdk.public_hex)
print(hdk.address())
hdk = hdk.key_for_path("m/1/0'/999")
print(hdk.private_hex)
print(hdk.public_hex)
print(hdk.address())

发表评论
评论通过审核之后才会显示。