Taler para programadores

Libre

GNU Taler es software libre que implementa un protocolo abierto. Cualquier persona es bienvenida a integrar nuestra implementación de referencia en sus aplicaciones. Diferentes componentes de Taler están disponibles bajo diferentes licencias. La GPLv3+ de Affero se utiliza en la plataforma de intercambio, la LGPLv3+ se utiliza para el código de referencia demostrando la integración con las plataformas comerciales, y las licencias como GPLv3+ se utilizan para las billeteras y el software utilizado por los clientes. Estamos abiertos a sugerencias constructivas para maximizar la adopción de esta plataforma de pago.

Basado en REST

Taler está diseñado para trabajar con Internet. Para garantizar que los pagos de Taler puedan funcionar con configuraciones restrictivas de red, Taler utiliza un protocolo RESTful a través de HTTP o HTTPS. La seguridad de Taler no depende del uso de HTTPS, pero obviamente los comerciantes pueden optar por ofrecer HTTPS por consistencia y porque generalmente es mejor para la privacidad en comparación con HTTP. Taler utiliza JSON para codificar datos de estructura, facilitando la integración de Taler con las aplicaciones web existentes. El protocolo de Taler está documentado en detalle en docs.taler.net.

Código

Taler está siendo actualmente desarrollado principalmente por un equipo de investigadores en Inria y GNUnet. Sin embargo, las contribuciones de cualquier persona interesada son bienvenidas. Nuestros repositorios Git pueden ser clonados usando los métodos de acceso Git y HTTP en git.taler.net con el nombre del repositorio respectivo. Puede encontrar una lista de repositorios en nuestro GitWeb.

Documentación

En complemento de éste sitio web, el código documentado y la documentación de la API quedan a su disposición. Los documentos técnicos se pueden encontrar en nuestra bibliografía.

Debates

Tenemos una lista de correo para las discusiones entre desarrolladores. Puede suscribirse o leer el archivo de la lista en http://lists.gnu.org/mailman/listinfo/taler.

Pruebas de regresión

Tenemos pruebas de automatización con Buildbot para detectar regresiones y comprobar su portabilidad en buildbot.taler.net.

Análisis de cobertura de código

Usamos LCOV para el análisis de cobertura de código de nuestros tests, los resultados están disponibles en lcov.taler.net.

Performance

Usamos Gauger para el análisis regresivo de rendimiento de backend de la plataforma de intercambio en gauger.taler.net.

Diagrama general del sistema Taler

El sistema de Taler consiste en protocolos ejecutados entre varios actores, tal como se ilustra en la imagen en la derecha. Las transacciones típicas involucran los siguientes pasos:

Diagrama general del sistema
  1. Un cliente le instruye a su banco que transfiera fondos desde su cuenta a la plataforma de intercambio (arriba a la izquierda). En el asunto de la transacción, el cliente incluye un token de autenticación para su billetera electrónica. En la termonología de Taler, el cliente crea una reserva en la plataforma de intercambio.
  2. Una vez que la plataforma de intercambio ha recibido la transferencia bancaria, permite que la billetera electrónica del cliente retire monedas electrónicas. Las monedas electrónicas son representaciones digitales de la moneda original de la transferencia. Es importante observar que la plataforma de intercambio no memoriza los "números de serie" de las monedas creadas en este proceso, por lo que no podrá decir más adelante qué cliente compró que cosa a cuál comerciante. El uso de Taler no modifica el valor total de la moneda o de los fondos (excepto por los cargos que la plataforma de intercambio pueda cobrar por el servicio).
  3. Una vez que el cliente tiene las monedas electrónicas en su billetera, la billetera se puede utilizar para gastar las monedas con portales comerciales que soportan el sistema de pago Taler y aceptan la plataforma deintercambio correspondiente como un socio comercial (flecha inferior). Esto crea un contrato digital firmado por las monedas del cliente y por el comerciante. Si es necesario, el cliente puede utilizar posteriormente este contrato firmado digitalmente en un tribunal para probar las condiciones exactas del contrato y que pagó la cantidad respectiva. El cliente no se entera de los detalles bancarios del comerciante, y Taler no necesita que el comerciante conozca la identidad del cliente. Naturalmente, el cliente puede gastar cualquier fracción de sus monedas electrónicas (el sistema se encarga de que los clientes obtengan su cambio).
  4. Los comerciantes que reciben monedas electrónicas depositan en la plataforma de intercambio los respectivos derechos a cobrar que resultasen de la firma del contrato con el cliente para poder recuperar las monedas. Este depósito no revela a la plataforma de intercambio los detalles del contrato entre el cliente y el comerciante o la identidad del cliente de ninguna manera. Sin embargo, la plataforma de intercambio sí conoce la identidad del comerciante a través de la información proporcionada por el enrutamiento bancario. El comerciante puede proveer información que vincule el depósito específico con el respectivo contrato firmado por el cliente, por ejemplo cuando el Estado le impone normas tributarias. Así, la base de datos de la plataforma de intercambio permite que el Estado imponga a los comerciantes el pago de los impuestos aplicables (y que éstos no se incurran en contratos ilegales).
  5. Finalmente, la plataforma de intercambio transfiere los fondos correspondientes a las monedas electrónicas recibidas por los comerciantes a la cuenta bancaria del comerciante. La plataforma de intercambio puede combinar múltiples transacciones pequeñas en una transferencia bancaria más grande. El comerciante puede solicitar a la plataforma de intercambio el detalle de la correspondencia entre las transferencias bancarias y las monedas (y derechos a cobrar) individuales que fueron depositadas.
  6. Más importante aún, la plataforma de intercambio mantiene pruebas criptográficas que le permiten demostrar a terceros que está funcionando correctamente. El sistema requiere de un auditor externo, como un organismo regulador financiero nombrado por el gobierno, para verificar continuamente las bases de datos de la plataforma de intercambio y verificar que su saldo bancario coincida con el valor total de las monedas que permanecen en circulación.
  7. Sin el auditor, los operadores de la plataforma de intercambio podrían desviar fondos que se mantuviesen en reserva. Los clientes y los comerciantes no pueden engañarse mutuamente, o a la plataforma de intercambio. Si las computadoras de una de las partes estuviesen comprometidas, el daño financiero se limitaría a la parte respectiva y sería proporcional a los fondos que tuviesen en circulación durante el período en que la computadora estuviese comprometida.