Internet ha transformado muchas cosas, y una de ellas es nuestra forma de ver el dinero. Ha pasado de ser algo físico a ser un bien intangible, un número en una página. Sabemos que está ahí porque confiamos en la autoridad de los bancos, creemos en su valor porque sabemos que las entidades lo gestionan como si fuese dinero físico y tangible, sin que podamos sacarlo del aire.
Sin embargo, con Bitcoin, la moneda P2P en auge, el asunto es diferente. No hay entidades en las que confiemos. No hay un banco que nos asegure "este dinero es _real_". En su lugar, la validez de Bitcoin reside en su tecnología, en todas las técnicas que aseguran que funciona como si fuese una moneda real.
Vamos a explicaros en qué consiste esa tecnología. Es un tema considerablemente complejo, así que primero dibujaremos un esquema simplificado de cómo funciona y después iremos entrando en los detalles, que en realidad son lo más importante y lo que asegura la validez de Bitcoin.
Conceptos previos
Ya he dicho que la tecnología de Bitcoin es muy compleja, y vamos a utilizar algunos términos técnicos como _hash_ o _firma digital_. Antes de empezar, vamos a ver en qué consisten para que podáis entender sin problemas de lo que vamos a hablar. Si ya conocéis estos términos, podéis pasar a la siguiente sección.
- Hash. Un hash de un objeto (una cadena de texto, un número o cualquier cosa que se pueda representar en bits) es el equivalente de nuestra huella dactilar. Es una identificación única y constante. Dos objetos distintos tienen (teóricamente) _hashes_ distintos. Además, tiene la peculiaridad de que es una función "de una vía". Es decir, si tienes el objeto es muy fácil obtener su _hash_. Sin embargo, si tienes el _hash_ es extremadamente difícil obtener el objeto original del que proviene. En el caso de Bitcoin, el algoritmo es SHA256.
- Firma digital. Se trata de un proceso que permite a cualquiera verificar la originalidad de un objeto. De forma similar a cuando pones tu firma en un documento, la firma digital certifica que eres tú quien ha creado, verificado, o aceptado ese objeto. Para ello se usan dos claves, una pública y una privada. La clave privada se "combina" con el mensaje a firmar y se obtiene la firma. Después, para verificar la firma se "combina" la clave pública del firmante con la firma, que debería dar como resultado el mensaje original. Bitcoin utiliza ECDSA, firma digital de curva elíptica, también un algoritmo muy seguro.
Transacciones y bloques, los pilares de Bitcoin

Bitcoin se basa en dos pilares fundamentales: uno es la transacción, y otro el bloque. La transacción es, como ya habréis imaginado, el envío de bitcoins de un usuario a otro.
Una transacción tiene entradas y salidas: de donde viene el dinero y a dónde va. Su ID (identificación) es un _hash_ combinado del ID de las entradas y del ID del destinatario (su clave pública). Así se fija de forma inequívoca quién es el destinatario y de dónde han salido las monedas. Después, ese ID se firma con la clave privada del emisor de la transferencia, quedando certificado que el dinero lo ha transferido su propietario.
Las transferencias se agrupan en bloques. Cada bloque tiene, además, un sello de tiempo, un número de verificación (veremos más tarde en qué consiste) y el ID del bloque anterior. De esta forma, se genera una cadena de bloques, que contiene toda la historia de transferencias de bitcoins.
Los bloques los generan los _miners_, y antes de crearlos verifican la validez de todas las transferencias (es decir, que un usuario no haya gastado dinero que ya había transferido). Una transferencia que se ha quedado fuera de la cadena de bloques no es válida, y del mismo modo una transferencia dentro de la cadena se considera válida sin más operaciones.

