Bitcoin explicado de forma sencilla (I)

Los siguientes tres artículos son una traducción del original publicado en la siguiente web: Bitcoin Workings Explained, For Real.

Me ha resultado tan clarificador que me he decidido a traducirlo y publicarlo en este blog.


He pasado mucho tiempo tratando de entender cómo funciona Bitcoin. Nunca encontré nada que lo explicara bien, así que escribí esto – es exactamente el tipo de artículo que me gustaría leer. Aunque ya tenía algunos conocimientos de informática, también explico algunas herramientas conocidas de informática que hacen que todo el asunto se entienda, así que espero que cualquiera puede saltar y seguir adelante. Habrá simplificaciones y a veces flagrantes simplificaciones, pero están ahí principalmente para omitir cosas que son más detalladas de implementación que el concepto central, o simplemente no son interesantes.
Resultó un poco largo, así que esta es la primera parte de una serie de tres.

¿Por qué todos apestan al explicar esto?

Hay toneladas de artículos flotando alrededor de la red que intentan explicar la tecnología Bitcoin y la cadena de bloques en términos sencillos. Sin embargo, todos los “Bitcoin for Dummies” o “Bitcoin Explicado tan bien que incluso tu mamá lo entendería” por lo general se pierden el punto de explicarlo. Se esfuerzan por evitar palabras tecnológicas aterradoras como “funciones hash” o “cifrado asimétrico”, pero terminan evitando los conceptos en sí mismos. Te dan una vaga idea general detrás de ella, como “es un libro lleno de transacciones compartidas por todos y todo el mundo puede escribir en él”, y déjalo así. Pero, ¿por qué es tan confiable que la gente lo use para pagos? ¿Por qué la gente lo usa? ¿Cuál es el problema? Te deja llevar por la duda.

Mira este video. ¿Qué es una cadena de bloques? ¡Es una base de datos! ¡Y está asegurado por criptografía! Lo cual es probablemente la forma menos informativa y menos interesante de decirlo. La mayor parte del material informativo que he encontrado es como el vídeo- infografías bonitas que no tienen ni idea de lo que están hablando.

Los más extremos, como éste, llevan la evasión de la tecnología a un extremo y desarrollan metáforas elaboradas con cámaras de vigilancia y cochinillas transparentes.

El resultado es una imagen mental surrealista que se parece más a un extraño experimento de pensamiento que a la tecnología real que se utiliza para la transacción de millones de dólares en activos digitales cada día. Este ejemplo en particular está dirigido a los niños de 7 años de edad, pero no responde a la pregunta que cualquier niño de 7 años de edad, y cualquier adulto razonable debería preguntarse: ¿por qué?

La terminología tampoco ayuda. Se habla de “monedas”,”mineros” y “oro digital”, pero todos estos términos son terriblemente engañosos porque no hay nada en Bitcoin que se parezca a una moneda o a sacar cosas preciosas del suelo. Una afirmación popular es que la minería de Bitcoin se hace por medio de computadoras “resolviendo problemas computacionales complejos”, así que por mucho tiempo solía pensar que hay un gran problema (como ejecutar una simulación física compleja?), y cada Bitcoin representa una de las soluciones numéricas a ese problema. También existe la idea errónea de que cada Bitcoin tiene un nombre o identificador único. Por supuesto, esto es terriblemente incorrecto, por muchas razones, y la realidad es muy diferente.

Bitcoin es complejo. Esa es la única forma en que podría funcionar. Eso no significa que no pueda ser explicado en términos simples, sin embargo. Después de todo, las cosas complejas no salen de la nada. Las cosas complejas se crean añadiendo cosas simples por necesidad. Para entenderlos realmente, necesitamos entender la necesidad que hay detrás de ello. Necesitamos el por qué tanto como el cómo. Tenemos que mejorar si queremos que esta tecnología se generalice.

Así que, vamos a tratar de diseñar nuestra propia moneda virtual descentralizada, paso a paso, desde cero.

Por qué usar moneda virtual

Puede que te preguntes: ”¿Por qué haces esto? ¿Por qué la gente compraría y usaría moneda virtual? Es sólo algunos parpadeos en una computadora, no tiene valor…”. La realidad es que ya estás usando uno.

