Как проще всего проверить, каков был баланс адреса X в блоке Y? (без сторонних сервисов)

Мне нужно иметь возможность проверить баланс на каждом адресе. До сих пор я пробовал used getreceivedbyaddress, но насколько я понимаю, с помощью этой команды я могу проверить только те адреса, которые у меня есть в моем кошельке, верно?

Я также нашел информацию, что для возможности анализа чужих транзакций мне нужно установить в моем файле txindex=1биткойнов . bitcoin.confЯ читал, что это поможет мне, с помощью getrawtransactionкоторого я смогу получить подробную информацию о любой транзакции. Поможет ли txindex=1также getreceivedbyaddress?

и последнее, но не менее важное... как проверить баланс определенного адреса в прошлом? Могу ли я использовать , getreceivedbyaddress <address> 100000где 100000будет количество необходимых подтверждений, чтобы я проверял 100000блоки в прошлом?

Ответы (1)

Как вы правильно заметили getreceivedbyaddress, не возвращает значение для адресов, отличных от узлов, то есть адресов, которые не находятся в вашем кошельке узлов.

txindex=1 в файле конфигурации с последующим перезапуском bitcoind с параметром -reindex создает индексы для всех tx, чтобы вы могли открыть их с помощью getrawtransaction и проверить детали внутри транзакции.

Единственный способ проверить баланс адресов в любом заданном блоке — это просканировать все блоки перед рассматриваемым блоком и проверить выход каждой транзакции, содержит ли он рассматриваемый адрес. Также вам нужно будет проверить, не были ли потрачены какие-либо из только что пройденных голосов, что соответственно уменьшило бы баланс.

Причина, по которой существуют сторонние службы для решения именно этой проблемы, подтверждает мнение о том, что это очень сложно, что вы можете получить после прохождения ответа.
Сторонние библиотеки в порядке, пока я могу запускать их на своем собственном компьютере, чтобы не рассчитывать на какой-то сервер, который мне не принадлежит.