Cadena de bloques de Bitcoin
Cuando un nodo genera un bloque, lo emite al resto de nodos. Estos verifican que el bloque esté construido correctamente y que sus transferencias sean válidas. Si no hay ningún problema, empezarán a trabajar con ese nuevo bloque como el final de la cadena.
Es posible que en un momento dado haya dos ramas de la cadena: un nodo ha emitido un bloque y en el mismo momento otro nodo ha emitido otro bloque distinto. En este caso, se conservan las dos ramas hasta que una de ellas sea más larga: esta será la que se mantenga, y la otra se desechará.
La creación de la cadena de bloques: proof-of-work
El enfoque de arriba no tendría ningún problema si todos los nodos que están creando bloques fuesen honestos. Pero todos sabemos que eso es imposible. Tal y como hemos explicado la creación de bloques, un nodo malicioso podría crear un bloque con una transferencia inválida (con dinero que se ha gastado dos veces) y después generar más bloques de forma masiva.
Al generar bloques válidos rápidamente, la transferencia inválida queda enterrada en la cadena. Cuando el resto de los nodos reciban esta cadena, que será la más larga de todo el entorno, verificarán como mucho los últimos bloques, darán la rama como válida y esa transacción inválida pasará desapercibida.
Por lo tanto, hay que implementar un método que evite que se puedan generar bloques de forma indiscriminada, algo que obligue a los nodos a invertir tiempo en generar el bloque. Esto se conoce como _proof-of-work_.
El trabajo consiste en encontrar el _nonce_, el número de verificación que comentábamos antes, de tal forma que el _hash_ del bloque sea menor que un determinado valor (valor _target_ o objetivo). La búsqueda de ese número es prueba y error: empezamos en cero y calculamos el _hash_. Si es menor que el objetivo, perfecto, lo hemos encontrado. Si no, aumentamos en uno el _nonce_ y volvemos a verificar. Para que os hagáis una idea del trabajo necesario, con el _target_ actual la probabilidad de encontrar un _nonce_ válido es de uno entre 2 por 10 elevado a 16 (un dos seguido de dieciséis ceros).
El valor objetivo se elige de tal forma que se tarde unos 10 minutos en generar un bloque. Para que este tiempo se mantenga ajustado se recalcula cada 2016 bloques: los nodos cogen el tiempo que se ha tardado en generar esos bloques y lo comparan con el tiempo teórico que tendrían que haber tardado (aproximadamente 2 semanas) y se reajusta el objetivo. Así, se consigue que el tiempo de generación de un bloque se mantenga estable a lo largo del tiempo independientemente de la capacidad de proceso de los nodos.
Esos 10 minutos que se tarda en verificar cada bloque son la barrera que impide a los atacantes tomar el control de Bitcoin. De esta forma, no pueden generar bloques rápidamente para ocultar transacciones y gastar dinero dos veces.
¿Cómo almacenamos toda la historia de transacciones?

Siguiente problema con el que nos encontramos en Bitcoin: el espacio de almacenamiento. ¿Cómo podemos guardar toda la cadena de bloques (que es considerablemente larga) sin desperdiciar espacio en disco?
Recordemos que, para verificar una transacción, tenemos que comprobar que las entradas de monedas ya han sido verificadas. Normalmente, los clientes verifican varias transacciones atrás y consideran que el resto son válidas.
Es decir, que necesitamos una forma de guardar las transacciones y comprobar que están en los bloques. Como decíamos antes, cada bloque contiene el hash combinado de las transferencias: verificarlo entonces es tan simple como coger el hash de la transferencia a verificar, combinarla con el resto de hashes de las transferencias del bloque y comprobar que tenemos la misma salida.
Pero este enfoque tiene un problema: mantenemos muchas transferencias que no nos sirven para nada. Por ejemplo, supongamos que, en un bloque, se ha gastado y verificado el dinero de todas las transferencias menos una. No vamos a necesitar el resto para verificar nada porque no vamos a llegar a tanta profundidad en la cadena. Sin embargo, tenemos que mantenerlas para que al verificar esa transferencia que no ha sido gastada, el hash siga siendo el mismo.
La solución es usar un árbol de _hashes_ o un árbol Merkle. Los hashes de las transferencias se van combinando dos a dos en forma de árbol binario (cada nodo tiene dos hijos), como veis en la figura. Así, cuando no necesitamos dos hermanos (dos nodos que comparten el mismo padre), podemos borrarlos y quedarnos con el nodo padre sin perder la posibilidad de verificar el resto de nodos del árbol. Esto reduce considerablemente el espacio necesario para almacenar toda la historia, y de hecho nos permite quedarnos sólo con las transferencias más recientes y olvidarnos del resto.
Mining: la generación de monedas

