¿Qué es Bitcoin?: El Protocolo de Consenso Distribuido

En la siguiente nota nos proponemos seguir el paper original publicado por Satoshi Nakamoto. El autor abandonó el proyecto a finales de 2010 sin revelar mucho sobre su persona.

Bitcoin: A peer-to-peer Electronic Cash System

Nakamoto esquematiza el protocolo, es decir, una especificación de una serie de reglas para un tipo particular de comunicación. Hay que recordar que el objetivo del protocolo es permitir a dos actores transaccionar directamente sin la necesidad de una autoridad central.

Lo hace uniendo una serie de elementos fundacionales como son las transacciones, un servidor de marcas de tiempo, el concepto de prueba de trabajo (Proof-of-Work) y un entramado de incentivos monetarios.

Transacciones:

Se define a una moneda electrónica como una cadena de firmas digitales. Cada dueño transfiere la moneda al próximo al firmar digitalmente un hash de la transacción previa y la clave pública del próximo dueño y agregando estos al final de la moneda. Un beneficiario puede verificar las firmas para verificar la cadena de propiedad.

Cuando se dice que alguien tiene bitcoins significa que tiene control sobre una billetera virtual, que es nada menos que un archivo que contiene un conjunto de “direcciones”. Es idéntico al concepto de un banco tradicional donde uno tiene un usuario y dentro varias cuentas como una caja de ahorro en pesos, caja de ahorro en dólares o cuenta corriente, las cuales tienen una clave de identificación propia.

Si alguien posee bitcoins en una billetera virtual, implica que tiene control sobre un par de juegos de llaves:

  1. Llave Pública o “Public Key”: es la dirección o public address de BTC. Su concepto es similar al número de identificación de una cuenta bancaria. Cada public key contiene una serie de ingresos y egresos de BTC que determinan el saldo de la misma. Un ejemplo de una public key es el siguiente.
  2. Llave Privada o “Private Key”: es la clave secreta necesaria para autorizar cualquier tipo de transacción para una determinada public address. Es similar a la contraseña que uno usa para autorizar transacciones o para iniciar sesión con su usuario.

Supongamos que A quiere enviar bitcoins a B. Una transacción simple consta de tres elementos:

Input: es la public address desde donde A los enviará a B y que tiene un saldo en BTC.

Monto: es el importe que será transferido en cantidad de BTC.

Ouput: es la public address de BTC de B.

Para que A pueda enviar los BTC deberá firmar con su private key un “mensaje” con los detalles específicos de la transacción: input (garantiza que la public key tenga los saldos suficientes para realizar la transacción), monto y el output (destino final de la transacción).

Para aceptar la transacción, A tuvo que haber recibido previamente una transacción entrante por parte de un tercer actor C para tener un saldo positivo en su cuenta. Esa transacción puede ser verificada porque C firmó con un private key el envío de una cantidad de BTC y la envió a la public address de A.

Todo este proceso está sintetizando en la siguiente imagen:

Servidor de Marcas de Tiempo:

Todavía no está resuelto el Problema del Doble Gasto. B no puede garantizar si uno de ellos realizó un doble gasto de la moneda. Históricamente este problema ha sido resuelto a partir de la incorporación de una autoridad central confiable. La metodología más práctica es considerar como válida la primera transacción y descartar aquellas sucesivas que intenten realizar un doble gasto de un saldo inicial determinado.

Para evitar el problema del doble gasto sin un tercero involucrado, las transacciones deben ser anunciadas de manera pública en donde todos los actores involucrados estén de acuerdo con una única historia de transacciones realizadas. Para ello se incorpora un servidor de marcas de tiempo que asegura que la transacción debe haber existido en el tiempo. Pero eso no es suficiente porque alguien podría alterar los datos de la historia. Por eso todas las transacciones se encuentra relacionadas de manera criptográfica (es decir, de una manera inalterable) con el resto de las transacciones anteriores, generando así una cadena de bloques, denominada popularmente como Blockchain.

Prueba-de-Trabajo o Proof-of-Work:

¿Cómo se ponen todos de acuerdo en el anuncio público del orden de las transacciones dentro de un protocolo distribuido? ¿Cómo garantizar que las transacciones fueron válidas?

Con el objetivo de determinar el orden y validez de las transacciones que luego serán aseguradas a través del servidor de marcas de tiempo, se propone el concepto de Prueba-de-trabajo como sistema de votación que va a poner a todos de acuerdo. El mismo es una tarea que consume tiempo y gasto de energía eléctrica por parte de los actores involucrados, denominados “mineros”.

No todos los actores de la red Bitcoin son mineros. En el ejemplo anterior A,B y C son simplemente usuarios de la red. Pero el sistema necesita que voluntariamente algunas personas mantengan el registro de la misma.

