Criptomonedas – Lo técnico

¿Por qué no se pueden copiar y pegar criptomonedas?

Ya hemos establecido que las criptomonedas son digitales, virtuales, que no existen de forma física, únicamente tras la pantalla. Y como sabemos, casi todo lo que está detrás de una pantalla puede reproducirse de forma básicamente ilimitada con una pequeña y fácil función: copiar y pegar (Ctrl+C y Ctrl+V). Así que, en teoría, una moneda digital también podría copiarse y pegarse… ¿No?

¿Y de qué serviría una moneda que cualquiera puede copiar y pegar, como si tal? No como en los bancos, donde ese saldo de una cuenta en línea se verifica por una tercera parte (el mismo banco). Cuando no existe esa autoridad, como en las criptomonedas descentralizadas, ¿qué sucede? ¿Alguien no podría solo copiarlas y pegarlas infinitamente para conseguir más dinero?

La respuesta, por supuesto, es no. O sea, puedes copiar y pegar el código para hacer una criptomoneda propia, pero copiar las unidades de una red ya establecida es otra historia. Resulta casi imposible “copiar y pegar” criptomonedas, inclusive más que falsificar dólares, pues estas son únicas y se emiten en una cantidad determinada. Tampoco resulta posible gastar más de una vez la misma moneda. ¿Y cómo le hacen? Pues con matemática. Más específicamente, con criptografía.

Imagen por vegefox.com_stock.adobe.com

A eso de poder gastar dos veces o más la misma moneda se le conoce como Problema del Doble Gasto. Con efectivo no es posible que se presente, pues al comprar algo tienes que renunciar a cierta cantidad de billetes o monedas, así que no podrás gastarlas más de una vez (a menos que las robes de vuelta, pero hey, no hagas eso).

En el mundo digital, en cambio, resulta difícil impedir esto de copiar y pegar el dinero. Allí es donde entra la criptografía: imagina un archivo de Word. No hay nada más fácil de copiar, ¿eh? Pues ahora imagina que construyo un cálculo matemático imposible de resolver para un humano y creo un documento de Word llamado “CN145” en base a ese cálculo para volverlo único y no replicable. Además, les voy a pedir a muchas personas que estén siempre pendientes de ese documento y de ese cálculo.

Ahora, si alguien intentara crear un nuevo documento llamado “CN145” ya no podría, porque mi documento es único. Si intentara copiarlo y pegarlo tampoco podría, porque tendría que replicar ese cálculo imposible y engañar a todas esas personas que están pendientes de mi documento.

Las criptomonedas son algo similar. Aparte de utilizar la criptografía (cifrado de datos con matemática MUY compleja) para construir y emitir unidades únicas, sus transacciones luego pasan a ser revisadas y verificadas por toda una red de personas y máquinas alrededor del mundo. Para poder hacer doble gasto, hay que engañar a todas esas personas y máquinas a la vez. Y eso es algo casi imposible.

Ya que mencionamos eso, volvamos al ejemplo del efectivo: cuando lo pagas a alguien, esa persona verifica que en serio se lo estás dando y el billete o moneda es real. En este caso, en cambio, quien verifica que estás dando fondos reales no es solo la persona que lo recibe, sino los mineros o delegados que validan con su software y sus equipos cada transacción hecha. Vamos a cómo funcionan las criptomonedas para saber más.

¿Cómo funcionan y cómo se crean las criptomonedas?

Lo primero que debes tener en cuenta al respecto es esto: no necesitas saber exactamente cómo funcionan las criptomonedas para poder usarlas, tanto como no necesitas saber cómo funciona PayPal o el banco para abrir y manejar tus cuentas allí. Tampoco necesitas ninguna clase de conocimiento técnico, pues el uso de criptomonedas es bastante intuitivo, tal como usar cualquier app de tu teléfono. Así que podemos dividir en dos perspectivas su funcionamiento: nivel usuario promedio y nivel avanzado-desarrollador.  Vamos a verlas.

Nivel usuario-promedio-normal-aiuranoséinformática

Comencemos por el principio: te descargas una cartera digital. ¿Desde dónde? Depende del tipo de cartera que quieras. Por aquí tenemos una guía para que puedas escoger la mejor para ti, ya que hay bastantes disponibles (para escritorio, para móvil, de hardware…).

