Sistemas de Pago Electrónico


Este curso consta de tres lecciones:

   Lección 1. Sistemas de Pago: Comercio Electrónico
   Lección 2. Moneda Electrónica y Micropagos
   Lección 3. Introducción a Bitcoin


Lección 3. Introducción a Bitcoin

M. Magdalena Payeras Capellà, Andreu Pere Isern Deyà, Macià Mut Puigserver - fecha publicación 03/11/2014

Profesores de la Universitat de les Illes Balears, miembros del grupo de Seguridad y Comercio Electrónico (SeCOM)

Temario

Apartado 3.1. Introducción a Bitcoin
Apartado 3.2. Conceptos criptográficos básicos
Apartado 3.3. Conceptos del protocolo Bitcoin
   3.3.1. Dirección
   3.3.2. Monedero
   3.3.3. Transacción
   3.3.4. Bloque
   3.3.5. Cadena de bloques (Block chain)
   3.3.6. Algoritmo de proof-of-work
   3.3.7. Minería
   3.3.8. Exchanges
Apartado 3.4. Estadísticas de la red
Apartado 3.5. Críticas y escepticismo
Apartado 3.6. Monedas digitales alternativas
Apartado 3.7. Conclusiones
Apartado 3.8. Ejercicios
Apartado 3.9. Referencias bibliográficas


El objetivo de esta lección es el de ofrecer una introducción a los conceptos básicos de Bitcoin así como a algunos puntos importantes que afectan a su funcionamiento.

Como en todo medio de pago, la seguridad y la privacidad son dos requisitos indispensables, por lo que se analizarán los mecanismos que propone Bitcoin para mantener la seguridad, la privacidad y otros requisitos de todo medio de pago. No obstante, Bitcoin también plantea una serie de inconvenientes o escepticismos que por supuesto conviene analizar.


APARTADO 3.1. INTRODUCCIÓN AL BITCOIN

Volver al inicio

Bitcoin es una moneda digital descentralizada que opera sobre una red P2P (Peer-to-Peer) que se basa en el uso de herramientas criptográficas para controlar la seguridad y la privacidad en la creación, uso y transferencia de dinero electrónico.

De la misma forma que cualquier moneda de uso común, Bitcoin tiene una abreviación para identificarla en los mercados: BTC.

A lo largo de la lección tomaremos el nombre propio Bitcoin para referirnos a la red y al protocolo, mientras que elegiremos el nombre bitcoin o BTC para llamar a las monedas con las que se realizan las transacciones.

Figura 3.1. Logotipo de Bitcoin.

Bitcoin fue inicialmente creado por Satoshi Nakamoto a partir de un artículo publicado en 2008 y en el que se describe el protocolo Bitcoin [bitcoinPaper]. En el artículo se explican los conceptos iniciales de Bitcoin y se propone un esbozo de lo que actualmente es Bitcoin: un sistema de pago electrónico mediante moneda electrónica. Hasta la fecha, y después de numerosas especulaciones [coindesk, newsweek, wikipedia] nadie sabe con certeza quién o quiénes son Satoshi Nakamoto, ya que lo único que se sabe es que se trata de un pseudónimo detrás del cuál podría incluso haber más de una persona.

Poco después de la publicación del artículo, a principios de 2009 (03/01/2009) la red Bitcoin empezó con la emisión del primer bloque con el que se otorgaba una recompensa inicial de 50 BTC.

También se liberó el primer cliente y cartera digital para operar con bitcoins (Bitcoin-Qt).

Es curioso destacar que la primera transacción que involucró bitcoins fue para pagar dos pizzas a cambio de 10.000 BTC (que actualmente rondarían el valor equivalente a unos $8.500.000).

A continuación en los siguientes apartados veremos una visión general de Bitcoin, de la red, de cómo se llevan a cabo las transferencias de monedas y de qué manera se protege la privacidad de los usuarios, así como cuál es el mecanismo que implementa Bitcoin para impedir la reutilización de una moneda (double-spending).

Para esto, primero empezaremos repasando los conceptos criptográficos básicos sobre los cuales Bitcoin se fundamenta en el Apartado 3.2. Posteriormente en el Apartado 3.3 entrar a explicar cada una de las partes que forman el protocolo Bitcoin y los servicios que lo rodean. Seguidamente, en el Apartado 3.4 veremos una serie de estadísticas muy interesantes referentes a la capacidad de cálculo que alberga la red, para continuar con el Apartado 3.5 donde se razonarán una serie de críticas o escepticismos hacia las monedas digitales, tanto desde el punto de vista funcional como desde el económico y financiero, e incluso político. Finalmente, en el Apartado 3.6 haremos un pequeño hincapié en otras monedas digitales alternativas para terminar con las conclusiones en el Apartado 3.7.


APARTADO 3.2. CONCEPTOS CRIPTOGRÁFICOS BÁSICOS

Volver al inicio

En este apartado de la lección abordaremos las tres primitivas criptográficas principales sobre las cuales Bitcoin se sustenta: los algoritmos de hash, el algoritmo de firma digital, los árboles de Merkle y el algoritmo hashcash.

Función de hash criptográfica

Una función de hash criptográfica (o función resumen) es un algoritmo que toma como entrada unos datos de longitud cualquiera (el mensaje) y devuelve una cadena de bits de longitud fija (el hash).

Las características principales de una función de hash criptográfica ideal son las siguientes:

  • Eficiencia en la computación. Debe proporcionar un cálculo rápido del hash a partir de cualquier mensaje de entrada.
  • Resistencia a preimagen. Debe ser computacionalmente muy difícil generar el mensaje a partir del cual se ha derivado el resumen.
  • Resistencia a segunda preimagen. Debe ser computacionalmente muy difícil, dado un mensaje, conseguir un segundo mensaje que genere el mismo hash.
  • Resistencia a colisión. Debe ser computacionalmente muy difícil generar dos mensajes diferentes y que el hash de ellos sea el mismo.

Históricamente, las funciones de hash han tenido diversas y variadas aplicaciones en el contexto de la criptografía, ya que se usan en firmas digitales, en algoritmos de autenticación, en sistemas de fingerprinting o también para verificar la integridad de datos (una forma de checksum).

Bitcoin define el uso de dos tipos de algoritmos de hash: SHA-256 y RIPEMD-160.

  • SHA-256 (Secure Hash Algorithm). Es el algoritmo de hash principal usado en el protocol Bitcoin. Pertenece a la família de funciones de hash SHA-2 diseñadas por la NSA y aceptadas por el NIST como el estándar a usar en algoritmos de hash por la administración norteamericana, para sustituir a su predecesor más immediato, SHA-1, del cual se conocen varias vulnerabilidades de seguridad.
  • RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest). Además del anterior algoritmo de hash, Bitcoin usa otro algoritmo en los supuestos en donde se requiere un hash de menor longitud. Fue creado en 1996 y pertence a la familia RIPEMD, de la que existen algoritmos con longitudes de salida de 128, 160, 256 y 320 bits. Entonces, Bitcoin usa la versión de 160 bits, como SHA-1, pero con la diferencia principal de que RIPEMD fue creado bajo los auspicios de una comunidad investigadora abierta en contraposición de SHA-1, que fue diseñado por la NSA.

Cabe destacar que Bitcoin siempre genera un hash resultado de aplicar dos veces un algoritmo de hash sobre cualquier dato, para así incrementar la seguridad contra criptoanálisis.

Firma digital

Bitcoin usa firma digital basada en criptografía de clave pública para autenticar datos y verificar correctamente quién está autorizado a transferir monedas. Más concretamente, Bitcoin define el uso de criptografía de curva elíptica (ECC, Elliptic Curve Cryptography) usando el algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm), versión de DSA basada en curva elíptica. Los algoritmos ECC se basan en la complejidad de resolver ciertos problemas matemáticos en relación a la estructura algebraica de las curvas elípticas sobre campos finitos. Generalmente, se asume que resolver el logaritmo discreto de un elemento de una curva elíptica escogido de forma aleatoria respecto a un punto base público es computacionalmente inviable (ECDLP, Elliptic Curve Discrete Logarithm Problem).

