Биткойн-клиент API-RPC: эффективный способ перечисления транзакций из списка адресов

В списке вызовов API: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

Вы можете передать адрес в качестве параметра «listtransactions», чтобы получить последний список транзакций с адреса. Что, если я хочу получить последние 25 транзакций из списка из 20 адресов. Означает ли это, что я должен сделать вызов «listtransactions» 20 раз, а затем отсортировать конечные результаты?

Вызов конечной точки API 20 раз — это нормально, моя проблема в том, что если нам нужно выполнить разбиение на страницы, это очень быстро станет очень неуправляемым, потому что действительно сложно определить, что такое транзакции 26-50 с 20 разных адресов.

Спасибо

РЕДАКТИРОВАТЬ: я обнаружил, что BlockchainInfo предлагает очень удобную конечную точку для этого:

https://blockchain.info/api/blockchain_api

Конечная точка: http://blockchain.info/multiaddr?active= $address|$address (несколько адресов, разделенных знаком |). Однако это возвращает только "txs":[--Последние 50 транзакций--] и не вам сделать смещение (например, чтобы получить транзакцию 51-100)

Если вы нашли ответ на свой вопрос, пожалуйста, опубликуйте его как ответ. Используйте правки только для уточнения вашего вопроса.
@StéphaneGimenez, спасибо за уведомление. Хотя ответа на свой вопрос я так и не нашел. Я нашел частичное решение, которое не отвечает моим потребностям.

Ответы (1)

Самый эффективный способ получить список транзакций с нескольких адресов — хранить каждую транзакцию кошелька в локальной базе данных, например MySQL или MongoDB, а затем выполнять запросы к этой базе данных.

Вы можете синхронизировать свою локальную базу данных с биткойн-кошельком через RPC, периодически вызывая listsinceblock() и отслеживая последний блок, или запустив клиент с необязательным параметром -walletnotify, чтобы запустить скрипт для уведомления вашей базы данных о новых транзакциях.

Однако будьте осторожны с -walletnotify. Он будет вызываться дважды для каждой транзакции, и если у вас много транзакций, это может произойти много. Поэтому убедитесь, что команда -walletnotify не использует много ресурсов ЦП/ОЗУ.

Эй, это именно то, что я пытаюсь сделать, хранить депозитные транзакции для каждого уникального адреса пользователя из вывода, полученного от listsinceblock. Я хотел бы спросить, при подсчете суммы депозитов для каждого уникального адреса пользователя учитываются ли транзакции только одной категории receiveи generateигнорируются ли все другие категории транзакций?