Capítulo 1. Orígenes de la tecnología Blockchain

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

El término cadena de bloques puede sonar misterioso o incluso aterrador para los no iniciados. Su significado literal -unacadena de bloques de información- esquizá la forma más sencilla de explicar blockchain. Pero, ¿para qué sirve? ¿Por qué alguien necesita algo llamado cadena de bloques?

Para encontrar la respuesta tenemos que remontarnos a una época anterior, más cercana al inicio de la web. Internet trata sobre el almacenamiento y la distribución de información a un gran número de personas. Blockchain tiene un objetivo similar, y se basa en experimentos anteriores que buscaban formas de mejorar esa distribución.

Sistemas electrónicos y confianza

Antes de que la cadena de bloques, la criptomoneda o los sistemas que las utilizan pudieran ser una realidad, internet tenía que existir de forma fiable y distribuida, y tenía que ser utilizada por mucha gente. En sus inicios, en la década de 1960, Internet era una red sencilla y relativamente pequeña, y se utilizaba principalmente como herramienta para que los investigadores universitarios y el gobierno estadounidense compartieran información digitalmente.

Con el tiempo, los primeros pioneros de Internet hicieron el sistema más utilizable. Los mayores impactos vinieron del desarrollo de TCP/IP, que estableció un estándar para la comunicación, HTTP, que permitió la navegación web, y SMTP, que entregó el correo electrónico. Estos protocolos hicieron que Internet fuera accesible no sólo a los investigadores, sino a todo el mundo, y en un número creciente de dispositivos, incluidos ordenadores y, más tarde, tabletas y teléfonos inteligentes.

La evolución de Internet ha cambiado la vida para siempre: ahora se dispone de cantidades increíblemente grandes de información y servicios en la palma de la mano de cualquiera, gran parte de ellos gratuitos. Sin embargo, el uso de la mayoría de los productos o servicios en línea requiere que una persona o entidad, conocida como tercero, actúe como guardián de confianza. Estos sistemas requieren dos tipos de confianza:

Fideicomiso intermediario
Se confía en un tercero para que tome decisiones racionales y justas.
Fideicomiso de emisión
Se confía en un tercero para garantizar la seguridad de cualquier valor.

Las transacciones financieras son un área importante en la que se confía, ya que la mayor parte del dinero se ha convertido en digital. Por diversas razones, el uso de papel moneda fiduciario, o efectivo físico emitido por el gobierno, está en declive: la gente utiliza hoy más que nunca herramientas financieras electrónicas como las tarjetas de débito y crédito. En algunos países, como Suecia, los sistemas de pago son casi totalmente electrónicos, y la mayoría de los clientes utilizan teléfonos inteligentes y tarjetas en el punto de venta. Pero mientras que para los consumidores el cambio de las interfaces de pago de físicas a digitales es una tendencia relativamente reciente, los sistemas que impulsan esta contabilidad son electrónicos desde hace mucho tiempo. Aunque el dinero en efectivo sigue estando al alcance de la mayoría, el dinero ha pasado en gran medida del papel y las monedas a ser sólo números en un sistema informático, sin que mucha gente se dé cuenta.

Cuando el valor se traslada de los objetos físicos a una base de datos, debe existir un elemento de confianza entre las múltiples partes implicadas. Se han creado enormes empresas de pago en todo el mundo basadas en la idea de que las personas que almacenan valor digitalmente pueden confiar en estas marcas. Sin embargo, la confianza no siempre ha sido un factor fiable en las finanzas. De hecho, la crisis financiera de 2008 hizo reflexionar a la gente, y muchos empezaron a pensar que tal vez la confianza y la fe ciegas en las instituciones financieras no eran lo que se creía.

Consejo

Blockchain es un esfuerzo por restablecer la confianza perdida. Utiliza la tecnología -específicamente la criptografía- para automatizar y reforzar la confianza en un tercero.

Bitcoin fue el primer sistema operativo que utilizó una cadena de bloques. Pero antes de que existiera Bitcoin, varios predecesores intentaron -y fracasaron- crear conceptos similares. Una de las principales razones por las que fracasaron fue la incapacidad de crear un sistema verdaderamente distribuido en Internet.

Distribuido Versus Centralizado Versus Descentralizado

Internet es hoy una mezcla de aplicaciones centralizadas y distribuidas, aunque se diseñó como una tecnología distribuida. En lugar de construir una estructura centralizada con un único punto de fallo, los primeros arquitectos de internet querían crear un sistema más resistente. La idea de una Internet distribuida surgió del objetivo (inspirado en el ejército) de garantizar que si una parte del sistema era atacada, seguiría siendo capaz de funcionar si se distribuía adecuadamente.