Con respecto a los algoritmos de clave pública basados en la factorización de enteros muy grandes compuestos por dos o más factores primos (como RSA), la ventaja más relevante de ECC es la reducción del tamaño de clave para un mismo nivel de seguridad. Así pues, tomando como referencia un documento de recomendaciones de la SEC (Standards for Efficient Cryptography) [SECrecom], para un determinado nivel de seguridad (en bits), se necesita solamente una clave del doble del tamaño del nivel de seguridad requerido. En la Tabla 3.2.1 se puede comparar el tamaño de las claves para ECDSA y para el módulo de la clave para RSA/DSA para obtener niveles de seguridad equivalentes.

Parámetros Fortaleza (bits) Tamaño ECDSA (bits) Tamaño equiv. para RSA/DSA (bits)
secp128r164128704
secp160k1801601024
secp192k1961921536
secp256k11282563072

Tabla 3.2.1. Propiedades recomendadas para los parámetros de EC en campos finitos y equivalencia.

Bitcoin usa la curva elíptica especificada en la recomendación secp256k1 de la Tabla 3.2.1. Por lo tanto, las firmas proporcionan una fortaleza equivalente a 128 bits con tan sólo un tamaño de clave de 256 bits. Usando las versiones clásicas de RSA/DSA, el tamaño de la clave debería ser de 3.072 bits para este mismo nivel de seguridad.

En esta lección queda fuera de los objetivos el conocer los parámetros matemáticos, la forma de generar las claves y cómo se calcula la firma y se verifica su validez mediante el algoritmo de firma ECDSA. No obstante, se puede obtener información adicional sobre estos procesos en estos enlaces: ECC y ECDSA.

Árboles de Merkle

Un árbol de Merkle (Merkle Tree) o árbol de hash, es una construcción en forma de árbol de valores en donde cada nodo interior (nodos que no son nodos finales) es el resultado de aplicar una función de hash (sea SHA-1, SHA-2, etc.) sobre el valor de los nodos hijo hasta llegar a un nodo raíz llamado Merkle root del árbol. Pueden ser binarios (cada nodo interior tiene dos descendientes, Figura 3.2.1) o no (cada nodo interior tiene un número determinado de descendientes). La funcionalidad de estos algoritmos es la de permitir verificar de forma eficiente y segura la integridad e inclusión de todos los datos de estructuras de datos grandes. Además, se pueden considerar como una generalización de las cadenas de hash (hash chains), en donde la verificación de un elemento es proporcional al logaritmo del número de nodos del árbol, a diferencia de las cadenas de hash, en donde el coste es lineal con el número de hashes contenidos en la cadena.

Figura 3.2.1. Árbol de Merkle binario de tres niveles.

Algoritmo hashcash

Hashcash [hashcashPaper] es un sistema de proof-of-work inicialmente diseñado en 1997 para limitar el spam en el correo electrónico o los ataques de denegación de servicio. Se trata de un método mediante el cual se añade información extra al encabezado de un correo electrónico para probar que el emisor legítimo ha invertido una cierta capacidad de cálculo para enviar el mensaje. Si se demuestra este hecho, implica que el emisor no es un spammer.

Tomando un algoritmo de hash, hashcash exige que el emisor calcule un hash que contenga 20 bits a cero a la izquierda. La única forma que tiene el emisor de generar esta información es a través de aplicar iterativamente el algoritmo de hash (fuerza bruta) sobre la información original e incrementar iterativamente un entero hasta que el resultado del cálculo (el hash) cumpla la condición del número de bits a cero anterior. El receptor puede verificar que esta información es efectivamente válida con un coste computacional insignificante, equivalente a un único hash. En cambio, el emisor tiene que realizar 220 hashes en media hasta encontrar un resultado válido. Ya que el tiempo de generación de un único hash es predecible (dependiendo de la capacidad de cálculo disponible), el tiempo necesario para generar el hash con 20 ceros a la izquierda es predecible en media. De esta manera, si el emisor se ha tomado la molestia de generar esta información con la carga de trabajo que conlleva, se demuestra que no es un spammer. En cambio, para un spammer, la capacidad computacional necesaria es lineal con respecto al número de emails a enviar, lo que implica que el trabajo se relantiza y el uso de recursos aumenta considerablemente, haciendo que la viabilidad de enviar correo no deseado no sea realmente tan positiva en la práctica. En la Figura 3.2.2. se muestra un ejemplo para visualizar el funcionamiento del algoritmo hashcash:

"Hello, world!0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
"Hello, world!1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
"Hello, world!2" => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7
...
"Hello, world!4248" => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
"Hello, world!4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
"Hello, world!4250" => 000003af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9

Figura 3.2.2. Ejemplo práctico de funcionamiento de hashcash.

En el ejemplo práctico anterior, se puede observar como el emisor tendría que cambiar el Nonce hasta 4251 veces y generar la misma cantidad de hashes hasta encontrar un resultado con el número de ceros a la izquierda especificado.


APARTADO 3.3. CONCEPTOS DEL PROTOCOLO BITCOIN

Volver al inicio

Una vez explicados los conceptos criptográficos básicos en los que se fundamenta el funcionamiento de Bitcoin, vamos a entrar en materia enumerando los conceptos más importantes de Bitcoin. Para empezar, destacar que a diferencia de las monedas tradicionales, Bitcoin establece un límite invariable en el número máximo de monedas en circulación. Este límite está fijado en no más de 21 millones de bitcoins en circulación (Figura 3.3.1).

Figura 3.3.1. Número máximo de bitcoins en circulación.

Aunque este límite sea relativamente pequeño, cada bitcoin se puede dividir en fracciones más pequeñas, llamadas satoshis. Cada satoshi equivale a 0.00000001 bitcoins o lo que es lo mismo, 1 BTC = 100.000.000 satoshis = 10 8 satoshis. La tasa establecida de emisión de bitcoins se reduce paulatinamente a lo largo del tiempo, haciendo que no se llegue al máximo de monedas establecido hasta aproximadamente el año 2140.

Dirección

Una dirección Bitcoin es una cadena de caracteres, cuya longitud normalmente es de 33 caracteres (aunque puede variar entre 27 y 34) que identifica a un recipiente en el cual puede haber (o ha habido en un pasado) enlazados un número determinado de bitcoins. Básicamente, una dirección se forma a partir de dos parámetros: la versión del protocolo (v) y una clave pública (pk) del algoritmo ECDSA:

  1. hash_key = v || RIPEMD160(SHA256(pk))
  2. checksum = SHA256(SHA256(hash_key)) y sólo cogiendo los primeros 4 bytes del resultado
  3. address = Base58Enc(hash_key || checksum)

Figura 3.3.2. Proceso de generación de una dirección Bitcoin.

Con esta construcción, solo el propietario de la clave privada (sk) relacionada con la clave pública (pk) puede desbloquear el uso de los fondos depositados en esta dirección en concreto. Al final del proceso, el usuario obtiene una dirección (address) codificada mediante un algoritmo de codificación basado en Base58 cuya diferencia principal respecto de Base64 es que Base58 evita el uso de caracteres fácilmente confundibles como 0 (número cero), O (letra "o" mayúscula), I (letra "i" mayúscula) y l (letra "l" minúscula de lata).

Aunque el formato original es una cadena de caracteres codificada, las direcciones también se pueden presentar con otros formatos distintos, como por ejemplo mediante un código QR. En la Figura 3.3.3 se muestra una dirección expresada como un código QR.

