¿Cómo hacer devoluciones de llamada de dirección?

Estoy creando una aplicación web que necesita actualizar la información de la cuenta y enviar un mensaje cuando la dirección de una cuenta recibe un depósito o confirma retiros.

No estoy seguro de cuál es la mejor manera de hacer esto. ¿Tendría una aplicación separada para seguir enviando llamadas API a blockchain.info hasta que llegue una nueva transacción? Entonces, ¿iniciar la función de devolución de llamada correcta?

El uso de blockchain.info parece endeble, ya que es un servicio de terceros. ¿Cómo harías esto monitoreando la red bitcoin? Parece que usar cualquier cliente de bitcoin dependería de alguna acción de línea de comandos. ¿La mejor manera sería continuar enviando la acción de la línea de comandos hasta que los datos devueltos sean diferentes y luego iniciar la devolución de llamada? ¿Hay un mejor patrón de diseño que me falta?

¿Está tratando de decirle a su usuario cuándo su dinero ha ingresado a su billetera? ¿No debería su billetera decirles eso?
La billetera puede saber que se recibió bitcoin, pero ¿cómo sabría la billetera enviar un correo electrónico / notificar al usuario específico? Se necesita una devolución de llamada a la dirección.

Respuestas (2)

Si confía en bitcoind y la API JSON-RPC, puede intentar iniciar el demonio con la opción -walletnotify.

bitcoind -daemon -waletnotify="process-txn.sh %s"

Esto llamará process-txn.shcon la identificación de la transacción en la entrada. Luego puede consultar el daemon para obtener detalles de la transacción.

¿Walletnotify no funciona solo para direcciones registradas? ¿Cómo obtener todas las transacciones? Claramente el nodo lo recibe. Bitcoinj lo permite.

He creado un servicio de código abierto que hace exactamente esto. Cada vez que se genera una nueva dirección, se asocia con una cuenta en una base de datos. El cliente de Bitcoin se ejecuta utilizando el comando opcional -walletnotify para notificar a la base de datos sobre la nueva transacción. Cuando la base de datos recibe una nueva transacción, la cuenta asociada a esa dirección puede ser notificada.

Visite https://bitlab.co/wallet para ver una demostración de esto en acción. Además, la fuente del back-end está disponible en https://github.com/bitlabco/bitlab-nodejs