Una vez con la cartera, significa que ya tienes direcciones listas para usar. Si vas al botón o sección de Recibir, allí podrás encontrarte con una línea larga de números y letras que no parecen tener mucho sentido. Algo así: 18NGUqYCAi8bWf24hPeJntDZVWzvEv1dqj. Esa es una dirección pública, equivalente a un número de cuenta bancaria. Probablemente venga acompañada de un código QR también. Así que puedes copiar y pegar la dirección para decirle a alguien que te transfiera fondos (en criptomonedas) allí o darle en directo el código QR. Ambos funcionan igual.

En el botón de Enviar de una cartera, en cambio, serás tú el que tenga que poner la dirección de alguien, más la cantidad que le debes. Verificas, en algunos casos —depende de la cartera— eliges el monto de la comisión para los mineros o delegados —las personas que mantienen el sistema—, das clic en enviar y ya está.

Es probable que en tu cartera se vea el estado de tu transacción. Pero, si no, usando un explorador de bloques (como este) puedes revisar ese dato, anotando en el buscador la ID o tu dirección.

Registro en la blockchain de la cartera del Internet Archive. Fuente: Blockchain.info

Y ya está, fin, es todo. Puedes revisar precios de criptomonedas en páginas de estadísticas como CoinMarketCap y eventos relacionados en otras páginas y aplicaciones, como CoinMarketCal. Y claro, comprarlas y venderlas a través de alguna casa de cambio, tienda, cajero o de persona a persona. Incluso hay carteras que tienen esa funcionalidad internamente.

No fue muy difícil, ¿verdad?

Nivel desarrollador-tripas-del-software-cosasquelagentecomúnnonecesitasaber

Bueno, ya podemos ir hablando de las tripas de este software. Porque sí, las criptomonedas no son más que un tipo de software, construido con matemática compleja… aunque espera, no te hablaremos de todas las “tripas” de una vez, porque son demasiadas. Para ver en detalle la anatomía, consulta aquí, preferiblemente luego de ver los “órganos” más importantes a continuación.

Podemos decir que una criptomoneda descentralizada está constituida principalmente por seis componentes: una red distribuida, un algoritmo de consenso con incentivo, llaves privadas y públicas, una blockchain (cadena de bloques), transacciones pendientes de gasto (UTXO), y gente con ordenadores. Mucha gente con ordenadores y, mientras más, mejor. Veamos uno por uno.

Blockchain

Es el gran registro donde quedan guardadas y anotadas absolutamente todas las transacciones realizadas con una criptomoneda, desde la primera hasta la última, incluyendo fechas, direcciones, montos, comisiones y otros datos técnicos. Está construida con criptografía y se le llama “cadena de bloques” porque eso es lo que es a nivel de software: la información (transacciones) se agrupa en conjuntos llamados “bloques” que se entrelazan entre sí desde el primero, usando criptografía para ello.

Red distribuida

Imagina una “telaraña global”, donde cada intersección es una computadora diferente con conexión a Internet que está corriendo cierto tipo de software y los hilos son los mensajes que comparten esas computadoras para trabajar por una misma meta. Pues eso es lo que llamamos red distribuida (porque no está en un solo lugar, está, pues… distribuida), y a esas computadoras les llamamos nodos.

Algoritmo de consenso

¿Recuerdas que mencionamos que los nodos trabajan por una meta común? Pues para ello todos deben seguir ciertas normas previamente programadas en el software que comparten. De esa forma, los datos verificados que se registren en la cadena siempre serán los mismos en cada copia de la blockchain y cada nodo los compartirá de forma idéntica. A eso se le conoce como consenso: aunque son diferentes ordenadores en distintos lugares y con distintos dueños, todos están de acuerdo en algo; en este caso, en la validez (o no) de una transacción.

El algoritmo de consenso es la forma en que se logra ese acuerdo en una red de criptomoneda. Un algoritmo (en general) es una secuencia de instrucciones construida en números. Ahora, la existencia de un algoritmo de consenso permite que todos los nodos se comporten de determinada manera para hacer funcionar al sistema.

Eso lo hace mediante el incentivo: si un nodo se comporta bien y valida las transacciones según los parámetros y normas establecidos, recibe una cierta cantidad de criptomonedas como recompensa. De esa forma, se asegura que cumplir las reglas sea más beneficioso que romperlas. Y es que de cumplir esas reglas depende escribir sobre la cadena de bloques o no.

Transacciones pendientes de gasto (UTXO)

Digamos que estos son pedacitos de código, equivalentes a lo que sería en el mundo físico los billetes y las monedas. Las UTXO son lo que se intercambia al momento de hacer transacciones, lo que conforma el saldo de un usuario de criptomonedas. Así que, si te estabas imaginando que existían por aquí moneditas de oro virtuales, lamentamos decepcionarte. Una UTXO puede ser de cualquier cantidad —muy chica o muy grande— y es invisible para el usuario promedio. Cabe destacar que las UTXO se convertirán en TX (transacciones) una vez que las uses.

Llaves privadas y públicas

Oficialmente esto es criptografía asimétrica o de llave pública. Se trata de un sistema matemático que genera para sus usuarios, mediante la aplicación de algoritmos específicos, dos “claves” o “llaves”: una pública, que puede ser distribuida a cualquiera sin riesgo, y otra privada, que sólo debe ser conocida por su dueño. Estas “llaves” son líneas alfanuméricas (números y letras entremezclados) de determinada extensión. En el caso de las criptomonedas, la criptografía de llave pública se utiliza en cualquier monedero para intercambiar fondos. Las direcciones públicas de cartera que otorgamos para recibir fondos son una versión cifrada de la llave pública, mientras que las doce (o más) palabras que proporcionan muchas carteras como “semilla” para recuperar los fondos sirven para derivar la llave privada.

Gente con ordenadores

No, tú no. No si no tienes el equipo y el software correcto corriendo en tu PC, al menos. Nos referimos a los mineros y delegados. Estas son personas corrientes, de cualquier parte del mundo, que deciden aportar y mantener un nodo para validar las transacciones de la red y crear nuevas monedas (UTXO). A cambio de estos servicios, esas nuevas monedas creadas caen primero en sus carteras, más las comisiones que los usuarios comunes pueden pagar para agilizar sus transacciones.

Se conocen como «mineros» a los validadores que operan bajo el algoritmo Prueba de Trabajo (PoW) para el consenso. Este algoritmo solicita un “trabajo” por parte de sus equipos y software antes de emitir nuevas monedas. Ese trabajo es resolver un acertijo matemático tan difícil que sólo una computadora puede resolverlo tras muchos intentos y un alto consumo de energía eléctrica. En algunos casos —como en Bitcoin—, ese “acertijo” es tan difícil que incluso se necesitan máquinas especializadas para la minería, y no solamente un CPU o GPU.

Por otro lado, se conocen como «delegados» a los validadores que operan bajo el algoritmo Prueba de Participación (PoS) para el consenso. A diferencia de los mineros, los delegados no aportan energía eléctrica, sino solo sus equipos y cierta cantidad de fondos. Esto es porque en un sistema PoS se debe bloquear cierto número de criptomonedas para convertirse en delegado; proceso al que se llama “Staking”. De esa forma, mientras más criptomonedas posea el delegado, mayor posibilidad tendrá de encontrar un nuevo bloque de transacciones.

El viaje de una moneda

Ahora que sabemos las partes que conforman una criptomoneda, ya podemos pasar a cómo funcionan unas con otras. ¿Qué tal si hacemos el viaje de 1 BTC, por ejemplo? Aclaremos que esta red alcanza su consenso con PoW, para empezar.

El pequeño BTC del que hablamos, al que llamaremos Jimmy de cariño, se generó una mañana junto a otros 11,5 gracias a los esfuerzos eléctricos de la máquina ASIC de un minero chino. Este minero utilizó su nodo (computador) para registrar en la blockchain la solución del último bloque de transacciones (bueno, más bien su software lo hizo), de donde salen esos 12,5 BTC como recompensa.

A continuación, cada nodo de la red distribuida de Bitcoin, conformada a la fecha por 9.517 nodos en todo el mundo, procedió a verificar la validez de la solución de ese minero chino. Su software acabó aprobándola porque se respetó el método PoW, así que Jimmy y sus hermanos salen a la existencia y todos se van registrando en cada uno de los nodos que conforman la red.