Figura 3.3.3. Código QR correspondiente a la dirección 1D6CsPEsBQxY7Ek6Yo6xUqXoRxJY2N6iRK.

Dado que las transacciones en Bitcoin son totalmente públicas (lo veremos con detalle en esta lección), cualquiera puede determinar el contenido (actual o pasado) de una dirección en concreto, así como enlazar las transacciones en las que ha participado una misma dirección, aunque no se pueda relacionar quién es el propietario de dicha dirección. Para evitar en todo lo posible que se puedan enlazar diferentes transacciones con una misma dirección, es una buena práctica no usar la misma dirección más de una vez, por lo que se recomienda que la direcciones no se reutilizen para realizar varias transacciones.

Monedero digital

En Bitcoin, un monedero es un archivo que contiene un número determinado de pares de claves criptográficas ECDSA enlazadas a sus respectivas direcciones. Cada usuario de la red puede almacenar el monedero de forma local en su propio dispositivo o bien confiar en un proveedor externo que ofrece un servicio de monedero on-line. En la Figura 3.3.4 se muestran un ejemplo de cada tipo de monedero.

Figura 3.3.4. Dos ejemplos de monederos de bitcoins (monedero local a la izquierda y monedero on-line a la derecha).

Sea cual sea el lugar donde el usuario almacena sus pares de claves, si pierde el acceso a la clave privada enlazada a una dirección en particular, todos los bitcoins enlazados a esa clave privada se pierden irremediablemente, ya que el usuario ya no es capaz de desbloquear los fondos enlazados a esta clave. Sobra advertir que si un atacante consigue acceder al monedero y a la lista de claves privadas que contiene, puede robar y transferir fácilmente los BTC enlazados sin ningún problema. De modo que se hace necesario establecer una política de seguridad adecuada que proteja el acceso a los monederos y que impida la pérdida de las claves privadas.

Transacción

Una transacción es un conjunto de datos que describen un flujo de bitcoins desde una dirección (o un conjunto de ellas) a otra dirección (o a más de una). Estos datos se firman digitalmente y sirven para reasignar la propiedad de un número determinado de bitcoins a una nueva dirección. Es decir, una transacción marca cuántos y desde qué dirección y hasta que otra dirección fluyen los bitcoins.

Todas las transacciones que tienen lugar entre usuarios de Bitcoin deben de ser transmitidas a toda la red Bitcoin mediante inundación (recordar que se trata de una red P2P) y ser confirmadas por la red. En Bitcoin, una confirmación es la acción consistente en verificar una transacción y en caso de ser válida, añadirla a un bloque (veremos qué es y cómo se genera un bloque posteriormente). A medida que una transacción va acumulando más y más confirmaciones, es más problable que se considere como válida. Por defecto, es común considerar una transacción como válida cuando ha obtenido seis o más confirmaciones.

Figura 3.3.5. Estructura lógica de una transacción con inputs y outputs.

En la Figura 3.3.5 se muestra la estructura lógica de un transacción, compuesta por un conjunto de entradas (inputs) y salidas (outputs), además de otros parámetros que estan fuera del alcance de esta lección.

  • Un input es una referencia a un output de una transacción anterior, es decir, un input hace referencia a los fondos de una transacción anterior.
  • Un output contiene instrucciones para enviar un número determinado de bitcoins a una nueva dirección, de forma que se establece el nuevo propietario de los bitcoins transferidos.

Todas las transferencias tienen que cumplir que el valor agregado de los outputs debe ser igual o inferior al valor de la suma de los inputs. En caso que los outpus sumen menos que el total de los inputs, la diferencia resultante es la comisión que establece libremente el emisor de la transacción (transaction fee). Cuanto mayor sea la comisión resultante, menor será el tiempo que la red tardará en confirmar la misma ya que las transacciones con mayor comisión se desplazarán más rápidamente por la cola de espera de transacciones pendientes de confirmación.

Figura 3.3.6. Ejemplo de transacción: (a) arriba imagen tomada de blockchain.com y (b) abajo los detalles de la misma.
Para ampliar las imágenes superior e inferior, pinche con el ratón en ellas.

En el ejemplo de la Figura 3.3.6, se puede observar una transacción desde una dirección a dos direcciones diferentes, las cuales reciben 0.6165 BTC y 0.11189 BTC, respectivamente.

Existe un tipo especial de transacción llamada transacción base o coinbase transaction que no contiene ningún input. Este tipo de transacciones otorgan una cierta recompensa al nodo que posee la dirección que ha resuelto un bloque. Aunque no tenga ningún input, puede tener un número arbitrario de outputs en caso que la recompensa se deba dividir entre diferentes direcciones. Además de la recompensa fija por resolver el bloque, el usuario también recibe la cantidad correspondiente a las comissiones (transaction fees) especificadas en cada una de las transacciones agregadas en el bloque que se acaba de resolver.

La verificación de las transacciones se realiza de forma distribuida a lo largo de la red P2P, de forma que todas las transacciones se anuncian de forma pública y todos los participantes deben de ponerse de acuerdo en un único historial de transacciones. Debido a la inexistencia de entidades centrales o bancos que verifiquen la línea temporal de las transacciones (que las transacciones estén ordenadas cronológicamente) y que no se produzcan reutilizaciones (double-spendings), Bitcoin introduce los conceptos de bloque, cadena de bloques (block chain) y algoritmo de proof-of-work (basado en hashcash), que veremos a continuación.

Bloque

Un bloque es un archivo público en el que se guarda de forma permanente (e inalterable) toda la información (transacciones) que se generan en la red Bitcoin. Cuando una transacción se lanza por parte de su emisor, ésta se distribuye a lo largo de la red esperando ser verificada e incluida en un bloque y, por tanto, recibir una confirmación de validez. Mientras no son incluidas en un bloque, las transacciones esperan en una cola de transacciones pendientes. Al proceso de generación de bloques y adición a la cadena de bloques (ver los siguientes puntos de la lección) se le llama el proceso de minería o mining mediante el algoritmo de proof-of-work basado en hashcash.

De forma resumida, un bloque se divide en dos partes: el encabezado o (block header) y el cuerpo.

El encabezado contiene los siguientes elementos:

  • Versión. Contiene la versión del software que ha generado el bloque.
  • Hash del bloque anterior. Almacena el hash de 256 bits del bloque immediatamente anterior de la cadena.
  • Root del árbol de Merkle. Guarda el hash de 256 bits del root del árbol de Merkle de todas las transacciones recogidas en este bloque.
  • Target actual. Parámetro de 256 bits que marca la dificultad de resolución del bloque. Técnicamente es el valor umbral por debajo del cual debe estar el resultado de aplicar el algoritmo de hash sobre el block header. Está relacionado con el algoritmo hashcash como veremos más adelante.
  • El timestamp actual. La hora de generación del bloque en formato timestamp de UNIX.
  • Nonce. Es un número de 32 bits que se incrementa iterativamente hasta encontrar un hash sobre el header que cumpla la condición expresada por la variable target.

Como se ha comentado en la explicación del algoritmo hashcash, el target marca el valor por debajo del cual debe estar el hash resultante del bloque para que sea aceptado como válido. A medida que se requieren más ceros a la izquierda, la dificultad de encontrar un hash con las condiciones requeridas aumenta. Por lo tanto, la dificultad es una medida que expresa cómo de difícil es encontrar un hash por debajo de un determinado target. Este parámetro se ajusta en la red cada 2016 bloques (2 semanas de media), para ajustar la tasa de generación de bloques de forma que se mantenga la tasa de diseño que especifica que se genera un bloque cada 10 minutos de media. De esta forma, se ajusta la dificultad de encontrar un hash con un determinado target dependiendo de la variación de la potencia de cálculo disponible en el global de la red.

