Cómo el blockchain podría ayudarte en una isla desierta
Glen Jackson/Unsplash
Página principal Análisis, Blockchain

Si aún no sabe qué es un blockchain y cómo se usa, entonces este artículo le será de gran ayuda.

Si alguna vez se encuentra atrapado en una isla desierta, saber cómo llevar a cabo el proceso de consenso descentralizado - o en otras palabras, operar un blockchain simple a mano - puede resultar muy útil. Lo único que necesita son otros supervivientes, este artículo, un bolígrafo y algunos trozos de papel.

Volvamos a esa historia original y repasemos el proceso con nuestros intrépidos héroes, que acaban de estrellarse en una isla desierta en algún lugar del Pacífico Sur: Hugo, Sawyer, Kate y Jack.

Día 1

El grupo está intentando implementar IslandCoin, una nueva moneda revolucionaria que pondrá fin a la paralizada economía de trueque de la isla. El grupo está de acuerdo en que es justo que cada uno de ellos empiece con 100 monedas. Dado que no tienen metal para acuñar monedas reales, tendrán que hacerlo con unos pocos pedazos de papel. Debido a los problemas de confianza, el grupo no ha sido capaz de decidir quién se hará cargo de comprobar los saldos. Su única opción es mantener los saldos juntos.

¿Qué estamos intentando hacer? En realidad es muy simple: tan solo queremos mantener una simple tabla de saldos en un pedazo de papel. Esta tabla mostrará cuántas monedas tiene cada uno de nuestros héroes. El truco es que, puesto que no podemos tener un solo pedazo de papel que contenga la única fuente de verdad - vamos a tener que permitir que cada uno tenga su propio papel con sus datos - esta es la parte descentralizada. Y, naturalmente, también vamos a esperar que los cuatro trozos de papel acaben mostrando los mismos datos - esta es la parte del consenso.

¿Qué aspecto tendría este trozo de papel?

Este documento es el primero en el que estamos de acuerdo, por eso está marcado como día 1. ¿De dónde han salido estos saldos? Ya hemos acordado que es justo que cada uno empiece con 100 monedas. También vamos a necesitar que uno de los supervivientes escriba estos papeles. En realidad no importa quién, así que elegiremos a Hugo. Él será quien publique este papel para todos y se asegure de que cada uno guarde una copia (la isla tiene una fotocopiadora increíble).

Puesto que se espera que los saldos de monedas cambien, vamos a crear una nueva hoja de papel actualizada al final de cada día. Sin embargo, puede que no siempre sea Hugo quien publique la actualización - queremos que todo sea lo más justo posible.

Otra parte importante es que, debido a la falta de confianza mutua en el grupo, cada uno de sus miembros confirme la actualización de la situación individualmente. Una manera fácil de lograrlo es que cada uno de los supervivientes firme cada uno de los papeles, pero solo si está de acuerdo con lo que está escrito en ellos.

¿Cuántas personas necesitan firmar un documento para que se considere definitivo y aprobado? Necesitamos llegar a un consenso, así que la mayoría lo hará. Puesto que tenemos 4 personas en total, una mayoría es por lo menos 3 de 4. El papel de arriba fue firmado por los cuatro, así que es definitivo. ¿Por qué no queremos exigir las cuatro firmas en todos los papeles? Porque esto permitirá que un individuo ponga en peligro todo el proceso. Si Sawyer se va de pesca durante unos días, el grupo no podría actualizar los saldos hasta que regrese - esto le da a una persona demasiado poder. ¿Por qué necesitamos una mayoría? ¿Por qué no son suficientes 2 de 4 firmas? Porque si solo necesitamos 2 de 4, podemos terminar con 2 personas (como Hugo y Sawyer) firmando una versión de los saldos, y las otras 2 personas (Kate y Jack) firmando una versión diferente que no coincida. No podemos tener dos versiones contradictorias de la realidad consideradas definitivas.

Día 2

En la mañana del segundo día, Kate quiere comprar un tomate. Hugo vende tomates por 2 monedas cada uno. Quiere transferirle dos monedas a Hugo. Kate coge un nuevo pedazo de papel y escribe la transferencia en él:

Es la primera acción de Kate, así que la etiqueta como tal. Además, Kate firma este papel. Tenemos que tener su firma para asegurarnos de que nadie más pueda falsificar una solicitud de transferencia en su cuenta.

El final del segundo día se acerca y el grupo quiere publicar un conjunto actualizado de los saldos. Hugo publicó la información del primer día y recogió las firmas de todos. Tiene sentido tomar turnos para hacerlo. El grupo está de acuerdo en usar una simple orden rotativa: Hugo, Sawyer, Kate, Jack, Hugo, Sawyer, y así sucesivamente. Esto significa que la publicación del documento de saldos para el día 2 es responsabilidad de Sawyer. El documento que publica refleja la transferencia de Kate:

Este papel que hizo Sawyer aún no es definitivo porque solo está firmado por Sawyer. Necesita recoger más firmas. Sawyer le pide a cada uno que lo verifique y firme. Este papel es muy fácil de verificar. En primer lugar, el verificador necesita buscar en su propia colección de papeles y encontrar el papel de saldos que muestra los saldos del día anterior (día 1 en este caso). Luego, el verificador necesita repasar la nueva lista de transferencias. En este caso, solo tenemos una transferencia de Kate. Esta transferencia es fácil de verificar, podemos asegurarnos de que esté firmada por Kate y podemos asegurarnos de que Kate tenga suficientes monedas en su balance para darle esta cantidad a Hugo.

