Hechos clave:
-
Desarrollador propone una solución de segunda capa que podría ser adoptada en cualquier momento.
-
Easypaysy ofrece cuatro tipos de pagos, identificaciones canónicas y nemotécnicas para las cuentas.
Bitcoin no usa las cuentas típicas. En cambio, con cada pago los fondos son enviados a una “salida u output de transacción” única. En esta output, la dirección de Bitcoin potencialmente puede ser reutilizada, y en estos casos la dirección actuaría un poco como una cuenta de Bitcoin. Sin embargo, reutilizar las direcciones de esta manera, hace que sea trivial vincular diferentes monedas y transacciones hacia el mismo usuario, lo cual es terrible para la privacidad. Los usuarios de Bitcoin en cambio son alentados a generar nuevas direcciones para recibir cada pago.
A pesar de que es una mejor práctica para la privacidad, el desarrollador español José Femenías Cañuelo cree que esto no es amigable para el usuario.
“De alguna manera nosotros estamos acostumbrados a los pagos de Bitcoin en la manera en que actualmente son, pero esto realmente es una atrocidad”, le comentó Femenías a un medio. “Esto es como utilizar el internet sin los nombres de los dominios, apoyándose solamente en las direcciones IP, solo que peor, porque las direcciones de criptomonedas son mucho más largas, feas, y cambian constantemente”.
Para resolver este problema, en los últimos años este desarrollador resolvió cómo asegurar un sistema de cuentas sobre Bitcoin. Al detallar esta idea de manera extensa en un nuevo libro blanco, Femenías ahora está proponiendo su protocolo de segunda capa: Easypaysy.
Mientras que de esta manera se preservan los atributos más valiosos de Bitcoin, como la privacidad y la auto soberanía (la no necesidad de depender de un custodio), el español cree que su propuesta mejoraría significativamente la experiencia de los usuarios de Bitcoin, ya que esta les permitiría hacer pagos recurrentes, sin rechazos y más.
Cuentas de Bitcoin en Easypaysy
Como una de las propiedades fundamentales de la propuesta de Femenías, Easypaysy no dependería de ninguna fuente externa, ya que tanto la configuración de la cuenta como su uso, sucederían en la misma blockchain de Bitcoin.
Esto es posible porque una cuenta es creada con una transacción especial. Esta transacción tiene una input (la mitad de la transacción, la que “envía”), la cual incluye una dirección multifirma (multisig). La transacción también tiene una output (la mitad que“recibe”), la cual es una output OP_RETURN. En este caso, la output realmente no recibe ningunos fondos, esta solo incluye una pequeña cantidad de datos.
Las dos llaves públicas utilizadas en la input pertenecen al dueño de la cuenta, quien también creó la transacción, y ambas llaves tienen una función. La primera llave pública es llamada la “llave de identidad”, y esencialmente es la identidad digital de la cuenta de Bitcoin del tenedor. Cualquiera que quiera comunicarse con esta persona de manera privada deberá utilizar esta llave pública para encriptar el mensaje. La segunda llave pública es llamada la “llave de valor”, y esta es utilizada para recibir pagos.
Existen dos llaves públicas diferentes en lugar de una, debido a que la llave de valor es incluso más valorada que la llave de identidad, ya que esta última es utilizada para mensajes, y la primera para el dinero. “La llave de identidad debe estar ´en línea´”, explicó Femenías. “Esto la expone a vulnerabilidades, de la misma manera en que las carteras en línea están más expuestas que las carteras fuera de línea. Quizás sea sensato mantener la llave de valor almacenada de manera fría, mientras que la llave de Identidad sea usada de manera más activa para comunicarse”.
El texto OP_RETURN en la output, entonces, también sirve a una función. Este es un pequeño documento JSON (un formato de datos legible para las maquinas) llamado “descriptor de citas” (Rendezvous descriptor). Este documento contiene información sobre la cuenta de bitcoin en Easypaysy. Específicamente este documento detalla que tipo de pagos el dueño de la cuenta puede aceptar y cómo. De hecho, la propuesta de Femenías da soporte a varios tipos de pagos.
Las dos llaves públicas y el descriptor de citas son toda la información que se necesita tener la cuenta. Cuando es redactada esta transacción especial de creación de cuenta, se añade una comisión (de esta manera, la dirección multifirma debe tener un mínimo de fondos), y esta es retransmitida a la red de Bitcoin para ser incluida en un bloque.
Los ID de Cuentas de Bitcoin de Easypaysy
Ahora las personas necesitan poder encontrar las cuentas.
Aquí es donde Femenías se escabulló con uno de los trucos más ingeniosos de su propuesta. Una vez que la transacción es incluida en un bloque, a la cuenta se le asigna de manera automática una identificación o ID, basada en su lugar en la blockchain. Específicamente, el ID de la cuenta consiste en el bloque exacto en el cual es incluida la transacción, y el lugar de la transacción en el bloque. Esto es combinado con un identificador de la blockchain y una suma de control.
Algo como: blockchain@block.transaction/checksum.
Veamos esto paso a paso con un ejemplo imaginario.
Digamos que estamos utilizando Bitcoin. El identificador de blockchain, entonces, es “btc”.
Y digamos que la transacción es incluida en el bloque 543.847. Este es un bloque de bitcoin real que fue minado en octubre del 2018, pero esto no es importante, solo estamos usándolo como ejemplo.
Digamos, también, que la transacción es el número 636 en este bloque. Este número de transacción realmente existe, pero nuevamente, la estamos utilizando para el propósito del ejemplo. No hay necesidad de buscar la transacción real.
Por último, la suma de control es un truco de criptografía para seguridad extra.
“Esta se extrae del cómputo de tres objetos” dijo Femenías. “el hash del bloque que incluye la cuenta, la raíz de Merkle de ese bloque, y el hash de la misma transacción de la cuenta. Así, si alguien intenta enviarte mala información de la cuenta, fácilmente puedes detectarlo».
En nuestro ejemplo, la suma de control sería 577.
Entonces, la transacción número 636 incluida en el bloque de bitcoin número 543.847, resultaría en la identificación de la cuenta: btc@543847.636/577. Más específicamente, esto sería la “identificación canónica”, ya que allí se muestran el bloque, la transacción, y la suma de control.
Para hacerlo incluso más práctico, esta identificación canónica (btc@543847.636/577) también puede ser expresado como una “identificación nemotécnica”. Al apalancarse con el formato de documento BIP 39, utilizado para las semillas de carteras de Bitcoin, los números en la identificación de la cuenta pueden ser convertidos en conjuntos de palabras (o combinaciones de palabras). Esto debería ser más fácil de memorizar para las personas.
Los números en la identificación de la cuenta de este ejemplo, puede ser separados en tres conjuntos.
543847 = anular
636 = exhibir
577 = movimiento
De esta manera, la identificación nemotécnica para este ejemplo sería: btc@anular.exhibir/movimiento.
Por último, el libro blanco de Easypaysy también propone “Identificaciones de dominios” los cuales dependerían del Sistema de Nombres de Dominio (DNS). En resumen, tales identificaciones contendrían un nombre de dominio real, así como un identificador de blockchain y una suma de control, y lo vincularía con una identificación de cuenta por medio del sistema DNS. Por ejemplo, una identificación de dominio se vería así: btc@criptonoticias.com/561.
Este tipo de identificaciones dependerían de una fuente externa (DNS) y costarían dinero y esfuerzo para mantenerlos. Femenías espera que estos sean de interés solo para socios comerciales.
Pagos con cuentas de Bitcoin en Easypaysy
Entonces, tenemos una cuenta y una identificación de cuenta. Ahora alguien, llamémoslo “el pagador”, quiere pagarle al dueño de la cuenta, a quien llamaremos “el beneficiario”. El pagador posee la dirección nemotécnica del beneficiario, porque el beneficiario se la dio. La identificación de la cuenta de bitcoin en Easypaysy, en cualquiera de sus formas, puede ser simplemente compartida con cualquiera, así como una dirección de correo electrónico o un número telefónico.
Para hacer el pago, el primer paso para el pagador es convertir la identificación nemotécnica a la dirección canónica. Este paso es trivial. Utilizando el formato BIP 39, el pagador simplemente convierte las palabras de la identificación nemotécnica en números, y termina con la identificación canónica: btc@543847.636/577.
Con la identificación canónica, el pagador puede utilizar la suma de control para asegurarse de que la altura del bloque y que el número de la transacción coinciden. Esto no es estrictamente necesario, pero sirve como una verificación extra para asegurarse de que no hay ningún tipo de error tipográfico en la cuenta, o quizás para prevenir que alguien entregue una cuenta de aspecto similar.
De cualquier manera, el pagador ahora sabe dónde encontrar la cuenta: Es la transacción número 636 en el bloque 543.847. Así que la busca.
Esta transacción entonces incluye el descriptor de cita: el documento JSON en el output OP_RETURN. El descriptor de cita especifica qué tipo de pagos puede recibir la cuenta y el cómo. Estas pueden ser todos los tipos que soporta el protocolo o cualquier selección de estas.
De los tipos de pagos que acepte el beneficiario, el pagador escoge su favorito y realiza el pago. Listo.
Tipos de Pagos con Easypaysy
Así que ¿qué tipos de pagos se pueden hacer? El protocolo de Femenías incluye cuatro tipos de pagos.
Tipo 0
El primer tipo de pago, el tipo 0, es el tipo de pago más sencillo, pero al mismo tiempo es el peor para la privacidad. Los pagos tipo 0 básicamente son solo pagos a la llave de valor, y por consiguiente, involucran reusar la dirección correspondiente, así como muchas direcciones de donaciones hacen hoy en día. De hecho, Femenías no incentiva este tipo de pagos, sin embargo, quiere incluirlos en el protocolo como una opción para aquellos que realmente quieran utilizarlos.
Tipo 1
El segundo tipo de pagos, los pagos tipo 1, requieren interacción. Para este tipo de pagos, el pagador contacta al beneficiario para solicitar la nueva dirección de bitcoin. El protocolo de Easypaysy es flexible sobre cómo se realiza el contacto; puede hacerse por medio de correo electrónico, por medio de una página web, en una aplicación de mensajería, o por otros medios.
Cuando se le provee al pagador la dirección, digamos que por correo electrónico, el beneficiario también firma la dirección con su llave de identidad. Esto ofrece una confirmación para el pagador de que la dirección realmente es del beneficiario, y no una dirección perteneciente a un hacker que obtuvo acceso al correo electrónico del beneficiario, por ejemplo.
Tipo 2
El tercer tipo de pago, los pagos tipo 2, no requiere interacción. De manera similar a los trucos usados previamente para ocultar direcciones, los pagos tipo 2 le permiten al pagador generar una nueva dirección de Bitcoin para el beneficiario, con la cual el beneficiario, y solo el beneficiario, puede gastar.
Para hacer esto, el pagador necesita generar un par de llaves públicas de uso único. Utilizando la llave privada de este par de llaves, en conjunto con la llave de valor del beneficiario, el pagador genera una nueva llave pública y su correspondiente dirección de bitcoin. El pagador envía los fondos a esta nueva dirección y, muy importante, añade la llave pública de uso único a la misma transacción como una output OP_RETURN.
Curiosamente, el beneficiario puede utilizar esta llave pública de uso único en conjunto con su llave de valor para generar una nueva llave privada que corresponda con la nueva llave pública, y así la dirección de Bitcoin correspondiente. En otras palabras, si el beneficiario descubre la llave pública de uso único, él y solo él puede gastar los fondos de la nueva dirección de Bitcoin.
Para descubrir la llave pública de uso único, el beneficiario debe ser notificado de la transacción por el pagador, o el beneficiario simplemente verifica todas las nuevas transacciones de Bitcoin con un output OP_RETURN. Por cada output OP_RETURN, el verifica si esta es una llave pública que pueda combinar con su llave de valor privada para gastar los fondos incluidos en la transacción. Usualmente este no será el caso. Pero cuando este sea el caso, sabrá que se le ha pagado.
Tipo 3
El cuarto tipo de pagos, los pagos tipo 3, es similar al segundo tipo. Esta vez, sin embargo, las output OP_RETURN deben ser precedidas con el identificador “EP”. Esto los hace más fácil de ubicar para el beneficiario, pero estos cuestan un poco más en comisiones para el pagador.
Beneficios de las cuentas de Bitcoin
Como una propuesta de segunda capa, el sistema de cuentas de bitcoin en Easypaysy propuesto por Femenías no requeriría ningún cambio en el protocolo de Bitcoin, así como tampoco necesitaría consenso de toda la industria. Las carteras individuales pueden adoptar la propuesta para mañana, y luego de eso los usuarios podrían usarlo de manera inmediata.
Femenías, por supuesto, cree que las cuentas de Easypaysy podrían beneficiar en gran medida la usabilidad de Bitcoin, abriendo así un nuevo potencial para el protocolo.
“De estos, la no repudiabilidad es un beneficio notorio” dijo Femenías. “Digamos que vas a un proveedor de Lanborghinis para comprar tu nuevo automóvil. Una vez que acuerdan el precio, el proveedor te muestra un código QR y te dice que envíes el pago a esa dirección. Y eso haces. Pero un día después, la cuenta del proveedor te dice que todavía están esperando por el pago. ¿cómo compruebas que tú pagaste? Debido a que las direcciones de bitcoin son seudónimas, no puedes comprobar que tú enviaste el dinero al proveedor de Lamborghini.”
Con el sistema de cuentas de bitcoin de Easypaysy propuesto por Femenías, esto no sería un riesgo: el pagador siempre puede proveer pruebas de pagos a una cuenta específica. Para los pagos tipo 0, esto es obvio, el dinero fue enviado públicamente a una llave de valor de una cuenta. Los pagos de tipo 1 también son fáciles de comprobar, ya que la dirección de bitcoin que se dio estaba firmada con la llave de Identidad del beneficiario. Pero incluso para los pagos tipo 2 y tipo 3, el pagador puede demostrar que le pagó al beneficiario. La llave privada de uso único puede comprobar criptográficamente que el beneficiario tiene toda la información necesaria para identificar la transacción como suya y para computar la llave privada que le permitirá gastar los fondos.
Otro beneficio del sistema de cuentas de bitcoin en Easypaysy de Femenías es que haría que los pagos recurrentes fuesen mucho más factibles. Pensemos en el pago de alquileres, suscripciones u otras transacciones periódicas hacia una misma entidad. El software de las billeteras podría ser programado para aceptar solicitudes de pago de una cuenta específica, hasta una cantidad máxima por periodo. Por ejemplo, la cuenta del dueño de una casa tendría permitido solicitar hasta 0,1 bitcoins por mes, si esta es la renta mensual fijada.
Más allá de eso, sería mucho más fácil para los comerciantes retornar fondos. Esto puede ser útil, por ejemplo, cuando alguien haga una compra, pero el comerciante luego se entera de que el producto ordenado está agotado. Con un sistema de cuentas, el dinero puede ser retornado al cliente de manera sencilla, sin la necesidad de tener que solicitar una dirección específica de retorno.
Por último, el sistema de cuentas de bitcoin de Easypaysy propuesto por Femenías podría, por primera vez, ofrecerles a los usuarios de bitcoin una identidad en la blockchain.
“Esto podría significar, por ejemplo, que cuando accedas a un sitio web, tu usarías la identificación de Easypaysy, y en lugar de solicitar una contraseña, el sitio web te reta a firmar un mensaje con tu llave privada” sugirió Femenías. “Incluso si el sitio web ha sido hackeado, tu siempre estarás a salvo porque el sitio web no almacenaría ninguna contraseña.”
Las desventajas de las cuentas de Easypaysy
Dicho todo esto, una de las características más poderosas del sistema de cuentas de bitcoin de Easypaysy propuesto por Femenías, podría ser también su mayor desventaja: este depende completamente de la blockchain de Bitcoin, ya que incorporaría la información de las cuentas en esta. El espacio en los bloques es escaso, y la escalabilidad es un reto.
Para minimizar este problema, Femenía sugiere en su libro blanco que las cuentas también podrían ser abiertas a granel: Una transacción podría incluir cientos o incluso miles de cuentas, para otros tantos usuarios. En este caso la información OP_RETURN apuntaría hacia una fuente externa para toda la información de la cuenta, quizás un sitio web. La OP_RETURN también podría incluir una raíz de Merkle para toda la información de esta cuenta, de manera que el pagador pueda verificar la información de la cuenta con la raíz de Merkle. Si bien esta solución dependería de una fuente externa, como una página web, al menos los usuarios podrían asegurarse de que los datos no sean modificados.
Una solución alternativa para las cuentas de bitcoin en Easypaysy podría ser utilizar una blockchain diferente, como la de Litecoin, para abrir las cuentas. En este caso, un índice numérico es añadido a la cuenta haciendo referencia a Litecoin, o cualquiera de las blockchains que sea utilizada. A pesar de que esta solución sería lo suficientemente segura en Litecoin, por supuesto, viene con la desventaja obvia de que los usuarios de Bitcoin tendrían que depender, en cierta medida, de una criptomoneda diferente.
Versión traducida del artículo de Aaron Van Wirdum, publicado en Bitcoin Magazine.