¿Cuál es la mejor manera de monitorear las direcciones que no son de billetera para nuevas transacciones?

El objetivo principal es tener la confirmación de "pago realizado" lo más rápido posible, en unos segundos.

La primera opción es implementarlo yo mismo. Ahora tengo la siguiente implementación basada en la consulta de Bitoin-qt desde la API de .NET: Recibo todos los ID de transacción nuevos usando getrawmempool y luego itero a través de cada uno de ellos para obtener detalles usando getrawtransaction para encontrar transacciones con direcciones que quiero monitorear.

Hace 2 años solía funcionar bien, pero ahora veo que funciona cada vez más lento. Entonces, creo que bitcoin-qt + .NET API no es el enfoque que puede aumentar el tiempo de monitoreo.

Otra opción es usar servicios de terceros, como blockchain.info, que se pueden usar en mi aplicación (comercial).

Recuerde que la confirmación cero es peligrosa y NO significa "pago realizado". Verificar transacciones usando su propio nodo es mejor que usar terceros, ya que no necesita confiar en nadie. (Usar bitcoind ejecutándose en segundo plano en lugar de bitcoin-qt GUI podría tener más sentido). Por otro lado, es posible que también desee utilizar terceros para tratar de hacer uso de sus múltiples nodos ubicados en diferentes lugares del mundo y esperar que puede detectar cualquier gasto doble de esa manera. Pero incluso entonces: ¡la confirmación cero ES peligrosa!
Sí, tenga mucho cuidado con las confirmaciones cero. Recomendaría un servicio de terceros para esto, personalmente he usado blockchainwebhooks.com y blockcypher.com - Blockcypher tiene más detalles, pero BlockchainWebHooks es mucho más asequible (aunque ambos tienen planes gratuitos)

Respuestas (3)

Puede usar la importaddressfuncionalidad para hacer que la billetera Bitcoin Core (bitcoind o bitcoin-qt) trate ciertas direcciones como propias, aunque no tenga la clave para ellas.

Esto hará que aparezcan en las salidas de RPC como listtransactions, getreceivedbyaddressy . También activará notificaciones a través del mecanismo ZMQ agregado recientemente.listunspentgetbalance-walletnotify

Utilizo la API block.io para detectar transacciones entrantes de confirmación cero en Liberty Music Store . block.io puede monitorear transacciones para su propia billetera o puede suscribirse a direcciones de bitcoin arbitrarias.

La compensación es entre confirmaciones fáciles y rápidas: block.io tiene webhooks robustos, nodos de bitcoin distribuidos y una API fácil que permite detectar transacciones más rápido que ejecutar un solo nodo usted mismo. Un solo nodo es más seguro desde el punto de vista de que no puede confiar sus transacciones a terceros. Además, ejecutar un nodo completo requiere muchos recursos, ya que los datos de blockchain son varios gigabytes y también mempool.

Creo que usar Bitcoin Core importaddresspuede ser una buena solución.

Sin embargo, si no desea sincronizar toda la cadena de bloques, puede usar Electrum y su interfaz JSONRPC: http://docs.electrum.org/en/latest/merchant.html#jsonrpc-interface