El cuerpo de un bloque contiene el contenido completo de todas las transacciones agregadas en el mismo. Es decir, para cada transacción, el bloque almacena la estructura equivalente a la Figura 3.3.6b.

Para dar inicio a la red, los creadores de la misma tuvieron que generar el primer bloque de la cadena de bloques, llamado genesis block. Este bloque recompensaba a la dirección 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa con 50 BTC. Con el objetivo de probar que este bloque inicial no fue generado antes del día 3 de enero de 2009, el creador del mismo introdujo una frase dentro de la transacción: el titular de portada del diario London Times de ese mismo día: "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks".

Figura 3.3.7. Portada del diario London Times, 03/01/2009.

El número de bloques, a diferencia del número de bitcoins en circulación, no está limitado en número, por lo que a lo largo del tiempo habrá tantos bloques como sean necesarios para guardar las futuras transacciones.

Cadena de bloques (Block chain)

Gran parte de la seguridad de Bitcoin viene dada por el uso de la cadena de bloques o block chain. La cadena es un registro permanente de todas las transacciones que han acontecido en la red Bitcoin, a forma de base de datos permanente, formada por bloques encadenados entre sí, como se ha explicado en el anterior punto de la lección. Este registro está compartido y distribuido en todos los nodos de la red, de forma que todos los nodos tiene una copia completa de la cadena. Ya que en la cadena se almacenan todas las transacciones en orden cronológico, cualquier usuario (incluso externo al funcionamiento de la red), puede verificar el flujo de bitcoins desde el bloque génesis hasta el último bloque generado.

Figura 3.3.8. Cadena de bloques desde el bloque génesis hasta el último bloque generado.

Es precisamente la utilización de la cadena de bloques que hace que el double-spending sea muy díficil de llevar a cabo, ya que es computacionalmente muy difícil regenerar un bloque previamente añadido a la cadena de bloques. Además, dado el encadenamiento de bloques, no es suficiente regenerar un bloque intermedio de la cadena, sino que también es necesario regenerar todos los bloques posteriores. Es decir, para que un atacante tenga éxito en modificar o reutilizar una transacción previa, debe ser capaz de regenerar el bloque que contiene la transacción a reutilizar así como todos los bloques posteriores, trabajo que computacionalmente es inviable.

Los nodos honestos que trabajan sobre la cadena de bloques y que generan nuevos bloques trabajan sobre el último bloque conocido de la cadena de mayor longitud. En la red, la mayor longitud no quiere decir exactamente la cadena con más bloques desde el bloque genésis, sino que se interpreta como la cadena que combina los bloques con mayor dificultad acumulada. Como se puede observar en la Figura 3.3.8, desde cualquier bloque solo hay un único camino posible hasta el bloque génesis, pero desde el bloque génesis puede haber diferentes forks, de manera que la cadena puede convertirse en un árbol de bloques con diferentes ramas.

Este hecho sucede cuando dos bloques se han generado con muy pocos segundos de diferencia entre ellos, de modo que los nodos mineros no se han percatado que justo se había generado otro bloque. Ambos bloques pueden ser válidos y cumplir con las condiciones exigidas, pero sólo uno de los dos debe formar parte de la cadena de bloques principal. En este caso, los nodos encargados de generar nuevos bloques trabajan sobre el bloque que han recibido en primer lugar desde la red. A partir del momento en que se genera un nuevo bloque encadenado a uno de los dos previamente generados, los nodos acuerdan que la cadena más larga es la que formará parte de la cadena de bloques principal. Entonces, el otro bloque se descarta y pasa a ser inválido, haciendo que todas las transacciones incluídas en el mismo deban ser desplazadas a la cola de transacciones pendientes de ser añadidas a un nuevo bloque.

Algoritmo de proof-of-work

Como se ha comentado previamente, el algoritmo para generar los hash de los bloques está basado en el algoritmo de proof-of-work hashcash. A medida que el número de ceros a la izquierda requerido para validar la información aumenta, la dificultad de encontrar un hash que cumpla con esta exigencia aumenta (la dificultad se duplica por cada cero a la izquierda adicional). En el caso particular de Bitcoin, el número de ceros a la izquierda se regula en función del target, el cual se regula cada 2016 bloques (dos semanas en media) haciendo que el número de ceros a la izquiera del hash se regule al alza (la dificultad aumenta) o a la baja (la dificultad disminuye) dependiendo del tiempo medio de generación de los 2016 bloques anteriores. De esta forma se consigue que la red resuelva un bloque cada aproximadamente 10 minutos (en media), independientemente de la variación en la capacidad de computación agregada de la red.

Minería de bitcoins

Como consecuencia de la generación de un bloque, el nodo que ha ganado el bloque recibe una recompensa a cambio de los recursos dispuestos a la red (hardware, electricidad, conexión de red, tiempo, etc.). El nodo en cuestión recibe un número determinado de bitcoins, además de todas las comisiones (fees) asociadas a las transacciones agregadas en el bloque. Inicialmente, la recompensa era de 50 BTC, aunque cada 210.000 bloques (2 años en media) el número de monedas recibidas se divide por la mitad (a marzo de 2014, la recompensa son 25 BTC). Esta recompensa no se hace efectiva hasta un período de maduración de 100 bloques (o 16 horas en media) después del bloque generado para evitar cobrar por bloques huérfanos (ver block chain). De esta forma se consigue que haya nodos motivados a trabajar para la red, de manera que si no existiera este sistema de recompensas, probablemente no habría nodos encargados de realizar minería. Por tanto, las transacciones nunca se confirmarían y en definitiva la red Bitcoin se colapsaría.

Por tanto el proceso de minado de bitcoins (mining) es el proceso de añadir conjuntos de transacciones a la base de datos pública y compartida de transacciones (block chain) usando el algoritmo de proof-of-work explicado a cambio de una recompensa en bitcoins. Existen diferentes formas de minar bitcoins resumimos a continuación:

  • Solo mining. Cualquier nodo puede hacer minado de forma individual sin colaborar con ningún otro nodo de la red.
  • Pool mining. Los mineros se unen en grupos de minado (los llamados mining pools) en los que todos los participantes colaboran aportando sus recursos para resolver un bloque de forma conjunta. Una vez que el pool consigue generar un bloque, las ganancias se reparten entre todos los participantes del pool en función de los recursos proporcionados.
  • Rig mining. En esta opción, un único minero o un grupo reducido de ellos operan un conjunto de dispositivos de minería. Los rig normalmente se componen de un gran número de GPUs o incluso de dispositivos ASIC creados específicamente para la tarea de minado de bitcoins.

Actualmente, y dado el crecimiento exponencial de la capacidad de cálculo disponible en la red, el minado en solitario de bitcoins es completamente inviable, ya que la probabilidad de ganar un bloque con las dificultades tan altas que se manejan es prácticamente insignificante (ver Apartado 3.4). Por lo tanto, la mejor opción en la actualidad para realizar minería de bitcoins es unirse a un mining pool. Aunque los beneficios son menores que los reportados al encontrar un bloque en solitario, la ganacia se mantiene relativamente constante. Se trata de elegir ganar 25 BTC de golpe con muy baja probabilidad o ganar porciones pequeñas pero de forma constante cada cierto tiempo.

La generación de bloques se parece más a una lotería que a un proceso complejo

Cada hash devuelve un número aleatorio entre 0 y el valor máximo de 256 bits.

Exchanges

De la misma forma que en las divisas tradicionales, en Bitcoin existen los llamados exchanges en los cuales los usuarios pueden cambiar algunas de las divisas de uso tradicional más importantes (por ejemplo dólares, euros, yens, libras, etc.) por bitcoins y a la inversa. Cualquier persona deposita una cierta cantidad dinero en una de las divisas aceptadas en el exchange y entonces puede usar ese dinero para operar e intercambiarlas por bitcoins a través de operaciones de compra y venta al precio de mercado en el momento de la operación. Las fluctuaciones en la oferta y demanda de bitcoins configuran el tipo de cambio de cada exchange de un bitcoin con respecto a las divisas soportadas por el exchange. En la Figura 3.3.9 se muestran tres ejemplos de exchanges populares actualmente.

