Quiero tener un servidor en funcionamiento que procesará pagos y reembolsos. Sin embargo, también quiero asegurarme de que si mi servidor falla, después de reiniciar continuaré enviando los reembolsos correspondientes sin enviar un reembolso a alguien a quien ya he enviado uno también. Planeo usar un WAL para lograr esto, pero necesito saber qué almacenar en el WAL. ¿Es posible conocer su ID de transacción antes de enviar la transacción?
De esa manera, podría simplemente registrar la identificación antes de enviarla, y si falla, puedo verificar la cadena de bloques para ver si esa transacción ya existe o no.
Esto parece ser un problema común para los procesadores de pago, pero al observar la documentación de JSON-RPC , parece que solo obtiene la identificación de la transacción después de enviar la dirección de envío/envío.
Puede consultar blockchain para conocer las últimas transacciones de la dirección que está utilizando para los reembolsos.
Obtenga las últimas transacciones de la dirección de la cadena de bloques y compárelas con los reembolsos en su sistema para ver cuáles pudo enviar y cuáles no antes del bloqueo.
Puede hacer esto encadenando el reembolso y la transacción que recibió. De esta manera, podría emitir el reembolso tan a menudo como su sistema falla sin correr el riesgo de devolver más de lo que necesita. Esto es un poco complicado y necesita usar la API bitcoind
, pero SatoshiDice la ha estado usando con éxito para devolver las ganancias. Lo que hace es tomar la salida que se le envió y gastarla en una transacción que reembolsa al remitente. Dado que una salida se puede reclamar como máximo una vez, el reembolso se enviará solo una vez.
senecaso