Title: Алгоритм расчета баланса BTC адреса Post by: msnya on March 10, 2020, 08:40:11 PM Здравствуйте!
Хочу написать приложение которое рассчитывало бы баланс любого(не только того от которого есть приватный ключ) BTC адреса без использования сторонних сервисов. Есть полная нода и доступ к RPC из Python. Подскажите пожалуйста, какой должен быть алгоритм вычисления баланса заданного адреса? Есть ли варианты или существует только единственный способ? Title: Re: Алгоритм расчета баланса BTC адреса Post by: A-Bolt on March 10, 2020, 09:40:34 PM Подскажите пожалуйста, какой должен быть алгоритм вычисления баланса заданного адреса? Code: bitcoin-cli scantxoutset "start" "[\"addr(171KH93nrksmH5r89eGiyGM5R7RJh2g3nE)\"]" Title: Re: Алгоритм расчета баланса BTC адреса Post by: kzv on March 11, 2020, 09:38:14 AM Я обычно делаю так
Code: importaddress Title: Re: Алгоритм расчета баланса BTC адреса Post by: msnya on March 11, 2020, 07:16:35 PM Подскажите пожалуйста, какой должен быть алгоритм вычисления баланса заданного адреса? Code: bitcoin-cli scantxoutset "start" "[\"addr(171KH93nrksmH5r89eGiyGM5R7RJh2g3nE)\"]" Спасибо! Работает! Я обычно делаю так ПоробовалCode: importaddress Code: importaddress Code: error: Could not connect to the server 127.0.0.1:8332 (error code 0 - "timeout reached") Code: getbalance То есть не только того адреса который был импортирован, но и тех которые были сгенерированы кошельком ранее? Также в описании процедуры importaddress сказано что: Quote Requires a new wallet backup. Нужен бэкап? Как это понимать?Note: This call can take over an hour to complete if rescan is true, during that time, other rpc calls may report that the imported address exists but related transactions are still missing, leading to temporarily incorrect/bogus balances and unspent outputs until rescan completes. Title: Re: Алгоритм расчета баланса BTC адреса Post by: A-Bolt on March 11, 2020, 09:03:22 PM Code: importaddress Code: error: Could not connect to the server 127.0.0.1:8332 (error code 0 - "timeout reached") Возможно, команда в конце концов выполнилась и адрес таки импортировался, просто соединение разорвалось по тайм-ауту раньше окончания выполнения команды. При выполнении importaddress сканируется весь блокчейн для восстановления всей истории транзакций по этому адресу и получения итогового баланса, поэтому так долго всё это происходит. Команда scantxoutset выполняется быстрее, поскольку сканируется не база блокчейна, а база UTXO - непотраченных выходов транзакций, которая намного меньше. Но зато scantxoutset не позволяет получить историю транзакций. И соответственно, Code: getbalance То есть не только того адреса который был импортирован, но и тех которые были сгенерированы кошельком ранее? Верно. Покажет суммарный баланс по всем адресам, хранящимся в wallet.dat. Также в описании процедуры importaddress сказано что: Quote Requires a new wallet backup. Нужен бэкап? Как это понимать?Когда вы импортируете в wallet.dat адрес или приватный ключ, то в бэкапе этот адрес сам по себе ведь не появится, нужно сделать актуальныю копию уже со свежеимпортированным адресом. Title: Re: Алгоритм расчета баланса BTC адреса Post by: kzv on March 12, 2020, 05:57:20 AM importaddress можно вызвать с параметром false, тогда рескан блокчейна не происходит. Я так понимаю, что в этом случае тоже только utxo сканируется?
Баланс по адресу потом можно посчитать командой listunspent Title: Re: Алгоритм расчета баланса BTC адреса Post by: msnya on March 12, 2020, 04:03:18 PM Quote Quote from: msnya on March 11, 2020, 07:16:35 PM Действительно выполнилась! Баланс импортированного таким образом адреса получилось проверить:Code: importaddress не прокатило, закончилось на: Code: error: Could not connect to the server 127.0.0.1:8332 (error code 0 - "timeout reached") Возможно, команда в конце концов выполнилась и адрес таки импортировался, просто соединение разорвалось по тайм-ауту раньше окончания выполнения команды. При выполнении importaddress сканируется весь блокчейн для восстановления всей истории транзакций по этому адресу и получения итогового баланса, поэтому так долго всё это происходит. Code: bitcoin-cli listreceivedbyaddress 0 true true "addres" Когда вы импортируете в wallet.dat адрес или приватный ключ, то в бэкапе этот адрес сам по себе ведь не появится, нужно сделать актуальныю копию уже со свежеимпортированным адресом. Сделал, но зачем в бэкапе нужен адрес без Приватного ключа - не очень понятно. importaddress можно вызвать с параметром false, тогда рескан блокчейна не происходит. Я так понимаю, что в этом случае тоже только utxo сканируется? После имопрта importaddress с параметром false, попробовал listreceivedbyaddress - отображает баланс не правильный. Баланс по адресу потом можно посчитать командой listunspent А вот еще возник у меня вопрос, не совсем по теме. Не знаю, может поправить название темы, не открывать же новую для этого вопроса? Мониторинг МемПула. Предположим есть адрес "35hK24tcLEWcgNA4JxpvbkNkoAcDGqQPsP", и я хочу узнать когда он станет фигурировать в качестве входа или выхода транзакции из МемПула. Как лучше реализовать такой мониторинг? Title: Re: Алгоритм расчета баланса BTC адреса Post by: kzv on March 12, 2020, 04:48:34 PM Вообще listreceivedbyaddress должен показывать сколько получено на адрес, а не остаток на адресе. Остаток надо считать суммированием непотраченных выходов которые получаются командой listunspent
Title: Re: Алгоритм расчета баланса BTC адреса Post by: msnya on March 12, 2020, 06:01:44 PM importaddress можно вызвать с параметром false, тогда рескан блокчейна не происходит. Я так понимаю, что в этом случае тоже только utxo сканируется? Чет у меня не прокатывает...Баланс по адресу потом можно посчитать командой listunspent После импорта без индексации делаю вот так: Code: bitcoin-cli -rpcuser=rpcuser -rpcpassword=rpcpassword listunspent 1 9999999 "[\"1KUr81aewyTFUfnq4ZrpePZqXixd59ToNn\"]" true В чем может быть ошибка? Так, по дрогу адресу получается выполнить listunspent, буду разбираться в чем разница... Title: Re: Алгоритм расчета баланса BTC адреса Post by: kzv on March 12, 2020, 06:41:47 PM А блокчейн полностью скачан или в пруне?
Title: Re: Алгоритм расчета баланса BTC адреса Post by: msnya on March 12, 2020, 07:02:29 PM А блокчейн полностью скачан или в пруне? Code: "pruned": false, Code: bitcoin-cli getblockchaininfo Title: Re: Алгоритм расчета баланса BTC адреса Post by: kzv on March 12, 2020, 07:12:46 PM А блокчейн полностью скачан или в пруне? Code: "pruned": false, Code: bitcoin-cli getblockchaininfo Значит importaddress с параметром false не сканирует utxo. Нужно с параметром true вызывать :( |