Figura 3.3.9. Algunos exchanges populares.

En la Figura 3.3.10. aparece un ejemplo de la profundidad de mercado del conjunto de órdenes pendientes de ejecución de compra y venta de bitcoins en Bitstamp. Se puede observar que el funcionamiento es el mismo que en cualquier mercado financiero (como por ejemplo bolsas o mercados de divisas tradicionales): existen una serie de órdenes compuestas por un precio requerido y una cantidad de bitcoins o dólares por los que el emisor de la orden está dispuesto a comprar o vender. En el momento en que aparece contrapartida para el precio expuesto, las órdenes se cruzan y los usuarios reciben la cantidad especificada en dólares o bitcoins en su cuenta del exchange.

Figura 3.3.10. Profundidad del mercado y equilibrio entre órdenes de compra y de venta en Bitstamp.net (Fuente: Bitstamp.net).
Para ampliar la imagen, pinche con el ratón en ella.


APARTADO 3.4. ESTADÍSTICAS DE LA RED

Volver al inicio

Como se ha comentado a lo largo de la lección, al ser Bitcoin una red pública en donde todas las transacciones se guardan en un archivo común por todos los nodos que participan en la red (block chain), es relativamente fácil extraer interesantes estadísticas numéricas de algunos de los parámetros claves de la red. Existen diferentes sitios web mediante los cuales se puede acceder a datos y usarlos para analizar varias métricas referentes a la red Bitcoin, entre las cuales cabe destacar las siguientes:

  • bitcoin.sipa.be. Presenta diversos gráficos estadísticos acerca de la capacidad de cálculo disponible y su evolución a lo largo del tiempo.
  • bitcoinx.com. Recopila estadísticas en tiempo real sobre el mercado de bitcoins, tipos de cambio, etc. También integra una calculadora para estimar las ganacias que se podrían obtener en caso de minar bitcoins en función de la inversión en equipamiento (hardware, tiempo, electricidad, etc.).
  • blockchain.info. Muestra en tiempo real las últimas transacciones y bloques generados, así como la relación entre direcciones y transacciones. Es uno de los sitios web más completos e interesantes de los que se dedican a procesar la cadena de bloques.
  • blockexplorer.com. Es otra página con la que se puede analizar la cadena de bloques y obtener parámetros actuales de la red (dificultad, target, etc.) así como otros datos estadísticos y su evolución.

Dado que los datos estadísticos de la red cambian rápidamente y en tiempo real, en este apartado intentaremos resumir algunos de los parámetros estadísticos más importantes en la red Bitcoin en el momento de la edición de esta lección (julio de 2014). Siempre se puede consultar en tiempo real estas y otras estadísticas en los sitios web listados anteriormente o directamente desde los enlaces proporcionados en cada figura de este apartado.

La dificultad actual para conseguir resolver un bloque es la representada a continuación:

16818461371.161

Figura 3.4.1. Valor de la dificultad actual (Fuente: blockexplorer.com).

Relacionado con la dificultad, el valor del target actual es el siguiente:

0000000000000000415FD1000000000000000000000000000000000000000000

Figura 3.4.2. Target en formato hexadecimal (Fuente: blockexplorer.com).

En la cadena hexadecimal correspondiente al target observado en la red ya se puede observar como hay un número determinado de ceros a la izquierda, pero lo que realmente interesa es saber cuántos bits a cero hay a la izquierda. Si se convierte esta cadena hexadecimal a una cadena binaria, obtenemos el siguiente resultado:

000000000000000000000000000000000000000000000000000
000000000000001000001010111111101000100000000000000
000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000

Figura 3.4.3. Target en formato binario a partir de la cadena hexadecimal.

Como podemos observar, se pueden contar 63 bits a cero a la izquierda de la cadena de bits, y a medida que la dificultad aumenta, el target requiere que el hash resultante tenga cada vez más bits cero a la izquierda.

Teniendo en cuenta el anterior valor del target, la probabilidad de que un único hash resuelva un bloque es la siguiente:

0.0000000000000000000138435428664968852592232124477933385 (≈ 1.38 · 10−20)

Figura 3.3.4 Probabilidad de solucionar un bloque calculando un único hash (Fuente: blockexplorer.com).

También con los mismos parámetros de dificultad y target, el número medio esperado de hashes para generar un nuevo bloque es el siguiente:

72235843789679429742 (≈ 7.22 · 1019)

Figura 3.4.5. Número medio de hashes necesarios para resolver un bloque (Fuente: blockexplorer.com).

A modo de curiosidad, en la Tabla 3.4.1. comparamos la evolución de la dificultad y del número de hashes a realizar en media para obtener un bloque, así como la capacidad de cálculo total de la red en dos instantes temporales dispares: en las primeras semanas de funcionamiento de Bitcoin y actualmente.

Bloque númeroFechaDificultadHash para ganarCapacidad de la red (hash/sec)
144Sun, 11 Jan 2009 16:59:04 GMT1,004.295.032.8332.747.941
309942Wed, 9 July 2014 15:01:02 GMT16.818.461.371,16111172.235.843.789.679.429.742133.276.464.556.604.113

Tabla 3.4.1. Comparativa de la evolución de algunos de los parámetros estadísticos de la red (Fuente: blockexplorer.com).

Respecto a los primeros bloques, actualmente se necesitan hasta 18.058.000.000 veces más hashes para ganar un bloque y la capacidad de cálculo total en la red ha aumentado en aproximadamente 66.638.000.000 veces. Estas cifras dan una idea de la progresión de la red, del foco de atención que ha recibido desde sus inicios hasta hoy en día y del aumento de complejidad que supone ganar ahora un bloque respecto a los inicios de la red.

Actualmente un bloque se genera en media en unos 8 minutos, unos 2 minutos más rápido que lo que está establecido por la red Bitcoin (se puede comprobar fácilmente con la ecuación de la Figura 3.4.6).

tiempo = ( dificultad * 232 ) / hashrate

Figura 3.4.6. Tiempo medio de generar un bloque dada una cierta dificultad y un tasa de generación de hashes (hashrate).

Para terminar con este apartado, recogemos dos gráficos muy interesantes para observar visualmente cómo ha evolucionado la potencia de cálculo de la red Bitcoin. En la Figura 3.4.7. se muestra cómo la dificultad se ajusta cada dos semanas en media para intentar alcanzar la potencia de cálculo disponible en la red.

Figura 3.4.7. Capacidad de cálculo disponible en la red Bitcoin (Fuente: bitcoin.sipa.be).
Para ampliar la imagen, pinche con el ratón en ella.

Por último, en la Figura 3.4.8. observamos la tasa de variación diaria de la capacidad de cálculo de la red Bitcoin en donde podemos apreciar cómo ésta aumenta entre un 0.5% y un 4% cada día, aunque en los últimos meses se puede apreciar una cierta tendencia a la baja en el crecimiento de la capacidad de cálculo.

Figura 3.4.8. Tasa de aumento diario de la capacidad de computación de la red Bitcoin (Fuente: bitcoin.sipa.be).
Para ampliar la imagen, pinche con el ratón en ella.


APARTADO 3.5. CRÍTICAS Y ESCEPTICISMO

Volver al inicio

Bitcoin ha sido alabado por muchos motivos, especialmente por introducir el anonimato en las transacciones y reducir las comisiones en las transferencias de dinero respecto de los sistemas tradicionales de moneda convencional o pago con tarjeta. Este último punto es especialmente importante, ya que hace posible el uso de Bitcoin para el pago electrónico de pequeñas cantidades de dinero (micropago). No obstante, la criptodivisa más activa y conocida en la actualidad también recibe numerosas críticas, algunas de las cuales se resumen en este apartado.

