El origen de los bitcoins. Explicación completa para principiantes

stats con chris
2022-03-23
0

...

Un mundo descentralizado

Un resumen de la segunda parte con algunos datos extras aparece en el siguiente video:

Los sueños más bellos surgen en la niñez cuando imaginamos un mundo nuevo sin guerras, sin enfermedades, sin fronteras ni clases sociales. No nos cuestionamos lo difícil que sería, simplemente damos rienda suelta a la imaginación y creemos que es posible. Fue un niño de 12 años que inventó los bitcoins, desconocía totalmente el mundo financiero pero intuyó que algo andaba mal y que bastaba, sin saber cómo ni por qué, crear una moneda.

Con los años desarrolló las herramientas que le permitirían lograr el objetivo. Y no solo eso, comprendió también la economía del mundo. Entendió que el banco vendía la idea de cuidar tu dinero pero el trasfondo era quedarse con él. Le funcionaba muy bien porque si hacías un giro de 100 USD pero tenías solo 50 USD, el banco lo rechazaba, o si alguien intentaba acceder a tu cuenta el banco lo bloqueaba. Para lograrlo, en sus inicios contaba el dinero, verificaba las firmas y protegía sus bóvedas. Con el tiempo, las computadoras lo hicieron más fácil porque la gente empezó a usar tarjetas de crédito y a hacer transferencias en línea, es decir, el dinero dejó de ser físico y pasó a convertirse en moneda virtual. Hoy en día muchos pagos o transferencias solo implican cambio de datos en cuentas virtuales, entonces ¿en qué se convierte el dinero que el banco guarda por ti? ¡En datos! ¡Solo eso! Y en un futuro será completamente así. Tendrán un control total de los datos y podrán hacer lo que quiera con ellos. Por ejemplo, tú crees que tienes 100 USD en tu cuenta bancaria, pero el banco los tiene prestados en otro lugar, es decir, se enriquecen a costa de ti y encima te cobran dinero por "cuidar" de él, entonces, ¿qué podemos esperar en un futuro cuando todo sea virtual? Satoshi entendió que no tenía sentido otorgarle poder a los bancos, ¿pero cómo podía evitarlo...? ¡Descentralizando los datos! ¡Esa era la solución!

Para lograrlo, se le ocurrió crear una cuenta comunitaria, que en forma elemental podrías pensar que es un papel en el cual cada usuario anotará las transacciones que hará, si fuese digital por ejemplo, podríamos usar un documento de texto que cada vez que alguien lo actualice lo enviaría por email a todos los demás. Se ve fácil de implementar pero un documento enviado por email no es un método eficiente. Satoshi se dio cuenta que había un método más eficaz, uno que venía usando desde antes y que posiblemente tú también usaste. Me refiero a las aplicaciones de punto a punto (P2P, Peer to Peer en inglés) como Ares, Emule, BitTorrent, Limewire, Deluge, etc, las cuales permiten compartir información sin intermediarios, es decir, sin entes centrales que tengan el control de los datos. En caso estos nombres no te sean familiares, te invito a leer el artículo: "Pasos para descargar programas usando aplicaciones de punto a punto", en él, considerando Deluge, brevemente explicamos lo que son las aplicaciones de punto a punto. En el caso del email sí existen intermediarios, para Gmail sería Google, para Outlook sería Microsoft, y ellos al ser intermediarios tienen control absoluto de tu información, justamente se comportan como bancos, pero no bancos del dinero, sino de la información. En el caso de las aplicaciones P2P no es así, la transferencia es directamente de PC a PC. Por ejemplo, si deseas descargar una canción, lo harás directamente de la PC de alguien que la tenga, y luego otro más podría descargarla de ti porque tú ya la tendrías en tu PC. Por eso, si la cuenta comunitaria quería desligarse del concepto centralista de los bancos debía necesariamente ser parte de una red P2P, y no solo eso, debía manejarse con su propia moneda porque el banco no permitiría perder la fuente de su poder.

En la Fig. 3 te muestro las diferencias de usar un banco o una cuenta comunitaria. A simple vista se ven exactamente igual, pero no te dejes engañar. En el caso del banco (izquierda) se usan dólares y las transferencias hechas por Alice, Bob y Tom están enteramente controladas por el banco, mientras que en el caso de la cuenta comunitaria (derecha) se usan bitcoins (BTC) y todos tienen el control, es decir, todos tienen acceso a los datos, pero es aquí que surge el problema, ¿podemos confiar en los demás?

Fig. 3: Sistema centralizado donde el banco es el único que tiene acceso a los datos (izquierda). Sistema descentralizado donde todos tienen acceso a la cuenta comunitaria (derecha).

Si todos tienen acceso cualquiera puede alterar la información. El ser humano, por naturaleza, es imperfecto, sujeto a tentaciones que buscan su beneficio personal, por ende, no podemos confiar. Por ejemplo, Bob tranquilamente puede tener solo 10 BTC en su poder pero en la cuenta comunitaria escribirá que transfiere a Tom 200 BTC. No hay nadie que lo pueda verificar. Recuerda que todo esto es digital y no hay billetes físicos de por medio, son solo datos en un papel digital comunitario. ¿Cómo podemos asegurarnos que Bob no hará esta jugada? Satoshi dio la solución: "Crear un número finito de monedas". Con esto si Bob intenta transferir más de lo que tiene bastará contar todas las monedas en circulación y si estas no suman la constante universal, la transacción será rechazada. ¿Perfecto verdad? ¡Pues no! Ahora Bob intentará lo opuesto, escribirá en la cuenta comunitaria que Tom le envía 5 BTC. Si Tom tiene más de 5 bitcoins en su poder, la transferencia será correcta pues la constante universal no cambiará. Claro está, Tom quedará enfadado porque nunca autorizó aquella transferencia. ¿Cómo lo evitamos? ¡Firmando las transacciones! Pero esta idea presenta dos falencias, i) estamos perdiendo la anonimidad y ii) alguien podría suplantar la identidad. Veamos el ejemplo:

