Определить баланс адреса с помощью биткойн-ядра

Мне трудно понять, как вычислить баланс данного биткойн-адреса, используя только стандартный API RPC. Я хотел бы распространить эту логику и на клоны биткойнов, поэтому решение должно использовать только стандартные вызовы API (например, только вызовы, перечисленные здесь https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list )

Можете ли вы придумать способ сделать это?

Ответы (2)

Насколько я знаю, это невозможно сделать с помощью Bitcoin Core и его производных.

Единственный известный мне способ сделать это с помощью Bitcoin Core — использовать importaddressили importmultiдобавить свой адрес(а) в кошелек только для просмотра, но для этого требуется полное повторное сканирование блокчейна для вычисления баланса. Это занимает от нескольких минут до нескольких часов в зависимости от скорости вашего оборудования.

(Обратите внимание, что предоставленная вами ссылка на bitcoin.it устарела и охватывает только API до версии 0.8, поэтому вы не найдете там этих команд.)

Вам нужно будет использовать какое-то другое программное обеспечение, которое фактически индексирует все транзакции в блокчейне по адресам их получения. Например, это то, что делает обозреватель блоков.

У нас было много других вопросов, подобных этому, поэтому, возможно, есть некоторые предложения: https://bitcoin.stackexchange.com/search?q=get+address+balance

Использование importaddress — хорошая идея! Я не возражаю против повторного сканирования, потому что адрес не будет часто меняться. Будут ли у меня проблемы при попытке потратить биткойны, если в моем кошельке есть импортированный адрес только для просмотра?
@Paul: Не то, чтобы я знал. Кошелек знает, что монеты в адресе только для просмотра ему не принадлежат, и будет игнорировать их при попытке потратить монеты.

Я написал программу на Python3, которая позволяет вам искать любой адрес в биткойн-ядре, независимо от того, принадлежит ли он вашему кошельку или нет.

Вот ссылка на гитхаб:

https://github.com/ORP967/Bitcoin_Core_RPC_par_адрес

Дайте мне знать, что вы думаете, или если у вас есть какие-либо улучшения, которые вы могли бы иметь.