¿Tienes 5 minutos? Aprende blockchain con un caso de urgencia
diariomedico.com

¿Tienes 5 minutos? Aprende blockchain con un caso de urgencia

Una pequeña historia del para qué blockchain

Alfonso, Beatriz, Claudia y Daniel se encargan de la limpieza del equipamiento de un quirófano del área de urgencias de un hospital. La limpieza se realiza cada hora, las 24 horas del día y, además, se debe indicar cada vez que se cambian tanto la botella del producto limpiador, como el filtro de residuos de una de las máquinas de limpieza.

Trabajan en diferentes turnos, realizan otras funciones del hospital, y, para favorecerse la ‘conciliación’, a veces unos toman el turno de otros, o realizan cambios, buscando generar así periodos más largos de descanso, o descansar un momento específico.

Para registrar quién ha realizado cada turno, han pegado en la puerta de la sala de limpieza anexa al quirófano una hoja de papel donde cada uno registra su actividad.

No alt text provided for this image

Pero este no es un sistema seguro. Y, cuando se producen quejas de los profesionales que usan el material, se reconoce que esta lista no sirve para encontrar los problemas, ni habilitar las soluciones.

Para empezar, cualquiera puede hacer una nueva fila (una inserción) en esta tabla en cualquier momento, incluso a posteriori, o cambiar cualquiera de sus campos. Probablemente, la primera idea es pedir a cada técnico que firme su fila, pero con eso no estamos añadiendo seguridad. La firma puede “copiarse” y, además, no impide que se modifique lo que está escrito.

¿Qué pueden hacer? Por supuesto, la respuesta es aplicar blockchain para garantizar que la lista es fiable.

Blockchain garantiza que, en una cadena de inserciones, se sabe si todos los elementos han sido registrados en orden y si se han modificado después.

Básicamente, al recuperar una cadena de inserciones realizada con blockchain se puede afirmar si lo que se presenta está exactamente como lo han visto los que han ido añadiendo “bloques” en cada momento.

Vamos a hacerlo con este caso. Pondremos dos reglas básicas como protocolo de buena fe de quien añade una fila.

A partir de ahora, cuando se quiera añadir una fila, además del tiempo, se pone la diferencia con el anterior, para garantizar que no se meten filas intermedias. Y también vamos a pedir que en un campo numérico llamado “ID_CAMBIOS” vamos a repetir el que tiene el anterior y a sumar +1 si hay una nueva botella, o +2 si hay un nuevo filtro (si suceden ambos casos, sumaríamos +3). Así queda la nueva lista:

No alt text provided for this image

Ahora es imposible que, si esto se ha registrado así, alguien añada un registro en la media tabla o cambie los registros, sin afectar a todos los elementos posteriores de la cadena.

Y, ¡atención! esto no dice que los técnicos hayan limpiado bien o mal, sólo asegura que las inserciones de información se mantienen exactamente como en su momento se declaró que se hizo. Así que, si hay un problema higiénico, la lista construida con blockchain ayudaría en la investigación para certificar que esto fue lo que cada uno escribió; no nos va a decir quién no ha cumplido pero va a ayudar con información veraz.

¿Cuáles son los elementos blockchain que hemos visto?

En nuestra historia vemos algunos elementos típicos del blockchain

  • Bloques. Cada fila de la tabla
  • Información contenida en el bloque: Hora de la limpieza, técnico, cambio de botella y cambio de filtro
  • Metainformaciones relativas a bloques anteriores de la cadena: tiempo, ID_Cambios

Así que, simplemente, una lista con unas reglas para incorporar metainformación nos da una cadena de elementos segura.. Y ¡ojo! que por simple que parezca esto sería suficiente para garantizar cosas como la trazabilidad de la mercancía en la cadena alimentaria de algunos productos procesados.

Si quieres saber más... vamos ahora con la droga dura.

Obviamente, hay una visión más compleja para entender cómo esto se utiliza en algunos casos de uso como las criptomonedas.

El blockchain es la revolución en el almacenamiento distribuido entre entidades no federadas sin que haya un organismo central administrador; y esto abre la opción a todo tipo de acciones subversivas contra el orden establecido que podamos imaginar, aunque aquí vamos a manejarnos en el plano de la tecnología en lugar de hablar de la anarquía.

