CashTokens: tokens primitivos para Bitcoin Cash

Antecedentes

Cuando Bitcoin fue presentado al mundo, se describió como “un sistema de efectivo electrónico peer-to-peer”. Esa frase incluso está presente en el título del documento técnico que Satoshi Nakamoto publicó a finales de 2008, y supone (según el propio autor) pagos directos de persona a persona “sin tener que pasar por una institución financiera”.

Desde que la red se puso en marcha, se han hecho innumerables propuestas de mejora de la misma con el objetivo de cumplir con ese propósito. Propósito con el cual Bitcoin Cash (BCH) está especialmente comprometido desde la división de la red de 2017, y que incluso se refleja en el nombre de la criptomoneda (en inglés “Bitcoin en efectivo”).

Una de las funciones que se han presentado como una característica deseable es la posibilidad de transferir otros activos a través de la cadena de bloques. Estos activos, denominados tokens (“fichas” en inglés), a estas alturas ya se han popularizado de diferentes formas en muchas criptomonedas, y lo que se puede hacer con ellos depende en gran medida de las características técnicas de las criptomonedas sobre las que funcionan.

Dentro del ecosistema del propio BCH, desde sus primeros años hubo varias propuestas para implementar algo así, inicialmente todas bajo el concepto de “monedas coloreadas”, que en la práctica refiere a transferencias de pequeños montos de Bitcoin Cash con metadatos que pueden ser interpretados a su vez como el envío de cierta cantidad de un token poseído. Esta idea incluso llegó a tener un papel importante con la popularización  de los tokens “Simple Ledger Protocol” (SLP).

Sin embargo, estas “monedas coloreadas” cuentan con ciertas desventajas que dificultan su implementación en las aplicaciones y plataformas de comercio: en el caso de los tokens SLP, se requiere correr software adicional para validar la información. Así también, las monedas coloreadas no son compatibles con 0-conf (transacciones aún no incluidas en la cadena de bloques); por este motivo, es menos seguro aceptar como válido un pago con un token SLP si la transacción no se ha confirmado, mientras que un pago no confirmado de BCH se considera seguro si el monto es relativamente bajo (menor a unos cientos de dólares, por dar un ejemplo).

Debido a estos problemas, desde hace un par de años se planteó como posible alternativa la implementación de un sistema de tokens nativo de BCH que formará parte del protocolo, y que debía activarse mediante una actualización de las normas de consenso.

El nuevo estándar de tokens de Bitcoin Cash

El 15 de mayo de 2023 el protocolo de BCH será actualizado mediante un hard fork, y entre las características introducidas se encuentra una función popularmente conocida como “CashTokens”, la cual fue propuesta bajo el nombre de “tokens primitivos para Bitcoin Cash” en su especificación técnica.

En resumen, CashTokens se trata de un sistema básico de transferencia de tokens similar a los tokens SLP pero con varias mejoras técnicas, entre las cuales podemos mencionar que:

  • Correr un nodo de Bitcoin Cash es suficiente para confirmar la validez de las transacciones, y en consecuencia, las plataformas de comercio no tendrán que correr un segundo nodo para dar soporte a tokens de este estándar.
  • CashTokens es compatible con 0-conf; o sea, es igual de seguro aceptar pago sin confirmar con fichas de este tipo que aceptar pagos 0-conf de BCH.
  • CashTokens, al igual que BCH, maneja una contabilidad basada en “UTXO” (el protocolo SLP manejaba una basada en “DAG”), lo que supone una mejora en cuanto eficiencia al verificar la validez de las transacciones, la cual no era posible conseguir mediante de protocolos de monedas coloreadas.
  • No se corre el riesgo de quemar tokens accidentalmente al barrer direcciones.

Estas ventajas, entre muchas otras, permiten a los CashTokens proveer una mejor experiencia al usuario, tanto para pagar como para recibir activos, amplían la compatibilidad con billeteras auto-custodiadas, y merman la fricción que podrían percibir las plataformas de comercio para incluirlos dentro de sus mercados, tanto en relación a los  recursos necesarios como a la seguridad al aceptar como válidos depósitos 0-conf.

Adicionalmente, al ser una característica nativa del protocolo base, las transacciones con CashTokens siguen pagando tarifas a los mineros de Bitcoin Cash, por lo que su eventual popularización contribuiría a la adopción de BCH  y al incentivo para mantener segura la red.

Así también, los “tokens primitivos de Bitcoin Cash” se alojan en el mismo registro de transacciones que los BCH, por lo que no requieren de segundas capas ni sidechains. Pero esto no implica una merma en su potencial interoperabilidad, puesto que son compatibles con contratos de script que usan el mismo lenguaje que las segundas capas requieren para interactuar con BCH.

¿Por qué se les llama «tokens primitivos»?

Si bien soporta tanto la acuñación de tokens fungibles (monedas normales, por decirlo de alguna forma) como no fungibles (NFT), CashTokens se considera un sistema “básico” o “primitivo” debido a que no es totalmente equivalente a los sistemas de tokens implementados por cadenas con contratos inteligentes avanzados como Ethereum (entre muchas otras).

Bitcoin Cash, por razones de estabilidad y eficiencia, no cuenta con un lenguaje Turing completo para sus contratos, ni con una máquina virtual de tipo “Ethereum Virtual Machine” (EVM) o equivalente, y sus transacciones se basan en una contabilidad mediante UTXO. Estos son factores importantes debido a que BCH tiene como principal objetivo servir como un sistema de efectivo electrónico peer-to-peer escalable, y la implementación de otras funciones se considera complementaria.

La razón de ser de CashTokens es hacer posible el uso de fichas en el ecosistema de BCH de una mejor forma que con los tokens SLP, y enriquecer el potencial de una red cuya prioridad es la de servir como una forma de dinero descentralizado, incensurable, resistente a la inflación arbitraria e independiente de Estados, corporaciones y custodios.


Actualización: En la primera versión de este artículo se menciona que «no se requieren direcciones especiales para recibir fichas de este tipo» como una de las ventajas de CashTokens. Sin embargo, esta afirmación es solo parcialmente cierta, por lo que se hace necesaria la siguiente corrección: la gestión de CashTokens no requiere direcciones que empiecen por un prefijo diferente al de otras direcciones de Bitcoin Cash (a diferencia del protocolo SLP, cuyas direcciones usaban el prefijo «simpleledger:» en lugar de «bitcoincash:»), sin embargo introduce un formato de direcciones denominadas «token aware» (en español: direcciones conscientes de tokens) con el propósito de evitar que se envíen tokens a carteras no compatibles con la gestión de CashTokens, algo que podría crear inconvenientes y/o confusión al usuario receptor.

Por otro lado, aunque las carteras no compatibles con CashTokens no generan direcciones «token aware», siguen siendo capaces de enviar Bitcoin Cash (BCH) hacia direcciones de ese tipo; así también, las carteras compatibles con CashTokens son capaces de recibir BCH sin problema tanto a través de direcciones «token aware» como de direcciones estándar, pero al momento de enviar tokens requerirán que la dirección de destino sea «consciente de tokens».