Cuando Bitcoin le copia a la industria financiera
Bitcoin, Asientos Contables, SWIFT, cómo se conectan?
Sé que suena clickbait pero te juro que Bitcoin es contabilidad y Lightning es casi una copia de como funcionan las transferencias SWIFT internacionales.
”Te pegaste el cabeza”, “No te creo”, me dicen algunos amigos. Claro, por un lado tengo la red con nombre de “rayo” ⚡, que permite que los pagos con bitcoin escalen a nivel mundial. Por otro una red tradicional setentera con fama de lenta. Suena impensable que sean iguales.
Pero si haces zoom a cómo funcionan, son bien parecidas. Esos parecidos son un destilado de elementos tan importantes que no cambian ni siquiera con una revolución de varios trillions (Bitcoin). Sea porque se copian o se re-descubren los mismos principios.
Veamos un par de ellos
Bitcoin UTXOs = Asientos Contables
Un asiento contable es una forma fancy de hacer referencia a un apunte de un movimiento de dinero sobre una cuenta. En otras palabras, hacer registro de: en qué momento en el tiempo, qué cuenta se vio afectada, por cuánto valor, cuál fue el motivo y cuál es el balance final post movimiento.
Según la Segunda Ley de la Conservación de Balance (partida doble 😂), los movimientos no se crean de la nada, ni tampoco se destruyen. Siempre tenemos que tener un asiento o anotación de donde sale el dinero y otro en donde entra el dinero.
Los balances entonces se construyen a partir de un movimiento y dado que hubo un movimiento (partida o apertura también es un movimiento) que vamos a tener un balance, no del otro lado.
Voy a repetirlo, movimientos implican balance. Movimiento → Balance. Así se construye muy simplista e idealizado lo que es la contabilidad.
Ahora, en Bitcoin no existen “cuentas”, a pesar de que alguna amiga te pida tu “cuenta de Bitcoin” para hacer una transferencia. Todo en Bitcoin son movimientos (asientos contables) y tu billetera (wallet) lo que hace es llevar el registro contable de todos estos movimientos y te muestra como balance los que no han sido gastados. Esto significa que, para saber tu balance de Bitcoin, es necesario saber todos los movimientos que no han sido “gastados” o que no tengan su “deber” según nuestros amigos contadores. De aquí el nombre UTXO → “unspent transaction output” o salida de una transacción no gastada.
Lo más entretenido de todo esto es que este libro contable vive descentralizado en miles de nodos (computadores corriendo el código de Bitcoin) alrededor del mundo. En teoría, cualquiera que lleve el registro de todas las transacciones sin gastar, también conocido como UTXO set (grupo salidas de transacción no gastados), entendiendo cómo funcionan los scripts y contratos inteligentes, puede saber el balance de las billeteras disponibles.
En este momento te puedes estar asustando. Entonces, ¿todos pueden saber cuántos satoshis tengo? 🥵. Aquí el punto es que puedes generar distintas “direcciones” con la misma billetera, lo que hace que no se pueda correlacionar que esos UTXOs corresponden a la misma persona 🙂.
Dinero en capas
La industria financiera se beneficia de la confianza y la regulación de los participantes para hacer una estructura de varias capas en cómo se mueve el dinero. Esta estructura nos ha beneficiado a nosotros, consumidores, para acceder a servicios que son más o menos impensados moviendo lingotes de oro (hasta ~1971) o sacos de dinero en camiones el día de hoy.
Los servicios financieros que usamos en el día a día utilizan formas de llevar cuentas (contabilidad) en un block de notas (libro) separado y en ciertos momentos en el tiempo los participantes se ponen de acuerdo para ver quién le debe a quién y ahí hacer un settlement y efectivamente mover el dinero o contabilizarlo como que fue movido.
Por lo que es injusto comparar a Bitcoin - libro de contabilidad global, efectivamente dónde está el dinero - con tarjetas de crédito, transferencias electrónicas y hasta SWIFT - libros de contabilidad que se llevan aparte al movimiento de dinero - justificando que Bitcoin es lento y caro. De todas formas la gente lo sigue haciendo.
Iré caso a caso explicando cómo funcionan a grandes rasgos y luego cómo podemos llegar a una comparación más válida.
Transferencias electrónicas instantáneas
Las transferencias funcionan porque los bancos se conectan entre ellos para mandarse mensajes. Y funcionan bien (y más rápido) cuando esa mensajería ocurre rápido.
En otras palabras, cuando uno transfiere a un amigo $5.000 CLP, lo que realmente pasó es que el banco A le dice al banco B que le debe $5.000 y que esos $5.000 se los abone a una cuenta. Pero el dinero no se movió. El banco B tiene unos varios segundos para decir OK o se reversa una transacción (han notado que aveces se demora transferir jaja?), y el banco que envió tiene otros par de segundos para decir que todo está bien. Luego de una serie de mensajes y en el caso feliz, lo mejor que se tiene es que esta deuda va ser “cerrada” al final del "ciclo" (por ejemplo en Chile todos los días hábiles a las 14:00 y 00:00 se termina un ciclo). Para finalizar el proceso, se utiliza otro riel de pagos del Banco Central (en el caso de Chile, LBTRs) con otros horarios y set de reglas, para finalmente mover el dinero.
Si quieres aprender un poco más de cámaras y cómo se conectan (en Chile 🇨🇱) te dejo una blog de Panco respecto al tema
Tarjetas de crédito
Cuando uno paga con tarjeta de crédito, ocurre una serie de mensajes entre varios middlemen que hay en una transacción. Si quieres conocer el flujo en detalle, lo puedes revisar en este post.
Si nos fijamos en el tiempo en que el dinero efectivamente se mueve y no está en deuda, un adquiriente recibe el dinero de la red en aproximadamente uno o dos días hábiles después de la transacción, lo que hace que el comercio reciba el dinero en ese T+2 (día de transacción más dos días hábiles) o mayor. No obstante el comercio puede deshacer el cobro con una reversa/devolución y el usuario de la tarjeta también puede deshacer la transacción mediante un contracargo.
Así que pueden pasar días, semanas o hasta un par de meses y la transacción no es final-final-final 😱.
SWIFT
SWIFT es una red de mensajería entre bancos creada en los setentas para mejorar la experiencia cross-border de ese entonces. Los mensajes eran transmitidos a través de telex o fax y luego con el paso del tiempo pasaron a usar internet - de hecho, telex, fax fueron descontinuados ~2010 -. Hoy procesa miles de millones de mensajes al año para ejecución de pagos, información de saldo y más.
Cada institución financiera cuenta con un BIC (también conocido como SWIFT ID o código ISO 9362). Este se representa como: <institución><país><localidad><oficina(opcional: XXX)>
Por ejemplo para el mismo banco (Santander) en distinto país:
En Chile: BSCHCLRMXXX
En España: BSCHESMMXXX
Para enviar dinero a través de Swift, el banco originador envía un mensaje al banco receptor - usando el ID respectivo y la cuenta de destino en ese banco -, el banco receptor recibe el mensaje y le acredita el monto a la cuenta destinada. El mensaje se responde con un ok pero ningún fondo se ha movido.
Para el movimiento de fondos, existen dos posibilidades, el banco emisor y receptor tienen relaciones comerciales o no.
Cuando dos bancos tienen relaciones comerciales, significa que cada banco posee una cuenta bancaria en su contraparte con fondos para poder llevar a cabo los pagos. Un ejemplo - no sé si tienen esta relación - el banco BBVA en México abre una cuenta en el banco BCP en Perú y viceversa.
El nombre de estas cuentas son:
- Nostro: la cuenta de "nuestro" banco en el banco partner
- Vostro: la cuenta del banco partner en nuestro banco.
Con estas cuentas y con fondos pueden mantener un sistema contable para poder ejecutar todos estos pagos.
Cuando no tienen relaciones comerciales, se utilizan uno o más bancos corresponsales para poder mover los fondos. Un banco corresponsal es aquella institución que participa de la red, cuenta con cuentas “Nostro/Vostro” y más bien, aporta a la red permitiendo usar sus cuentas para lograr mover los fondos. Vamos con un ejemplo:
- Se solicita enviar de Banco Santander 🇨🇱 a Nubank en 🇲🇽, no tienen relaciones comerciales.
- Pero JP Morgan 🇺🇸 tiene relaciones comerciales con ambos. Entonces hará de intermediario en la transacción.
- Entonces Santander registra un movimiento hacia JPM (mediante su par de cuentas Nostro/Vostro)
- Luego JP Morgan registra un movimiento interno entre las cuentas Nostro de Santander y Nostro de Nubank (tomando el nombre de las cuentas desde la perspectiva de Santander y de Nubank)
- Finalmente JP Morgan registra un movimiento hacia Nubank (mediante su par de cuentas Nostro/Vostro)
O puesto como diagrama, es algo así:
Entonces la plata viajó así: Santander Chile ↔ JP Morgan ↔ Nubank México.
A eso le puede agregar otro intermediario si Nubank y Santander no tuvieran bancos corresponsales en común, pero resulta que un par de corresponsales de ellos sí tienen relaciones comerciales. Por ejemplo: Santander Chile ↔ JP Morgan ↔ Citibank ↔ Nubank México. De todo ese ruteo (qué bancos usar para mover) se hace cargo SWIFT.
Como pueden existir varios participantes, los cargos y tiempos por un pago SWIFT son variables por relación comercial y tipos de cambio. Por ejemplo, un banco se puede demorar 2 días en hacer la operación de Nostro/Vostro y otro 1 día. Por lo que cuesta predecir qué tanto demorará.
Comparación justa: Lightning Network
Al igual que mover lingotes de oro o sacos de dinero, Bitcoin tiene los siguientes problemas:
- Velocidad de las transacciones: uno no va a esperar 20 minutos para el pago de un café.
- Escalabilidad: Si todo Puerto Maldonado en Perú (~68.000 habitantes) enviara una transacción de Bitcoin en este momento, los pagos se procesarían bastante lentos y algunos hasta podrían ni siquiera quedar “encolados” a ser ejecutados.
- Costos: Los costos de transacción son variables, depende del uso y pueden llegar a ser muy altos.
El trasfondo: cada ~10 minutos Bitcoin cierra un libro intradía de transacciones y lo distribuye en las decenas de miles de nodos que participan de la red. Todos los participantes conocen y validan estos libros intradía (o bloques). Tal dimensionalidad tiene un costo. Es computacionalmente difícil y es caro de mantener. Con justa medida diría yo, ya que soluciona el problema de los generales bizantinos - que hace a Bitcoin tan especial -.
Satoshi Nakamoto sabía desde la concepción de Bitcoin que para poder hacer pagos rápidos su usabilidad no era la mejor. Desde entonces han surgido ideas de cómo solucionar las dificultades mencionados utilizando libros contables que no cierran dentro de esos periodos de tiempo (shameless, puedes leer la historía en mi blog). En 2016 se propuso Lightning Network (LN), solución que en mi opinión es igual a SWIFT pero sin necesidad de confianza (trustless).
La base conceptual de LN es que se utiliza un Libro Contable anexo a Bitcoin. Entonces, no se necesita ponerse de acuerdo. No es necesario ir a los bloques a revisar. No hay que sincronizar miles de nodos de Bitcoin, solo sincronizarme con aquellos con los que tengo una “relación comercial” (Swift?).
Supongamos Alicia y Benjamín quieren abrir un canal de lightning (comenzar esta “relación comercial” o “abrir cuentas Nostro/Vostro” ). Lo primero que hacen es generar un contrato inteligente de multifirma que dice que los fondos que puso Alicia en esta cuenta que afectan el contrato van a Alicia y los que puso Benjamín van a Benjamín. Esta cuenta la llamaremos escrow (cuenta de depósito en garantía). Ambas partes transfieren los fondos y firman la transacción del otro en señal de buena fe.
Ahora que existe esta relación, ambas partes tienen la libertad de ponerse de acuerdo en cómo este depósito de garantía cambia.
Por ejemplo, dado una cuenta multifirma, Alicia 100 y Benjamín 0. Alicia compra un café a Benjamín por 10.
Necesitan decir a todos los demás que ocurrió esta transacción?
No.
Lo que ocurre es que Alicia le envía a Benjamín un nuevo contrato que afirma “Alicia 90, Benjamín 10”. Ya que los incentivos de Benjamín es tener más dinero, firma este nuevo contrato. La clave es que al firmar estos nuevos contratos, se invalidan los previos.
Entonces, ahora en vez de esperar 10 minutos para la confirmación de un bloque para la compra del café, el tiempo que se demora en confirmar este pago es lo que se demoren en ponerse de acuerdo Alicia y Benjamín.
Pero…puede que te estes cuestionando que es imposible que Alicia se ponga de acuerdo con todos los con quién interactúa en pagos, y es verdad 😬. Igualmente, uno piensa que un banco no va tener relaciones comerciales con todos los demás bancos del mundo. Este problema se soluciona al igual que en la red SWIFT: ruteo entre cuentas.
LN tiene la misma propiedad que SWIFT. Para poder llegar un pago de Alicia a Carolina donde no están conectadas, pero Benjamín si está conectado con ambas, Benjamín permite ejecutar el pago a través de sus cuentas “Nostro/Vostro” (canal de Lightning). Obvio que cobrando una comisión 🤑. El tiempo de ejecución y que llegue el dinero a la cuenta de Carolina son los pocos segundos en que los participantes se pongan de acuerdo.
Diferencia sustancial
Si bien Bitcoin con la Industria financiera hoy utilizan los mismos conceptos de base (contabilidad de doble entrada y dinero en capas) la diferencia trascendental es el modelo de confianza que usan: Trustful vs Trustless
Un modelo Trustful es el que se basa en la confianza de los participantes, ya que existe una confianza explícita. Estos ambientes está super regulados por legislaciones locales e internacionales. Por ejemplo, existe una confianza explícita en la creación de dinero en el banco central y los bancos tienen una confianza explícita que van a mover el dinero entre las cuentas Nostro/Vostro.
Por otro lado, Trustless, es que no existe confianza entre los participantes. Esto provoca que el protocolo dentro de sus propias reglas incentiva a los participantes a cumplir con ellas, en caso de no seguirlas, puede que se tenga graves consecuencias. Por ejemplo en Lightning, Si un participante participante que envía un contrato de escrow que ya estaba invalidado y la contra parte se da cuenta, esta última se queda con todos los fondos del escrow. Es parte del protocolo y ocurre automáticamente.
En la práctica, los modelos Trustless son más caros de mantener y desarrollar. También tienen costos monetarios (no todos podemos tener cuentas escrow) y una curva de aprendizaje que afecta la usabilidad de los protocolos (cómo creo una dirección multifirma).
Aunque se está trabajando para reducir estas barreras 🙄
Conclusiones
Bitcoin no re-inventó la rueda 🎉. Toma conceptos que varias personas ya están familiarizadas, como contabilidad de doble entrada o cómo funciona el dinero en capas, y los utiliza para lograr funcionar como dinero P2P (peer to peer) mágico de internet sin que los participantes de las red confíen entre ellos. Permite o abre nuevas líneas de negocio que eran futuristas o impensadas. Ayuda a sociedades sin sistemas financieros robustos a que puedan mover dinero sobre internet.
Al final, el dinero como deuda, asientos contables y en capas es un fiel reflejo de que hoy el dinero está en una base de datos de alguien, por ende es programable.
TLDR
- El modelo de balances y contabilidad de Bitcoin es el mismo que usan las empresas hoy en día.
- Siempre generar una dirección distinta al recibir Bitcoin.
- Comparar Bitcoin con medios de pago o transferencias es comparar peras con manzanas.
- Comparar Lightning Network con medios de pago o transferencias hace más sentido.
- Los modelos tecnológicos de Swift y Lightning Network se parecen.
- Tanto el dinero FIAT (fiduciario) y Bitcoin son programables.