En la última parte, señalamos que no sería mala idea informarse sobre el hecho del pago desde bitcoind, en lugar de revisar todas las direcciones emitidas.
Lea la serie completa de artículos para desarrolladores de una pasarela de pago para bitcoin aquí:
ACEPTAR PAGO EN BITCOIN: PRIMERA PARTE, TEÓRICA
ACEPTAMOS PAGOS EN BITCOIN: SEGUNDA PARTE. HERRAMIENTAS Y PREPARACIÓN
ACEPTAMOS PAGOS EN BITCOIN: PARTE TRES, TU TESTNET. CON BLACKJACK
ACEPTAR PAGO EN BITCOIN: CUARTA PARTE, ¡MÁS CERCA DEL NEGOCIO!
ACEPTAMOS PAGOS EN BITCOIN: PARTE QUINTA, HAY MATIZ
En primer lugar, al hacer esto ralentizamos todo el sistema y, con una gran cantidad de pagos, esto se convierte en un problema grave. Y en segundo lugar, “primero” es suficiente.
Mencioné en el último artículo que bitcoind aún puede enviar notificaciones, aunque lo hace de una manera un tanto única. Técnicamente, cuando ocurren ciertos eventos, se lanza un comando (programa) del sistema, pasando datos como argumento de línea de comando. De repente, existen tres eventos de este tipo: alertnotify, blocknotify y walletnotify. Nos interesan los dos últimos.
Para recibir notificaciones, debemos especificar lo siguiente en el archivo de configuración bitcoin.conf:
walletnotify=comando1 %s blocknotify=comando2 %s
¿Qué nos aportará esto y cómo funciona? Para cualquier transacción asociada a nuestro wallet, es decir, con cualquier dirección emitida por nuestro bitcoind, se ejecutará el comando
command1 especificado para walletnotify, y el hash de la transacción se sustituirá como el parámetro %s. Por supuesto, me gustaría saber tanto la dirección como el importe, pero tenemos lo que tenemos. Teniendo TxId ya podemos obtener información completa sobre la transacción, incluyendo todas las direcciones e importes.
Ahora sobre los matices.
El comando se ejecutará un máximo de dos veces. A veces, solo. La primera vez es cuando se recibe una transacción no confirmada y se agrega al mempool. El segundo momento es cuando la transacción se incluye en el bloque, es decir, cuando se recibe la primera confirmación. En algunos casos, es posible que la primera notificación no llegue en absoluto... Pero, ¿qué debemos hacer si queremos considerar el pago completado después de las seis confirmaciones canónicas?
Aquí es donde blocknotify viene en nuestra ayuda. El comando command2 se ejecutará cuando se agregue cada nuevo bloque firmado y se devolverá el hash del bloque en lugar del parámetro %s. A continuación, podemos verificar todas nuestras transacciones registradas para ver la cantidad de confirmaciones (sí, dicha información en una transacción proviene de bitcoind), o ver cada bloque para ver si contiene transacciones con nuestras direcciones (largo, ineficaz, pero a veces necesario)
La forma en que se implementará la parte del software que implementa las notificaciones depende totalmente del desarrollador. Podría ser un script bash, un programa C/C++ o PHP. Lo principal es que su aplicación se puede iniciar desde la línea de comando.
Leer también
Apple publica nuevas reglas sobre aplicaciones de criptomonedas
Según TechCrunch, varios desarrolladores de Apple unieron fuerzas recientemente para crear la "Unión de Desarrolladores". El sindicato pidió a Apple que brindara a los usuarios de Apple Store la oportunidad de descargar pruebas gratuitas de sus aplicaciones. Esta es una de las primeras veces que los desarrolladores independientes de iOS intentan contraatacar las políticas de la Apple Store.
Aceptamos pagos en bitcoin: Tercera parte, nuestra testnet. con veintiuna
En el último artículo te dije cómo instalar bitcoind (al menos en Ubuntu Linux) y cómo conectarte a testnet. Pero testnet es una buena solución cuando se realizan pruebas en un sitio web ya preparado que ya se ha implementado en un servidor de Internet. Pero para el desarrollo local esta está lejos de ser la solución más conveniente.