En una rueda de bicicleta (ver Figura 1-1), muchos radios se conectan a un solo buje (el eje). Este diseño facilita un enfoque distribuido: si se rompen algunos radios, la rueda puede seguir funcionando. Distribuido significa que ningún punto de fallo puede hacer caer todo un sistema, como la red de ordenadores que impulsó las primeras implementaciones de Internet.

Figura 1-1. Una rueda de bicicleta tiene un diseño distribuido

La Internet primitiva, tal como se diseñó hace décadas, estaba distribuida para proteger la red de cualquier tipo de perturbación, y este sistema ha demostrado su eficacia hasta nuestros días. En tiempos más recientes, empresas centralizadas como Google, Facebook, Apple y Amazon han llegado a dominar ampliamente Internet. Algunos esperan que la naturaleza distribuida de la tecnología blockchain pueda ayudar a mitigar el dominio de la red por parte de estas pocas y poderosas empresas, dando más control a los usuarios individuales, un tema que se explorará más adelante en este libro.

En el campo de la informática, un sistema distribuido es aquel en el que el procesamiento no se realiza únicamente en un ordenador. Más bien, el cálculo se comparte entre varios recursos informáticos. Estos sistemas se comunican entre sí utilizando alguna forma de mensajería. La Figura 1-2 ilustra algunos diseños de red diferentes. Un sistema distribuido tiene características de descentralización, en el sentido de que el fallo de una sola entidad (o nodo) no significa el fallo de toda la red. El objetivo común es utilizar la potencia de procesamiento para realizar colectivamente una tarea, distribuyendo la responsabilidad entre muchos ordenadores. Sin embargo, la descentralización cambia el concepto de objetivos comunes y de mensajería. En un sistema totalmente descentralizado, un nodo determinado no colabora necesariamente con todos los demás para lograr su objetivo, y la toma de decisiones se realiza mediante alguna forma de consenso, en lugar de que esta responsabilidad recaiga en manos de una sola entidad.

Figura 1-2. Diseños de red centralizados, descentralizados y distribuidos

Las figuras 1-3 a 1-5 ilustran las diferencias entre sistemas centralizados, distribuidos y descentralizados en forma de bases de datos que almacenan información.

Figura 1-3. En una base de datos centralizada, como PayPal, todos los nodos se conectan a un único nodo central controlado por una entidad
Figura 1-4. En una base de datos distribuida, como las múltiples bases de datos alojadas en Amazon Web Services (AWS), cada nodo puede mantener una copia replicada de los mismos datos, cada nodo conoce la identidad de otros nodos y todos los nodos están controlados por una entidad
Figura 1-5. En una base de datos descentralizada, como la Blockchain de Bitcoin, cada nodo puede mantener una copia replicada de los mismos datos, cada nodo puede desconocer la identidad de otros nodos, y todos los nodos están controlados por muchas entidades que pueden ser anónimas

Predecesores de Bitcoin

La ubicuidad de Internet ha sido disruptiva y ha cambiado muchas industrias. Por citar sólo algunos ejemplos, en las últimas décadas Wikipedia ha sustituido más o menos a las enciclopedias, Craigslist ha ocupado el lugar de los anuncios clasificados de los periódicos y Google Maps ha dejado obsoletos en su mayor parte los atlas impresos.

Sin embargo, la industria financiera fue capaz de resistir los turbulentos cambios de Internet durante bastante tiempo. Antes de 2009, cuando se lanzó Bitcoin, el control del dinero no había cambiado mucho, aparte del cambio para los usuarios de analógico (moneda física y talonarios de cheques) a digital (banca electrónica). Debido a este cambio, la idea del dinero digital era un concepto familiar, pero el control seguía estando centralizado.

Se probaron muchos conceptos anteriores a Bitcoin antes de fracasar finalmente por diversas razones, pero el objetivo final era siempre el mismo: una mayor soberanía financiera, o un mejor control de los usuarios sobre su dinero. Observar algunos de los primeros fracasos puede ayudar a entender mejor las razones de la creciente popularidad de Bitcoin.

DigiCash

Fundada por David Chaum en 1989, DigiCash era una empresa que facilitaba pagos digitales anónimos en Internet. Chaum es el inventor de la tecnología de firma ciega, que propuso utilizar la criptografía para proteger la privacidad de los pagos en línea. La criptografía utiliza matemáticas basadas en la encriptación para ocultar información sensible y los gobiernos de todo el mundo la utilizan desde hace mucho tiempo como herramienta de comunicación. El Capítulo 2 trata la criptografía y la encriptación con un poco más de detalle.

La plataforma DigiCash tenía su propia moneda, conocida como cyberbucks. Los usuarios que se inscribían en el servicio recibían 100 dólares en cyberbucks, que a menudo se denominaban tokens o monedas. La empresa fue pionera en las tarjetas inteligentes seguras con microchip, similares al sistema utilizado en la mayoría de las tarjetas de crédito actuales. También fue una de las primeras en innovar el concepto de monedero digital para almacenar valor,en este caso, ciberdólares.

