Hace tiempo oí hablar de bitcoin. En su momento no le dí demasiada importancia. Me pareció otra moneda de internet más, con la única novedad de que era P2P (lo reconozco dinero y P2P no me parecía buena idea). Pero ha pasado el tiempo y bitcoin ha empezado a ganar importancia, como se puede ver en la gráfica de tendencia de google trends:
Así que me he decidí a mirar un poco más sobre bitcoin y saber en qué consistía y porqué está resultando una moneda atractiva. Me ha costado entender el funcionamiento general. La mayoría de explicaciones que me he encontrado son o bien demasiado simplistas sin entrar en la parte técnica o bien demasiado detalladas y cuesta seguirlas.
Así que he decido hacer un repaso mental de algunas cosas que me parecen interesantes sobre bitcoin. No quiero hacerlo demasiado técnico, pero tampoco quedarme en una descripción ligera. Son sobretodo las ideas por las que bitcoin me ha llamado la atención:
- Bitcoin se basa en criptografía de clave pública/privada y en un algoritmo de tipo proof-of-work. Un algoritmo de este tipo consiste en que, para evitar atacantes, se exige a los participantes de la red hacer un cálculo lo suficientemente complejo para certificar que no son atacantes. La idea es que a un atacante malicioso, este cálculo le resultaría o bien inabarcable o bien poco rentable económicamente. Además bitcoin es una red P2P por lo que está distribuida y descentralizada.
- La red bitcoin (como conjunto de nodos P2P) guarda un log global de transacciones de forma distribuida. Los nodos trabajan de forma cooperativa para crear este log y todas las transacciones válidas están incluidas en este log.
- El log se divide en bloques. Cada bloque almacena un conjunto de transacciones (operaciones de traspaso de bitcoins). Para que un bloque sea válido, tiene que tener una firma criptográfica válida que no es sencilla de obtener (generar esta firma es el trabajo necesario por el algoritmo proof-of-work). Ésta firma depende del bloque anterior, por lo que los bloques están enlazados “criptográficamente” entre sí, forman una cadena que es difícil romper.
- Cuando un cliente quiere hacer una operación, por ejemplo enviar dinero, genera una transacción y la envía a la red, que intenta guardarla en el log global de transacciones.
- Cuando llega una transacción, los nodos de la red generan un bloque nuevo (o lo añaden al bloque sobre el que están trabajando) y compiten por buscar una firma válida para el bloque.
- Las condiciones para encontrar una firma válida hacen que encontrarla sea prácticamente una lotería.
- Cuando un nodo encuentra una firma válida para un bloque, lo envía al resto de nodos. El resto de nodos verifican que el bloque es válido y si lo es, lo aceptan implícitamente y comienzan a trabajar en el siguiente bloque usando la firma del nuevo que han recibido. Por decirlo de otra manera, el bloque queda enganchado a la cadena criptográfica.
- Se pueden producir escisiones en el fichero de log. Por ejemplo, en el caso de que un atacante envíe pagos duplicados. El log válido es el que contiene la lista de bloques más larga, es decir el número mayor de bloques válidos. Puede tardar, pero finalmente sólo los bloques válidos prevalecen y la rama con el pago duplicado desaparece.
- Además el algoritmo de bitcoin impide que se envíe 2 veces la misma cantidad de dinero. La firma criptográfica de un bloque depende del bloque anterior. Si alguien intenta enviar dinero 2 veces, el bloque anterior de una de las 2 transacciones no será válido y no se aceptará por la red.
- Gracias a su diseño (P2P + proof-of-work), no se podrán hacer ataques fraudulentos a la red, siempre que la capacidad de cálculo de la red sea superior a la capacidad de cálculo del atacante. Si alguien intenta modificar la historia de una cuenta (almacenada en el log global), debería rehacer la historia de log completa. Cómo el algoritmo criptográfico requiere recalcular los nodos existentes, el atacante debería tener más capacidad de cálculo que la red bitcoin “legal” para engañarla y que acepte bloques fraudulentos.
- Los bitcoin se “fabrican” cuando un nodo encuentra una firma válida para un bloque. El nodo se apunta 25 bitcoins de recompensa. La recompensa se entrega por el esfuerzo de buscar una firma válida para un bloque. Por eso los nodos compiten para encontrar una firma válida de un bloque. Esta tarea se llama minería y puede ser o no rentable, dependiendo de los costes de computación, que a su vez dependen del coste de la electricidad, mantenimiento de la red informática, comunicaciones, etc.
- La generación de bitcoin está limitada. No habrá más de 21 millones de bitcoin, cada vez se generan menos bitcoin, hasta que la minería “se agote”. Además la recompensa de 25 bitcoin, se irá disminuyendo hasta llegar a cero. Consecuentemente, la producción de nuevos bitcoin por minería, también se irá disminuyendo hasta llegar a cero.
Y algunos apuntes no técnicos y opinión mía:
- Bitcoin está sustentada por una implementación tecnológica. Gracias a que la implementación es open source y los fallos de seguridad se suelen compartir de forma abierta, es muy difícil encontrar fallos en el algoritmo que actualmente se considera seguro. Aún así, si algún día se descubre un fallo, la moneda puede venirse abajo o desaparecer. Es una posibilidad muy remota, pero podría suceder.
- Bitcoin no tiene ningún respaldo económico por parte de una autoridad central, no hay ningún banco central o gobierno por detrás. Esto puede ser bueno o malo. No hay interferencia de bancos centrales (no se puede crear inflación/deflación artificial), pero en caso de que todo el mundo abandone el uso de bitcoin, no tiene un valor externo que lo respalde.
- Actualmente, el principal problema de bitcoin es la convertibilidad a dinero “real”. Si todo el mundo aceptase bitcoins de golpe, podría sustituir a cualquier moneda del mundo eficientemente y de forma descentralizada. El problema es que ahora mismo no es así y las cosas (por ahora) se pagan con dinero real. La conversión de bitcoins a euros o dólares la hacen unas pocas casas de cambio. Estas casas de cambio son el punto débil en la actualidad.
- Bitcoin es fundamentalmente un protocolo de pago abierto y P2P (vale, esto es una apreciación un poco técnica). Bitcoin es el equivalente al protocolo http para la web. Significa que podrá ser usado por cualquier persona o empresa para implementar pagos o ideas relacionadas con los pagos. Dará lugar a nuevos servicios que es difícil imaginar y además es abierto y libre. Siguiendo con la analogía del protocolo http, éste dio lugar a las páginas web que a su vez han dado lugar a los buscadores, la wikipedia, los blogs, las redes sociales, etc. Es difícil saber cual será el impacto final de bitcoin, es una tecnología disruptiva.