Muchas monedas nacionales ya existen, sobre todo en las cuentas bancarias. Los billetes y monedas son más bien un símbolo que permite manipular temporalmente la moneda en el mundo real, pero al final vuelven al banco. Si todos decidieran retirar dinero de sus cuentas, no habría suficientes billetes para cubrirlo, ya que los bancos sólo están obligados a mantener efectivo en las cantidades necesarias para las operaciones diarias.

Son igual de inútiles también – son literalmente sólo trozos de papel. El valor no es el objeto, sin embargo – es el hecho de que la gente lo aceptará universalmente como pago, porque ellos mismos saben que pueden usarlo para el pago. Lo único que se necesita es confianza en la moneda.

En un tiempo, la gente intercambiaba cosas que no quería por las que quería. Esto era incómodo, sin embargo, porque no se puede dividir fácilmente una vaca o transportarla permanentemente (a menos que quieras carne). También es difícil encontrar un comprador que también tenga algo útil para venderte. Así que, la gente comenzó a usar cosas pequeñas y divisibles valoradas por la mayoría, como el oro, la plata o las pieles de ardilla. Luego, los gobiernos y los bancos comenzaron a emitir billetes que prometían pagar una cierta cantidad de bienes a demanda, por lo que la gente comenzó a usarlos en su lugar. Los billetes eran tan convenientes que la gente empezó a usarlos. Por lo tanto, el respaldo de metal se volvió obsoleto y, a continuación, la mayoría de ellos fueron eliminados, y a nadie le importó realmente.

¿Es todo una gran mentira? Sí. ¿Funciona? Sí. No hay necesidad de que el dinero tenga un valor inherente y objetivo – es igual de útil si la gente cree que es valioso.

Sin embargo, hay una debilidad en el sistema. Un pequeño grupo de personas lo controla, y a veces pueden tomar decisiones cuestionables, como imprimir grandes cantidades de dinero para sus propias necesidades (como en Zimbabwe). Otro ejemplo es la reciente desmonetización en India y Venezuela. Los gobiernos esencialmente le dijeron a sus ciudadanos que su dinero no vale nada. Imagine reunir los ahorros de su vida a lo largo de los años y que le digan que no puede usarlos en ninguna parte.

Esto no es para parecer alarmista o paranoico – normalmente hay algunas personas competentes en la parte superior de la cadena de mando, y el sistema generalmente funciona bien. Pero, ¿por qué no hacerlo mejor?

Alguien, o muy probablemente “varios alguien” llamado Satoshi Nakamoto, se propuso en 2009 para comprobar si se puede crear un sistema no basado en decisiones de un puñado de personas, sino algo mucho más confiable, como el amor de la gente por las loterías. Resulta que podemos.

Un banco administrado por todos

La idea es: hagamos un banco que todos puedan manejar, para que nadie lo utilice para su propio beneficio.

Podemos empezar dando números de cuenta a las personas interesadas en usar nuestra moneda, junto con una cantidad inicial de dinero que se les ha asignado (en Bitcoin no se obtiene dinero inicial, el nuevo dinero se crea de otra manera – pero vamos a fingir que lo haces por ahora). Entonces, comencemos un libro con las transacciones, copias de las cuales pasamos entre todos en nuestra red. Porque queremos que la red sea imparcial y no controlada por una sola persona, permitimos que cualquiera registre sus transacciones en el libro, anuncie que el libro fue actualizado y permita a todos descargar la actualización con su nueva transacción. Además, tenga en cuenta que no necesitamos un balance de cuenta apropiado en ningún lugar – siempre que lo necesitemos, podemos simplemente revisar todo el libro de transacciones al revés y resolverlo. Ya que nuestro libro es digital, es fácil.

Un problema inmediato con esto es, ¿qué pasa si alguien se hace pasar por usted y registra una transacción que declara que usted le envió todo su dinero? No hay manera obvia de decir que el dueño de la cuenta es realmente quien escribió la transacción en el libro. Si empezamos a usar contraseñas clásicas, todo el mundo tendría que saber las contraseñas para comprobarlas, de lo contrario los inspectores de contraseñas designados estarían en control de la red. Y si todos conocen las contraseñas de los demás, son inútiles.

Afortunadamente, hay una herramienta que nos ayudará a resolver este problema. Criptografía al rescate! Presentando…

Prueba A: Encriptación asimétrica