Algunos bancos, como el Deutsche Bank, probaron los sistemas DigiCash. Un puñado de comerciantes también se apuntaron para aceptar ciberdólares, entre ellos la editorial de libros Encyclopaedia Britannica. En los años 90, el comercio por Internet era muy nuevo y, debido a la preocupación por el fraude, la mayoría de la gente dudaba incluso en utilizar tarjetas de crédito en la red, y mucho menos en adoptar un sistema de pago totalmente nuevo. Sin embargo, muchos usuarios preocupados por la privacidad empezaron a utilizar ciberdólares e incluso crearon un mercado de listas de correo que funcionó durante algún tiempo. Sin embargo, nunca llegó a cuajar debido a la falta de comerciantes, y DigiCash acabó declarándose en quiebra en 1998.

E-Oro

El oro electrónico, una reserva de valor digital creada en 1996, estaba respaldado por unidades reales de metal precioso. Gestionado por una empresa llamada Gold & Silver Reserve, el oro electrónico permitía transferencias instantáneas entre sus usuarios a través de Internet. Todo en la plataforma se denominaba en unidades de oro u otros metales preciosos. En 2006 había más de 3,5 millones de cuentas de E-gold. En ese momento, la empresa procesaba un volumen diario de 5,9 millones de dólares.

Con denominaciones tan pequeñas como una diezmilésima parte de un gramo de oro, la plataforma fue la primera en introducir el concepto de hacer micropagos, o transferir cantidades minúsculas de valor, en Internet. Innovador para la época, E-gold también ofrecía a los desarrolladores una API que permitía a otros crear servicios adicionales sobre la plataforma. Los comerciantes aceptaban E-gold como forma de pago junto con las tarjetas de crédito en los carros de la compra online. En 1999 se introdujo la compatibilidad con los pagos por móvil.

El oro electrónico fue tecnológicamente ingenioso en el contexto de sus características durante los años 90 y principios de los 2000. Sin embargo, el sistema estuvo plagado de problemas desde el principio, lo que finalmente condujo a su desaparición. Al ser un sistema centralizado, no tenía ningún mecanismo para vincular las cuentas a la identidad de nadie. Como tal, la plataforma se utilizó con fines nefastos, facilitando el blanqueo de dinero, las estafas en línea y otras actividades ilegales. El gobierno estadounidense cerró E-gold en 2008, confiscando sus activos y estableciendo un sistema de rescate para los titulares de las cuentas.

Hashcash

Inventado por Adam Back en 1997, Hashcash introdujo la idea de utilizar la prueba de trabajo para verificar la validez de los fondos digitales, incluido el concepto de dinero que existe únicamente en Internet. Prueba de trabajo significa que los ordenadores tienen que producir algún tipo de resultado verificable y de cálculo intensivo para que el dinero electrónico tenga algún valor(el Capítulo 2 lo explica con más detalle). Hashcash utilizó la criptografía para permitir la prueba de trabajo, y Back propuso utilizar un algoritmo llamado SHA1 para conseguirlo.

En su propuesta inicial de Hashcash, Back hizo referencia a DigiCash y planteó la idea de que añadir una tasa o "franqueo" a los correos electrónicos con moneda digitalizada podría reducir el spam. Al utilizar un hash, o una función que requiere procesamiento informático, Hashcash impondría un coste económico, lo que limitaría el spam en los sistemas de correo electrónico. Para la moneda digital, el concepto de utilizar hashes resolvería lo que se denomina el problema del doble gasto, que permite que una unidad digital se copie como un archivo y, por tanto, se gaste más de una vez. Los ordenadores, después de todo, facilitan la duplicación de archivos; cualquiera puede copiar un archivo de imagen y reproducirlo una y otra vez. El uso del hashing pretende limitar esa posibilidad con el dinero digital imponiendo un coste a través de la prueba de trabajo, o potencia de cálculo.

Aunque Hashcash se probó en sistemas de correo electrónico de Microsoft y del proveedor de software de código abierto Apache, nunca despegó. Conceptualmente, Hashcash era un gran ejemplo de cómo introducir la escasez digital necesaria para el dinero basado en Internet, pero la tecnología en sí no era realmente una buena forma de moneda digital.

B-Money

Propuesta por Wei Dai en 1998, B-Money introdujo el concepto de utilizar la informática para facilitar la creación monetaria al margen de los sistemas gubernamentales. Al igual que Hashcash, B-Money sugirió que el dinero digital podría producirse mediante la computación, o prueba de trabajo. De forma similar a Adam Back, Wei propuso que el coste de crear dinero digital podría calcularse a partir de la potencia informática utilizada para crearlo. Este dinero digital tendría un precio basado en una cesta de activos del mundo real, como el oro y otras materias primas, y su oferta estaría limitada para protegerlo de la inflación o de la pérdida de valor con el tiempo.

