MultiChain 2.1: Variables y bibliotecas

Nodo de origen: 1587135

Hacer que los filtros inteligentes sean mucho más inteligentes

Hoy, estamos encantados de lanzar MultiChain 2.1, con dos nuevas funciones importantes para los desarrolladores de MultiChain.

Hace un año y medio, MultiChain 2.0 introdujo Filtros inteligentes, que permiten que la lógica personalizada se incruste en una cadena de bloques para validar transacciones y datos. Los filtros inteligentes son conceptualmente similares a los "contratos inteligentes" proporcionados por otras plataformas blockchain, pero tienen un diseño diferente para adaptarse al modelo de transacción más rápido de MultiChain.

Los filtros inteligentes vienen en dos variedades: filtros de transacciones y filtros de flujo. Un filtro de transacciones valida las transacciones en cadena en su totalidad, examinando sus entradas, salidas y metadatos. Si una transacción no pasa el filtro, es rechazada por todos los nodos de la red. Un filtro de flujo valida elementos individuales escritos en un Transmisión de cadenas múltiples, mirando su (s) clave (s), editor (es) y datos dentro o fuera de la cadena, en formato JSON, texto o binario. Si un elemento no pasa el filtro, se marca como no válido y todos los nodos suscritos a la secuencia ocultan sus datos.

Ambos tipos de filtro inteligente están escritos en JavaScript y se ejecutan dentro de una versión determinista de Google V8, el motor JavaScript súper rápido que impulsa a Chrome, Node.js y muchas otras plataformas. Los filtros simples son fáciles de codificar y comprender; por ejemplo, aquí hay un filtro de flujo que valida que los elementos tengan al menos dos claves:

función filterstreamitem() { var elemento=getfilterstreamitem(); // función de devolución de llamada si (item.keys.length2) devuelve "Se requieren al menos dos claves"; }

En general, hemos recibido excelentes comentarios sobre los filtros inteligentes, pero también hemos escuchado repetidamente acerca de dos formas en que podríamos mejorarlos aún más. Primero, muchos usuarios quieren filtros que puedan leer información que está en la cadena de bloques pero no dentro de la transacción o el elemento de transmisión que se está validando. Los casos de uso incluyen una lista cambiante de países permitidos, tipos de cambio proporcionados por un "oráculo" externo o un interruptor para alternar ciertas reglas.

En segundo lugar, algunos desarrolladores quieren utilizar un conjunto de funciones de JavaScript en varios filtros, sin duplicar código. También quieren poder actualizar estas funciones, corregir un error o cubrir algunas situaciones nuevas, sin deshabilitar sus filtros existentes y crear otros nuevos en su lugar. Por ejemplo, el código compartido podría contener lógica específica de la aplicación, una biblioteca de terceros para validar JSON o analizar el contenido de un PDF.

Multicadena 2.1 introduce dos nuevos tipos de entidad en cadena, las variables y bibliotecas, para responder a estas necesidades.

Variables

Comencemos con las variables de MultiChain. Estos funcionan como los de los lenguajes de programación normales, pero con un toque blockchain. Se puede crear cualquier cantidad de variables con nombre en la cadena de bloques. Cada variable tiene un conjunto dinámico de direcciones a las que se le permite actualizar su valor, y este conjunto es administrado por uno o más administradores de variables (por defecto, solo el creador de la variable). Las variables se crean o actualizan en una transacción de blockchain, que se puede enviar mediante un simple comando de API de alto nivel. Alternativamente, las API de nivel inferior se pueden utilizar para crear transacciones complejas que establecen de forma atómica una o más variables, escriben elementos de flujo, transfieren activos, cambian permisos, etc.

El valor de la variable en sí mismo puede contener cualquier estructura JSON, incluidos números, cadenas, valores booleanos, objetos anidados y matrices, y se almacena en cadena en el eficiente UBJSON formato de serialización. Por supuesto, los filtros inteligentes pueden consultar el valor actual de una variable mediante una función de devolución de llamada simple. Pero debido a que se trata de una cadena de bloques, el historial completo de los valores y escritores de la variable también está disponible, y se puede recuperar en parte o en su totalidad utilizando otra función de devolución de llamada. Para facilitar el desarrollo, estas devoluciones de llamada también están disponibles a través de la API orientada a la aplicación.

Bibliotecas

Pasemos a las bibliotecas, que son el hermano mayor de las variables. Al igual que con las variables, se puede crear cualquier cantidad de bibliotecas con nombre en la cadena de bloques. Pero las bibliotecas tienen un modelo más rico para actualizar, con tres modos disponibles: inmutable, instantáneoy sujeto a aprobación.

Una vez inmutable se crea la biblioteca, su código nunca se puede cambiar. Una biblioteca con instantáneo las actualizaciones se pueden cambiar como una variable, con un conjunto de direcciones que pueden reemplazar individualmente su código. Pero en una biblioteca con sujeto a aprobación actualizaciones, una actualización solo se aplica después de ser aprobada por una cierta proporción de los administradores globales de blockchain. Este último modo ofrece un gran equilibrio entre seguridad y flexibilidad.

El código de una biblioteca está escrito en JavaScript normal y define una o más funciones para que las utilicen los filtros inteligentes. Al igual que con las variables, las bibliotecas se crean o actualizan en una transacción especial, enviada fácilmente usando la API. Cuando se crea un filtro inteligente, sus bibliotecas necesarias se proporcionan en un parámetro opcional. Una biblioteca siempre se ejecuta en el contexto del filtro que lo requiere, por lo que puede usar devoluciones de llamada de Smart Filter cuando corresponda. MultiChain proporciona una amplia funcionalidad para probar (y revertir) bibliotecas y sus actualizaciones localmente, antes de realizar un cambio en la cadena de bloques.

En resumen

Al igual que con todas las funciones relacionadas con las reglas de blockchain, las variables y bibliotecas están disponibles en las ediciones Community y Enterprise de MultiChain 2.1. Nuestra documentación para desarrolladores proporciona una descripción detallada de la nueva API JSON-RPC y Devoluciones de llamada de filtro inteligente disponible. Para usar las nuevas funciones en una cadena de bloques que ya se está ejecutando, primero migre los nodos a MultiChain 2.1, luego actualizar el protocolo de la cadena a la versión 20012.

¿Qué es lo siguiente? En los próximos meses, nos centraremos en un trabajo detallado e intenso bajo el capó, para mejorar el rendimiento y la concurrencia de MultiChain mientras está bajo una carga significativa. Esto aumentará la capacidad de respuesta de las aplicaciones que necesitan consultar un nodo mientras continúa procesando cientos o miles de nuevas transacciones por segundo.

Mientras tanto, todos los que formamos parte del equipo de MultiChain deseamos a nuestros usuarios y clientes salud y cordura para el próximo año. Sabemos que son tiempos difíciles para todos, y esperamos volver al ritmo normal de reuniones y conferencias tan pronto como sea seguro.

Por favor publique cualquier comentario en Linkedin.

Sello de tiempo:

Mas de Multicain