Una vez que cada habitante de la isla completa su proceso de verificación y firma el documento, Sawyer ahora tiene un documento de saldo final para el día 2. Todo el mundo hace una copia y se va a dormir feliz y contento.

Día 3

El día 3 ya ha llegado. El sistema está funcionando bien y todo el mundo está contento de gastar sus monedas. Hugo quiere comprarle leña a Sawyer por 10 monedas. Sawyer quiere conseguir algunas pastillas de Jack por 25 monedas y Jack quiere un tomate y quiere darle a Hugo 2 monedas para comprar uno. Cada uno de ellos crea un pedazo de papel detallando su transferencia:

La persona que publica los balances de hoy es Kate. Para asegurarse de que Kate incluya estas transferencias en su propuesta de papel, cada uno de ellos debe darle una copia de su solicitud de transferencia. En realidad tiene sentido dar copias a todo el mundo porque la persona que desea realizar una transferencia no recuerda necesariamente de quién es el turno de publicar la actualización de hoy.

Jack se demora en entregarle a Kate la copia de su solicitud de transferencia y para cuando se la entregue, su saldo del día ya está escrito:

Jack está frustrado porque este saldo no incluye su propia transferencia. Esto significa que Hugo no recibirá el pago de Jack por el tomate, y no le dará a Jack el tomate para la cena. Jack se va a dormir hambriento esta noche. Sale a buscar algo más para comer y no firma la propuesta de papel de Kate para el día. Por suerte, Kate es capaz de obtener suficientes firmas del resto del grupo:

Kate logró obtener 3 firmas, cada una verificando que los saldos efectivamente coinciden con las transferencias y los saldos de ayer. Tenemos mayoría, así que este documento se considera definitivo.

Día 4

Es el día 4 y nadie sabe dónde está Jack. Fue a pescar la noche anterior, se quedó atrapado en una tormenta y no regresó al campamento. Esto podría ser un problema, ya que hoy le toca a Jack publicar la actualización del saldo.

Kate quiere hacer un par de transferencias hoy, las escribe en un pedazo de papel y les da una copia a todos:

La noche se acerca y Jack aún no ha vuelto. El grupo había acordado anteriormente que es su turno, pero no está en ninguna parte, así que ese día se saltan el proceso.

Día 5

Es el día 5, y Hugo es el responsable de publicar la actualización diaria. Ha estado lloviendo durante unos días y Hugo quiere un lugar más cálido para dormir. Le pide a Sawyer que le construya una pequeña cabaña de madera. Sawyer quiere 200 monedas por el trabajo. Esto es un problema, ya que Hugo solo tiene 98 monedas. Hugo tiene una idea, él es el que publica el balance hoy, así que ¿por qué no añadir una transferencia de esta cantidad a Sawyer de todos modos?

No hay otras transferencias hoy. Sin embargo, Hugo tiene las transferencias de Kate de ayer, y la transferencia de Jack del día anterior que no acabó realizándose. Añade todo eso, junto con su nueva transferencia:

Hugo firma esta actualización aunque su transferencia no tiene sentido. Para que esta actualización sea definitiva, necesita recoger 2 firmas más. Cuando se acerca a Sawyer y Kate, estos se dan cuenta de que en el balance final anterior (desde el día 3), Hugo tenía 92 monedas. ¿Cómo puede enviar 200 a Sawyer? Se niegan a firmar este balance hasta que arregle este error y elimine esta transferencia inválida. Acepta a regañadientes y publica un nuevo balance que es correcto. Al final lo firman:

Esta actualización de saldo es definitiva porque tiene 3 firmas.

Día 6

Es la mañana del día 6. Jack regresa al campamento. Tuvo un par de días difíciles con la tormenta. No participó en las discusiones de los últimos dos días y se perdió los anuncios de nuevas transferencias y la publicación de nuevas actualizaciones de saldos. En realidad no está seguro de cuántas monedas tiene. Encuentra al primer superviviente que ve y le pide que le cuente qué ha pasado durante esos días. Este recibe la actualización final para el día 5 y la actualización aprobada Kate que publicó el día 3.

A Jack le resulta fácil volver a sincronizarse con el resto del grupo. Puede ver que estas actualizaciones de saldo fueron firmadas al menos 3 veces, por lo que puede estar relativamente seguro de que están bien. También puede realizar los cálculos él mismo basándose en estas actualizaciones y en la última actualización que tenga (desde el día 2). Esto le permitirá a Jack participar en las transferencias de hoy como si no se hubiera perdido nada.

El sistema parece funcionar bien. Es cierto que es un poco simplista, pero es suficiente para lo que estos habitantes de la isla necesitan.

Conclusión

¿Por qué esto se considera un blockchain? Para empezar, cada pedazo de papel publicado diariamente representa un bloque. Cada bloque está numerado y apunta al anterior, formando un blockchain. Para verificar el estado actual de los saldos, cualquier observador debe comenzar desde el principio de la cadena (día 1 - el bloque génesis) y verificar cada uno de los bloques. Los saldos se construyen de forma incremental.

¿Se trata de una implementación ideal del blockchain? Probablemente no. Se puede mejorar de muchas maneras. Por ejemplo, solo apoya a estos 4 habitantes. ¿Qué pasa si otro superviviente se estrella en la isla? ¿Les servirá este protocolo? Este protocolo también está actualmente permitido, ¿cómo podemos convertirlo en un protocolo sin permiso? ¿Y si quisiéramos modificarlo para usar el proof-of-work en vez del proof-of-stake? Ya lo averiguaremos en otro momento.

Fuente: Hacker Noon

Lea también:
Por favor, describa el error
Cerrar