Un mundo descentralizado
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ían, simplemente damos rienda suelta a la imaginación y encontramos soluciones. 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 sólo eso, comprendió también la economía del mundo. Entendió que los bancos vendían 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 pero tenías sólo $50, 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 online, es decir, el dinero dejó de ser físico y pasó a convertirse en moneda virtual. Hoy en día muchos pagos o transferencias online sólo implican cambio de datos en cuentas virtuales, entonces ¿en qué se convierte el dinero que el banco guarda por ti? ¡En datos! ¡Sólo 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, hoy en día tú crees que tienes $100 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 Peer to Peer (P2P) como Ares, Emule, BitTorrent, Limewire, etc, las cuales permitían compartir información sin intermediarios, es decir, sin entes centrales que tuviesen el control de los datos. En el caso del email existen intermediarios, para gmail sería Google, para hotmail 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ías 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 sólo eso, debía manejarse con su propia moneda porque el banco no permitiría perder la fuente de su poder.
En la Figura 4 te muestro las diferencias de usar un banco o usar 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, pero es aquí que surge el problema, si todos tienen el control ¿cómo podrían ponerse de acuerdo?
No podemos confiar en los demás porque Bob tranquilamente puede tener sólo 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 sólo 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 evitamos esto? ¡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, sólo 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 el 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.
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 fue hecha por Alice sin necesidad de conocer su identidad. Suena paradójico pero es sólo 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 algebraicamente 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). Como puedes ver, si no tienes la contraseña, no vas a dar con la firma correcta. Tal como apreciamos en la Figura 5, 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 sólo 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 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.
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 la cuenta y borrar algunos datos. ¿Qué solución encontró Satoshi para resolver este último problema? La solución estaba escondida en el concepto de la blockchain, pero eso lo discutiré en la tercera parte de este artículo…
Si el texto no te quedó muy claro, te invito a ver el siguiente video que resume lo expuesto aquí:
Christian Ortiz
“Un escritor que aprendió a sumar”