Para hacer el mining de bitcoins se suelen usar ordenadores específicos para ese propósito. En este caso, con varias GPUs.
Bitcoin es una moneda sin una entidad central que controle la inflación ni la introducción de más dinero en el mercado. Por lo tanto, de nuevo hay que confiar en la técnica para controlar este aspecto: es el _mining_ de monedas.
Cuando un nodo crea un bloque, además de todas las transferencias que haya verificado incluye otra más: una transferencia sin entradas. Cada vez que se verifica un bloque, se introducen nuevas monedas en el sistema. La tasa a la que se liberan nuevas bitcoins está controlada de tal forma que cada 4 años se reduce en el 50%. Así, está calculado que el número de bitcoins en circulación nunca pasará de los 21 millones.
Esto es un incentivo para los nodos de la red: cuantos más bloques verifiquen, más bitcoins ganan. Además, este enfoque hace en muchos casos más rentable ser un nodo honesto que malicioso (un nodo que permite el doble gasto de bitcoins). Además, permite controlar el aspecto de "escasez" que planteaba ayer Alejandro como requisito para considerar a Bitcoin como una moneda.
En resumen, Bitcoin cuenta con una tecnología considerablemente compleja detrás, y que garantiza que se pueda usar como moneda: sin que cualquiera pueda crear dinero por las buenas, asegurando que sólo puedes gastar tu dinero una vez y no reutilizarlo, y controlando la introducción de nuevas monedas en el mercado. Además, al basarse en tecnologías seguras (SHA256, ECDSA) parece difícil (tampoco me atrevería a asegurar nada en ningún sentido) que sea vulnerable.
Ver 54 comentarios
54 comentarios
kalfergomez
Espero que alguien interesado en Bitcoin no empiece a conocerlo por este artículo, porque es duro, duro... Mejor empezar por el publicado ayer.
keramik
Interesante... pero es mucha informacion concentrada y si no se está concentrado es imposible de entender.
lordfairfax.fairfax
>>Sabemos que está ahí porque confiamos en la autoridad de los bancos, creemos en su valor porque sabemos que las entidades lo gestionan como si fuese dinero físico y tangible, sin que podamos sacarlo del aire.
Ah, pero el dinero "real" es real? Pues en Chipre desaparece él solito de tu cuenta... :p
Vaier
¿Que los bancos usan el dinero de fomar confiable y como si fuera un bien fisico?.... JA * Infinito.
alons0
Lo que no entiendo en todo el proceso es por qué se utiliza cifrado SHA en lugar de AES. Tengo entendido que AES es mucho mas seguro que SHA, llegando incluso a ser estandar de cifrado en muchas areas del gobierno de EE.UU. Espero que alguien pueda resolver mi duda en este sentido. Salu2!
xato
Vamos a ver, esto es totalmente absurdo.
Uno de los principales problemas que tiene la economía hoy en día, es que el dinero líquido (dinero legal: monedas y billetes físicos) sólo representan el 10% del dinero total circulante. El resto de dinero, no es dinero legal, es decir, estamos hablando de medios de pago conocidos como dinero bancario. El dinero bancario lo crean los bancos de la nada cada vez que alguien pide un préstamo o un crédito, al contrario de lo que nos cuentan: que los préstamos provienen de los depósitos de la gente. Bien, el problema por tanto, es que el dinero total circulante no representa la economía real. En el mundo hay cada vez más dinero en relación a los bienes que existen, por tanto, es una forma paulatina de devaluar más el dinero o encarecer más la vida. Lo que hay que hacer es eliminar el dinero bancario, volver a la convertibilidad de la moneda legal en recursos preciados como el oro o la plata, y dejarnos de dineros virtuales P2P e historias varias, que muy lejos de mejorar nuestra economía, la empeoran.
lordpagano
Actualmente cuál es la tasa de cambio de Bitcoin? Ví un enlace en la deep web donde vendían bitcoins a 8.30 Libras o algo por el estilo...
isaax
Bufff, a partir del quinto párrafo de lo de las transacciones me he perdido
hydria
Bueno lo de las GPU ya esta pasado de moda, ahora se llevan las FPGAS, que dan muchisimo mejor resultado, cada vez se está especializando mas, y cada vez se hace mas inaccesible minar para los que no seamos empresa.
vampire
Ya lo usaba para comprar en la Deep web
Ricardo
No me imaginaba que bitcoin fue tan complejo
Obviamente el éxito de la moneda es ocultar ese proceso sin el usuario no se entere de nada de bloques.
Pedro Gutierrez
Para completar un poco los conceptos previos en Genbeta Dev hablamos sobre los hash: www. genbetadev .com/seguridad-informatica/que-son-y-para-que-sirven-los-hash-funciones-de-resumen-y-firmas-digitales
Y sobre las firmas de archivos con GPG: www. genbetadev .com/seguridad-informatica/manual-de-gpg-cifra-y-envia-datos-de-forma-segura
cazalinks
¿Seria posible que documentarais esta explicación con ejemplos paso a paso de que es lo que ocurre cuando se hace una transferencia? y si no es mucho pedir también algún ejemplo practico de como se realizan las verificaciones de las transacciones.
La teoría sola es bastante dura y no estoy seguro de haberlo entendido del todo, explicar un caso concreto a modo de ejemplo creo que podría ayudarme a mi y a otros, gracias.
Jachson
Hablan que los Gobiernos mediante los banco manipulan la economia pero quien manipula la Bircoin??? tienen que tener unos dueños y esos dueños igual a la larga se prestarian a corrupcion??? a esta moneda la veo como un MONOPOLIO NADA SEGURA...
roxananicula
Ahora el P-LIB admite también donaciones en bitcoins. Al hacerlo, expresa su apoyo a Bitcoin y a cualquier otra alternativa al dinero estatal, a las leyes de curso forzoso y al entramado de bancos centrales. Los liberales apostamos por acabar con la manipulación política del valor del dinero. Más info en la web del P-LIB.
comunista
El Bitcoin puede acabar con el Capitalismo Financiero, es decir la Banca. Eso es lo que mas les duele. Una moneda Distribuida y Descentralizada al servicio de la población y no a los intereses de los Estados, Gobiernos y Banqueros.
inventionary
Excelente post Guillermo.
callahan81
¿Y si se rompen los algoritmos criptográficos en los que se basa el Bitcoin?
antcobo
Madre mía, siento muchísima curiosidad por el tema de los bitcoins, no me considero demasiado torpe, pero el artículo me ha superado, madre mía, que conceptos más retorcidos, demasiado para mi
tor125
Buuff... Bueno, para hacerse un Ordenador dedicado ¿que es lo que habría que priorizar? Gran cálculo en TFlops, entonces ¿más vale 3x7970 en una asrock extreme6 FM2 y un 5800k que un 3570k y 2x7970? La ram, ¿que es más improtante velocidad o capacidad?, lo mismo con el disco duro o SSD, muchas gracias y perdonar por tantas preguntas.
jonytk
Vaya porqueria de articulo, copy paste de la wiki de Bitcoin, y encima no dice que el mayor peligro es que basta que alguien hackee el portal del exchange, consiga tu user y password o que con un virus acceda a tu ordenador y copie tu clave privada para poderse llevar todos los coins sin dejar ni rastro y de manera totalmente anonima.
pablow
Los invito a un foro que creé hace ya dos años, totalmente en español, con información sobre el Bitcoin: www.bitcoinz.com.ar