01 · Empezar desde cero
¿Cómo llevamos un registro de quién le pagó a quién, sin que una organización lo administre?
Emma quiere enviarle 30 USD a Liam.
Cuando pagamos a través de un banco, el banco comprueba el pago y actualiza su registro.
Pero ¿tiene que haber una organización que guarde y administre ese registro?
Cada pago cambia el registro
Supón que Emma tiene 50 USD y le envía 30 USD a Liam.
Después del pago, el registro debería mostrar que a Emma le quedan 20 USD y que Liam tiene 30 USD más.
Antes del pago
- Emma
- 50 USD
- Liam
- 0 USD
Después del pago
- Emma
- 20 USD
- Liam
- 30 USD
Eso importa porque, la próxima vez que Emma quiera pagar, necesitamos saber desde qué cantidad parte. Si el registro está mal, no podemos saber cuánto puede gastar de verdad.
Una acción como esta se llama transacción.
Cuando una organización administra el registro, también lo actualiza
Si Emma y Liam usan un banco, el banco comprueba que Emma tiene dinero suficiente y actualiza el registro.
Emma: 50 → 20 Liam: 0 → 30
Cuando todos dependen de la misma organización, queda claro cuál registro cuenta como el correcto.
Eso no es automáticamente un problema. Es simplemente una forma de administrar la información.
Sin una organización, muchas computadoras en el mundo pueden guardar copias del registro
En lugar de que una organización guarde el registro, computadoras independientes en distintos lugares pueden guardar cada una su propia copia.
Cada computadora puede conservar lo que ya sabe y comprobar por su cuenta las solicitudes de pago de las que se entera.
Si una computadora cambia solo su propia copia, no cambia las demás.
Cambiar una copia no hace que el cambio sea verdadero.
Cuando alguien quiere pagar, la solicitud se envía por la red
Si Emma quiere enviarle 30 USD a Liam, la solicitud de pago se envía a otras computadoras de la red.
Esas computadoras reenvían la solicitud, así que más computadoras se enteran y pueden comprobarla.
Cada computadora puede mirar lo que ya está escrito en su copia y hacer una pregunta simple:
¿Emma tiene dinero suficiente para hacer este pago?
Si la respuesta es sí, la solicitud puede pasar esa comprobación. Si no, se rechaza.
Una computadora que recibe información de la red, guarda una copia y la comprueba contra las reglas se llama nodo.
El problema: no todos se enteran de cada pago al mismo tiempo
La información pasa de computadora en computadora por la red, así que tarda en llegar.
Supón que Emma tiene 50 USD y, casi al mismo tiempo, intenta enviarle 30 USD a Liam y 30 USD a Olivia. No tiene dinero suficiente para los dos pagos juntos.
Una computadora puede enterarse primero del pago a Liam. En esa computadora, el pago de Liam pasa la comprobación, a Emma le quedan 20 USD y la solicitud de Olivia se rechaza.
Otra computadora puede enterarse primero de Olivia y llegar al resultado contrario.
El mismo registro inicial
- Emma
- 50
- Liam
- 0
- Olivia
- 0
La computadora 1 se enteró primero de Liam
- Emma
- 50
- Liam
- 0
- Olivia
- 0
- Emma → Liam 30Pasa la comprobación
- Emma → Olivia 30Rechazado: solo quedan 20
Resultado local
- Emma
- 20
- Liam
- 30
- Olivia
- 0
La computadora 2 se enteró primero de Olivia
- Emma
- 50
- Liam
- 0
- Olivia
- 0
- Emma → Olivia 30Pasa la comprobación
- Emma → Liam 30Rechazado: solo quedan 20
Resultado local
- Emma
- 20
- Liam
- 0
- Olivia
- 30
Mismo registro inicial. Misma comprobación. Distinto orden de llegada. Distinto resultado.
Profundidad opcional
Un banco real, por supuesto, no guarda toda su información en una sola computadora física. Usa muchos sistemas, servidores y copias de seguridad.
Cuando decimos «una organización administra el registro», queremos decir que una organización tiene la autoridad para decidir cuál registro es el válido.
Y en una red descentralizada, muchas computadoras no votan simplemente la verdad por número de personas. Una persona puede operar muchas computadoras o crear muchas identidades.
Así que necesitamos algo más que «lo dijo la mayoría».