Mis Aventuras con Bitcoin II: El Funcionamiento de Bitcoin

msbt_0404

En la entrada de ayer explicaba que el dinero es la memoria gracias a la cual la sociedad puede implementar transacciones descentralizadas en una sociedad. La evidencia histórica sugiere que es posible que esta función de memoria se realice por medio de fichas sin valor intrínseco y emitidas por entidades privadas (aunque existen también motivos por el cual este tipo de emisión privada es frágil y por ello poco extendida, reiteraré este punto mañana). Bitcoin no es nada más que una sofisticada versión de esta idea acompañada con breves momentos de pura brillantez intelectual en su diseño. Hoy intentaré describir el funcionamiento de esta moneda.

Para ello distinguiré entre el contenido básico (en fuente normal; y que es probablemente más que de sobra para el 99% de los usuarios potenciales de Bitcoin) y un contenido más avanzado (en itálica) que el lector menos técnico se puede saltar en una primera vuelta. Es importante recordar, sin embargo, que uno necesita un libro de 300 páginas para cubrir este material en cierta profundidad. Existe incluso una clase en Coursera sobre Bitcoin y otras monedas virtuales que comienza en unos días (clases similares están apareciendo en muchas universidades, desde MIT a Duke). Mi entrada, pues, no hace más que arañar levemente la superficie de este tema.

Igualmente no discutiré la historia de Bitcoin o especularé sobre quién es Satoshi Nakamoto, el oscuro (y potencialmente muy rico, ya que acumula 1 millón de bitcoins en su cuenta) creador de Bitcoin. Recientemente han sido publicados dos libros excelentes sobre la evolución de este fenómeno y repasando la evidencia que apunta a Nick Szabo como creador de esta moneda (Digital Gold, de Nathaniel Popper y The Age of Cryptocurrency de Paul Vigna y Michael J. Casey). No tengo nada que añadir al respecto excepto recomendar al lector la lectura de estos dos libros (más este otro centrado en Silk Road, el gran supermercado de bienes ilegales posibilitado por Bitcoin y, de manera más ligera, el famoso episodio en The Good Wife). Las desventuras de Dread Pirate Roberts o Mark Karpelès parecen más salidas de una exagerada película de Hollywood que de la realidad y cualquier cosa que yo escriba palidece frente a lo que los autores de los libros anteriores nos explican. Para los que prefieran un podcast, mi compañero de Hoover Russ Roberts tiene un episodio bien divertido con Nathaniel Popper, que peca solo de saltarse algunos detalles técnicos (otros episodios recientes sobre Bitcoin incluyen este con Wences Casares y este con Gavin Andresen). Igualmente, existe una revista en la red para los más interesados en seguir todo lo relacionado con esta moneda (aunque con un fervor religioso que hay que descontar) y varios documentales de indiferente calidad (aquí y aquí).

Cuatro Componentes

Bitcoin esta compuesto de cuatro elementos (aquí esta el artículo original de Nakamoto, que merece aún la pena leer para apreciar la genialidad del autor; gustoso daría todos mis papers por haber escrito este):

1) Una red descentralizada con su protocolo de comunicación.

2) Un libro mayor público de transacciones estructurado como una cadena de bloques.

3) Una emisión de moneda prefijada a lo largo del tiempo de acuerdo con un algoritmo (por medio del “minado”).

4) Un sistema descentralizado de verificación de transacciones.

Como comprobaremos, cada uno de los cuatro elementos es clave en el diseño del mecanismo de Bitcoin. Siguiendo la convención, emplearé Bitcoin para referirme al sistema completo y bitcoin para referirme a la unidad de cuenta del sistema.

La Red Descentralizada

La red descentralizada de Bitcoin está compuesta por todos aquellos miembros que han bajado e instalado el protocolo en alguna de sus implementaciones en su ordenador o dispositivo móvil. La implementación que se bajan los usuarios normales crea un monedero electrónico para comenzar a efectuar y recibir pagos (llamados transacciones, aquí se pueden ver las mismas en directo). Otros usuarios más sofisticados pueden bajarse implementaciones que les permiten configurar nodos más complejos en la red de Bitcoin, por ejemplo para dedicarse al “minado”. Y varias empresas están experimentando con dispositivos móviles específicos para Bitcoin.

El saldo inicial en bitcoins del monedero es cero (algunas implementaciones, como xapo, te regalan una cantidad mínima de bitcoin como incentivo a abrir una cuenta), con lo cual el miembro tiene que recibir pagos en bitcoins de un tercero (como contraprestación contractual de un bien o servicio o como una transferencia), “minar” bitcoins (algo que como explicaré más abajo, hoy en día esta fuera del alcance de los usuarios corrientes) o comprar bitcoins en uno de los múltiples mercados existentes para ello (coinbase es quizás el más popular) para generar un saldo positivo. De igual manera, un miembro puede emplear un mercado para liquidar su posición en bitcoins o comprar bienes y servicios de negocios que acepten bitcoins para pago (overstock, donde yo compro mucho, es el más famoso, al menos en Estados Unidos).

Una persona individual puede tener distintas cuentas de miembro, con lo cual es mejor pensar en miembros que en personas. El protocolo es código abierto y en un lenguaje popular (C++; el mismo que yo recomiendo a los estudiantes más osados en mi clase que quieren escribir tesis innovadoras), lo que permite la verificación de su comportamiento por los individuos interesados (e identificar bugs, sabemos por ejemplo que la instrucción CHECKMULTISIG del lenguaje script de Bitcoin genera un valor extra en el stack que hay que ignorar). De igual manera, el código esta sometido a evolución con contribuciones de los miembros de la red que lo pueden modificar (como ha ocurrido ya con más del 70% del código original de Nakamoto). La red es descentralizada ya que no existe un nodo central que “coordine” el comportamiento de la misma y tiene una topología plana, aunque la fundación bitcoin mantiene una “supervisión” del sistema (autoridad sujeta actualmente a tensiones con un resultado incierto y con voces proponiendo una reforma).

Cada monedero electrónico genera y almacena claves públicas y privadas. Un miembro medio de la red no tiene porque preocuparse en exceso en saber cuáles son o cómo se generan (aunque, como explicaré pronto, si en mantener la clave privada secreta). Cuando un miembro quiere recibir un pago, solo tiene que entregar una dirección de Bitcoin que el programa le suministrará (de igual manera que damos el número de cuenta corriente en un banco a quién nos ha de hacer una transferencia). Cuando un miembro quiere efectuar un pago emplea su dirección de Bitcoin y una firma electrónica generada con su clave privada (como cuando autorizamos un pago de nuestra cuenta corriente dando una contraseña). La dirección de Bitcoin se puede compartir sin problemas; de hecho, esa es su misión. La clave privada es la llave que controla nuestros fondos y por tanto ha de guardarse con cuidado de terceras personas (bien en un ordenador desconectado de la red, en papel o en con algún sistema de seguridad sofisticado de verificación múltiple). Asociada a cada dirección de Bitcoin hay un balance expresado en bitcoins, la unidad de cuenta del sistema. Dado que lo único que se graba en el sistema es la dirección de Bitcoin (y no se requiere ninguna documentación para crear un monedero), existe una anonimidad casi total en el uso de bitcoins, pero, igualmente, poco o ningún remedio legal en caso de “robo” de la clave privada o cualquier otra actividad criminal, accidente o disputa con una contraparte en una transacción. En Bitcoin no se puede llamar a la compañía que ha emitido la tarjeta de crédito para anular un pago: cuando un pago se ha realizado, es irreversible.

Bitcoin comienza a funcionar con una clave privada. Esta normalmente se genera de manera aleatoria como un número entre 1 y 1.158*10^{77}-1 con la función hash criptográfica SHA256 desarrollada por la NSA. Una función hash criptográfica es una función matemática que toma una cadena de caracteres de cualquier tamaño como insumo (el mensaje) y genera una cadena de caracteres de tamaño fijo como producto (el hash), de tal manera que ir en la dirección del mensaje al hash sea computacionalmente sencillo (de orden O(n) para un mensaje de tamaño n), pero ir en la dirección contraria no sea práctico. Una buena función hash criptográfica, además, es resistente a las colisiones (no podemos encontrar dos mensajes diferentes que generen el mismo hash) y para un hash de n-bits seleccionado aleatóriamente de una distribución de min-entropía alta, es computacionalmente imposible encontrar el mensaje que genera este hash en un tiempo significativamente menor que 2^{n}. La cota superior del número aleatorio 10^{77} es una cifra tan gigantesca que nos asegura que sea casi imposible repetir el muestreo. Curiosamente, el generar adecuadamente este número aleatorio se enfrenta con mismo tipo de problemas que el generar números pseudoaleatorios para las cadenas de Markov por Monte Carlo con las que me gano la vida. SHA256 emplea además la construcción de Merkle–Damgård para mover un mensaje de tamaño arbitrario a un mensaje de tamaño fijo

Cada clave privada tiene asociada una clave pública. Más concretamente, Bitcoin sigue el algoritmo de firma digital de curva elíptica (ECDSA por sus siglas en inglés) con parámetros secp256k1 establecidos por el National Institute of Standards and Technology. Dada una clave privada k y una constante G (un punto de generación), la dirección pública es simplemente K=k*G. Matemáticamente, el sistema funciona porque el punto de generación es un punto determinado de una curva elíptica definida sobre un cuerpo finito de primer orden, con lo cual la operación inversa de encontrar k dada K es computacionalmente abrumadora. El algoritmo esta ilustrado con en la imagen que encabeza esta entrada, tomada del excelente libro de Andreas Antonopoulos referenciado al comienzo de esta entrada, en el que el punto G es multiplicado 8 veces.

La resultante clave pública es introducida de nuevo en SHA256 y en RIPEMD160 para generar una dirección de Bitcoin:

A = RIMPEMD160(SHA256(K))

y presentada en una codificación de base 58.

Esta dirección es un identificador de 26-35 caracteres alfanuméricos (que comienza con un 1 o un 3; la mayoría de las direcciones están compuestas de 34 caracteres y comienzan con 1) y que representa el posible destino de una pago en bitcoins. La mayoría de las implementaciones de monederos electrónicos generan también un código QR con la dirección pública para facilitar el compartir la misma (es mucho más sencillo enviar una foto con el código QR que los caracteres). Cada pago se debe de realizar a una dirección diferente y es una mala idea el re-uso de las mismas. Como acabamos de describir, es trivialmente fácil generar tantas claves privadas y direcciones públicas como sea necesario y no hace falta ni estar conectado a internet para ello. En la práctica los monederos generan una secuencia de claves privadas como una cadena deterministica a partir de una clave privada inicial con una función hash unidireccional. De esta manera, el código solo tiene que almacenar la clave privada original.

