python - Bitcoinlib 不会从我的主公钥返回所有地址
问题描述
用 Bitcoinlib 制作了一个钱包,将key
参数设置为我的主公钥。但是,当尝试使用他们的depth=-1
标志打印我所有地址的列表时,应该显示与我的密钥关联的所有地址,但是它只返回一个包含 3 个地址的列表。
代码
# Creation of the wallet was done before like so:
# Wallet.create("Ledger", keys=xpub)
# However after creating a wallet Bitcoinlib stores it locally so you don't make one everytime.
from bitcoinlib.wallets import Wallet
import base64, secrets
def base64_encode(string: str):
b64 = base64.b64encode(string.encode('ascii'))
return b64.decode('ascii')
def base64_decode(string: str):
b64 = base64.b64decode(string.encode('ascii'))
return b64.decode('ascii')
xpub = base64_decode(secrets.xpub)
wallet = Wallet("Ledger")
print(wallet.addresslist(depth=-1))
输出:['bc1qg2rl6fjutq4knttna2cqlssjp3vlmr9g0wxvk5', 'bc1qw84m5u94tt8xujesl78yq5tnswm58r309nrmus', 'bc1qlu5yuz0vsm7r867mslgkf2v89976y8qtfflvps']
编辑:我知道主公钥有更多相关的地址,因为在 Electrum 它已经显示了与这个主公钥相关的 30 多个地址
解决方案
创建钱包时,bitcoinlib 仅生成主密钥和派生密钥地址。
要创建新的付款地址和更改地址,您可以使用:
wallet.new_key()
或者获取 10 个新的未使用地址(无论是否创建):
wallet.get_keys(number_of_keys=10)
注意:命令 wallet.addresslist(depth=-1) 显示所有生成的地址,还有主密钥、支付/更改密钥以及介于两者之间的所有内容。通常 wallet.addresslist() 应该足够了:这仅返回用于更改和付款的密钥/地址。
推荐阅读
- node.js - 我们可以在服务器端编辑(位置、比例等)glTF 模型(没有三个.js)吗?
- python - 使用 Python sllurp 库读取 Motorola/Zebra FX9500 RFID 阅读器的标签清单
- python - TypeError:无法连接“str”和“UUID”对象
- java - Eclipse 中 HttpClient 对象的 JBOSS/Wildfly 中的 LinkageError
- c++ - 在本地使用 reference_wrapper 初始化向量
- node.js - 无法读取长度 - 接口内的字符串数组
- c# - 如何从目录列表文件中递归地填充树?
- java - 如何从硒的下拉列表中选择选项
- c++ - 按第二个元素对向量对进行排序,然后在第二个元素相等时按第一个元素按降序排序
- sql - 如何减少自联接查询的逻辑读取?