B-Money avanzó la idea de transmitir transacciones a una red. Por ejemplo, si una parte quisiera pagar a otra, se enviaría un mensaje a la red diciendo: "La Persona 1 enviará $X a la Persona 2". El sistema sería ejecutable mediante un sistema de contratos digitales. En teoría, estos contratos se utilizarían para resolver cualquier disputa, de forma similar a como las empresas de tarjetas de crédito resuelven problemas como el fraude. Este sistema utilizaría la criptografía en lugar de un sistema centralizado tanto para los pagos como para la ejecución de las cuestiones contractuales, lo que permitiría a los usuarios de la red ser anónimos; no se requeriría ninguna identidad.

El concepto de B-Money reunía una serie de componentes del dinero digital. Aplicó la idea de los contratos para dar orden a un sistema anónimo y distribuido. E introdujo el concepto de utilizar la prueba de trabajo para crear dinero. Sin embargo, B-Money era sobre todo un ejercicio teórico de Wei. Su objetivo era explorar el concepto de dinero no gubernamental que no pudiera estar sujeto a la inflación mediante una oferta monetaria controlada.

Bit Oro

Propuesta en 2005 por el informático Nick Szabo, la idea del oro de bits era trasladar la escasez de los metales preciosos al ámbito digital. Szabo señaló que materiales como el oro, aunque tienen valor, son "infalsificables", o muy difíciles de falsificar, debido a su rareza y a costes fijos como la minería y el transporte. Quería tomar el valor del oro y convertirlo en digital.

La idea de Szabo surgió tras la aparición del E-gold, que utilizaba oro para respaldar el valor digital. Sin embargo, su diseño utilizaba una prueba de trabajo del tipo "función de rompecabezas del cliente". El sistema proponía utilizar una "cadena de desafío" generada en el ordenador de un usuario que luego se sellaba con fecha y hora de forma segura "de manera distribuida". A continuación, se enviaría a un "registro de títulos de propiedad distribuido" para proporcionar digitalmente una prueba de propiedad.

Como la mayoría de las ideas de Szabo, el oro de bits era en gran medida un ejercicio intelectual. Szabo estaba conceptualizando claramente una versión no fiable del oro electrónico con el oro de bits.

El Experimento Bitcoin

En 2008, el mundo ya dependía de Internet como entidad distribuida para un gran número de servicios. Con los mapas electrónicos y las aplicaciones GPS, la gente recurría a Internet para desplazarse del punto A al punto B. El correo electrónico, los mensajes de texto, Skype, WhatsApp y otras aplicaciones de comunicación permitían conexiones casi instantáneas con amigos y familiares cercanos y lejanos.

Además, la gente había empezado a comprar cada vez más bienes y servicios por Internet en lugar de en las tiendas. Las tarjetas de crédito y débito se habían convertido en métodos de pago populares, junto con PayPal y otros servicios. Sin embargo, como se ha mencionado en la sección anterior, muchos seguían deseando una forma distribuida y a prueba de manipulaciones de transferir valor a través de Internet y, sorprendentemente, eso aún no se había ideado.

La crisis financiera de 2008

A principios de 2006, la economía mundial iba viento en popa. Era una época de crecimiento económico, pero ese año empezaron a aparecer grietas en el sistema financiero. El mercado inmobiliario estadounidense experimentó por primera vez un descenso de los valores, ya que las normas de concesión de préstamos se habían vuelto tan laxas que muchos prestatarios eran incapaces de pagar sus obligaciones.

Esto llevó a los bancos a apresurarse porque habían troceado las hipotecas y otros tipos de préstamos poco sólidos en valores privados que se negociaban y mantenían como acciones o bonos entre las instituciones financieras. Cuando muchos de esos activos resultaron carecer de valor, se produjo un colapso del sistema financiero que obligó a los gobiernos de todo el mundo a inyectar efectivo en el sistema para salvar la economía mundial.

En EEUU, las burbujas inmobiliarias modernas se habían podido controlar mediante la subida de los tipos de interés por parte de la Reserva Federal, como ilustra la Figura 1-6. Sin embargo, la crisis de 2008 no pudo controlarse, podría decirse debido a la falta de transparencia del sistema financiero.

Figura 1-6. La Reserva Federal aumenta los tipos de interés para controlar las burbujas inmobiliarias

¿Por qué es relevante este poco de historia financiera para hablar de Bitcoin? Porque aunque muchos de los conceptos y tecnologías subyacentes a Bitcoin ya existían en 2008, nadie había juntado todas las piezas de conceptos anteriores de dinero electrónico para crear un sistema que permitiera la confianza digital y la transparencia.

El Libro Blanco

