Drupal se encuentra con Blockchain, Blockchain se encuentra con Drupal.

Resumen

Introducción

Aquí en Chainfrog https://www.linkedin.com/company/chainfrog/ hemos estado trabajando con tecnologías blockchain durante años, mucho antes de que #blockchain mania se convirtiera en la corriente principal. Como tal, hemos estado explorando el potencial de muchas formas diferentes. Dada la experiencia que nuestro equipo de ingenieros tiene trabajando con Drupal, en algún momento fue inevitable que comenzáramos a trabajar en una forma de aplicar tecnologías blockchain a Drupal, y en particular a la infraestructura de Drupal tal como se implementa en la naturaleza.

Tenemos un ototipo p r impulsado por el cliente con un caso de uso interesante que aprovecha al máximo las ventajas de blockchain (¡no #blockchain por # blockchain!). Tenemos permiso para mostrar algunas de las funciones a la comunidad, así que entraré en detalles sobre lo que está sucediendo bajo el capó y, por supuesto, vincularé a la demostración en funcionamiento.

El ** punto ** de usar blockchain para sincronizar usuarios es asegurarse de que los datos de usuario asociados estén sincronizados y disponibles en toda la infraestructura corporativa, tales casos de uso podrían ser el historial de comunicaciones, direcciones, datos de perfil de usuario. Esto no es adecuado ni pretende ser ningún tipo de sistema de “verificación de usuario” para el que existen soluciones mucho más apropiadas y maduras.

De hecho, esta solución cuando se implemente en producción, no tendrá integración con la autenticación de usuario. Se utiliza únicamente para garantizar que la información importante guardada utilizada se comparta a través de un libro mayor distribuido, que creemos que es una alternativa más natural que conectar muchos sistemas diferentes con una base de datos “centralizada”. La información del perfil de usuario, el historial de comunicaciones, los mensajes y otra información personalizada del usuario son el objetivo de este prototipo. NO, en ningún momento, se pretende que sea una alternativa de autenticación o verificación del usuario.

1. ¿Por qué querría sincronizar usuarios a través de blockchain?

En primer lugar, ¿por qué querrías sincronizar usuarios a través de blockchain? Una buena pregunta, con respuestas válidas.

Hay muchos casos de uso en los que desearía una forma de sincronizar de forma segura los usuarios de Drupal. Un ejemplo práctico es el de las grandes empresas / instituciones gubernamentales. A menudo es una “estrategia” utilizar Drupal, sin embargo, dentro de las grandes organizaciones hay muchos departamentos y funciones. Esto significa que prácticamente, se requieren instalaciones de Drupal separadas para cada función comercial. En un ejemplo simple, Drupal A podría ocuparse del servicio al cliente / consultas, y Drupal B se ocupa de mantener actualizada la información legal y mantener registros de cumplimiento. Sitios separados, que pertenecen y son operados por diferentes equipos, pero que se encuentran bajo el mismo paraguas corporativo.

Esto puede resultar en una experiencia frustrante para un usuario externo que se registra en un sistema de “empresa”. Es fácil imaginar una situación en la que un usuario se registra con Drupal A, luego, cuando quieren interactuar con Drupal B, se ven obligados a repetir el proceso de registro (o tener una experiencia igualmente frustrante con un sistema separado). La solución común a este problema es que cada organización mantenga una gran base de datos centralizada. Como alguien que ha trabajado con Drupal durante muchos años, es común asignar formularios de registro de usuarios con una API de empresa centralizada, asegurándose de que los datos de una institución / empresa estén almacenados. Funciona algo como esto:

Drupal A & lt; – Base de datos central – & gt; Drupal B

El problema con esta integración es que necesita sincronizarse en muchos lugares. Primero, necesitará lógica para personalizar el formulario de registro de usuario (asegúrese de que esté verificando con la API que el usuario no existe, etc.). También necesitará lógica para verificar que los datos estén sincronizados (tal vez actualizando al usuario en cada inicio de sesión). Básicamente, está “redireccionando” gran parte de la funcionalidad de su usuario y evitando el sistema maduro de Drupal. Aparte de la vulnerabilidad a errores en la lógica, como no actualizar el objeto de usuario en el momento adecuado o actualizar accidentalmente la base de datos centralizada con datos del sistema incorrecto o simplemente la sobrecarga de tener tantas llamadas API a los datos sincronizados, es también creando un sistema ‘EXTRA’ para mantener y usar.

El objetivo final de esta arquitectura es tener datos de usuario seguros, segregados pero sincronizados en su instalación de Drupal. Si puede mantener los datos sincronizados, pero tiene objetos de usuario separados con campos personalizados y lógica en cada sitio, eso es una ventaja (¡y exactamente lo que hemos logrado!)

2. ¿Cómo sincronizarías usuarios a través de blockchain?

Ahora debo admitir que hemos hecho un poco de trampa aquí, porque ya hemos escrito código que encripta y sincroniza bases de datos a través de blockchain. Esta no es una tarea sencilla, pero nuestro producto blockbinder nos permite comunicarnos a través de un libro mayor distribuido privado autorizado (blockchain para usted y para mí) sin exponer los datos a miradas indiscretas.

Entonces, donde el Departamento A y el Departamento B mantenían previamente un “banco de usuarios”, con una capa de API cara y bastantes puntos potenciales de falla. Lo hemos reemplazado con la sincronización del usuario a través de un módulo personalizado de Drupal 8 transmitido a través de una cadena de bloques privada autorizada.

Hay varias partes en esto, la parte de Drupal es simple:

Este fragmento de código será bastante familiar para los desarrolladores de Drupal, simplemente ejecutamos unas pocas líneas de código cada vez que se agrega un usuario al sistema Drupal. Estamos verificando si el usuario existe en nuestra tabla de datos “Blockbinder” (que existe como una tabla adicional en nuestra base de datos de Drupal), y actualizando o insertando en consecuencia. Aquí es donde ocurre la parte interesante. Un flujo de trabajo típico para un sistema basado en API sería realizar una llamada HTTP con el nuevo usuario a un banco de datos centralizado.

En este punto, hay dos resultados posibles, o los datos se han agregado correctamente a la API centralizada o ha habido una falla o algún tipo de problema. En este caso, necesitamos lógica adicional en Drupal (devolviendo un error de “correo electrónico ya registrado”, por ejemplo). Si los datos se agregan correctamente, todas las demás instalaciones dependientes ahora tienen que sincronizar sus datos de usuario desactualizados con la API centralizada. En el momento en que los datos del usuario se han agregado a la API, todas las bases de datos dependientes están desincronizadas y se basará en su código / sistemas para garantizar que se “sincronice” antes de que comiencen a utilizar la lógica empresarial relacionada con sus usuarios. Muchos puntos de falla y no un proceso del todo eficiente.

Lo que hemos hecho con nuestro libro mayor privado distribuido de igual a igual es que hemos eliminado la API en el medio y hemos conectado directamente el sistema A y el sistema B.

Nuestro nuevo sistema de sincronización de igual a igual es mucho más simple.

He mostrado un fragmento del código en el módulo, enviando los datos del usuario. Ahora mostraré lo que sucede cuando los datos se pasan a través de blockchain.

Por lo general, un objeto de usuario se propagará a cada nodo adjunto en la cadena de bloques en unos 30 segundos. Esto significa que dentro de los 30 segundos posteriores a la inserción o edición en cualquiera de nuestras instalaciones de Drupal, hemos actualizado y sincronizado completamente los datos del usuario en toda nuestra red. Esto no requiere costosas llamadas a la API ni mantenimiento, y estamos aprovechando la madurez de la infraestructura de Drupal en todos los puntos (sin sistemas de terceros).

3. ¡Pruébelo usted mismo!

He configurado un prototipo rápido y sucio que ejecuta dos instalaciones de Drupal en servidores separados, sincronizando a sus usuarios con una versión “lite” de nuestro módulo Blockbinder Drupal. Para seguir la demostración, puede hacer lo siguiente:

Obviamente, esto es solo una muestra del potencial de aplicar Blockchain a Drupal, pero como es un prototipo funcional (¡y uno de los comentarios más comunes que recibimos es la demanda de ver blockchain en acción!), Pensé que era un buen avance para compartir con la comunidad. ¡Tenemos demostraciones en funcionamiento de sincronización de contenido (bancos de datos comunes de Drupal) y todo tipo de grandes proyectos impulsados ​​por el cliente en construcción!

Cualquiera que esté interesado en Blockchain y Drupal, o en explorar Blockchain con más detalle, no dude en ponerse en contacto conmigo a través de medium o linkedin / twitter (¡todos los enlaces de redes sociales a continuación!).

¡Blockchain conoce a Drupal, Drupal conoce a Blockchain!

Respuesta de la cadena de bloques COVID-19 – & gt;

En estos tiempos difíciles, hemos publicado un sistema POC para un sistema distribuido blockchain para proporcionar fuentes de datos e implementar un sistema de semáforo, siga los blogs aquí: https://medium.com/@ed_burton/a-blockchain- sistema-de-respuesta-covid-poc-889d9b74786e