Transferencia #1 escrita por Alice:
"Alice envía a Tom 10 BTC".  Firma: Alice.
Transferencia #2 escrita por Bob:
"Alice envía a Bob 10 BTC". Firma: Alice.

Como ves, Bob está suplantando la identidad de Alice, muy sencillo de lograr, ¿verdad? No obstante el mundo digital ofrece una amplia ventaja respecto al mundo real, en ella la firma no se comporta como una firma normal. Una firma digital es una encriptación, un algoritmo que permite ocultar la información. El que implementó Satoshi en el juego de los bitcoins se le conoce como ECDSA, del inglés Elliptic Curve Digital Signature Algorithm. En este artículo no me explayaré con esta encriptación, solo te daré una idea general de sus ventajas.

Ventaja 1: La transferencia es anónima

Consideremos la misma transferencia de Alice dada previamente pero esta vez encriptando la información:

Transferencia #1 escrita por Alice:
"X envía a Y 10 BTC". Firma: 69D03RLFCS.

Como puedes apreciar, es imposible determinar la identidad de Alice. X e Y solamente son números de cuenta y la firma no nos puede revelar nada.

Ventaja 2: La firma digital es única e intransferible

Consideremos ahora que Alice realiza dos transferencias, una a Y, otra a Z:

Transferencia #1 escrita por Alice:
"X envía a Y 10 BTC". Firma: 69D03RLFCS.
Transferencia #2 escrita por Alice:
"X envía a Z 10 BTC". Firma: 53948RLEW0.

Como puedes apreciar, cada transferencia tiene su propia firma digital, es decir, nadie podrá copiarla para usarla en otra transferencia. Esto implica que la firma digital (f) depende de la variable "m", siendo "m" el mensaje que se desea enviar, e.g., "m = X envía a Y 10 BTC".

Ventaja 3: La firma digital evita la suplantación del doble gasto

Consideremos que Alice realiza dos transferencias exactamente iguales:

Transferencia #1 escrita por Alice:
"X envía a Y 10 BTC". Firma: 69D03RLFCS.
Transferencia #2 escrita por Alice:
"X envía a Y 10 BTC". Firma: 03943UED03.

Como puedes apreciar, aún cuando "m" es el mismo, la firma digital generada es distinta. Esto se debe a que "f" también depende de "#", siendo "#" el número de transferencia, el cual es intrínseco a cada transacción. En este sentido, cualquier intento de doble gasto no procedería, porque por ejemplo, si Bob copia y pega la transferencia #1 para duplicarla, la firma digital tendría que cambiar y él no podría conocerla.

Ventaja 4: La firma digital se puede verificar

Esta posiblemente sea la ventaja más importante y significa que cualquiera podrá verificar que la transferencia solo fue hecha por Alice, aún desconociendo su identidad. Suena paradójico pero es solo matemáticas. Para entenderlo debes considerar que todo usuario tiene un número de cuenta y una contraseña. Ambas están relacionadas matemáticamente, esta relación se denomina "encriptación de la clave pública" o "encriptación asimétrica"; no obstante, deducir la relación algebráicamente es prácticamente imposible. El número de cuenta es una clave pública, todos la pueden ver, mientras que la contraseña es privada. Justamente la contraseña te autentifica como el dueño de la cuenta y te va permitir acceder a ella, por tanto más te vale no compartirla con nadie. Al definir una transferencia se genera la firma digital que depende de la contraseña (c) y del mensaje dado (m), es decir, f(m,c). Para efectos prácticos estamos obviando "#". Como puedes ver, si no tienes la contraseña, no vas a dar con la firma correcta. Tal como apreciamos en la Fig. 4, es el par (m, f) que se envía a la cuenta comunitaria pero "m" no se escribe en ella hasta que "f" no sea validada. Para validarla se usa una función booleana especial (v) que depende del número de cuenta (n), del mensaje dado (m), y de la firma digital (f), es decir, v(m,n,f). Curiosamente, la función "v" es verdadera solo si se usó la contraseña correcta. Y es falsa si alguien intentó suplantarla. Intuitivamente podrías pensar que tiene sentido porque si "v" depende de "f" y "f" depende de "c", entonces "v" estará asociada matemáticamente a "c", la contraseña correcta; esto implica que si alguien la altera (o desconoce la contraseña), la función "v" cambiará y por tanto obtendremos falso como respuesta.

Fig. 4: Representación gráfica de la encriptación ECDSA.

La encriptación ECDSA permitió a Satoshi resolver el problema de cómo validar las transferencias preservando la anonimidad; no obstante, si bien Bob ya no podía alterar las transferencias al inicio porque demandaba conocer la firma digital o la contraseña correcta, podía alterarlas al final, es decir, cuando estas ya estuviesen registradas en la cuenta comunitaria. Como recordarás, todos tienen acceso a ella, por tanto nada le impediría poder acceder a dicha cuenta y borrar algunos datos. ¿Qué solución encontró Satoshi para resolver este último problema? La solución la encontró en la cadena de bloques (blockchain en inglés), pero eso lo discutiré en la tercera parte de este artículo...

Vistas: 1

stats con chris

Un escritor que aprendió a sumar

Un escritor que aprendió a sumar

Notificaciones

Recibe los nuevos artículos en tu correo electrónico

2022 © nepy

Un solo aliento

Configurar

Elige tu propio estilo

Color

Elige el modo que sea de tu agrado


Posición del Navegador

Elige el sistema de navegación


Estilo del Navegador

Elige el estilo del navegador vertical

Personalizar