En el 18 de agosto de 2008 se registró el dominio bitcoin.org. Entonces, escrito por alguien o un grupo que utilizaba el seudónimo de Satoshi Nakamoto, se publicó un libro blanco el 31 de octubre de 2008, que se compartió en numerosas listas de correo de desarrolladores de software. Titulado "Bitcoin: Un sistema de dinero electrónico entre iguales", el documento ofrecía una propuesta detallada para crear un sistema de valores que sólo existiera en Internet. El objetivo era crear una moneda digital que pudiera funcionar sin ninguna conexión con un banco o gobierno central, y construir un sistema financiero más transparente que pudiera evitar que los catastróficos acontecimientos de la crisis financiera volvieran a ocurrir.

La propuesta de Bitcoin incluía una serie de ideas extraídas de los sistemas que la precedieron. Entre ellas estaban

  • Transacciones digitales seguras, como los contratos inteligentes descritos por Nick Szabo

  • Utilizar criptografía para asegurar las transacciones, como en DigiCash

  • La capacidad teórica de enviar pequeñas cantidades de valor asegurado, como pudo hacer E-gold

  • La creación de dinero al margen de los sistemas gubernamentales, como había propuesto B-Money

  • Utilizar la prueba de trabajo para verificar la validez de los fondos digitales, como se hizo con Hashcash

El libro blanco también introducía varios conceptos que eran nuevos para mucha gente, entre ellos:

Doble gasto
El riesgo de que una unidad monetaria se gaste más de una vez mediante una duplicación falsificada.
Prueba de trabajo
Un problema matemático que debe resolverse utilizando potencia de cálculo.
Hashes
Se produce una salida de longitud fija para poder organizar datos de distintos tamaños y secuencias.
Nonces
Se utiliza un número aleatorio para garantizar que una comunicación determinada sólo pueda utilizarse una vez.

Presentación del Servidor de Marcas de Tiempo

Además de utilizar la prueba de trabajo para asegurar la red Bitcoin, Satoshi propuso utilizar un sistema de marcas de tiempo para verificar las transacciones, similar a los sistemas de archivos y bases de datos. Tomar la información generada durante una transacción y pasarla por un algoritmo de hash genera una cadena fija de números y letras conocida como hash. Para Bitcoin, Satoshi propuso utilizar el algoritmo SHA-256, popular en criptografía.

He aquí un ejemplo:

keccak256("hello") =
1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8

Aquí está de nuevo con un pequeño cambio:

keccak256("hello1") =
57c65f1718e8297f4048beff2419e134656b7a856872b27ad77846e395f13ffe

Utilizar un hash para almacenar información también es clave a la hora de conservar grandes cantidades de información. Como se ve en este ejemplo, diferentes entradas dan como resultado una cadena única de longitud fija cuando se hace un hash. Esto facilita la referencia a algún dato almacenado que pueda recuperarse mediante un hash.

Almacenar datos en una cadena de bloques

En el modelo basado en la acuñación, un gobierno o autoridad central utiliza prácticas contables estándar para llevar un registro de las transacciones. El libro blanco de Bitcoin introduce el concepto de seguimiento de las transacciones mediante una cadena de firmas, o hashes. Éstas se organizan por bloques de tiempo en orden cronológico.

Este esquema, en esencia, crea una unidad de cuenta que no requiere que una única entidad lleve la cuenta de las transacciones. En su lugar, la cadena de bloques, o blockchain, utiliza la confianza matemática criptográfica para llevar la cuenta de las transacciones en un sistema digital. La red no requiere una estructura compleja, ya que utiliza un sistema de igual a igual para verificar y publicar estas cadenas de bloques. Básicamente, necesita una estructura de datos distribuida para el almacenamiento y un protocolo de sistema de mensajería que conforma una red pública en Internet. Como se explica con más detalle en el Capítulo 2, una cadena de bloques está formada por múltiples bloques de transacciones, y esos bloques están conectados entre sí mediante hashes. Aunque muchas cadenas de bloques están disponibles libremente en Internet, algunas no son públicas, especialmente las que se utilizan en algunos entornos empresariales, como se detalla en el Capítulo 9.

He aquí el reto que Bitcoin pretendía superar: ¿cómo pueden colaborar múltiples partes que no se conocen entre sí y no confían las unas en las otras? La solución de Bitcoin a este reto es mantener un libro de contabilidad global en el que todos se pongan de acuerdo sobre qué transacciones son válidas y deben procesarse. La cadena de bloques de Bitcoin es el libro de contabilidad global que todas las partes de la red Bitcoin acuerdan que es válido y preciso. El desacuerdo puede significar una bifurcación en la cadena y la creación de una nueva raíz, tema que se trata en el Capítulo 3.

Nota

En una red de pagos, un libro mayor es un documento que cambia constantemente. Cada vez que alguien quiere enviar una transacción, se añade una nueva fila de datos al libro mayor. Con Bitcoin, aproximadamente cada 10 minutos se añade un nuevo bloque de transacciones a lo que puede definirse como un libro de contabilidad.

Los siguientes son atributos importantes de cada bloque Bitcoin:

Bloque hash
Un identificador único para el bloque. El hash del bloque se genera a partir de datos de entrada que proporcionan una instantánea del estado actual de la cadena de bloques en 256 bits de datos. Esta instantánea es como una versión técnica de un balance de toda la blockchain de Bitcoin. Un bloque Bitcoin no contiene su propio hash de bloque, pero sí contiene el hash del bloque anterior sobre el que se construye, que es lo que hace que los bloques estén encadenados. El hash de un bloque se puede encontrar haciendo un hash de la cabecera del bloque.
Transacción Coinbase
Es la primera transacción de cada nuevo bloque minado en la red. Añade nuevos bitcoins a la oferta, que se da como recompensa al minero que añade el bloque a la cadena. Los mineros se tratan con más detalle en el Capítulo 2.
Número de altura del bloque
Este número identifica cuántos bloques hay entre el bloque actual y el primer bloque de la cadena (también conocido como bloque Génesis).
Raíz de Merkle
Se trata de un hash que permite probar la validez de la cadena de bloques(en el Capítulo 2 se habla más de las raíces de Merkle).
Nota

El nombre de un sistema de cadena de bloques suele utilizarse como nombre propio, mientras que su unidad de cuenta es un nombre normal. Así, una red de criptomoneda se escribe con mayúsculas ("A Alicia le encantan los aspectos descentralizados de Bitcoin"), pero una unidad de cuenta de criptomoneda se escribe con minúsculas ("Alicia envió dos bitcoin (o bitcoins) a Bob").

La Figura 1-7 muestra un bloque Bitcoin.

Figura 1-7. Bloque Bitcoin nº 170, que registra una transacción de 10 BTC enviada por Satoshi Nakamoto al desarrollador y pionero de la cadena de bloques Hal Finney

La Figura 1-8 ilustra por qué sería difícil cambiar una transacción pasada.

Figura 1-8. Por qué es difícil deshacer las transacciones de bitcoin

Dar vida a Bitcoin

El concepto inicial de Bitcoin , esbozado en el libro blanco de 2008 , reunía tecnologías de criptografía, privacidad e informática distribuida para replantear las plataformas financieras. Sin embargo, quedaba mucho trabajo por hacer para que estas ideas fructificaran. Afortunadamente, varios programadores informáticos dedicados al software de código abierto y a los ideales de Bitcoin creyeron en su potencial. Dar vida a la red fue la siguiente tarea, y requirió los esfuerzos de algunos de los primeros pioneros.

Componentes convincentes

El software decódigo abierto significa que no es propietario: cualquier desarrollador puede ver el código fuente y modificarlo. Además de ser de código abierto, las redes de criptomonedas como Bitcoin tienen tres componentes principales que las hacen singularmente atractivas:

Valor
Se utiliza una unidad de cuenta, denominada bitcoin (a menudo denotada como BTC), para registrar las transacciones en el libro de contabilidad, también conocido como blockchain de Bitcoin.
Distribución
Como se indica en el informe de Bitcoin, la red Bitcoin utiliza nodos descentralizados para mantener un registro de las transacciones.
Consenso
Los mineros de la red Bitcoin utilizan conjuntamente la prueba de trabajo para mantener la seguridad y estabilidad de este registro distribuido de transacciones.

Estos cuatro componentes juntos hicieron que Bitcoin resultara especialmente atractivo para un pequeño grupo de desarrolladores decididos, motivados a trabajar juntos para crear un modelo resistente y seguro de almacenamiento de valor en Internet. Aunque no está exento de defectos, se considera que Bitcoin supera con creces los intentos anteriores de conseguir un almacenamiento de valor totalmente digital y distribuido.

Lograr el consenso

El 3 de enero de 2009, Satoshi Nakamoto "minó" los primeros 50 bitcoins, utilizando la potencia de procesamiento para crear el primer bloque de Bitcoin. Conocido como bloque Génesis, este primer bloque de la cadena de bloques de Bitcoin hacía referencia a la crisis financiera como propósito para dar vida a la red. En la coinbase, o entrada de contenido de transacción, el bloque Génesis tiene esta información:

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

Bitcoin es una red distribuida, lo que significa que se necesitaban personas para actuar como mineros en el sistema. Así que Satoshi creó el primer cliente Bitcoin. Ejecutar el cliente permitía a los usuarios ejecutar nodos y minar bloques de Bitcoin. "Si puedes mantener en funcionamiento un nodo que acepte conexiones entrantes, estarás ayudando mucho a la red", escribió Satoshi en el mensaje de publicación del software, titulado "Bitcoin v0.1 released - P2P e-cash".

Una cadena de bloques es un documento vivo que se actualiza constantemente. A medida que pasa el tiempo, se le añaden más y más transacciones. Los usuarios de una red de pagos centralizada como PayPal confían en que la autoridad central actualizará su libro de cuentas con nuevas transacciones a medida que pase el tiempo. Pero en una red de pagos descentralizada como Bitcoin, no hay autoridad central, sino miles de mineros anónimos que alimentan la red.

