¿Cómo se notifica la escalabilidad de la billetera de la billetera de nodo completo?

Estoy pensando en cómo los grandes intercambios manejan los depósitos de los clientes, parece que hay dos soluciones disponibles, una es usar apis de notificación externa, como la api de notificación de blockchain.info, otra es ejecutar un nodo completo y usar la función walletnotify. Dado que el primer enfoque genera dependencia de un servicio de terceros, tampoco es compatible con la notificación de testnet, que usamos durante el desarrollo, por lo que estoy tratando de ejecutar un nodo completo. Mi pregunta es ¿Qué tan escalable es? Supongamos que hay 10 000 usuarios, y la plataforma debe admitir agregar más direcciones para un usuario, digamos que en promedio cada usuario genera 10 direcciones, eso es 100 000 direcciones para ver. Si agrego esas 100,000 direcciones como observación solo al nodo completo y habilito walletnotify, ¿es una buena manera de manejarlo? ¿Habrá algún problema técnico?

Respuestas (3)

Se ha demostrado que el uso walletnotifyfunciona y lo utilizan muchas aplicaciones escalables en la actualidad. Sin embargo, no confiaría completamente en él. walletnotifyEl trabajo de es ejecutar un comando de shell cada vez que recibe una transacción de billetera. Esto significa que los datos fluyen entre los procesos, lo que no me hace sentir del todo cómodo como desarrollador. Después de todo, solo se necesita un error para que alguien pierda sus fondos.

Recomendaría no solo usar walletnotify, sino también verificar X bloques después de Y minutos. Puede realizar un seguimiento de los bloques pasados ​​y, si alguna transacción no fue procesada por walletnotify, su cronjob de verificación de transacciones recuperará la transacción. Puede usar listsinceblockel comando RPC y realizar un seguimiento de la altura del bloque cada vez que verifica las transacciones. Podría almacenar transacciones procesadas en una base de datos en algún lugar.

Después de todo, esta es una aplicación financiera, por lo que creo que una verificación de respaldo es vital.

Probablemente no haya problemas técnicos y depende mucho de su servidor.

si su servidor no tiene problemas, no hay de qué preocuparse.

Intenté enviar 1000 solicitudes al servidor bitcoin-core al mismo tiempo con un servidor básico y todo funcionó muy bien.

También puede obtener más de un servidor central de bitcoin y tratar las solicitudes a estos servidores.

Creo que la notificación de billetera es diferente al envío de solicitudes de rpc, también 1000 está en un factor de escala diferente a 100,000, pero si realmente maneja una plataforma de bitcoin como un sitio de comercio electrónico, por ejemplo, un sitio similar a Amazon o un intercambio de criptomonedas, confiaría en su respuesta.
No, no es diferente, RPC significa Remote_procedure_call, por lo que solo pasa la solicitud a su aplicación. por lo que enviar comandos a través de RPC es lo mismo. Podría probar con una dirección como 2000 y ver qué sucede.

Dado que el tiempo necesario para procesar una solicitud determinada será superior a cero milisegundos, llegará un punto en el que suficientes solicitudes darán como resultado que la CPU alcance el 100 % de utilización, o puede que llegue primero a los límites de E/S o de red, pero en cualquier caso cuando encuentre un cuello de botella, lo que deberá hacer es dividir la carga de trabajo entre varias máquinas utilizando algún tipo de esquema de equilibrio de carga.