Aceptamos pagos en bitcoin: sexta parte. Matices, otra vez matices.

Aceptamos pagos en bitcoin: sexta parte. Matices, otra vez matices.

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

02018-06-15

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.

Al desarrollador
02018-06-16

Aceptamos pagos en bitcoin: ¡Cuarta parte, más al grano!

En artículos anteriores, analizamos los principios generales de la organización de una pasarela de pago bitcoin, descubrimos las herramientas y el software necesarios e incluso montamos nuestra propia red bitcoin de bolsillo.

Al desarrollador

Últimos artículos de la sección Al desarrollador

Último vídeo del canal.