¿Puede Bitcoin resolver el problema de la confianza?

El comercio electrónico se desarrolló de tal forma que todos los usuarios dependen de instituciones financieras e intermediarios a la hora de pagar y cobrar por productos y servicios  a través de internet. Estos terceros están obligados a mediar entre ambas partes y pueden revertir las transacciones. Con esta posibilidad la confianza se vuelve una necesidad. Ahora, Bitcoin permite realizar pagos irreversibles, sin confiar en terceros y nuevas implementaciones de blockchain permiten crear registros permanentes, pero ¿puede la tecnología resolver un problema tan humano?

De los bizantinos al eCommerce

Se conoce como el Problema de los Generales Bizantinos a un clásico problema de la computación que hasta 2009 no tenía solución. Se trata de una situación donde varias partes necesitan ponerse de acuerdo y llegar a un consenso pero los canales de comunicación no pueden ser confiados ya que alguien podría interceptar los mensajes o enviar mensajes falsos.

El viejo problema describe la siguiente situación: sos el general de un ejército del Imperio Bizantino y junto a otro general deciden atacar y saquear una ciudad enemiga. Necesitan atacar juntos porque un ejercito solo no alcanza para lograr la victoria e intentarlo solo lleva inevitablemente a la derrota. Ambos comparten un mensajero, pero este puede ser interceptado y el mensaje, alterado. ¿Cómo podemos asegurarnos de que el mensaje es auténtico?

Ahora cambiemos a los generales por computadoras y al ataque por algo tan sencillo como una compra a través de internet, donde una parte necesita recibir la información del pago antes de enviarle el producto. ¿Cómo hacerlo sin confiar en estos grandes proveedores de servicios financieros?

Criptografía aplicada

Lo primero que debemos observar son los mensajes. Los generales no pueden enviarlos en texto plano, como este artículo que puede ser leído por cualquier persona que entienda español. El texto plano es fácil de manipular. Por esto Bitcoin trabaja con hashes. Estos son el producto de una función que convierte el mensaje en otra combinación de caracteres que representa el mensaje original. A su vez, usa un número aleatorio llamado “nonce”.

Por ejemplo, si los generales quisieran enviar el mensaje “Atacamos mañana a las 12”, calcularían el hash y el resultado sería algo similar a esto: 

CBAEA41A89D30739F196019D4FAA53E9EFE247928FD214A9DBCA0C53B1BD7DFB

Si queremos agregar un nonce, en vez de hashear solo el mensaje, le agregamos un número aleatorio al final:

“Atacamos mañana a las 12 97f9g79”

Pero el hasheo es fácil de realizar. Es por esto que se definen condiciones que el hash final debe cumplir para ser válido. Por ejemplo, el resultado tiene que comenzar con un cero. Para esto, no existe una forma eficiente de llegar a hashes particulares y hay que probar combinaciones de nonces. Como estas pruebas llevan tiempo y trabajo, el resultado es lo que se conoce como Proof-of-Work o prueba de trabajo. Es decir que llegar a un hash válido es prueba de que alguien se tomó el trabajo de calcularlo.

Ahora nuestros generales solo tienen que definir condiciones difíciles para sus hashes cosa que si alguien quiere alterar el mensaje no pueda hacerlo en un tiempo relativamente corto. ¡Pueden asegurarse de que el mensaje es válido y no fue alterado!

Pero seguimos confiando

Si bien los generales ahora tienen un canal de comunicación seguro, el otro podría ser un traidor. La confianza en el proceso, que es la que blockchain resuelve gracias a la criptografía, es una clase de confianza distinta a la confianza en una característica o en una institución validadora. Hoy son varias las empresas explorando el uso de la tecnología blockchain para aumentar la transparencia de diversas industrias como la de los alimentos y el transporte, pero todavía no existe forma de verificar que los datos que ingresan a la blockchain son reales, válidos. Alguien tiene que auditar eso, una institución, una persona, y la confianza sigue siendo necesaria.

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Mostrar botones
Ocultar botones