Las transacciones son agrupadas en bloques que tienen un determinado espacio (1MB). Una vez cubierto, arranca una competencia entre todos los mineros para ver quien resuelve primero el problema matemático. El ganador se anuncia públicamente y el resto puede comprobar fácilmente que hizo bien la prueba de trabajo. Una vez que todos están de acuerdo agregan el bloque a la cadena y el ciclo se repite.

El trabajo de los mineros (también llamados nodos) garantiza la validez de un bloque de transacciones a partir de la resolución de funciones criptográficas. La resolución de las misma consta de iteraciones sucesivas de posibles valores hasta encontrar el indicado que satisface la condición establecida por la función. El mismo es fácil de verificar por toda la red, y por lo tanto, se determina su lugar en la cadena de bloques o Blockchain de manera unánime. Dado que el poder de procesamiento de las computadoras incrementa año tras año, Nakamoto decidió hacer variable la dificultad de resolución de los algoritmos a partir de una media móvil.

Incentivos:

El sistema todavía no se encuentra libre de incentivos por parte de un minero deshonesto con un mayor poder computacional que la suma del resto. El minero podría crear una cadena alterna a una mayor velocidad que una cadena honesta, aunque no podría establecer cambios arbitrarios como crear dinero o robar dinero que nunca le perteneció. El nodo deshonesto podría únicamente alterar alguna de sus propias transacciones para recuperar dinero que ha gastado anteriormente.

Para evitar eso se establece un esquema de incentivos monetarios que constituyen un Equilibrio de Nash entre los nodos tal que ninguno presente tendencias a desvíos que perjudican a la red.

  1. El primero está relacionada con la evolución en el tiempo de la oferta monetaria de la red de Bitcoin. Los Bitcoins son creados cada vez que un nodo resuelve correctamente el algoritmo criptográfico. Esto crea un incentivo para que los nodos apoyen el desarrollo de la red desde un principio dado el gasto de tiempo y energía de las CPUs involucradas. Al mismo tiempo es el vehículo a partir del cual se emiten las monedas en circulación en el contexto de un sistema descentralizado. El número de Bitcoins generados por bloque está programado desde sus inicios para disminuir en una progresión geométrica, con una reducción del 50% en su valor cada cuatro años.
  2. El segundo surge a partir de los costos de transacción que los usuarios de la red están dispuestos a pagar de manera voluntaria para acelerar el tiempo de procesamiento de su operación. Dado que la progresión geométrica tienda a cero hacia el año 2140 (desaparece 1.), el esquema de incentivos de la red estará determinado en futuro únicamente por el costo de transacción voluntario.

Más allá de los incentivos monetarios, Nakamoto realiza una serie de cálculos probabilísticos para modelar una carrera entre una cadena de bloques realizada por nodos honestos contra una de un nodo deshonesto. Demuestra que a menos que el azar esté de su lado desde el principio, sus chances se vuelven extremadamente pequeñas a medida que la cadena honesta avanza a mayor velocidad.

Privacidad:

En un modelo de transacciones centralizado se logra mantener un entorno de privacidad entre los actores y el intermediario. Pero en un sistema descentralizado es necesario que todas las transacciones se anuncien públicamente con el objeto de que todos los nodos tengan la cadena de bloques actualizada en cada momento del tiempo. Aún así es posible mantener cierta privacidad de los actores mediante las claves públicas dado que dentro de la red no están asociadas a ningún nombre (todos pueden ver que la public address de A mandó BTC a B pero no saben sus nombres reales).

La red puede identificar que un actor está enviando una determinada cantidad de activo digital a otro, pero no existe la posibilidad de relacionarla con ningún dato privado de ambos (seudónimos). El concepto es similar a los datos de órdenes que se visualizan en las bolsas de valores. Pese a ello, el riesgo está en que el dueño de una clave pública sea revelado, identificando así todas las transacciones realizadas por ese usuario.

Ejemplo de un bloque con las transacciones anunciadas públicamente mediante las public address y montos.

Consideraciones Finales:

Desde la perspectiva del usuario, Bitcoin no es más que una aplicación móvil o de escritorio que provee una monedero o billetera Bitcoin personal y permite al usuario enviar y recibir BTC con el. Así es como funciona Bitcoin para la mayoría de los usuarios.

Detrás de las cámaras, la red Bitcoin comparte una contabilidad pública o protocolo de consenso distribuido llamado “blockchain”. Esta contabilidad contiene cada transacción procesada, permitiendo verificar la validez de cada transacción. La autenticidad de cada transacción está protegida por firmas digitales correspondientes a las direcciones de envío, permitiendo a todos los usuarios tener control total al enviar BTC desde sus direcciones Bitcoin. Además, cualquiera puede procesar una transacción usando el poder computacional de hardware especializado y conseguir una recompensa en BTC por este servicio.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.