Vamos a entrar en una explicación más detallada de 3 elementos avanzados.

Protocolo de consenso

En primer lugar vamos a hablar de eso del "almacenamiento distribuido", sin entrar en detalle de la construcción del sistema, ya que en la práctica, si tú quisieras hacer una red blockchain tienes ya la opción de contratar una "rama" de una red ya creada, por ejemplo en ethereum, la que usa Azure (click aquí para saber más), o el servicio Blockchain as a Service que ofrece IBM.

Como digo, nuestra red será un conjunto de nodos informáticos identificados de forma segura, probablemente con un esquema de clave público-privada, conectados en red con unas reglas comunes (las que ponga ethereum o el proveedor que sea), con reglas específicas (hablaremos en el siguiente punto) y con conocimiento de la cadena que están construyendo hasta el momento actual.

Pues, por fin, aquí está la magia de blockchain, para decidir si un nuevo elemento, que es propuesto desde uno de los nodos, es válido y se suma a la cadena, y para retransmitir el nuevo estado de la cadena con el bloque añadido a todos los nodos, no es necesario un administrador central; se hará por mayoría. Es decir, si el 51% de los nodos aceptan, la inserción se produce.

Esto es muy importante porque en ocasiones, como en el caso de uso de las criptomonedas, los nodos "compiten" por añadir una nueva "pieza" a la reserva, y, por norma general no es fácil para los nodos de la red 'identificar' los candidatos que deben ser aceptados de los que no. Así que establecer un número finito para el 'tribunal de aceptación' es clave.

Para los ultrafreakis, si quieres saber más sobre esto, pregúntate cómo se resuelve el problema de los generales bizantinos aquí.

Encriptación con la función hash

Ya que el uso más sexy de blockchain son las criptomonedas, no podemos no hablar de encriptación. Vamos a empezar por la función hash que es una forma de encriptar que no se puede deshacer y eso es lo que te va a enamorar del blockchain.

Cuando hablamos de bloques, o de la cadena de bloques, en realidad vamos a manejar cadenas de longitud fija, las llamaremos genéricamente hash, con, por ejemplo, un cifrado SHA256, que ya has adivinado cómo de largo es. Un nuevo bloque producirá un hash, y la cadena completa también producirá un hash, que, cuando incorporemos el nuevo bloque, cambiará.

Pues resulta que cuando un elemento de la red analiza un hash para saber si lo que hay dentro es correcto, NO puede deshacer el hash aplicando una eventual 'regla de encriptación al revés', sino que lo que tiene que hacer es recalcular el hash con la variable que quiera descubrir, suponiendo que conoce la demás, a base de intentar todas las opciones. Sabrá que ha acertado cuando la función de encriptación devuelva el hash que había recibido.

Y esto ya es la leche cuando en cada bloque incorporamos el hash de la cadena hasta ese momento y luego aplicamos la función hash antes de enviarlo a los nodos para su evaluación.

Esfuerzo para 'minar' un nuevo bloque

Pero ¡ojo! más allá de garantizar la autoría de las inserciones y la inviolabilidad del código almacenado, la encriptación con la función hash añade otra variable a esto de obtener mensajes que es: el esfuerzo necesario.

Ya no sólo es que un intruso quiera alterar una red blockchain, es que además, tiene que valorar muy bien si puede, antes de intentarlo, porque no va a ser ni fácil, ni rápido, ni barato.

Por ejemplo, en nuestra cadena de la trazabilidad de la limpieza del quirófano, todo lo dicho hasta ahora se resume muy fácilmente.

No alt text provided for this image

En el momento de hacer la sexta inserción, que corresponde a Daniel a las 14.05, supongamos que Daniel y todos los nodos conocen la cadena hasta ese punto. Daniel desde su equipo, desde su 'nodo', que llamaremos D, solicita incorporar su fila, así que crea un bloque: con la información del hash hasta el momento, la hora, el tiempo, su nombre, las respuestas a ¿Nueva Botella? y ¿Cambio de Filtro? y el ID_Cambios.

Todo esto lo encripta y el nuevo hash con la solicitud de inserción se envía a los nodos Alfonso, Beatriz y Claudia para que lo validen.