La mayoría de la gente ha encontrado algún tipo de cifrado en su vida, por lo general como un acertijo o rompecabezas. A menudo, la cifra sustituye las letras en el texto por símbolos arcanos. Necesita una hoja que le indique qué símbolo es el que debe descifrar el texto. También puedes usarlo para escribir tu propio texto secreto. Podríamos llamar a esa hoja una clave de cifrado.

Un cifrado sencillo y muy conocido es el cifrado del César. Es simple: por ejemplo, para codificación con llave 2, en lugar de cada letra se usa la letra que está 2 lugares más adelante en el alfabeto. Así que BITCOIN se convierte en DKVEQKP. Para descifrar, usted hace el revés – sustituya las letras 2 lugares antes en el alfabeto. Tenga en cuenta que el simple hecho de saber que se utilizó la clave de Cesar no le permite leer el texto secreto, sino que necesita conocer la clave. Una vez que lo conozca, puede utilizarlo tanto para encriptar como para descifrar textos.

Un problema con esto es cuando deseas utilizar un cifrado para comunicarse en secreto con un extraño. Primero tienes que decidir sobre una llave, pero cualquiera que escuche tu llave la cogerá. Podrán leer toda su comunicación de todos modos, así que mejor que no utilice los cifrados en absoluto.

Sin embargo, décadas de investigación en criptografía nos han dado cifras muy complejas y muy especiales, que nos permiten dividir la clave en dos. Hay una clave de cifrado, que sólo se puede utilizar para cifrar, y una clave de descifrado, que sólo se puede utilizar para descifrar. De esta manera, puedes publicar libremente tu clave de cifrado, y cualquier persona puede cifrar un mensaje para ti. Guarda la clave de descifrar para ti mismo, para que nadie, ni siquiera el autor del mensaje, pueda descifrarla excepto tú. (Por esta razón, también se les suele llamar “clave pública” y “clave privada”, pero esto surge del uso y no está claro de lo que realmente son). Así que cuando alguien te escribe un mensaje, usa tu clave de cifrado, cuando escribes a alguien – usas la suya.

En muchos cifrados, la clave privada también se puede utilizar para producir una firma basada en el texto que se está firmando, y la clave pública se puede utilizar para verificar que la firma sólo se podría haber producido utilizando la clave privada correspondiente.

¿Cómo es esto relevante para nuestro libro de transacciones? Si utilizamos claves públicas como nuestros números de cuenta y producimos una firma con nuestro código para cada transacción que realizamos, es fácil probar que la transacción es legítima – simplemente toma el número de cuenta y comprueba que la firma sólo puede ser producida por alguien que tiene la clave privada de esa cuenta. Ahora tenemos transacciones en el libro de transacciones que no se pueden falsificar.

Es posible que ya hayas encontrado una dirección de Bitcoin (número de cuenta). Siempre es muy largo, hay 2^160 números de cuenta posibles. Por comparar, hay sólo 2^63 granos de arena en todas las playas y desiertos del planeta. 2^64 es el doble, 2^65 cuatro veces mas… pillas la idea…

Esto asegura que todo el mundo pueda generar aleatoriamente un número de cuenta y su clave por sí mismos, sin ninguna coordinación, y prácticamente nadie obtendrá la cuenta de otra persona por accidente. En realidad, puedes ir al directorio de todas las direcciones de Bitcoin y sus claves privadas, elegir una dirección y la clave correspondiente y empezar a usarla como tuya. Notarás que hay tantos para elegir, no tienes que preocuparte de que alguien escoja el mismo que tú.

(No lo haga realmente. Es probable que usted escoja algunos números de página y posiciones en la lista que otros, debilitando su seguridad contra alguien que intenta tomar decisiones probables. Las páginas que está visitando también se guardan en el historial de su navegador. Es mucho mejor utilizar un generador de la cartera apropiada para conseguir su nuevo par de elegantes llaves.

Próximos pasos

Así que hemos conseguido un libro de transacciones a prueba de falsificaciones: todos tienen una clave privada y la utilizan para firmar sus transacciones. Las firmas pueden ser verificadas mirando su número de cuenta y el contenido de la transacción. El libro no es exactamente utilizable todavía, sin embargo – hay muchas copias de él flotando alrededor. ¿Qué hacemos si un ejemplar termina con diferentes transacciones que el otro? ¿Cómo podemos ponernos de acuerdo sobre cuál es la versión correcta? Aquí es donde la solución de Bitcoin realmente brilla, y la estudiaremos en el siguiente post.