Varias páginas web permiten generar monederos de papel convencional (e incluso cajeros automáticos). Por ejemplo aquí, con un ejemplo reproducido debajo.

download

Una paradoja de Bitcoin es como, a pesar de las fuertes inclinaciones libertarias de muchos de sus primeros defensores (y que todavía se ven mucho en la red), el sistema se basa en tecnologías desarrolladas por el gobierno americano, desde por supuesto la arquitectura básica de internet a los algoritmos criptográficos.

La Cadena de Bloques

La cadena de bloques es una base de datos de las transacciones (pagos y cobros) realizadas en la red descentralizada de Bitcoin. Uno puede comparar a esta cadena con una torre construida con piezas de Lego: el bloque original (que en Bitcoin fue creado en 2009 y se llama el bloque génesis) es la primera pieza que ponemos y cada bloque adicional hace crecer la torre. Un bloque incorpora las transacciones realizadas, aproximadamente, en 10 minutos y tiene un sello temporal indicando cuándo se han realizado las mismas.

Esta cadena de bloques es una de las claves del funcionamiento de Bitcoin: de igual manera que cuando tenemos una torre de Lego de 25 piezas, es casi imposible cambiar la pieza 11, una vez que varios bloques se han añadido a la cadena, es casi imposible computacionalmente cambiar los bloques más antiguos y estos quedan “congelados”. En concreto, una vez que un bloque ha sido añadido a la cadena, decimos que una transacción ha sido confirmada. Después de 6 confirmaciones (aproximadamente 1 hora), el protocolo de Bitcoin asume que la transacción ha sido confirmada suficientemente y ya no puede ser revertida.

La cadena de bloques es, literalmente, la memoria del sistema: al apuntar todas las transacciones de manera irrevocable (después de las confirmaciones), sabemos en todo momento cuantas bitcoins tiene cada miembro de la red y evitamos que estas se puedan usar de manera doble o que sean empleadas por terceros miembros. De igual manera, la cadena de bloques ilustra como Bitcoin es una moneda fiduciaria pura: no es nada más que una anotación contable. Su valor intrínseco es cero (si yo creo un clon de Bitcoin mañana llamado bitRiosellano y nadie lo acepta como pagos, lo único que tengo es memoria ocupada en el disco duro) y por tanto cualquier precio de 1 bitcoin, sea 1 céntimo o 1 millón de dólares es una burbuja (aunque como explicaba ayer, esto no es necesariamente negativo).

Cada bloque comienza con un hash propio, de nuevo generado con SHA256, y el hash del bloque anterior, lo que permite reconstruir la cadena de manera recursiva. Cada transacción en el bloque es estructura de datos con una firma con la transferencia de valor entre dos direcciones de Bitcoin. Un detalle técnico relevante es que la cadena de bloques emplea un árbol de Merkle para minimizar el uso de memoria, una consideración que se irá haciendo más importante según las transacciones se acumulen con el tiempo.

Mi idea de crear un clon de Bitcoin llamado el bitRiosellano no es particularmente original. Aquí se pueden ver muchos competidores de Bitcoin. Es el único ejemplo que conozco no trivial de competición de monedas privadas a la Hayek y cierto optimismo me hace pensar que de tal competición aprenderemos muchas cosas (por ejemplo, ¿existe una tendencia a que una moneda desplace a las otras?). Aun así, la segunda moneda, ripple, es unas 15 veces menor en tamaño que Bitcoin.

La Emisión de Moneda

Bitcoin define un algoritmo prefijado de emisión de moneda a lo largo del tiempo. Eventualmente habrá 21 millones de bitcoins. Actualmente han sido emitidas unas 14.5 millones de bitcoins. Dado que, cuando escribo estas lineas, el precio de 1 bitcoin fluctúa cerca de $230, el valor total de las monedas emitidas esta un poco por debajo de 3.300 millones de dólares. Para suministrar suficientes medios de pagos, la unidad (bitcoin) esta subdividida en menores denominaciones, siendo la más pequeña el satoshi, equivalente a 10^{-8} bitcoins. El satoshi es suficientemente pequeño (eventualmente habrá 21*10^{14} satoshis) que Bitcoin tiene suficiente “cambio menudo” para funcionar en un horizonte muy largo.

Aproximadamente cada 10 minutos se emiten 25 nuevos bitcoins (en la siguiente sección explicaré quien recibe estos nuevos bitcoins). En 2016, la cantidad se reducirá a 12.5 nuevos bitcoins y, sucesivamente cada cuatro años, se irá cortando por la mitad la cantidad de nuevas unidades emitidas hasta que en algún momento de 2110-2140 lleguemos al límite de 21 millones.