¿Qué hacen los nodos A, B y C?

Suponen que D cumplen las normas y empiezan a crear bloques con una nueva hora (imaginemos que van de minuto en minuto), con la diferencia horaria calculada y con las cuatro opciones: no hay ningún cambio, cambia sólo la botella, cambia sólo el filtro o cambian ambos. En cada opción ponen el valor correspondiente en ID_Cambios.

Una vez hecho esto obtienen el hash, que en los primeros intentos, no va a coincidir con el que D ha mandado. Hasta que después de probar las 4 opciones de cambio con 54 minutos distintos, van a llegar a que probando un tiempo de 55 minutos e indicando NO y NO en las respuestas, se produce el ansiado hash. Cuando dos de los tres nodos lleguen a esta conclusión, se incorporaré el bloque a la cadena y se comunicará a los cuatro.

¿Qué pasaría si D no hubiera seguido las normas y hubiera puesto mal ID_Cambios? Pues que nunca hubiera sido aceptado. ¿Qué pasaría si D quisiera poner un tiempo que no corresponde en 'Tiempo'? Pues que nunca hubiera sido aceptado.

Lo mismo si alguien quiere hacer pasar por D pero no conoce como es exactamente llamado por A, B y C, o si quiere poner un reloj distinto en Hora de Limpieza, ya que todos comparten el mismo reloj.

Pues imagina ahora, y llegamos al final, que esto no fuera una lista de quirófano y que C y D estuvieran compitiendo por crear una moneda. Para empezar ten en cuenta que solo el que lo consiga gana, añade su bloque (que será un porcentaje del total de la cadena, con el valor que esto tenga) y se crea una nueva secuencia. Por supuesto, el trabajo hecho por el perdedor ya no vale, porque habría empezado a trabajar en una cadena que, con la adición del bloque del ganador ya no existe.

¿Una cuestión de suerte? ¿De rapidez en la comunicación de los nodos? No, en absoluto, la minería de criptomonedas, que es como se llama esta búsqueda, es una competición, matemática donde lo más importante no es el ingenio, sino los recursos tanto informáticos como financieros, y por lo tanto debe entenderse como una inversión.

Esto es así porque cuando blockchain se utiliza para generar secuencias convertibles en dinero, en criptomonedas, por un criterio lógico de que se quiere que la suma total del objeto convertible en valor (por ejemplo una cadena de bloques bitcoin) sea finito, escaso y difícil de producir, se utiliza un campo más dentro del bloque, llamado "nounce".

El nounce es un campo que sólo se puede calcular con una prueba de esfuerzo que puede ser tan difícil como: "Calcula el valor de la suma de todos los elementos del hash actual de la cadena de bloques al cuadrado, divídelo por el valor de la suma de todos los elementos de un nuevo hash calculado con un número primo en el campo nounce, y que la raíz cuadrada de esto sea otro número primo".

Te puedes imaginar que no es fácil dar con el "nounce" adecuado para cumplir una regla de este tipo, y esto es lo que hace que haya que crear verdaderas granjas que compitan para dar con el dichoso número y así "minar" un nuevo bloque para la cadena blockchain.

Pero como ya sabes, si has llegado hasta aquí y te has tragado este ladrillo para saber un poquito más de esto:

Quién algo quiere, algo le cuesta.
LOURDES SOL FERNANDEZ

Gestor Grandes Cuentas en Mutua Universal

5 años

Falta mucho para conseguir una cadena correcta con las diferentes zonas de riesgo, y prevenir el gran problema hospitalario de infecciones nosocomiales, no solo reporte de actividad... pero algo es algo.

Vicente A.

Global IT Director

5 años

Brillante ejemplo!

Araceli Olmedo

Business development manager

5 años

Muy bueno el artículo para entender blockchain en una práctica alejada de la tecnología y muy válida! Me ha gustado!

Antonio ESLAVA POLO

Integración Tecnológica en INNO 3000 | Formador en Nextraining | Fundador del Proyecto Crecimiento Cloud

5 años

Magnífico. Qué manera de aclarar, con sencillez, conceptos tan poco usuales para el profano. Enhorabuena.

Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas