Construyendo un servicio de monitoreo de direcciones de blockchain. ¿La mejor manera de monitorear una dirección para bitcoin y otras altcoins?

Estoy buscando construir un servicio de monitoreo de direcciones de blockchain para bitcoin y otras altcoins. ¿Cuál es la mejor manera de monitorear un montón de direcciones para transacciones entrantes/salientes?

Actualmente, escribí un script php que verifica la dirección cada 5 minutos en busca de cualquier actividad nueva y luego almaceno estos datos en un archivo y luego otros 5 minutos busco los datos nuevamente y diferencio el archivo para ver las diferencias y, de ser así, hacer algo .

Otro método que estaba pensando era obtener cada bloque tal como se extrae y luego ver si alguna de las direcciones coincide con lo que he enumerado y luego hacer algo .

Respuestas (2)

Como mencionó PHP, puede instalar un nodo Bitcoin en su servidor y luego usar EasyBitcoin-PHP: https://github.com/aceat64/EasyBitcoin-PHP

Luego use la API de Bitcoin: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

Para listar todas las transacciones asociadas con una cuenta:

echo $bitcoin->getreceivedbyaddress($btc_address);

"Devuelve el monto recibido por en transacciones con al menos [minconf] confirmaciones. Maneja correctamente el caso en el que alguien ha enviado a la dirección en múltiples transacciones. Tenga en cuenta que las direcciones solo se usan para recibir transacciones. Funciona solo para direcciones en la billetera local, las direcciones externas siempre mostrarán 0".

Entonces, podría ejecutar esto y compararlo con su base de datos para ver si aparece una nueva transacción que aún no está en la base de datos.

--

Para monitorear el saldo de una cuenta, puede verificar cada carga de página (y actualizar su base de datos si lo desea):

echo $bitcoin->getbalance($user['id'], 1);

Obtenga una de las direcciones de sus usuarios:

echo $bitcoin->getaccount($user['id']);

Para consultar transacciones:

echo $bitcoin->gettransaction($trans_id);

--

También podría usar una API: ¿Cómo obtener la lista de transacciones de entrada/salida para una dirección de bitcoin en formato JSON?

--

No estoy 100% seguro de lo que estás pidiendo, pero espero que lo que te brinde te ayude.

Eso es realmente una pérdida de tiempo.

Bitcoin y todas las demás Altcoins que utilizan la tecnología blockchain se utilizan como libro de transacciones. Así que simplemente obtenga/instale su libro mayor criptográfico, actualice su libro mayor de su Bitcoin (altcoin).

Cuando necesite saber sobre una transacción particular relacionada con la dirección, simplemente use las herramientas preconstruidas para escanear el libro mayor.

echo $bitcoin->gettransaction($trans_id);

como se muestra arriba.

No es necesario registrar cada transacción en la base de datos, porque ya está registrada en el libro mayor. Entonces, si desea monitorear algunas direcciones, simplemente cree un cronjobs para monitorear cualquier transacción y enviar una alerta al usuario.

que obtiene una transacción de un tid. ¿Cómo sabría cuándo una dirección recibe una transacción entrante o saliente?
Eso debe hacerse usando trabajos cron para monitorear el servidor de terceros de escaneo de blockchain ( blockchain.info ) o la instalación de la billetera local.
Esa es la cuestión, ¿utiliza un trabajo cron para monitorear la dirección o monitorea cada bloque y ve si hay una dirección monitoreada en cada bloque?
Hay billones de claves públicas posibles, por lo que no es una solución viable monitorear todas y cada una de las claves. Pero se puede usar si tenemos un conjunto limitado definido de claves públicas de algún usuario. podemos usar estos cronjobs para permitir el seguimiento de cinco o seis claves públicas por usuario para miles de usuarios sin sobrecarga en el servidor.
sí, tengo una lista de claves de pub btc que quiero monitorear.
¡felicidades!, en ese caso puedes usar cronjobs fácilmente para monitorearlos.
Use importaddress en Bitcoin Core para marcar las direcciones que le interesan como direcciones de solo observación y luego use los servicios de notificación predeterminados (ZMQ o -walletnotify) para notificarle cuando se vea en la red una nueva transacción que afecte a esas direcciones.
Como se menciona PHP en la pregunta, creo que @duckx quiere hacer un servicio similar como ZMQ o -walletnotify, así que no lo dije antes.
Creo que -walletnotify resuelve el problema. pero, ¿hay alguna alternativa para no usar el núcleo de bitcoin, ya que no quiero descargar 200 gb de la cadena de bloques? ¿Qué otra aplicación de billetera bitcoin admite la bandera -walletnotify?