Las transacciones no se pueden cancelar

Dado que todas las transacciones válidas que se generan en la red se almacenan a lo largo de la cadena de bloques (block chain) y que es computacionalmente muy difícil regenerar un bloque y todos los bloques posteriores a éste, las transacciones aceptadas por la red no pueden ser canceladas de ninguna forma.

Confianza en los operadores de servicios

Aunque operar en la red Bitcoin no requiere confiar en terceras partes, siempre será necesario confiar en alguna entidad externa para realizar algún tipo de operación, como por ejemplo:

  • Minería en un pool. Los mineros tienen que confiar en el pool, de manera que depositan su confianza en el buen compartimiento del operador del pool en el sentido que reparte los beneficios equitativamente y cumple con los términos y condiciones a los que se ha comprometido.
  • Cambio de divisas por bitcoins y a la inversa. Para entrar a formar parte de la red Bitcoin existen dos posibilidades: hacer minería y conseguir bitcoins o realizar un cambio entre una divisa tradicional y bitcoins mediante un exchange. A partir del momento que se ha depositado una cierta cantidad de dinero, no hay más remedio que confiar en que el exchange actúe correctamente guardando ese depósito convenientemente. Recientemente, el mayor exchange mundial hasta la fecha (Mt.Gox) canceló inesperadamente sus operaciones dejando a sus usuarios sin su dinero depositado en sus cuentas.
  • Guardar bitcoins en un monedero en la nube. Desde el momento en que se depositan bitcoins en un monedero controlado por un tercero, es necesario depositar la confianza en el servicio y en su operador, ya que los bitcoins (e incluso las claves privadas para desbloquear los fondos) están almacenados en sus servidores, lo que podría llevar a robos de monederos y a la consiguiente pérdida de las monedas depositadas. En el apartado Eventos de hacking y robo de fondos aparecen algunos de los robos más recientes llevados a cabo contra servicios on-line.

El eslabón débil de Bitcoin son en gran parte los operadores de servicios, como pools y exchanges.

Son el punto de fricción entre las divisas de la economía tradicional y los bitcons.

Por lo tanto, es realmente importante conocer los riesgos que comporta depositar dinero (ya sea en forma de divisas tradicionales como en bitcoins) en servicios de terceros.

¿Es Bitcoin realmente una divisa?

Ésta es una cuestión que en cierto modo pasa a campos políticos, económicos y regulatorios más que al campo puramente tecnológico de Bitcoin. No obstante, es importante desde el punto legal establecer qué son los bitcoins, ya que las leyes no tratan de la misma forma a una divisa que a activos financieros o a materias primas. A continuación se enumeran una serie de resoluciones de diferentes países en referencia a Bitcoin:

  • Finlandia consideró recientemente [ibtimes] que Bitcoin no se podía tratar como una divisa digital (digital currency) sino como una materia prima digital (digital commodity) ya que según sus comisiones regulatorias, Bitcoin no cumple con la definición legal de divisa. El país nórdico tampoco define Bitcoin como un instrumento de pago ya para serlo debería tener un emisor responsable de su operación, cosa que no ocurre en Bitcoin.
  • China, a través del Banco Popular de China (PBC), manifestó también recientemente [reddit1, reddit2] que no entienden Bitcoin como una divisa verdadera, ya que no existe ninguna autoridad central de emisión, y que por consiguiente considera los bitcoins como una materia prima digital.
  • Alemania, mediante su ministerio de finanzas, manifestó en agosto de 2013 que consideraba Bitcoin como una moneda privada [cnbc] aunque no la considera una divisa virtual. Además declaró que la minería, como forma de conseguir ganancias, debe ser declarada y estar sujeta a una tasa de incremento de patrimonio del 25% [telegraph].
Riesgos y volatilidad

Ningún instrumento financiero en circulación se libra de la especulación, que en mayor o menor medida es uno de los catalizadores de los movimientos que sufren los mercados financieros. Aunque Bitcoin funcione en paralelo a la economía tradicional y no esté controlado por poderosos organismos centrales y financieros, también está sujeto a bandazos en sus cotizaciones. Además este hecho se ve incrementado por la gran atención que ha recibido a partir del año 2013 así como por su pequeña capitalización. Por todo esto y otros factores, actualmente Bitcoin se asemeja más a una herramienta de especulación que a un sistema que pueda ser aplicado al comercio electrónico para realizar transacciones de forma habitual.

Figura 3.5.1. Evolución del precio de un bitcoin respecto al dólar en el exchange BitStamp (Fuente: bitcoincharts.com).
Para ampliar la imagen, pinche con el ratón en ella.

Como se puede observar en la Figura 3.5.1, el precio de cada bitcoin se multiplicó por 10 en un solo mes, pasando de unos $120 a $1.150. De la misma forma que el valor de un bitcoin se multiplicó por 10, su precio se redujo a la mitad en unas pocas semanas entre finales de 2013 y principios de 2014. Esta gráfica demuestra la alta volatilidad que sufre Bitcoin y cómo la especulación guía su cotización, viendo enormes revalorizaciones pero también angustiosas depreciaciones.

Uso en actos ilegales y facilidad para el lavado de dinero

Aunque Bitcoin proporciona características que aumentan la privacidad de las transacciones, al mismo tiempo estas mismas características pueden ser usadas por usuarios malintencionados para ejecutar robos y acciones delictivas. Gracias al anonimato y a la dificultad para enlazar las transacciones con sus respectivos emisores, Bitcoin puede ser usado para lavar dinero irregular, para comercio y tráfico de sustancias y productos prohibidos (drogas, armas, etc.), para financiación de organizaciones opacas, etc. El ejemplo con mayor repercusión es el de Silk Road, el mercado on-line que operaba a través de la red Tor [torproject] (red en la que la navegación es anónima) en donde se podían adquirir productos y servicios pagando a través de Bitcoin. La mayor parte de las ventas del mercado se correspondían a productos ilegales (drogas, armas, etc.) e incluso servicios de sicarios y asesinos. El 2 de octubre de 2013, el sitio web fue clausurado por el FBI y el operador principal arrestado y puesto delante de la justicia norteamericana. Como consecuencia del cierre, la cotización de Bitcoin bajó cerca de un 30% en una horas (Figura 3.5.2), lo que demuestra la volatilidad del mercado ante cualquier noticia.

Figura 3.5.2. Impacto en el valor de Bitcoin/usd después del cierre de Silk Road (Fuente: wikipedia y bitcoincharts.com).
Para ampliar la imagen, pinche con el ratón en ella.

El hecho que la cadena de bloques sea pública, significa que cualquiera puede determinar a qué dirección se han transferido un conjunto de monedas, aunque no sea fácil determinar la identidad del delincuente. Con el objetivo de dificultar el seguimiento y lavar el dinero conseguido de forma irregular, existen servicios llamados mixers [bitcoinWiki] que también operan desde la red Tor. Estos servicios se encargan de entrecruzar flujos de bitcoins de forma aleatoria para conseguir, al final del proceso, transferir los bitcoins a una dirección o conjunto de direcciones limpias imposibles de enlazar con ninguna de las direcciones iniciales donde se transfirieron las monedas robadas. Para evitar en todo lo posible el seguimiento de las monedas, durante el proceso se divide la cantidad recibida en otras cantidades más pequeñas y no exactas, de forma que es realmente difícil determinar de donde proceden las mismas. Los mixers se reservan un porcentaje del total lavado como comisión (varía entre el 1% y el 3%). En algunos servicios, este porcentaje también varía de forma aleatoria, lo que también contribuye a aumentar la dificultad de seguir el flujo de monedas ya que las cantidades dejan de ser exactas. De esta forma se hace muy difícil determinar hasta dónde han llegado las monedas robadas.

