В настоящее время я использую кошелек Ledger, и мне сложно подключать его каждый раз, когда я хочу проверить свой баланс.
У меня есть доступ к моему мастер-ключу xpub, как мне узнать все соответствующие ему адреса? Есть ли сайт, на котором размещен этот сервис и есть API?
Я нашел в Интернете скрипт, который делает это, но он написан на PHP и довольно медленный. Я ищу что-то совместимое с python.
Вы можете использовать блокономику , это довольно быстро. У него также есть API для баланса данного xpub.
Если вы не хотите отправлять свой xpub на сервер, вы можете использовать https://github.com/dan-da/hd-wallet-addrs . Это выберет службу API случайного баланса для каждого адреса и проведет пошаговое руководство в формате HD.
Добавлен пример кода с использованием blockr api, извлекает балансы сразу для 20 адресов, должно быть довольно быстро
import pycoin.key
import sys
import os
os.environ["PYCOIN_NATIVE"]="openssl"
import requests
BATCH_SIZE = 20
BLOCKR_URL= "http://btc.blockr.io/api/v1/address/info"
def get_used_addresses(xpub, account_type):
xpub_subkey = xpub.subkey(account_type)
index = 0
addr_batch = []
output = []
while True:
addr = xpub_subkey.subkey(index).bitcoin_address()
addr_batch.append(addr)
if (index+1)%BATCH_SIZE==0:
results = requests.get("{}/{}".format(BLOCKR_URL, ",".join(addr_batch))).json()
addr_batch = []
used_addrs = [x["address"] for x in results['data'] if not x["is_unknown"]]
if (used_addrs):
output.extend(used_addrs)
else:
break
index += 1
return output
def main():
xpub = pycoin.key.Key.from_text(sys.argv[1])
result = []
result.extend(get_used_addresses(xpub, 0))
result.extend(get_used_addresses(xpub, 1))
print result
if __name__ == "__main__":
main()
пицца