Ahora, el minero ha decidido retirar sus ganancias y vender a Jimmy en una casa de cambio. No lo sabe, pero “Jimmy” está conformado en su cartera por una sola UTXO por ahora, aunque en otras circunstancias podrían conformarlo una de 0.2, otra de 0.5 y otra de 0.3 para sumar 1 igual. En ambos casos, de todos modos, el saldo que él puede ver es el mismo: 1 BTC.

Antes de que pasemos a la venta, vamos a ver algo que pasó antes de la creación de Jimmy: el minero abrió su cartera, es decir, creó dos llaves con criptografía para poder enviar y recibir fondos de forma segura. Con un derivado numérico de la llave pública puede recibirlos, mientras que, con la llave privada, que él no ve la mayoría del tiempo, puede enviarlos. Dentro de la red de Bitcoin cuando conectas tu cartera, cada transacción se “firma” con esa llave privada antes de validarse, para verificar que los fondos existen en verdad y en verdad el dueño decidió enviarlos.

Así que nuestro minero envía a Jimmy a la casa de cambio firmando con su llave privada (sin ver ese proceso realmente, pues todo pasa gracias a su cartera y a la red de Bitcoin). Una vez allá, Jimmy será comprado por alguien más y pasará a otra cartera. Esta vez, no será emitido como recompensa para algún minero —porque eso ya pasó—, sino que será parte de otro bloque de transacciones. Otro minero verificará la firma del dueño y la validez de la transacción. Y así irá, dividiéndose en varias UTXO, cambiando de cartera una y otra vez.

¿Quién se encarga de mantener el código en buen estado?

Como ya mencionamos, hay gente con ordenadores (nodos) en todo el mundo encargada de validar las transacciones y crear nuevas unidades. Pero la verdad es que los mineros y delegados no son las únicas personas detrás del mantenimiento de una criptomoneda. Hay mucha más gente con ordenadores tras bambalinas, asegurándose de que todo vaya perfecto: los desarrolladores (programadores).

Ellos no validan las transacciones ni generan nuevas monedas; sin embargo, se encargan de que el código criptográfico del que están hechas las criptomonedas se mantenga en buen estado, sin errores ni cosas raras. Y no sólo eso, sino que también se encargan de proponer, evaluar, modificar e implementar nuevas mejoras para la red. Confiamos en ellos para que, en un futuro no muy lejano, las criptomonedas puedan manejar a millones de usuarios sin sufrir de lentitud o congestionamiento.

Claro que debemos recordar que en las criptomonedas descentralizadas no hay ninguna empresa o entidad detrás de todo, así que… ¿quién “contrata” a estos programadores? ¿O por qué están aquí o qué? Los mineros y delegados reciben recompensas por sus servicios, ¿también las reciben los programadores o algo así? ¿Se dividen las monedas con los mineros? Hmm no usualmente.

En realidad, los programadores son, en su gran mayoría, voluntarios interesados de forma personal en la criptomoneda que están ayudando a desarrollar. Cualquiera que sepa programar esto, desde cualquier parte del mundo, puede colaborar de forma libre en la criptomoneda descentralizada de su elección, a través de plataformas como GitHub. Y te sorprendería el nivel de participación.

Hablando sólo de Bitcoin, hay más de 300 programadores de todo el globo colaborando para el mantenimiento y la mejora de su implementación más popular, Bitcoin Core. Algunos de ellos incluso reciben dinero por ello, cortesía de empresas, organizaciones e individuos que trabajan con BTC y que están interesados en su buen funcionamiento.

Puede que otras criptomonedas no cuenten con tal cantidad de programadores que no cobran directamente por sus servicios (aunque sí se benefician de ellos), pero el procedimiento de mantener su código es muy similar.

¿Qué son las implementaciones?

Antes mencionamos que Bitcoin Core, por ejemplo, es la “implementación” más popular de Bitcoin. Ajá, pero, ¿qué es exactamente una implementación? Hablamos aquí de una implementación de software, mi amig@. Puede referirse al proceso para instalar y mantener una nueva pieza de software en cierto sistema, pero en nuestro contexto específico hablamos de la pieza de software en sí junto a sus características únicas. O sea que una implementación de cierta criptomoneda se trata de una versión del software de esa criptomoneda, desarrollada por un grupo en específico.

