BIP32密钥推导方案的Python实现
项目描述
hdwallets
对BIP32规范的分层确定性钱包的基本实现。
基于https://github.com/darosior/python-bip32的一个分支,有一些显著的变化
使用方法
>>> import base58
>>> from hdwallets import BIP32, HARDENED_INDEX
>>> bip32 = BIP32.from_seed(bytes.fromhex("01"))
# Specify the derivation path as a list ...
>>> bip32.get_xpriv_from_path([1, HARDENED_INDEX, 9998])
b"\x04\x88\xad\xe4\x037\x01)\x0f\x00\x00'\x0e7\xf9\xe7)\x8dCJ\x8b\xfb\xc2j#\xeb\xc0++\xdf}I\x80\xdfr\xef6\xad0\xf7K\x0ceE\xea\x00\xb3D8\x0b\x0e\xf4-\x9a\xe6\x91\xe9\x82\xe8\xbf\x9a\x97\x15\xfe?\x17\xdc[\xf7\xc5\xfb?\xbezaz\\\xb9"
# ... Or in usual m/the/path/
>>> bip32.get_xpriv_from_path("m/1/0'/9998")
b"\x04\x88\xad\xe4\x037\x01)\x0f\x00\x00'\x0e7\xf9\xe7)\x8dCJ\x8b\xfb\xc2j#\xeb\xc0++\xdf}I\x80\xdfr\xef6\xad0\xf7K\x0ceE\xea\x00\xb3D8\x0b\x0e\xf4-\x9a\xe6\x91\xe9\x82\xe8\xbf\x9a\x97\x15\xfe?\x17\xdc[\xf7\xc5\xfb?\xbezaz\\\xb9"
>>> bip32.get_xpub_from_path([HARDENED_INDEX, 42])
b"\x04\x88\xb2\x1e\x02\x11\xd4\xbb(\x00\x00\x00*\xaf?\xc3\x1bb)\x1d\x9e$\x91\xda\xc2b\x8e\x1fm\x7f6\x8c(\x8e'2.\x99-\xf2\xa1\x83\xd7F\x18\x03bB\xb0\xe5\x0b\xb8$\x97\xf0\xf3\xe47\xea\xd6\xd4\xa0\xe3~-#\xbf\t\xf5\x19\xb7\xd1\x06b\xb0\xac\xc5\xd4"
# You can also use "h" or "H" to signal for hardened derivation
>>> bip32.get_xpub_from_path("m/0h/42")
b"\x04\x88\xb2\x1e\x02\x11\xd4\xbb(\x00\x00\x00*\xaf?\xc3\x1bb)\x1d\x9e$\x91\xda\xc2b\x8e\x1fm\x7f6\x8c(\x8e'2.\x99-\xf2\xa1\x83\xd7F\x18\x03bB\xb0\xe5\x0b\xb8$\x97\xf0\xf3\xe47\xea\xd6\xd4\xa0\xe3~-#\xbf\t\xf5\x19\xb7\xd1\x06b\xb0\xac\xc5\xd4"
# You can use pubkey-only derivation
>>> bip32 = BIP32.from_xpub(base58.b58decode_check("xpub6AKC3u8URPxDojLnFtNdEPFkNsXxHfgRhySvVfEJy9SVvQAn14XQjAoFY48mpjgutJNfA54GbYYRpR26tFEJHTHhfiiZZ2wdBBzydVp12yU"))
>>> bip32.get_xpub_from_path([42, 43])
b'\x04\x88\xb2\x1e\x04\xf4p\xd4>\x00\x00\x00+h\xcf\xc2\xd1\xbe\x0c\\-:\x9fpDy\\x\xd5E\xc1\x988\xb1\xe2X\xd1\xba\xb1\xeac\x96\xb04\x8f\x02\xaf?<\xbe>\x92\xcc\xc1fq~\xa9\xcd\xcb\x10\xd5\x15]K\xd6\x10+\xdb\xa8\xb4\xedo\xd2hc\xf9x'
>>> bip32.get_xpub_from_path("m/42/43")
b'\x04\x88\xb2\x1e\x04\xf4p\xd4>\x00\x00\x00+h\xcf\xc2\xd1\xbe\x0c\\-:\x9fpDy\\x\xd5E\xc1\x988\xb1\xe2X\xd1\xba\xb1\xeac\x96\xb04\x8f\x02\xaf?<\xbe>\x92\xcc\xc1fq~\xa9\xcd\xcb\x10\xd5\x15]K\xd6\x10+\xdb\xa8\xb4\xedo\xd2hc\xf9x'
>>> bip32.get_pubkey_from_path("m/1/1/1/1/1/1/1/1/1/1/1")
b'\x02\x0c\xac\n\xa8\x06\x96C\x8e\x9b\xcf\x83]\x0c\rCm\x06\x1c\xe9T\xealo\xa2\xdf\x195\xebZ\x9b\xb8\x9e'
安装
pip install hdwallets
接口
以下所有公钥都是压缩的。
以下所有 path
都是表示每个深度的密钥索引的整数列表。
BIP32
from_seed(seed)
staticmethod
从原始种子(作为 bytes
)实例化。请参阅 bip-0032的主密钥生成。
from_xpriv(xpriv)
staticmethod
使用编码的序列化扩展私钥(作为 str
)作为主密钥实例化。
from_xpub(xpub)
staticmethod
使用编码的序列化扩展公钥(作为 str
)作为主密钥实例化。
您只能导出未硬编码的公钥。
get_extended_privkey_from_path(path)
返回指向路径的私钥的 (chaincode (bytes), privkey (bytes))
。
get_privkey_from_path(path)
返回指向路径的私钥的 privkey (bytes)
。
get_extended_pubkey_from_path(path)
返回指向路径的公钥的 (chaincode (bytes), pubkey (bytes))
。
注意,如果路径不包含索引 >= HARDENED_INDEX
,则不需要提供主私钥。
get_pubkey_from_path(path)
返回指向路径的公钥的 pubkey (bytes)
。
注意,如果路径不包含索引 >= HARDENED_INDEX
,则不需要提供主私钥。
get_xpriv_from_path(path)
返回指向给定路径的序列化和编码的扩展私钥的 xpriv (str)
。
get_xpub_from_path(path)
返回指向给定路径的序列化和编码的扩展公钥的 xpub (str)
。
注意,如果路径不包含索引 >= HARDENED_INDEX
,则不需要提供主私钥。
get_master_xpriv(path)
相当于 get_xpriv_from_path([])
。
get_master_xpub(path)
相当于 get_xpub_from_path([])
。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
hdwallets-0.1.2.tar.gz (10.4 kB 查看散列)
构建分发
hdwallets-0.1.2-py3-none-any.whl (8.6 kB 查看散列)