Eventos de hacking y robo de fondos

A lo largo de la aún corta vida de Bitcoin han acontecido una serie de eventos de hacking que han conllevado a grandes robos de fondos de bitcoins almacenados on-line. A continuación exponemos un pequeño resumen de algunos de los eventos más notables:

  • BitFloor exchange. En abril de 2013, un exchange llamado BitFloor cerró sus puertas (posteriormente volvió a abrir con la promesa de devolver el dinero a los afectados) después de sufrir un robo de 24.000 bitcoins (unos 250.000 dólares en ese momento) [theverge1]. El robo se llevó a cabo gracias a que el atacante consiguió acceso a una copia de seguridad no cifrada que contenía un conjunto de claves del monedero del exchange.
  • Inputs.io. Otro servicio de wallet on-line, Inputs.io, fue objeto de un robo de 4.100 bitcoins a finales de octubre de 2013. Según los operadores del servicio, el atacante consiguió acceder al servidor donde operaba y resetear el password de acceso al mismo a través de ingeniería social después de comprometer una cadena de cuentas de correo electrónico que eventualmente le dio acceso al servidor. [theverge2]
  • BIPS wallet. El servicio de monedero online y procesador de pagos BIPS fue víctima de un robo en noviembre de 2013 en el que se extrajeron 1.295 bitcoins, en su mayoría pertenecientes a los fondos propios de la compañía, pero también una parte correspondiente a monederos de clientes [theverge3].
  • Sheep Marketplace. Éste era un portal de venta de drogas y otros productos ilegales que en noviembre de 2013 sufrió un ataque en el que se robaron como mínimo 96.000 bitcoins, que a los precios de finales de 2013 se traducían en aproximadamente 100 millones de dólares. No obstante, en un momento determinado se observó cómo en una cartera enlazada al ataque había depositados hasta 220.000 bitcoins (más de 220 millones de dólares) [BI1], lo que lleva a la sospecha de que el robo pudiera ser aún mayor. Se sospecha incluso que pudieron ser algunos de los operadores del mercado negro los que perpretaron el robo [theverge4].
  • Mt.Gox. El exchange más popular y con mayor peso dentro de la comunidad Bitcoin sufrió el que es hasta ahora el mayor robo de bitcoins e incluso uno de los mayores robos financieros de la historia [theverge5]. Un total de 744.408 bitcoins desaparieron de "la caja fuerte" de Mt.Gox, aproximadamente un 6% de todos los bitcoins emitidos hasta la fecha, cantidad valorada en aproximadamente 400 millones de dólares. El robo se cree que se fraguó durante años sin ser detectado por el servicio, mediante una vulnerabilidad en la forma de manejar los monederos y a la maleabilidad de las transacciones en Bitcoin [coindesk, bitcoinWiki]. Mt.Gox se declaró en quiebra y no está nada claro quién o quiénes realizaron el robo.
  • Flexcoin. Otro de los últimos robos lo sufrió el servicio de banco y monedero on-line Flexcoin, en el que se robaron 896 bitcoins. Los atacantes consiguieron acceder al monedero del servicio aunque no consiguieron acceder a los fondos almacenados offline, por lo que aunque cerraron el servicio, los propietarios prometieron devolver los fondos a sus clientes lo antes posible mediante estos fondos off-line.[theverge6]

Desafortunadamente, dada la forma como funciona Bitcoin, es prácticamente imposible que los usuarios y clientes que sufren este tipo de robos puedan recuperar sus fondos, ya que la pista del dinero robado se desvanece rápidamente mediante múltiples transferencias y a través de los servicios de mixing. Este tipo de ataques sólo se pueden evitar si los clientes guardan de forma offline (desconectada de Internet) sus bitcoins (sus claves privadas), lo que se conoce como cold storage o almacenamiento en frío.

Burbuja especulativa

En relación con la volatilidad y el uso de Bitcoin como una herramienta de especulación, diversos estudios han demostrado que en realidad el uso de Bitcoin no ha aumentado a pesar de la gran demanda existente. En concreto, en un estudio reciente [ucsdPDF], se afirma que aproximadamente un 64% de los bitcoins están almacenados en cuentas y monederos que no han sido nunca usados. Por lo tanto, el objetivo es la especulación y no el de usar bitcoins para realizar transacciones.

Figura 3.5.3. Valor (en dólares) de todas las transacciones diarias en bitcoins dividido por el valor de un bitcoin (dólares) (Fuente: ordinarygentlemen).
Para ampliar la imagen, pinche con el ratón en ella.

En la Figura 3.5.3 se muestra la relación del valor en dólares de todas las transacciones realizadas diariamente con bitcoins dividido por el valor en dólares de un bitcoin en el mismo día. Como se puede comprobar, no se puede apreciar ningún patrón en la figura, pero si los usuarios dieran uso a sus bitcoins, esta relación debería aumentar.

Deflación por diseño

Bitcoin está diseñada como una moneda deflacionaria dado que tiene un límite de monedas en circulación ya que nunca habrá más de 21 millones de monedas en circulación. Por lo tanto, y entre otros motivos que no contemplaremos en esta lección, la futura escasez de moneda da origen al fenómeno económico de la deflación. La deflación es la bajada generalizada y prolongada de los precios de bienes y servicios. Generalmente, la deflación ocurre ante una caída de la demanda, ya que la gente guarda sus ahorros esperando que en un futuro el valor de los productos y de los servicios sea aún menor, lo que lleva a una bajada del consumo y a un efecto dominó en la economía.

Figura 3.5.4. Precio de los productos y servicos expresados en términos de bitcoins (Fuente: theatlantic).
Para ampliar la imagen, pinche con el ratón en ella.

En la Figura 3.5.4 observamos que si los precios de los bienes y servicios estuvieran referenciados al valor de bitcoin (en vez de dólares o euros), el valor de los mismos hubiera caído hasta en un 98.5% durante el año 2013. Con el objetivo de comparar cómo de negativo es este dato, basta razonar que durante la Gran Depresión de los Estados Unidos (entre los años 1929 y 1939 aproximadamente) los precios bajaron a un ritmo de un 10% anual.

Existen diversas formas para evitar la deflación, entre las cuales se encuentra la de emitir nuevo dinero y así inyectar liquidez al sistema económico. Esta solución es perfectamente aplicable para las divisas tradicionales a través de los bancos centrales encargados de controlar el precio del dinero y por lo tanto la inflación y la deflación. Pero en Bitcoin esta solución no es posible, ya que el número máximo de monedas está limitado a 21 millones y la tasa de generación de monedas es fija a lo largo del tiempo.

Obtener más del 50% de la capacidad de cálculo de la red

Al no existir ninguna entidad centralizada que controle el proceso de generación de bitcoins ni la verificación de los bloques y las transacciones, la seguridad de Bitcoin se basa principalmente en la dificultad que entraña regenerar un bloque perteneciente a la cadena de bloques. Como la generación de bloques es compartida por todos los nodos de la red, si todos ellos son honestos, la generación siempre será constante, válida y aleatoriamente distribuida en la red. No obstante, si existe un nodo o un conjunto organizado de nodos mineros que obtengan más del 50% de la potencia de cálculo total de la red (tasa de hashing) pueden hacerse con el control de la red durante un tiempo determinado. Para este lapso de tiempo, el atacante podría excluir transacciones, modificar su orden o su contenido. Aunque con un porcentaje menor de la potencia controlada este ataque también es posible, el éxito del mismo se reduce, mientras que a medida que el porcentaje de la potencia controlada es mayor, también mayor será la probabilidad de éxito del ataque. Este hecho tendría consecuencias nefastas para la red Bitcoin. Entre otras acciones, el atacante podría:

  • Evitar que algunas o todas las transacciones obtengan confirmación de la red.
  • Impedir que algunas direcciones reciban bitcoins.
  • Revertir y reutilizar transacciones durante el tiempo de control de la red.
  • Evitar que otros nodos mineros ganen nuevos bloques, de forma que todas las recompensas vayan a parar a los atacantes.