Las criptomonedas descentralizadas, dado que son descentralizadas, de hecho, pueden tener más de una sola implementación. El código puede ser copiado y manipulado libremente por cualquiera, así que eso no es de extrañar. La finalidad de este procedimiento es agregar nuevas funcionalidades a ese código, no presentes en otras implementaciones.

Ahora, cuál implementación sea la dominante, la que la mayoría de los nodos, mineros y delegados deciden descargar, es otra historia. La gran mayoría de los nodos y validadores siempre escogerán la implementación más segura y más estable, con mayor número de programadores detrás. Bitcoin, por ejemplo, tiene más de cinco implementaciones disponibles, pero Bitcoin Core es utilizada por el 97% de los nodos. Esto es porque fue la primera implementación disponible (creada por Satoshi Nakamoto), cuenta con bastantes desarrolladores en todo el mundo y es la más segura y estable.

Sin embargo, cada nodo puede escoger la implementación a usar de forma voluntaria. Nadie puede obligarlo a usar la más popular.  

¿Dónde puedo ver los avances que están haciendo los desarrolladores?

Eso depende bastante de la criptomoneda sobre la que quieras consultar. Muchas de ellas tienen páginas web propias, hojas de ruta, redes sociales y blogs donde no tardan en informar a sus usuarios sobre los avances que planean a futuro o que ya están implementando.

Ahora bien, en cuanto al código fuente, es muy probable que puedas ver todo el avance desde el principio —con comentarios y todo— en GitHub. A ver, no todas las criptomonedas tienen su código ahí, pero sí la mayoría. Otras pueden tenerlo en plataformas similares, como GitLab y SourceForge. Tendrás que averiguar dónde está el de tu criptomoneda favorita en su página web, porque ahí es donde se hacen todos los avances.

Una vez en GitHub (por ejemplo), puedes ver todas las revisiones que se han hecho en el código, quién las hizo y cuándo; todos los problemas o errores que se han detectado y los comentarios y soluciones; una lista con Propuestas de Mejora (IP) detalladas y sus revisiones; las bifurcaciones del código (si las tiene) y todos los desarrolladores trabajando en determinado proyecto. Aunque te advertimos que esto no es muy digerible para los seres humanos corrientes: aquí si se debe tener, al menos, algún conocimiento sobre programación para participar e incluso para revisar.

Si lo único que quieres es saber lo que hacen con información más amigable, deberías estar al pendiente de la página web, blog y redes de esa criptomoneda.

¿Cualquiera puede crear una criptomoneda desde cero?

Sí, incluso puede ser fácil y todo. Pero alto, no te alegres tanto. Esto no significa que cualquiera pueda hacer dinero de la nada: no porque crees un pedazo de software significa que este tendrá algún valor. Tu token o criptoactivo personalizado no saldrá mágicamente a la existencia teniendo el mismo precio que Bitcoin, ni siquiera teniendo algún precio en lo absoluto. Si quiere un precio, tendrá que ganárselo ofreciendo algo útil para sus usuarios.

Dicho esto, pues sí, puedes hacer tu propia criptomoneda desde cero, con fines recreativos, para solucionar algún problema o incluso como emprendimiento. ¿Tal vez tienes una tienda y quieres crear puntos de lealtad para tus clientes? Un token propio serviría para eso, y existen varias opciones para construirlo.

La alternativa más fácil es que sea, de hecho, un token y no una criptomoneda. Ambos son básicamente lo mismo, pero el token no tiene una contabilidad (blockchain) propia, sino que se apoya en la de otra criptomoneda para funcionar. Varias plataformas te permiten hacer tokens propios de manera gratuita e intuitiva, sin mucho conocimiento técnico. Entre ellas está Counterparty, basada en la blockchain de Bitcoin. Allí sólo deberás abrirte una cartera, ir a la sección de “Create a Token (Asset)” y seguir las instrucciones. Incluso te tenemos un tutorial por aquí.

Ahora, para hacer una criptomoneda con red y blockchain propias sí necesitarás conocimiento técnico; saber manejar algún lenguaje de programación. De esa forma, tendrás que escoger y crear el nombre de la red, el ticker de la moneda, el mecanismo de consenso, el software de los nodos y las API para carteras, la interfaz, el logo y la página web. Eso por no mencionar que hay que construir la cadena de bloques desde cero, para lo que definitivamente necesitas saber programar. A menos que escojas algún código existente para clonar (como el de Bitcoin), lo que resultaría más sencillo, pero, aun así, seguirías necesitando conocimiento técnico.

En conclusión, si no eres programador y no estás pensando en crear toda una plataforma con criptomoneda propia, lo mejor es que escojas la opción del token. Es fácil, rápida y generalmente gratuita o al menos barata.

¿Cualquiera puede crear una casa de cambio de criptomonedas?

Curiosamente, crear una casa de cambio en línea es más difícil que crear una criptomoneda propia. La respuesta es sí, pero sólo si cuentas con las condiciones económicas, técnicas y legales… aunque bien mirado la respuesta puede ser no, en ese caso.

Si las criptomonedas no son ilegales en el país de origen del desarrollador de la casa de cambio, entonces es posible crearla. Pero se necesita tanto conocimiento técnico como fondos para cubrir los gastos que definitivamente van a surgir. Incluso, dependiendo del país, es posible que se necesite alguna especie de licencia. Bueno, ya lo dijimos. Crear y mantener una casa de cambio de criptomonedas es posible, pero no es fácil.

No se trata sólo de construir cualquier página web, sino que esta es una “página web especial”, por decirlo de alguna forma. Es necesario incluir funcionalidades muy específicas, como un sistema de cuentas de usuario, carteras digitales, procesadores de pago, una interfaz amigable y cosa llamada Trading Kernel que sirve para crear el libro de órdenes, realizar las transacciones y calcular los saldos. Nada de esto es sencillo y se necesitan desarrolladores experimentados, sobre todo porque las casas de cambio centralizadas (manejadas por una sola parte, como tú), son muy sencillas de hackear.

La cosa es que los saldos que verán los usuarios en sus cuentas no son los fondos en sí, sino sólo una representación, una entrada en una base de datos. Los fondos en realidad se guardan en la o las carteras de la casa de cambio, donde se mezclan con los de todos los demás usuarios. Y ahí están más seguros, pero la base de datos no es tan segura. Un hacker lo suficientemente habilidoso puede entrar y modificarla para hacer parecer que su cuenta tiene más saldo del que debería. Una vez hecho esto, pulsa en retirar y adiós fondos. Por eso es tan importante hacer bastante énfasis en la seguridad del código.

Todo esto es costoso, porque se necesita un buen software y personal para mantenerlo. Cuantitativamente, el precio de crear una nueva casa de cambio (que funcione y sea buena) ronda los 400.000 dólares, y eso dependiendo del país. Claro que, si te animas, adelante.

¿Cualquiera puede crear un servicio de cartera de criptomonedas?

Cualquiera que sea un gran programador, conozca muy bien el mundo de las blockchains y, preferiblemente, tenga amigos que dominen sus mismas habilidades, sí. O bien, cualquiera que tenga el dinero suficiente para pagar este talento, pues se necesita un desarrollador talentoso o inclusive un grupo experimentado de desarrolladores para crear un producto final decente.

Al igual que con las casas de cambio, es importante hacer mucho énfasis en la seguridad, pues lo que hace un software de cartera es guardar las llaves privadas y públicas que servirán a los usuarios para acceder y manejar sus fondos.

Existen varias bibliotecas y paquetes para que desarrolladores creen nuevas apps de cartera, así como código de software libre de otras carteras con amplia trayectoria (como BitPay). Aunque también es posible —aunque más complicado— construirla desde cero. Para ello se necesitará un equipo conformado por diseñadores de interfaz (UX/UI), desarrolladores móviles, desarrolladores de backend y especialistas en aseguramiento de calidad (QA). El software deberá ser probado a detalle antes de su lanzamiento para asegurar que esté libre de problemas y errores (bugs).

Asimismo, si se quiere desarrollar una nueva cartera, hay que pensar en la competencia ya existente. A la fecha, existen ya cientos de proveedores de carteras digitales, tanto para criptomonedas específicas como para varias criptomonedas. ¿Qué es lo que tu software podría ofrecer que otro ya no esté ofreciendo? ¿Privacidad? ¿Liquidez? ¿Mayor seguridad? Algo debe ser, sino, ¿por qué los usuarios lo escogerían? Y ese algo seguramente será difícil y costoso de desarrollar. Aunque quizás valga la pena.

 

Artículo por Isabel Pérez