1. Developers
  2. Engineering Blog

El Universo Interledger

Written by Sabine Schaller , Marian Villa

Si estĆ”s un poco abrumado por tĆ©rminos como el Protocolo de Interledger, Interledger Stack, o Fundación Interledger, EstĆ”ndar de Pagos Abiertos, Rafiki, La Moneda Rafiki, Dassie, Monetización Web (Extensión), STREAM, SPSP, Paquetes,etc… Y te sientes aĆŗn un poco perdido, aquĆ­ estamos para aclararlo. Vamos a desglozar cada uno de los tĆ©rminos para traer a la luz el significado y de esta manera mostrar mĆ”s claramente el Universo de Interledger. Empecemos con el tĆ©rmino mĆ”s obvio:

Interledger

El tĆ©rmino Interledger puede dividirse en el prefijo ā€œInterā€ que puede entenderse como ā€œentreā€ y ledger, que en su definición mĆ”s pura en el diccionario. , traducirĆ­a: Un libro. Un libro que contiene las cuentas donde se registran los dĆ©bitos y crĆ©ditos de los libros de registro contables. Si juntamos ambos conceptos, Interledger significa que el sistema de pagos puede hacerse entre mĆŗltiples libros contables, conocidos como ledgers.

¿Qué significa esto, cómo funciona? Digamos que tengo una cuenta en Alemania y quiero transferir dinero a mi amigo Allan en Sur África. ¿Qué opciones tengo? Puedo empezar una transferencia internacional desde mi cuenta bancaria a la de Allan, lo que usarÔ serÔ una red SWIFT para intercambiar mensajes de pago. Probablemente la transferencia va a tomar al menos 3 días para verse reflejada en la cuenta bancaria de Allan y va a costarme relativamente una gran comisión. También puedo usar un servicio como Wise, pero esta es una plataforma cerrada que requerirÔ que me registre, y Allan necesitarÔ también crear su cuenta o diligenciar un formulario con el Banco de Reserva de Sur África antes de recibir sus fondos.

También es importante entender que este servicio es regulado, porque utiliza sotware privado, entonces como usuario no tengo una manera de entender cómo es procesada mi data, y en este caso hipotético solo queda confiar. Y el caso se complicaría si asumimos que Allan no tiene una cuenta tradicional de banco, ya que solo tiene un proveedor de dinero móvil. ¿Cómo transferiríamos fondos a él, entonces?

Interledger fue diseƱado para ser una serie de nodos que impulsa mensajes de pago en el sistema, teniendo en cuenta la conversión de la moneda, donde la ā€˜moneda’ puede ser cualquiera que incluya un valor para transar, incluyendo monedas fiduciarias, criptomonedas o dinero móvil.

Imagen 1 - Red de Pagos

Ahora, continuando con el ejemplo, si mi cuenta bancaria estÔ en Euros y la cuenta Móvil de Allan estÔ en Moneda Surafricana, Rands, como vemos en el grÔfico de la Red de Pagos, hay múltiples maneras de que mi dinero pueda ser enviado y enrutado a Allan. Lo que hace Interledger especial, es que se asegura que los paquetes lleguen con la ruta mÔs rÔpida y barata, desde mi nodo de Interledger hasta el nodo de Interledger de Allan. Interledger estÔ diseñado para ser una red encima de las redes existentes de pagos, y por esto logra interoperabilidad entre todas las capas.

Fundación Interledger

Ahora que entendimos la parte técnica, podemos introducir la Fundación Interledger. Es una fundación constituída en Estados Unidos cuya visión es enviar dinero de manera fÔcil, como si enviaras un correo electrónico.

La Fundación Interledger tiene bajo su dirección y cuidado, el Protocolo Interledger y sus protocolos asociados, y se dedica a desarrollar y fomentar la inclusión financiera en sus sistemas alrededor del mundo.

La estrategia global es soportar la investigación y desarrollo de los sistemas de inclusión financiera en Ôreas vulnerable, fondear a través de subvenciones a poblaciones no representadas en el ecosistema financiero, cambiando el paradigma en este sistema; adicional creando una comunidad abierta e inclusiva, la Comunidad Interledger, que crece a través de la conversación abierta, uniendo otras voces y perspectivas, al espacio fintech.

¿CuÔles son los protocolos que desarrolla y mantiene la fundación?

La Arquitectura de Interledger

La Arquitectura de Interledger tiene un gran parecido a la Arquitectura de Internet, consiste en múltiples capas, y esto no es una coincidencia, ya que la arquitectura de Interledger fue modelada posterior a la arquitectura de Internet. Entonces por esto, cada capa de la arquitectura de Internet tiene su equivalente en la Arquitectura de Interledger. Cada capa sirve para una función específica que interactúa con capas tanto arriba como abajo.

Exploremos cada una de las capas de la Arquitectura de Interledger desde abajo.

Imagen 2 - Infraestructura Interledger

Si prefieres una versión en video de la Arquitectura de Interledger puedes ver esta presentación de su Arquitectura en Youtube.

Capa de Infrastructura

La infraestructura por si misma no es una parte técnica de la arquitectura, pero es una parte esencial para que los protocolos funcionen. En esta capa es donde se define el valor a intercambiar entre las las partes. Este acuerdo de intercambio puede ocurrir entre monedas Fiat, Crypto, o Dinero Móvil, o cualquier activo de valor acordado. Aquí es donde se define el valor intercambiado entre las partes, como créditos de Starbucks o incluso granos de café físicos.

Esta capa se asegura que una vez el pago se haya liquidado, la transferencia de valor ha sido ejecutada con las partes involucradas. Usualmente, los nodos conectados, también llamados conectores, entran en un acuerdo de sincronización para definir la línea de crédito que se estÔn extendiendo entre cada nodo para facilitar que el acuerdo se de. Esta transacción puede ocurrir en un punto predefinido o donde esté la línea de crédito, también llamada liquidación entre pares, y allí es completada.

Es importante aclarar que en caso de que se utilice una crypto para realizar el acuerdo entre los nodos, esto pasa automÔticamente en el acuerdo entre pares, porque las blockchains fuerzan el acuerdo según sus capacidades cryptogrÔficas y a su ejecución.

Capa de Enlace

La Capa de enlace define como los conectores en pares se comunican. Actualmente existen dos grandes protocolos en esta capa:

Estos protocolos establecen la conexión necesaria para que las capas superiores funcionen.

Capa de Protocolo - Protocolo Interledger (ILP)

El core de la Arquitectura de Interledger estƔ basado en el Protocolo Interledger (ILP). Este protocolo divide grandes pagos en pequeƱos paquetes cuyo contenido prescribe y define un protocolo de transferencia de dos fases.

¿Por qué se usa un proceso de dos fases en vez de un proceso de una sola fase en este protocolo de transferencia?

Empecemos ejemplificando una Transferencia de una Fase.

Imagen 3 - Transferencia de una sola fase

Alice representada a la izquierda en la imagen, es un cliente de un servicio de cuentas de Identidad (ASE) que corre sobre un nodo conector de Interledger (Nodo A).

Bob en el grƔfico representado a la derecha es un cliente del Servicio de Cuentas de Identidad que corre sobre el Conector de Interledger (D).

Para que el pago de Alice llegue a Bob, el conector (A) necesita pasar los paquetes al conector (B), que necesita a su vez pasar los paquetes al conector (C), que a su vez necesita pasar al conector (D). En el escenario mƔs optimista, ASE debitarƔ de la cuenta de Alice, para pasar el pago hasta Bob.

Pero, ¿Qué pasaría si por alguna razón, el conector (C) no logra pasar el pago al conector (D)? De la cuenta de Alice el dinero ya fue debitado, pero Bob no recibió los fondos.

Para evitar el riesgo de que la transacción falle y no llegue al usuario final, entre Alice y Bob, a través de los nodos conectores, el Protocolo de Interledger define una Transferencia de Dos Fases.

Transferencia de Dos Fases:

Imagen 4 - Transferencia de dos fases

A través del Protocolo Interledger ILP, la transferencia comenzarÔ enviando al conector (A) un paquete construido en ILP que contiene la dirección ILP del que recibe, una condición de ejecución que tendrÔ un monto y un tiempo de expiración. El conector que envía también incluirÔ información adicional como el formato que se determinarÔ por el protocolo de mÔs alto nivel en uso. Luego, el paquete irÔ al conector (B) sobre un canal autenticado, y tendrÔ una configuración usando una capa de enlace al protocolo.

El Conector (B) verificarÔ con el conector (A) el balance de liquidez, y si hay recursos suficientes, debitarÔ el monto desde la cuenta del conector de liquidez. El conector usa el enrutamiento a través de tablas para determinar el siguiente salto, y así ajustar la cantidad de recursos en el paquete que envía, y el tiempo de expiración de la tasa de la transacción, impulsando finalmente el paquete a seguir su camino.

Este proceso se repitirÔ hasta que el paquete haya llegado a su destino, el conector recibidor (D). El recibidor validarÔ que el paquete cumpla, basado en un protocolo de alto nivel, que aceptarÔ retornando con un Paquete ILP Completado con una preimagen de la condición, o rechazando con un Paquete ILP Rechazado. Si es aceptado, cada conector en la cadena verificarÔ el cumplimiento y créditos disponibles al siguiente conector hasta que el emisario original es alcanzado.

El conector emisor revisa el cumplimiento de los pÔrametros enviados contra la condición original, y graba la transacción, y repetirÔ el proceso hasta completar la cantidad deseada para realizar la transferencia. Este ciclo garantiza la seguridad, eficiencia y uso de múltiple monedas que se pueden manejar a través de la red de conectores, manteniendo la integridad y tiempo de cada paquete transferido.

El protocolo es especƭficamente diseƱado para transacciones de valores pequeƱos. Si el conector (A) y (B) se conectan usando paquetes, digamos que 1 centavo, perdiendo un par de ellos debido a problemas en la red, pueden realizarlo rƔpidamente.

Sin embargo la conexión de (A) y (B) estÔ basado en transacciones pequeñas por un centavo sobre un billón (1/1,000,000,000), así que perder una pequeña cantidad serÔ inconsecuente cuando se cierre el arreglo.

Capa de transporte: Direcciones de ILP y Apuntadores de Pago

Las direcciones ILP son parte fundamental del Protocolo Interledger, sirviendo como un identificador Ćŗnico de cuentas en la red de Interledger. Estas direcciones siguen un formato jerĆ”rquico similar a las direcciones IP de Internet, habilitando el enrutamiento eficiente de paquetes entre diferentes ā€˜Ledgers’.

La Estructura de una Dirección ILP consiste en diversos componentes:

Un ejemplo de una dirección ILP luce así: g.us-fed.ach.acmebank.acmecorp.~ipr.73WakrfVbNJBaAmhQtEeDv.2

Apuntadores de Pagos

Los Apuntadores de pagos son una forma amigable de representar las direcciones ILP, similar a cómo las URLs presentan las direcciones IP. Esto hace que sea mÔs fÔcil para el usuario manejar y compartir sus direcciones de pago.

Un apuntador de pago siempre tiene un prefijo de señal de dólar ($) seguido de una estructura similar a la de una URL. Por ejemplo: $wallet.com/alice este apuntador de pago resuelve en una urlhttps://wallet.com/alice que apunta a una dirección ILP.

Un ejemplo: test.wallet.alice (Que no contiene la parte de interacción).

Los apuntadores de pagos pueden ser hosteados en la raíz del dominio. En ese caso, un apuntador de pagos como $mymarketplace.com enmascara esta dirección: https://marketplace.com/.well-known/pay y dirije a una dirección ILP como: g.wallet.mymarketplace

Cuando avancemos a la sección de la Capa de Aplicación, volveremos sobre este concepto de apuntado de pagos, específicamente en la sección del Protocolo Simple de Configuración de Pagos (SPSP). Sí quieres saltar directamente a este Ôrea, puedes dar el salto hasta esa sección específica.

Capa de transporte: - El Protocolo STREAM

La Capa de Transporte construida sobre ILP provee funcionalidades adicionales por manejar la transferencia de valor. El Ćŗnico protocolo soportado al momento es el Protocolo STREAM (Streaming Transport for Real-time Exchange of Assets and Messages).

Imagen 4 - Protocolo STREAM

STREAM es un protocolo versÔtil y seguro para transportar el Protocolo ILP, facilitando eficientemente y de forma escalable la transmisión de dinero e información. El protocolo ofrece un rango de funcionalidades diseñadas para optimizar las transacciones basadas en ILP como:

STREAM también maneja los patrones de cambios de tarifas efectivamente, e incluye un minimo aceptable de cantidad en ILP para preparar los paquetes y recibir un monto, y verificar de esta forma cumplimiento o de lo contrario, rechazar paquetes. De esta manera le permite a quien envía, fijar las cantidades y el precio en sus propias unidades, usando una calculadora para calcular la tarifa de intercambio en esa transacción, y también descartar el paquete de test que fue usado al iniciar la conexión. El protocolo se asegura que la preparación de paquetes que siguen con cantidades menores a las especificaciones, no serÔn tomadas en cuenta para el cumplimiento.

Nota: Los paquetes de STREAM incluyen en el campo de datos, un paquete de ILP.

Capa de Aplicación

La Capa de Aplicación es la capa final de la Arquitectura Interledger, haciendo visible para el desarrollador funcionalidades y habilitando varios posibles implementaciones. Los dos protocolos habilitados en esta capa son SPSP (protocolo de Configuración Simple de Pagos) y el Protocolo de Pagos Abiertos.

SPSP simplifica el proceso de configuración de pagos. Cuando llega una petición GET relacionada a una URL asociada a un apuntador de pago que usa la petición de encabezamiento SPSP, SPSP define que necesita ser retornado

HTP/1.1 200 OK
Content-Type: application/spsp4+json
{
"destination_account": "example.ilpdemo.red.bob",
"shared_secret": "6jR5iNIVRvqeasJeCty6C+YB5X9FhSOUPCL/5nha5Vs=",
"Receipts_enabled": true
}

Esto incluye la destination_account (Cuenta de destino) que es la dirección ILP del que recibe, y comparte un shared_secret (Secreto) para encriptar los paquetes de STREAM, que incluye un identificador receipts_enabled, (recibos habilitados) indicando cuando un recibo de STREAM fue requerido. SPSP asegura una configuración de pago segura y directa para entidades o individuos con un acceso ILP, esto significa que entidades o individuos pueden crear, enviar, y recibir paquetes ILP directamente sin ayuda de otra entidad.

Pagos Abiertos es un API estÔndar API para entidades de servicios financieros, permitiendo que terceros puedan asegurar acceso a sus cuentas digitales para ver su información de cuenta e iniciar un pago. Pagos Abiertos soporta complejos escenarios de pagos como e-commerce o pagos recurrentes, facilitando un robusto marco de trabajo para autorizar e iniciar pagos digitales. Emplea una Negociación de Subvenciones (Grant Negotiation) y un Protocolo de Autorización (GNAP) para Control de acceso preciso y autorización segura.

Para entender de forma mĆ”s amplia Pagos Abiertos, puedes revisar este artĆ­culo en inglĆ©s ā€˜Open Payments Guide’. Si deseas hacer una revisión de mĆ”s alto nivel del Protocolo de Autorización (GNAP) y dónde estĆ” siendo usando en Pagos Abiertos, puedes revisar este ArtĆ­culo de Nathan’s (EN) - La historia de Cenicienta: cómo encontrar un mĆ©todo de autorización adecuado.


Monetización Web

La Monetización Web no es parte de la Arquitectura de Interledger, pero de cara al usuario es una aplicación que se sitúa en el top de la Arquitectura ILP.

Imagen 5 - Monetización Web

La Monetización Web es un estÔndar propuesto por la W3C que facilitarÔ los pagos sin complicaciones directamente desde el navegador. PermitirÔ a los visitantes de un sitio web con interacciones mínimas pagar la cantidad elegida. Como un estandar propuesto, la meta con la Monetización Web es que nativamente pueda realizarse a través de los navegadores estas transacciones; Sin embargo, ningún navegador actualmente soporta esta funcionalidad. Por esto la Fundación Interledger estÔ trabajando en una extensión de Monetización Web para habilitar esta funcionalidad inmediatamente.

Cuando un navegador web (o en su defecto, la extensión para Monetización Web) encuentre la manera de ā€˜monetizar’ un sitio web, el sitio automĆ”ticamente podrĆ” enviar una seƱal con su habilidad para aceptar pagos. Una vez la extensión o el navegador obtiene la autorización del Usuario de usar la Monetización Web en la fase de configuración, traerĆ” todos los detalles del pago necesarios y las instrucciones para mover el dinero utilizando la API de Pagos Abiertos.

El navegador luego crearÔ una sesión de pago y comunicarÔ el evento de pago de vuelta al sitio. En respuesta, el sitio web puede proveer beneficios para retribuir a los visitantes de su sitio, como remover anuncios o darle acceso a contenido exclusivo.

Este acercamiento pretende crear una manera mÔs intuitiva de integrar la experiecia de los usuarios y los creadores de contenido, promoviendo un nuevo modelo para la monetización web que sea eficiente y preserve la privacidad, y se enfoque en la experiencia del usuario.


Rafiki

Rafiki fue creado como una referencia en la implementación de la Arquitectura de Interledger. No es una billetera, no es una plataforma o servicio, es un software.

Imagen 6 - Monetización Web

Rafiki es un software de código abierto, esto significa que puede usarse de manera gratuita y abierta. El propósito de Rafiki es minimizar el esfuerzo de las organizaciones de incorporar Interledger en las cuentas de los usuarios y ser conector con la red ILP. Rafiki usa ILPoverHTTP en vez de BTP porque se asume que los paquetes serÔn grandes al igual que las transacciones. Por esto los pagos son divididos en pocos paquetes, haciendo que establecer una conexión tipo socket sea excesiva.

Rafiki.money, ā€˜testnet’, y ā€˜test network’

Tenemos que admitir que fuimos un poco perezosos para elegir nombres en nuestra red de pruebas para demostrar nuestra tecnologĆ­a. Comenzamos creando una billetera de prueba que en ese momento, y hasta ahora, no tenĆ­a nombre pero lo alojamos en rafiki.money. En esta Simulación de una Cuenta de Servicio de Entidades, el usuario puede crear su cuenta, pasar por un flujo simulado tipo KYC, y tener la posibilidad de retener un balance de prueba y enviar o recibir pagos a travĆ©s de Interledger. La Billetera de prueba estĆ” integrada con el ambiente de prueba Rapyd’s para tener los balances y con Rafiki para facilitar los pagos. Sin embargo el ambiente de prueba de Rapyd’s es muy limitado de acuerdo a las restricciones de su API, entonces seguimos explorando mejores alternativas.

Actualmente estamos:

La Billetera de prueba despliega una isntancia de Rafiki, lo que significa que en ese nodo de prueba en Interledger estƔ corriendo un conector de Interledger tambiƩn.

Estamos trabajando para tener futuras integradores de Rafiki a travƩs de Cuentas de Licencia en el Servicio de Entidades, para conectar al menos con la billetera de prueba en vez de probar su funcionalidad y crear una red grande de pruebas.

TambiĆ©n usamos el tĆ©rmino ā€˜testnet’ para describir toda las herramientas que hemos desarrollado alrededor de la billetera de pruebas. Ejemplo: Una Boutique para experimentar como se comporta en un eCommerce el sistema de Pagos Abiertos. Sin embargo, hemos decidido no seguir usando este tĆ©rmino para reducir la confusión con la red de pruebas.


¿Qué es Dassie?

Dassie es la segunda referencia de implementación de la Arquitectura ILP, pero estÔ dirigida a usuarios de Crypto Monedas y desarrolladores lejos de Entidades de Servicio de Cuentas. No es desarrollado directamente por la Fundación Interledger, es un proyecto personal liderado por Stefan Thomas, uno de los creadores del Protocolo Interledger.

Si bien sirve a dos mundos diferentes, un nodo de Dassie puede emparejarse con un nodo de Rafiki, por ejemplo, si el nodo de Rafiki estĆ” ejecutando un intercambio de Crypto Monedas.


Reflexiones Finales

Gracias al equipo que hace esto posible, y a los contribuidores principales de este artĆ­culo: Sarah, Radu, Melissa, Tseli, Mohammed, Max, y Chris.


As we are open source, you can easily check our work on GitHub. If the work mentioned here inspired you, we welcome your contributions. You can join our community slack or participate in the next community call, which takes place each second Wednesday of the month.

If you want to stay updated with all open opportunities and news from the Interledger Foundation, you can subscribe to our newsletter.