比特币高清纸质钱包实现。
btc-hd-wallet的Python项目详细描述
安装
- 为您的操作系统安装python3.6或更高版本
- install吉特
- 安装btc_hd_钱包:
a.)通过皮皮
pip install btc_hd_wallet
b.)来源
# clone btc-hd-wallet repository git clone https://github.com/scgbckbone/btc-hd-wallet.git # change directory to project rootcd btc-hd-wallet # create virtual environment python3 -m venv btc-hd-wallet # activate virtual environmentsource btc-hd-wallet/bin/activate # upgrade pip, setuptools and wheel (optional) pip install -U pip setuptools wheel # install project python setup.py install # run unittests (optional) python setup.py test
基本钱包
^{pr2}$纸质钱包
frombtc_hd_walletimportPaperWalletw=PaperWallet.new_wallet()# to display paper wallet in consolew.pprint()# get python dictionary repsresentation of paper walltejson_dct=w.generate()# get json serialized string representation of paper walletjson_str=w.json(indent=4)# wasabi import file format (inspired by ColdCard)file_path="/home/john/wasabi0.json"w.export_wasabi(file_path=file_path)
私钥和公钥
frombtc_hd_walletimportPrivateKey,PublicKey# initialize private key object from secret exponentsk=PrivateKey(sec_exp=61513215313213513843213)# from wif formatsk=PrivateKey.from_wif("KxNH4NuQoDJjA9LwvHXn5KBTDPSG9YeoA7RBed2LwLRNqd1Tc4Wv")# from byte sequencesk=PrivateKey.parse(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15&X\xc0\xe3\xee\\\r$bU\x18')# secret exponentsecret_exponent=sk.sec_exp# to wifwif_str=sk.wif(testnet=False)# to bytessk_bytes=bytes(sk)# to access corresponding public keypk=sk.K# RIPEMD160(SHA256) of public keyh160=pk.h160()# p2pkh testnet addressp2pkh=pk.address(addr_type="p2pkh",testnet=True)# p2wpkh address (p2wpkh is default 'addr_type')p2wpkh=pk.address()# SEC encoding (bytes)sec=pk.sec()# elliptic curve pointpoint=pk.point# public key can also be parsed from secsec_str="030975d7fc3e27bcb3d37dd83a84f5ae2f48cec392e781e35ec849142bcc6e2cce"pk=PublicKey.parse(bytes.fromhex(sec_str))# or from ecdsa Point or PointJacobipk=PublicKey.from_point(point)
Bip39相关方法
frombtc_hd_walletimport(bip39_seed_from_mnemonic,mnemonic_from_entropy_bits,mnemonic_from_entropy)# mnemonic from number of entropy bits (allowed entropy bits 128,160,192,224,256)menmonic=mnemonic_from_entropy_bits(entropy_bits=256)# mnemonic from entropy hexmnemonic=mnemonic_from_entropy("0a84d45bb74a0d80c144f9ad765c3b9edc40a8dbb5c053c0930ef040992036d2")# create bip39 seed from mnemonicseed=bip39_seed_from_mnemonic(mnemonic=mnemonic)# or with optional passwordseed=bip39_seed_from_mnemonic(mnemonic=mnemonic,password="secret")
脚本
fromioimportBytesIOfrombtc_hd_walletimportBaseWalletfrombtc_hd_walletimport(Script,p2wsh_script,p2wpkh_script,p2sh_script,p2pkh_script)# you can parse script hexscript_hex="1976a9148ca70d5eda840e9fb5d38234ae948dfad1d266d788ac"script=Script.parse(BytesIO(bytes.fromhex(script_hex)))str(script)>OP_DUPOP_HASH1608ca70d5eda840e9fb5d38234ae948dfad1d266d7OP_EQUALVERIFYOP_CHECKSIG# script can be raw serializedscript.raw_serialize()# or it can be serialized with length prependedscript.serialize()# or creating script pubkeys from walletw=BaseWallet.new_wallet()# derive some child node to use (I'll go with bip84)node=w.by_path("m/84'/0'/100'/0/0")hash160_pub_key=node.public_key.h160()script=p2wpkh_script(hash160_pub_key)str(script)>OP_08ca70d5eda840e9fb5d38234ae948dfad1d266d7
Bip85型
frombtc_hd_walletimportBIP85DeterministicEntropyxprv="xprv9s21ZrQH143K2n9ryKS5EXxvQaNSbCxrVHSUigxG9ywY6GVQYsrk6n8e9j6m9z9LvBULFnSyjcLFxbG6WtXoeYRF19f1FY23nni39XSLPWm"# create new deterministic entropy object from extended private keybip85=BIP85DeterministicEntropy.from_xprv(xprv=xprv)# bip39 mnemonicbip85.bip39_mnemonic(word_count=24,index=0)>liftboostvaguevanishoccurstampeagletwicekitepausesunnyexecutedefygrocerymercyassistvolumeventuresubjectanalystfiscallectureconnectbunkerbip85.bip39_mnemonic(word_count=12,index=0)>goodbravehuntlicensedeliverconductmoredutchdonkeygreenskillgaugebip85.bip39_mnemonic(word_count=15,index=1)>vesselnervebuzzwifegoodskisockwalnutcrewtowardteamvastdynamicparadecandy# wallet import format (WIF)bip85.wif(index=0)>'KyxeP1pijLmtKZv8ry7d3tbNsq3XDeGgN99Mqi2Gn2Kx6WwPr2wC'bip85.wif(index=1)>'KxsrnifkxsZTBeP52VxHzZGawyUSULBi1trHrJhU7ndQxkTXguFJ'# extended private key (XPRV)bip85.xprv(index=0)>'xprv9s21ZrQH143K2SrZ37WGmQ4TcqHbcAxy7tfuoVNZBxnd7huX6XuD2UZBUuXVfrZjjtw5X3B9JgUvoVegVALTeTXWsiUSK9F4FWXFZLfZVzV'bip85.xprv(index=1)>'xprv9s21ZrQH143K4RPx2iS7FecFHCUiC4CA2x4PqY6rtqjgqpxqWNcTxK88oRDyiZf8WiTLA6GWwR7BSoFkjjNSEx4wAgGq7nnxukd2FJP7AKH'# hexbip85.hex(index=0)>'78ebebfc701429f60ab4540168950c8fc9db5d275324545e7512f9e23b1fcd42'bip85.hex(num_bytes=64,index=0)>'2205163efb2ae4e78609b4a7410e9a4856f673b04dd0af7ce9851a9f2f7883c854f76a3e1cf639c217adde4956604dcdd853104dfcb93751856e3e13dcb9ab35'# bip85 is also available in BaseWallet class as its attributefrombtc_hd_wallet.base_walletimportBaseWalletw=BaseWallet.new_wallet()type(w.bip85)==BIP85DeterministicEntropy>True
文件
Sphinx文档位于docs
子目录中。
从那里运行make html
从docstring创建html文档。
文档html可在docs/build/html/index.html
中找到
从属关系:狮身人面像
pip install Sphinx
路线图:
这个项目正在进行中
- 支持bip32、bip44、bip49、bip84、slip132(P2SH中的多签名P2WSH、多签名P2WSH)的基本高清纸质钱包生成器
- 储存
- 网络通话
- (待定)
- 项目
标签: