Bitcoin Client API-RPC: forma eficiente de listar transacciones de una lista de direcciones

En la lista de llamadas API: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

Puede pasar una dirección como parámetro a "listtransactions" para obtener la última lista de transacciones de una dirección. ¿Qué pasa si me gustaría obtener las 25 transacciones más recientes de una lista de 20 direcciones? ¿Significa esto que tengo que hacer la llamada "listtransactions" 20 veces y luego ordenar los resultados finales?

Llamar al punto final de la API 20 veces está bien, mi problema es que si necesitáramos hacer una paginación, se volvería muy inmanejable muy rápidamente, porque es muy difícil determinar cuáles son las transacciones 26-50 de 20 direcciones diferentes.

Gracias

EDITAR: Descubrí que BlockchainInfo ofrece un punto final muy conveniente para esto:

https://blockchain.info/api/blockchain_api

Punto final: http://blockchain.info/multiaddr?active= $address|$address (Múltiples direcciones divididas por |) Sin embargo, esto solo devuelve "txs":[--Las últimas 50 transacciones--] y esto no permite que haga una compensación (por ejemplo, para obtener la transacción 51-100)

Si encontró una respuesta a su pregunta, publíquela como respuesta. Solo use ediciones para aclarar su pregunta.
@StéphaneGimenez, gracias por el aviso. Aunque, no encontré una respuesta a mi pregunta. Encontré una solución parcial que no cubre mis necesidades.

Respuestas (1)

La forma más eficiente de obtener una lista de transacciones de varias direcciones es almacenar cada transacción de billetera en una base de datos local, algo como MySQL o MongoDB, y luego ejecutar sus consultas en esa base de datos.

Puede sincronizar su base de datos local con la billetera Bitcoin a través de RPC llamando periódicamente a listsinceblock() y realizando un seguimiento del último bloque o ejecutando el cliente con el parámetro opcional -walletnotify para ejecutar un script para notificar a su base de datos sobre nuevas transacciones.

Sin embargo, tenga cuidado con -walletnotify. Se llamará dos veces por cada transacción y si tiene muchas transacciones, puede suceder muchas. Así que asegúrese de que las llamadas de comando -walletnotify no usen mucha CPU/RAM.

Oye, esto es exactamente lo que estoy tratando de hacer, almacenar transacciones de depósito para cada dirección de usuario única de la salida recibida de listsinceblock. Me gustaría preguntar, al calcular la suma de los depósitos para cada dirección de usuario única, ¿se consideran las transacciones solo de categoría receivee generateignoran todas las demás categorías de transacciones?