En cambio, un atacante con más del 50% de la potencia de cálculo no podría:

  • Revertir transacciones de otros usuarios.
  • Cambiar el número de bitcoins de recompensa.
  • Crear bitcoins de la nada.
  • Enviar bitcoins que nunca han pertenecido al atacante.

Aunque es muy difícil que un ataque de este tipo pueda tener éxito, si lo tuviera sería muy difícil o imposible revertir los cambios hechos por el atacante, ya que estos se harían permanentes en la cadena de bloques. También cabe notar que mientras más antiguos son los bloques y las transacciones contenidas en ellos, más difícil es revertirlas. Por tanto, Bitcoin supone que siguiendo las normas de la red probablemente la ganancia sea mayor que el coste de invertir para conseguir la potencia necesaria para ejecutar este ataque.

Figura 3.5.5. Repartición aproximada de la potencia de cálculo durante unos días del mes de enero de 2014. (Fuente: blockchain.info).
Para ampliar la imagen, pinche con el ratón en ella.

Recientemente, un pool de minería llamado GHash.IO llegó a alcanzar aproximadamente un 45% del total de la potencia de cálculo de la red. Cuando los usuarios se percataron de este hecho, muchos de ellos dejaron de usar ese pool para ingresar en otros menos populares y con menor potencia de cálculo agregada, como medida preventiva para evitar un posible control de la red por parte de GHash.IO o de los usuarios pertecientes al mismo.


APARTADO 3.6. MONEDAS DIGITALES ALTERNATIVAS

Volver al inicio

Tras el auge de Bitcoin, surgieron numerosas criptodivisas alternativas basadas en los conceptos del protocolo original de Bitcoin. La mayoría de ellas se basan en cambiar algunos de los parámetros de diseño de Bitcoin (parámetros por defecto) y utilizar el código base del cliente Bitcoin para generar y validar transacciones. En la Figura 3.6.1. se exponen alguna de ellas, aunque hay decenas de diferentes.

Figura 3.6.1. Algunas criptomonedas alternativas a Bitcoin.

Los parámetros que suelen ser objeto de cambios entre las diferentes criptodivisas alternativas son los siguientes:

  • El algoritmo de hashing SHA-256 de Bitcoin se sustituye por el algoritmo scrypt. La diferencia fundamental entre los dos algoritmos es que la eficiencia de cálculo de SHA-256 es proporcional a la capacidad del procesador (CPU-intensive) mientras que scrypt no depende tanto de la capacidad de cálculo sino en mayor medida de la memoria disponible (RAM-intensive). Al ser la memoria mucho más cara que los procesadores, hace que la tasa de aumento en la potencia de cálculo de las diferentes redes sea más constante y plana.
  • El número de hashes iterativos que realizan hasta llegar al resultado final. Bitcoin siempre aplica dos veces la función de hash para aumentar la seguridad y disminur la probabilidad de colisión. En otras monedas alternativas, este parámetro puede ser diferente.
  • El tiempo de confirmación de una transacción. El tiempo de confirmación para una transacción está relacionado con el tiempo entre dos bloques consecutivos. Existen criptomonedas que definen un tiempo entre bloques de 10 minutos (Freicoin o Namecoin), 2 minutos (Terracoin), 1 minuto (por ejemplo Dogecoin) o incluso 12 segundos (por ejemplo Fastcoin).
  • El número máximo de monedas en circulación. Si para Bitcoin el número máximo de monedas en circulación es de 21 millones, para otras monedas alternativas este valor puede ser mayor, menor o incluso no tener límite práctico.
  • El número de monedas como recompensa a la generación de un bloque. Al solucionar un bloque, Bitcoin actualmente entrega 25 bitcoins, mientras que otras monedas cambian este parámetro para recompensar con más o menos monedas.
  • Reducción de la recompensa a lo largo del tiempo. En Bitcoin, cada 210.000 bloques la recompensa se divide por dos, mientras que en monedas alternativas ambos parámetros varían sustancialmente.
  • Número de bloques antes de cambiar el target. El ajuste de la dificultad mediante el cambio del target en Bitcoin se hace cada 2.016 bloques, mientras que en otras monedas este parámetro se ajusta para que sea más rápido, más lento o inexistente.


APARTADO 3.7. CONCLUSIONES

Volver al inicio

Bitcoin supone la primera experiencia de moneda electrónica basada en criptografía que ha traspasado los límites de la investigación para acercarse al mundo real. Los fundamentos del sistema están diseñados para ofrecer seguridad y privacidad a los actores participantes sin que eso conlleve un aumento de complicación respecto de otros medios de pago tradicionales. No obstante, la problemática de Bitcoin no está en el protocolo en sí mismo, sino en los servicios y proveedores que han crecido a su alrededor, así como en la conciencia de los usuarios que hacen uso de ellos. De nada sirve que el protocolo ofrezca un elevado nivel de seguridad mediante firmas digitales basadas en criptografía de curva elíptica, si después los usuarios descuidan las claves privadas en servicios de terceros o no las guardan de forma segura (hemos visto en la lección diversos robos de monedas). Como en todo esquema seguro, el eslabón débil son los usuarios del mismo, y en este caso la noción usuario va desde las personas que tienen guardados bitcoins hasta los exchanges y otros servicios que son el punto de fricción entre el mundo Bitcoin y el mundo real. Por lo tanto, queremos que esta lección no sólo sirva como introducción a Bitcoin sino también como concienciación acerca de su uso, almacenaje y protección contra robos y ataques.


APARTADO 3.8. EJERCICIOS

Volver al inicio

Ejercicios
  1. ¿Qué crees que es mejor, un tiempo de confirmación de transacción corto o largo? Relaciona con el número de bloques para confirmar una transacción y la dificultad para rehacer la cadena de bloques.
  2. ¿Qué diferencia hay entre realizar minería de bitcoins con dispositivos ASIC, GPUs o CPUs?
  3. Investiga sobre un ataque a la red Bitcoin alternativo al de conseguir más del 50% de la potencia de cálculo (referencias: slashdot.org reddit.com)
  4. Investiga sobre la maleabilidad de las transacciones y cómo esta característica permitió el robo al exchange Mt.Gox.
  5. A medida que pasan los años, la recompensa por bloque solucionado es menor, por lo tanto, ¿crees que la minería no será rentable? ¿Cómo se recompensará a los mineros si la generación de bloques no produce recompensa directa?
  6. Si el número de bitcoins en circulación está limitado a 21 millones y la generación de cada bloque es el responsable de crear nuevas monedas, ¿sólo puede haber un número finito de bloques? ¿Qué pasará con las transacciones y sus confirmaciones? ¿Está limitado el número de bloques de la cadena de bloques a un número determinado como la masa monetaria de bitcoins?
  7. Estudia diferentes formas para securizar un monedero que contiene bitcoins: almacenamiento en frío, cifrado, multi-firma, protección mediante contraseñas, almacenamiento seguro, etc.

APARTADO 3.9. REFERENCIAS BIBLIOGRÁFICAS

Volver al inicio

[bitcoinPaper] Satoshi Nakamoto. Bitcoin: A Peer-to-Peer Electronic Cash System, 2008. (enlace al pdf)

[hashcashPaper] Adam Back. Hashcash - A Denial of Service Counter-Measure. Technical report, 2002. (enlace al pdf)


Reconocimientos y créditos

Icon made by Freepik from www.flaticon.com