Entonces, ¿en quién deben confiar los usuarios para actualizar la cadena de bloques de Bitcoin con un nuevo bloque de transacciones? Ganarse esa confianza se llama lograr el consenso. Es un proceso que utilizan todos los mineros que alimentan la red con los dos fines siguientes:

Descubrimiento de bloques
Acordar qué minero tiene derecho a añadir un bloque de transacciones.
Validación de transacciones
Estar de acuerdo en que las transacciones incluidas en ese nuevo bloque son legítimas.

La mayoría de las cadenas de bloques utilizadas para las criptomonedas siguen uno de los dos enfoques para lograr el consenso(el Capítulo 2 los trata con más detalle):

  • Prueba de trabajo

  • Prueba de apuestas

Las cadenas de bloques empresariales utilizan otros métodos de consenso, que se tratan en el Capítulo 9.

Criptografía de clave pública/privada

Bitcoin utiliza la criptografía de clave pública/privada para demostrar la validez de una transacción. Las claves privadas en Bitcoin se utilizan para firmar digitalmente las transacciones bitcoin, que es la forma en que el propietario de una dirección Bitcoin demuestra a la red que es el propietario legítimo de esa dirección. Las claves privadas autorizan una transacción. Se mantienen en secreto, como las contraseñas.

Las claves públicas en Bitcoin sólo se utilizan para generar una dirección Bitcoin. La dirección es esencialmente una versión comprimida de la clave pública, lo que la hace algo más fácil de leer. Una dirección Bitcoin es un valor que se puede compartir públicamente con cualquiera, normalmente cuando se pide a alguien que envíe bitcoin. En este sentido, es un poco como una dirección de correo electrónico.

Generar claves

Una clave privada es un número de 256 bits que se elige al azar. Las claves privadas casi siempre se muestran en formato hexadecimal. La clave privada la genera un ordenador: la mayoría de los lenguajes de programación tienen una función para generar aleatoriamente un número.

Una clave privada puede emparejarse con una clave pública para realizar transacciones en la red Bitcoin. Sin una clave privada es, por diseño, casi imposible hacerlo (más sobre esto en el Capítulo 2). En criptografía, una clave pública puede generarse ejecutando la clave privada a través de una función secp256k1 del Algoritmo de Firma Digital de Curva Elíptica (ECDSA). A continuación, se genera un hash de clave pública ejecutando la clave pública a través de las funciones criptográficas SHA256 y RIPEMD160. La dirección de Bitcoin se genera añadiendo primero 00 al hash de la clave pública y luego pasando ese valor por una función Base58Check. La Figura 1-9 lo ilustra.

Figura 1-9. Proceso de generación de una dirección Bitcoin a partir de una clave privada

Algunas personas utilizan un cliente Bitcoin que tiene una opción para generar una dirección, siguiendo ciertas reglas:

  • Empieza por 1, 3 o bc1

  • El resto de la cadena tiene entre 25 y 34 caracteres

  • Los caracteres válidos son 0-9, A-Z y a-z

  • La mayoría de las direcciones no incluyen l (L minúscula), I (i mayúscula), O (o mayúscula), ni 0 (cero), para evitar ambigüedades visuales

Una alternativa es utilizar https://www.bitaddress.org, un sitio web que genera aleatoriedad en la dirección basándose en el movimiento del ratón del usuario; sin embargo, los usuarios tienen que confiar en que los propietarios del sitio web no registrarán sus claves privadas. La mayoría de la gente genera una nueva dirección Bitcoin a través de una bolsa como Coinbase, que lo hace por ellos utilizando su software interno.

Generar transacciones

Las transacciones de Bitcoin siguen un tipo único de contabilidad llamado UTXO, que significa salida de transacción no gastada. Una transacción es básicamente una lista de entradas y una lista de salidas. Cada entrada identifica una dirección Bitcoin que actúa como fuente de fondos, además de una transacción no gastada que esa dirección ha recibido en el pasado. También contiene una firma digital que prueba que el propietario de esa dirección ha autorizado la transacción. Cada salida identifica la dirección Bitcoin que recibe los fondos y la cantidad que recibirá esa dirección.

Hablaremos de la estructura de una transacción bitcoin en el próximo capítulo, y repasaremos todos estos conceptos con más detalle.

Una vulnerabilidad temprana

Como nuevo protocolo, Bitcoin no estuvo exento de problemas al principio. No era fácil de usar, por lo que no mucha gente se descargó el cliente Bitcoin. Algunos de los primeros defensores de Bitcoin fueron los que ya habían propuesto algunos de los conceptos que utilizaba. Entre ellos estaban Wei Dai, que propuso B-Money, y Nick Szabo, cuyo concepto de oro de bits condujo a un gran desarrollo sobre la seguridad de las transacciones. Otro de los primeros defensores de Bitcoin fue Hal Finney, que recibió la primera transacción bitcoin de Satoshi Nakamoto.