Este límite superior es uno de los atractivos para muchos de los partidarios de Bitcoin: dado un nivel de uso de la moneda, no hay riesgo de inflación. Sin embargo también genera un riesgo contrario: si el nivel de uso de la moneda crece (como consecuencia, por ejemplo, del crecimiento de la economía), un límite en el número de bitcoins implicará una deflación constante. Una versión sencilla de la teoría cuantitativa del dinero ilustra este punto: mas producción con la misma masa monetaria lleva a un nivel de precios menor a menos que se incremente la velocidad de circulación; este argumento necesita detalles adicionales pero para esta entrada es suficiente. Es más, lo más probable es el que el número de bitcoins “activos” vaya reduciéndose con el tiempo. Dado que solo se puede emplear un bitcoin si tenemos la clave privada asociada a la dirección de bitcoin donde el saldo se encuentra registrado en la cadena de bloques, a lo largo del tiempo (por accidentes, olvidos, desidia, etc.) parte de estas claves privadas se irán perdiendo (yo compré una cantidad mínima de bitcoins para ver como funcionaba el sistema y lo más probable es que no las emplee nunca). El sistema criptográfico está tan bien diseñado que, al menos en un horizonte razonable, estas bitcoins asociadas a claves privadas perdidas estarán congeladas de manera indefinida y por tanto inactivas para transacciones. Mañana vincularé este riesgo de deflación con la cota cero de los tipos de interés nominales y las graves consecuencias asociadas con esta cota.

Existe un punto, algo sutil, y que aunque merece la pena ser resaltado, rara vez es discutido de manera explícita. El plan original de Satoshi es que no se pueden emitir más de 21 millones de bitcoins. Sin embargo, el código de Bitcoin es abierto y el mismo se puede modificar. En principio, si un porcentaje suficiente de nodos de la red decide que merece la pena emitir más monedas (por ejemplo, una segunda emisión de otros 21 millones de bitcoins), los propietarios de las bitcoins actuales realmente no pueden hacer nada para evitarlo. Al contrario que el oro, se pueden crear tantas bitcoins de la nada como queramos con re-escribir unas cuantas lineas del programa siempre y cuando alcancemos consenso al respecto dentro de la red. De igual manera, si la red se rompe en redes incompatibles (por ejemplo, como consecuencia de una división de opiniones con respecto a su evolución a lo largo del tiempo), el número de bitcoins se multiplica de manera efectiva.

Una posibilidad distinta sería crear una moneda virtual respalda por algún tipo de mercancía como oro, aunque es difícil ver como cuadrar la idea de tener una red descentralizada a la Bitcoin con un respaldo explícito que requiera verificación física.

La Verificación de Transacciones

Una transacción comienza cuando un miembro de la red activa su clave privada para enviar un saldo a un dirección de Bitcoin. En estos momentos se realizan entre 100.000 y 120.000 transacciones al día con Bitcoin. Esto quiere decir que en los dos últimos años el número de transacciones se ha multiplicado por dos, un crecimiento notable pero lejos de ser espectacular (en comparación VisaNet maneja unos 150 millones de transacciones al día).

Cada transacción, que es totalmente pública (lo que es anónimo es la persona que está detrás del miembro de la red que transmite la transacción), tiene que ser verificada por la red (para comprobar que los bitcoins son auténticos y que no se emplean de manera duplicada) antes de incorporarse a la cadena de bloques. El mecanismo es el siguiente: cuando una transacción se efectúa, los detalles de la misma se emiten a todos los nodos de la red. Aquellos miembros interesados en verificar transacciones acumulan un conjunto de ellas mientras resuelven una “prueba de trabajo”. Es importante notar que el miembro que recibe la transacción no tiene, necesariamente, que ser uno de estos nodos verificadores, lo que permite el uso de Bitcoin por un conjunto de agentes mucho más grande que el de aquellos que quieren participar en la verificación.

Una “prueba de trabajo” es una operación compleja que lleva mucho tiempo pero que es muy fácil comprobar que se ha efectuado correctamente (piense en el proceso de encontrar la raíz cuadrada de 4125343; es computacionalmente complejo efectuar esta operación pero mucho más rápido comprobar el resultado). El código de Bitcoin está diseñado para que esta “prueba de trabajo” lleve unos diez minutos de media. Cada 2016 bloques se mide el tiempo empleado en estos 2016 bloques y la complicación de la “prueba de trabajo” se incrementa o se reduce para intentar volver a unos diez minutos de media en los siguientes 2016. Dado el incremento en la velocidad de los ordenadores dedicados a la verificación, esta dificultad ha ido creciendo de manera muy notable. Una vez que la “prueba de trabajo” es completada, se envía a los demás nodos de la red. Cada uno de ellos efectúa sus comprobaciones independientes de que las operaciones han sido realizadas correctamente.

El primer nodo de la red que completa la “prueba de trabajo” y cuyo resultado es aceptado por una mayoría de los otros nodos, añade el nuevo bloque de transacciones que ha generado mientras buscaba la “prueba de trabajo” a la cadena de bloques, recibe el señoreaje de los nuevos bitcoins y una pequeña comisión de las transacciones. Estos pagos generan un incentivo para la verificación de las transacciones (aquí, la evolución de estos pagos). La idea es que, incluso cuando todos los bitcoins hayan sido emitidos, la comisión de pagos siga creando el incentivo para la verificación de pagos. Técnicamente, el señoreaje se paga porque en el nuevo bloque incorporado hay una nueva dirección de Bitcoin con las nuevas monedas.

Esta actividad de verificación y “prueba de trabajo” es la que se suele conocer como “minado” aunque tal analogía personalmente me parece más confusa que clarificadora. La idea original de Bitcoin era que todos los miembros pudiesen “minar” (con lo cual el señoreaje del sistema se hubiese repartido de manera amplia) pero pronto “mineros” profesionales desarrollaron ordenadores específicos tan poderosos que hoy es una actividad industrial. Este es quizás uno de los puntos más decepcionantes de Bitcoin: el enorme despilfarro de recursos (humanos -dados los brillantes ingenieros dedicados a crear procesadores ASIC- y físicos -principalmente electricidad, este artículo en el NYT es fascinante) que se emplea en nada excepto en ser el primero en llegar a la verificación de las transacciones.

Un aspecto interesante de Bitcoin y que se puede extender a otros sistemas de pagos, es que las transacciones se incorporan a los bloques según una cola de prioridad basado en la comisión de cobro: transacciones que pagan más comisión se incorporan antes.

La “prueba de trabajo” es, de nuevo la solución de un algoritmo SHA256. De manera resumida: el código tiene que hacer un “hashing” del encabezado de un bloque y un número aleatorio empleando SHA256 hasta que se produce un resultado con un patrón de caracteres que es menor que un objetivo prefijado (este es el objetivo que se recalibra para que de media se tarde 10 minutos en solucionar este problema). El primer nodo de la red que cumple esta objetivo encuentra un nonce criptográfico que es difundido a todos los demás nodos, que comprueban la “prueba de trabajo”. Cuando la mayoría de los mismos aceptan esta “prueba de trabajo”, el bloque queda incorporado. Aunque carecemos de una prueba matemática rigurosa del comportamiento global del sistema y del papel de la aleatorización (generado por las diferentes transacciones incorporadas y la dirección del “minero” concreto que realiza la verificación), esta parezca ser clave en el (hasta ahora) satisfactorio comportamiento del sistema. Al crear la posibilidad de que cualquier nodo, incluso si no es el computacionalmente más poderoso pueda completar el primero la “prueba de trabajo” y recibir el señoreaje, la aleatorización crea incentivos globales. Ser más rápido en la “prueba de trabajo” solo incrementa la probabilidad de ganar, no asegura la victoria.

La combinación de “prueba de trabajo” y consenso entre los nodos de la red es la solución de consenso emergente que Bitcoin ofrece al problema de los generales Bizantinos.

11basil

Imaginémonos que tenemos varios generales bizantinos asediando una ciudad. Cada general tiene una legión en un sector del frente. Los generales se tienen que poner de acuerdo, por mensajero (no pueden dejar a sus tropas solas), sobre un plan de ataque a la ciudad para terminar el asedio. La dificultad viene de que varios de los generales puedes ser traidores y los mensajes que envían pueden proponer planes de ataque contraproducentes. La solución de este problema es un mecanismo que permita coordinarse a los generales en un plan de ataque y que este no quede corrompido por los mensajes equívocos de los traidores. En Bitcoin la “prueba de trabajo” demuestra que el plan de ataque enviado como mensaje no es contraproducente y el consenso busca que la mayoría de los generales así lo estimen (los traidores son solo una minoría, esto es una aplicación del teorema del jurado de Condorcet con el que que muchos lectores estarán familiarizados; se puede probar que si al menos un tercio de los generales son traidores, el problema es insoluble). La lógica del sistema reside en que los mineros no tienen un incentivo a crear bloques falsos: dado que este será rechazado por la red, no conseguirán los nuevos bitcoins y solo habrán malgastado ordenadores y electricidad. Esta es quizás la principal diferencia entre los algoritmos de Paxos propuestos en el pasado como soluciones parciales del problema de los generales bizantinos y Bitcoin: el incentivo generado por el señeoraje induce a los “mineros” a suministrar la “prueba de trabajo” que demuestra su poder computacional y con ello evitar ataques de Sybil.

Este sistema de minado sufre, sin embargo, de un posible ataque alternativo: la creación de nodos fraudulentos suficientemente poderosos que generen “falso consenso”. En algún momento de la historia de Bitcoin aparentemente algunas de las empresas industriales dedicadas a la verificación de transacciones dispusieron de esa capacidad técnica pero prefirieron no emplearla para no dañar a la moneda en el largo plazo. La esperanza es que el futuro la popularidad de Bitcoin sea tal que esta linea de ataque resulte demasiado onerosa. Mi visión, como expondré mañana, es menos optimista. Al final del día, el resultado de imposibilidad de Fischer-Lynch-Paterson es más sutil de lo que pudiese parecer a primera vista.

Otros ataques, sin embargo, son casi imposibles. Por ejemplo, la verificación de transacciones tiene que realizarse en un lenguaje script específico que es Turing incompleto. Sin ir más lejos, no admite bucles. El lenguaje tiene 256 instrucciones, cada una representada por 1 byte. 75 de estas instrucciones están reservadas para posibles cambios del lenguaje en el futuro y 15 más no son operativas.

De igual manera puede ocurrir que dos “mineros” encuentren simultáneamente una solución que implique bloques diferentes y que la cadena de bloques se bifurque. Este problema se soluciona porque los “mineros” subsiguientes tienen un incentivo a concentrarse en únicamente una de las dos cadenas.

Finalmente, solo quería resaltar que la posibilidad de ajuste de la dificultad de la “prueba de trabajo” sugiere que en el medio plazo los beneficios de los “mineros” fluctuarán cerca del rendimiento normal del capital gracias a la entrada y salida de empresas del sector, como predice la teoría y como parecen indicar los datos.

Un Resumen

Resumo esta larga entrada sobre el funcionamiento de Bitcoin:

1) Los miembros de la red se bajan un monedero electrónico a su ordenador o dispositivo portátil.

2) El monedero genera claves privadas y públicas que crean direcciones de Bitcoin.

3) El miembro de la red carga el monedero con un saldo positivo de bitcoins (probablemente comprándolas en un mercado de intercambio).

4) El miembro de la red puede a partir de ese momento emplear su clave privada para firmar pagos y sus direcciones de Bitcoin para recibir ingresos (estos pagos/ingresos conocidos genéricamente como transacciones).

5) De manera descentralizada, estas transacciones son verificadas por la red.

6) Una vez verificadas, los transacciones son incorporados a un libro mayor llamado cadena de bloques.

7) Los miembros de la red que han verificados las transacciones reciben como pago una pequeña comisión y el señoreaje de unas pocas nuevas monedas.

Como vemos, este sistema es equivalente a mantener un libro mayor (alternativa tres de mi entrada ayer), pero donde el libro, en vez de mantenerse por un “contable” de manera centralizada (lo que solemos llamar una cámara de compensación), se mantiene de manera “descentralizada”. Mañana argumentaré que este libro mayor descentralizado es la mejor aportación de Bitcoin y una tecnología que se puede imitar en muchos otros sistemas de pagos, actualmente anclados en tecnologías anticuadas.

Hay 18 comentarios
    • Si, claro. Existen varios mercados que lo aceptan y over-the-counter seguro que se puede emplear aun mas.

    • El tema de los derivados es realmente interesante.

      Por un lado, existen mercados incipientes con bitcoin como subyacente. Que yo conozca, hay pequeños mercados de swaps y futuros. Ahora bien, es todo muy rudimentario. De hecho, los mineros tienen un mismatch (desfase?) estructural con ingresos denominados en bitcoin y gastos en moneda fiat. Lo lógico es que, a falta de mercados organizados, intenten cubrir este riesgo con contratos forward privados.

      Por otro lado, bitcoin es dinero "programable". Es una característica fascinante. Es posible hacer un pago condicional a un evento externo al sistema, sin necesidad de riesgo de contrapartida (una opción no es más que un pago condicional). Es decir, el blockchain funciona como una especia de escrow (cuenta de garantía?) sin necesidad de un banco. Hay un buen número de start-ups explorando aplicaciones reales de todo esto.

      • En la entrada de mañana hablo sobre la utilizacion de bitcoins en contratos programables y en su potencial papel para eliminar riesgo de contraparte y necesidad de fianzas.

  • Felicidades por una clara y meticulosa descripción. A pesar de no ser un ningún experto, suelo encontrar errores en gran parte de los artículos que leo. Desde el punto de vista descriptivo, el suyo es impecable.

    Algún comentario suelto:

    1) Calificar el uso de recursos en bitcoin como "despilfarro" es... como decirlo.... un poco parcial. Eso sí, decir que es un despilfarro tiene sentido si opinamos que el proceso no crea ningún valor. Se puede opinar que bitcoin tiene o no valor (eso es, precisamente, un juicio "de valor"), pero no estoy seguro de que haya una verdad absoluta al respecto. El tiempo dirá. Otra cosa es que exista una alternativa viable de "prueba de trabajo" que no requiera una escalada de recursos. Por ahora, hasta lo que yo sé, no existe.

    2) Es cierto que se puede cambiar el protocolo para producir cualquier número de bitcoins. Quién sabe si se cambiará. Sin embargo, cualquier cambio en el protocolo puede afectar negativamente al valor de la moneda, que es precisamente lo que reciben los mineros como pago. Entiendo que los incentivos económicos no son garantía de status quo, pero es un sistema que requiere consenso de los participantes para el cambio.

    3) La única solución que se conoce para un sistema de libro mayor descentralizado es bitcoin+blockchain (o similares). Nos guste o no, hoy por hoy, una no puede existir sin la otra. Las soluciones alternativas (proof-of-stake) no son estrictamente descentralizadas, aunque a lo mejor son las más realistas a largo plazo.

    • Gracias

      1) El sistema de verificacion es un despilfarro porque si pudiesemos encontrar una manera efectiva de limitar la capacidad computacional de los mineros conseguiriamos el mismo resultado con menos gasto de electricidad y de ingenieros. El que sea un despilfarro no quiere decir que no tenga todavia un valor positivo. Imaginemos que Bitcoin genera un valor de 100 y que los mineros gastan 40. El valor neto es 60. Pero si pudiesemos tener un sistema alternativo donde la carrera armamentistica entre mineros fuera limitada y solo gastasen 10, el valor neto de Bitcoin seria 90. Esas 30 unidades de valor que perdemos como sociedad son un despilfarro. Por ejemplo, Nasdaq, si termina implementando la cadena de bloques, puede obligar a los participantes en el minado a emplear ordenadores pre-determinados (un poco como en Formula 1, al especificar el motor de los coches).

      2) Mi comentario sobre el cambio del numero total de bitcoins no predice que esto ocurra, solo enfatiza que PUEDE ocurrir y que por tanto los que creen que Bitcoin es mas seguro que el oro porque no se pueden "crear" mas no entienden el funcionamiento del sistema. Personalmente creo que es mucho mas probable que la red se rompa en varias partes en el futuro (lo que equivale a multiplicar el numero de bitcoins) o que sufra un ataque Goldfinger como el que describe la tercera entrada de esta serie.

  • Jesús, gracias por compartir tus puntos de vista. Son muy útiles (a propósito, buen ejemplo de algo valioso con precio cero).

    1) Comparar un sistema que consume recursos con otro inexistente que no los consume... se acerca a una falacia (lo digo con una sonrisa!). Es como argumentar que consumir gasolina es un despilfarro porque podríamos inventarse coches que andaran solos.
    El sistema de minado funciona precisamente por los incentivos económicos y porque se pretende crear una oferta competitiva. Hasta lo que yo recuerdo de estas cosas, el equilibrio se alcanza cuando el coste marginal se iguala al ingreso marginal. En otras palabras, la "carrera armamentística" solo es una evidencia de la microeconomía en acción. No sabemos el valor social que genera bitcoin, puede ser grande y el precio cero o pequeño y el precio astronómico. Para eso habría que valorar las externalidades.

    2) No entiendo que quieres decir con que "los que creen que Bitcoin es más seguro que el oro". Si te refieres a estabilidad técnica del sistema, es cierto que hay grandes incertidumbres. Es un sistema que parece que funciona en la práctica (por ahora) y no en la teoría! esta combinación de criptografía y economía es totalmente nueva. Leo con avidez tus opiniones. Por otro lado, si te refieres al grado de confianza entre la predicción de la oferta de bitcoin y la del oro, a corto plazo bitcoin es un juguete, a largo plazo, quién sabe.

    • 1) "la “carrera armamentística” solo es una evidencia de la microeconomía en acción." Efectivamente, y es un ejemplo precioso de una situacion donde el equilibrio no es Pareto Optimo. Como siempre les digo a mis estudiantes de primer año de doctorado: uno de los objetivos fundamentales de mi clase es quitaros la erronea presuncion que una asignacion de mercado es eficiente. En general, NO lo es.

      Es mas, es un ejemplo casi perfecto de Nash pareto-dominado. Si todos pudiesemos coordinarnos en "no carrera armamentistica" estariamos mejor que en la situacion actual: tendriamos los mismos bitcoins y habriamos gastado menos electricidad. Que el buen equilibrio ( "no carrera armamentistica") no sea un Nash no quiere decir que llamar al Nash un mal equilibrio sea una falacia. En mi terminologia sigo la convencion absolutamente standard en micro y teoria de juegos: despilfarro quiere decir pareto-dominado y la “carrera armamentística” es un equilibrio pareto-dominado como la copa de un pino......

      2) “los que creen que Bitcoin es más seguro que el oro”: me refiero a muchos partidarios (muchos de ellos con poco conocimiento tecnico) que defienden bitcoin con un fervor casi religioso.

      • Falacia de Nirvana : "es el error lógico de comparar cosas reales con cosas irreales o alternativas idealizadas". Entiendo que el minado consume muchos recursos, si conoces una alternativa que no los consuma y funcione, encantado de escucharla (lo digo sin ninguna ironía, a lo mejor existe y la desconozco).

        De cualquier manera, es cierto que el consumo de recursos es muy elevado. Pero NO tiene porque ser siempre creciente. De hecho, se puede estimar indirectamente el coste marginal aplicando que MC=MR en equilibrio. El beneficio marginal anual es #bitcoins/año*usd/btc= 1.34Mx225$=300MMUSD. Por lo tanto, el coste marginal es de 300MM. Ni el precio es constante ni es un sistema en equilibrio, pero sirve pare hacerse una idea. Ahora bien, el año que viene el ritmo de generación se reduce a la mitad, por lo tanto el MC tendrá que bajar (no existe suficiente actividad económica para compensar la caída con tx fees).

        El equilibrio a largo plazo depende solo de los tx fees. Estos son discrecionales, así que se irán también a coste marginal (validar bloques no consume prácticamente recursos, lo consume la prueba de trabajo), con un caveat: cuantos menos recursos se dedican al minado, más inestable es la red.

        En cuanto al fundamentalismo en bitcoin, totalmente de acuerdo. Es más, como es de suponer hay fundamentalismo pro- y anti- bitcoin, los dos. Ahora, no necesariamente de ignorantes, además de conocimientos técnicos existe la ideología y los prejuicios, que son tan abundantes como la ignorancia.

        Un saludo.-

        • Aqui no hay falacia de Nirvana alguna. Estoy empleando la terminologia standard en economia. La carrera armamentistica de los mineros es un Nash pareto dominado. Punto. Como dicen todos y cada uno de los libros de micro y teoria de juegos que se han escrito en la historia, el que una alternativa mejor al Nash pareto-dominado no sea implementable por un mecanismo descentralizado es irrelevante para la evaluacion de optimalidad.

          La ventaja de la teoria economica es que las cosas estan definidas de manera clara. Nash, pareto-dominacion e implentabilidad son terminologia standard que yo empleo en el sentido habitual. No veo razon alguna para desviarme de la norma social que tan productiva ha sido en mi campo del conocimiento.

          Y claro que existe una alternativa sencilla (y que es la que estan estudianto varios mercados financieros): los nodos que quieran participar en la red tiene que emplear un ordenador que les entregara el organizador del mercado y sin acceso a ningun otro. Es exactamente igual que en Formula 1 cuando se establece que motor tiene que emplear cada coche.

  • Caray Javier, el tema me supera! Dos preguntas básicas: si el ordenador de Nakamoto (o de quien sea) dice que tiene un bitcoin y yo lo quiero comprar, como se determina el precio? Si precio es de un euro, ¿donde envio yo este euro? ¿a un ordenador? ¿a una cuenta corriente? ¿Quien se lo queda, si se lo queda alguien? Muchas gracias.

    • El ordenador de Nakamoto no dice nada. Lo dice la cadena de bloques. La cadena de bloques no es nada mas que un libro mayor con anotaciones contables que asocian a direcciones de Bitcoin con cantidades de bitcoin.

      Piensa en ello como una gigantesca hoja de Excel: la celda BZ36 dice miembro de la red 4356564 tiene 32 bitcoins, la celda VGT78 dice miembro de la red 34564 tiene 1.23 bitcoins (esta descripcion del sistema es estilizada).

      El precio de 1 bitcoin es ... 1 bitcoin (es la unidad de cuenta del sistema). Tu entras en mi tienda web, ves un producto que cuesta 2.35 bitcoins, lo compras y entonces, como indico en la entrada, firmas con tu clave privada y la anotacion contable que estaba a tu nombre pasa a mi nombre (hemos cambiado la celda de Excel de tu nombre al mio). La actualizacion de la hoja de Excel es la verificacion de transacciones que se realiza de manera descentralizada por los "mineros".

      Lo que siempre puedes hacer es que el bien que yo te "vendo" sea 1 Euro y eso determina el precio de 1 bitcoin en terminos de otras monedas (que ahora viene a ser unos 250 Euros por bitcoin)

  • Algo no he debido de entender bien:

    Si los "mineros" son necesarios para autentificar las transacciones y reciben bitcoins al hacerlo, cuando se haya alcanzado el número máximo de bitcoins ¿cuál será el incentivo para autentificar transacciones?

    • Cada transaccion lleva una pequeña comision de tramitacion. La esperanza de Bitcoin es que tal pequeña comision sea suficiente en el futuro para compensar a los nodos verificadores incluso cuando ya no se emitan mas bitcoins.

      No esta nada claro que tal comision vaya a ser lo suficientemente "generosa" para crear el incentivo adecuado.

  • Excelentes y muy fundamentados artículos. Ambos. Espero con ganas el siguiente.

    Una pregunta. Dada la limitación -inicial y aparente- de la cantidad de bitcoins, además de fijar un escenario deflacionista para los bienes y servicios, que además es contínuo y persistente ¿no debería aumentar las probabilidades de que la función depósito de valor se impusiera al resto de funciones del dinero (sobretodo medio de pago). Nadie querrá deshacerse de bitcoins con los que cada vez podrás comprar más bienes y servicios (consecuencias conocidas de un escenario deflacionista).

    Dicho de otro modo, la especulación sería una apuesta segura, conllevando que el bitcoin dejaría de usarse para transacciones...lo que no parecen grandes incentivos para la estabilidad del sistema. Lleva a pensar que efectivamente, la limitación de bitcoins, tal y como ha expuesto, no será real (hasta ahora me había tragado el cuento de la limitación per saecula saeculorum).

    • Gracias.

      Acaba de salir la tercera entrada y creo que intento responder a este comentario en ella 🙂

      Si, en resumen, el problema deflacionario es muy serio y puede ser un fallo fundamental de Bitcoin.

  • Si la digitalización tiende a convertir los bienes en no rivales, cosas como las criptomonedas van en la dirección de albergar bienes rivales intercambiables y confiables en el medio digital. Para ello necesitas crear incentivos adecuados en los agentes para que se comporten acorde con las características deseadas (confiabilidad, descentralización, eficiencia, etc.) Una forma es crear un vínculo con costes de bienes rivales ya existentes (consumo energético, uso de memoria, etc.) Que Bitcoin logre eficacia no quiere decir que sea lo más eficiente. No creo que sea algo que pongan en duda los que se dedican al desarrollo de Bitcoin u otras.

    Por ejemplo, las pruebas de trabajo competitivas crean una escalada de costes. También concentran la actividad. Otras monedas en vez de usar SHA256 usan Scrypt, que al ser un algoritmo más intensivo en memoria hace menos competitivo a los ASIC. No es menos costoso pero ¿menos escalada y más descentralización? Habría que ver la evolución.
    Las pruebas de participación sí reduce los costes, aunque ello puede dificultar la fiabilidad (nothing at stake), o bien hacer que pague la descentralización. También incentiva el acaparamiento, cosa que no ocurre en las pruebas de trabajo (hay que pagar electricidad).

    ¿Cuál es el diseño óptimo? Como es normal, no lo sabemos. La competición de criptomonedas nos permite aprender de las variaciones. Pero lo más fascinante es la generalización en smart contracts:
    http://szabo.best.vwh.net/formalize.html
    Ethereum está en sus primeros pasos, habrá que ver que surge de todo ello:
    https://www.ethereum.org

    Y si nada de ello funciona, siempre nos quedará Bob 😉
    http://intheoreum.org/#welcome

  • Entiendo que realizar una transacción consiste en añadir un nuevo bloque a la cadena de bloques. El bloque básicamente dice “transfiero X bitcoins a la dirección Y” y está firmado electrónicamente. Entonces quien hace la transacción envía su copia modificada de la cadena de bloques a otros nodos de la red para que verifiquen que la transacción no es fraudulenta, e.g. que la firma es correcta.

    Si esto es correcto, lo que circula por la red bitcoin son múltiples copias de la mencionada cadena de bloques, y el tamaño de esta aumenta con cada transacción. Por tanto cada transacción adicional hace aumentar la cantidad información que circula. ¿Esto es sostenible en el tiempo? Imaginemos que los especuladores de alta frecuencia (HFT) empiezan a utilizar bitcoin y empiezan a añadir billones de bloques nuevos por milisegundo…

Los comentarios están cerrados.