En menos de dos años de existencia de Bitcoin se descubrió un importante fallo de seguridad . El 6 de agosto de 2010, un miembro de la comunidad observó una transacción de salida anormalmente grande y publicó sobre ella en un popular tablón de mensajes. "El 'valor de salida' en este bloque #74638 es bastante extraño", escribió el desarrollador Jeff Garzik, ya que alguien intentó crear 91.979.000.000 de la nada. El Ejemplo 1-1 muestra la transacción.

Ejemplo 1-1. Una transacción de bitcoin anormalmente grande
CBlock(hash=0000000000790ab3, ver=1, hashPrevBlock=0000000000606865, hashMerkleR
oot=618eba, nTime=1281891957, nBits=1c00800e, nNonce=28192719, vtx=2)
  CTransaction(hash=012cd8, ver=1, vin.size=1, vout.size=1, nLockTime=0)
    CTxIn(COutPoint(000000, -1), coinbase 040e80001c028f00)
    CTxOut(nValue=50.51000000, scriptPubKey=0x4F4BA55D1580F8C3A8A2C7)
  CTransaction(hash=1d5e51, ver=1, vin.size=1, vout.size=2, nLockTime=0)
    CTxIn(COutPoint(237fe8, 0), scriptSig=0xA87C02384E1F184B79C6AC)
    CTxOut(nValue=92233720368.54275808, scriptPubKey=OP_DUP OP_HASH160 0xB7A7)
    CTxOut(nValue=92233720368.54275808, scriptPubKey=OP_DUP OP_HASH160 0x1512)
  vMerkleTree: 012cd8 1d5e51 618eba

Posteriormente se parcheó la vulnerabilidad y se "bifurcó" la cadena de bloques para desviarla (más información sobre las bifurcaciones en el Capítulo 3). La bifurcación se hizo para asegurarse de que la cadena de bloques no reflejara la transacción errónea. A día de hoy, la vulnerabilidad encontrada en 2010 sigue siendo el mayor fallo de seguridad en la historia de Bitcoin, un testimonio de la creciente fuerza de la comunidad de la criptomoneda.

Adopción

A menudo se atribuye a la desaparición de Satoshi el haber contribuido a hacer de Bitcoin una entidad totalmente descentralizada. Esto se debe a que el creador ya no forma parte del sistema, al contrario que en el caso de Ethereum y otras blockchains, que tienden a seguir la dirección de sus creadores y líderes efectivos.

Quizá no sea una coincidencia que en la época de la desaparición, Bitcoin estuviera ganando terreno. La comunidad crecía sin cesar. El informático Gavin Andresen, que acabó asumiendo un papel de liderazgo tras la marcha de Satoshi, creó un "grifo Bitcoin" que repartía pequeñas cantidades de BTC con la esperanza de aumentar la adopción. Andresen hizo una presentación a la CIA sobre Bitcoin y se convirtió en científico jefe de la ya desaparecida Fundación Bitcoin, una de las primeras organizaciones sin ánimo de lucro dedicadas a la criptomoneda.

El 22 de mayo de 2010, se atribuye al programador Laszlo Hanyecz haber realizado la primera transacción de un bien o servicio utilizando Bitcoin. Pagó 10.000 BTC (unos 25 $ de la época) a cambio de la entrega de dos pizzas. La fecha se celebra en la comunidad como el Día de la Pizza Bitcoin.

En julio de 2010, Mt. Gox, una plataforma creada originalmente para intercambiar cartas coleccionables de Magic: The Gathering por el desarrollador Jed McCaleb, empezó a ofrecer el intercambio de bitcoins. El concepto de intercambiar bitcoins por moneda tradicional empezó a ganar impulso, alimentando la especulación y la posterior revalorización de los precios.

Resumen

Bitcoin ha tenido una importancia fundamental en el nacimiento de la tecnología blockchain. Sin embargo, los conceptos tecnológicos en los que se basa y su crecimiento no surgieron de la nada, ni sucedieron de la noche a la mañana. La mayoría de las grandes ideas no se crean en el vacío. Bitcoin ciertamente no lo fue, y blockchain tampoco.

El nivel actual de madurez de Bitcoin se basa en una serie de tecnologías que los desarrolladores de software dedicados tardaron décadas en construir, y este esfuerzo colectivo permitió que la tecnología blockchain llegara a donde está hoy. La naturaleza de código abierto de Bitcoin y la comunidad que creció a su alrededor también favorecieron su adopción temprana. Los aspectos fundamentales de las criptomonedas proceden de Bitcoin, que exploraremos en el próximo capítulo.

Get Dominar Blockchain now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.