MultiChain 2.1: Variables et bibliothèques

Nœud source: 1587135

Rendre les filtres intelligents beaucoup plus intelligents

Aujourd'hui, nous sommes ravis de publier MultiChain 2.1, avec deux nouvelles fonctionnalités importantes pour les développeurs MultiChain.

Il y a un an et demi, MultiChain 2.0 présentait Filtres intelligents, qui permettent d'intégrer une logique personnalisée dans une blockchain pour valider les transactions et les données. Les filtres intelligents sont conceptuellement similaires aux «contrats intelligents» fournis par d'autres plateformes de blockchain, mais ont une conception différente pour s'adapter au modèle de transaction plus rapide de MultiChain.

Les filtres intelligents sont disponibles en deux variétés: les filtres de transaction et les filtres de flux. Un filtre de transaction valide les transactions en chaîne dans leur intégralité, en examinant leurs entrées, sorties et métadonnées. Si une transaction ne passe pas le filtre, elle est rejetée par chaque nœud du réseau. Un filtre de flux valide les éléments individuels écrits dans un Flux MultiChain, en regardant leur (s) clé (s), éditeur (s) et données on-chain ou off-chain, au format JSON, texte ou binaire. Si un élément ne passe pas le filtre, il est marqué comme non valide et ses données sont masquées par chaque nœud abonné au flux.

Les deux types de filtre intelligent sont écrits en JavaScript et exécutés dans une version déterministe de Google V8, le moteur JavaScript ultra-rapide qui alimente Chrome, Node.js et de nombreuses autres plates-formes. Les filtres simples sont faciles à coder et à comprendre - par exemple, voici un filtre de flux qui valide que les éléments ont au moins deux clés:

fonction filtrestreamitem()
{
    var item=getfilterstreamitem(); // fonction de rappel
    si (item.keys.length2)
        return "Au moins deux clés requises" ;
}

Dans l'ensemble, nous avons eu d'excellents commentaires sur les filtres intelligents, mais nous avons également entendu à plusieurs reprises sur deux façons de les rendre encore meilleurs. Premièrement, de nombreux utilisateurs veulent des filtres capables de lire les informations qui se trouvent sur la blockchain mais pas dans la transaction ou l'élément de flux en cours de validation. Les cas d'utilisation incluent une liste changeante des pays autorisés, des taux de change fournis par un «oracle» externe ou un commutateur pour basculer certaines règles.

Deuxièmement, certains développeurs souhaitent utiliser un ensemble de fonctions JavaScript dans plusieurs filtres, sans dupliquer le code. Ils veulent également pouvoir mettre à jour ces fonctions, corriger un bug ou couvrir de nouvelles situations, sans désactiver leurs filtres existants et en créer de nouveaux à leur place. Par exemple, le code partagé peut contenir une logique spécifique à l'application, une bibliothèque tierce pour valider les JSON ou analyser le contenu d'un PDF.

MultiChaîne 2.1 introduit deux nouveaux types d'entités en chaîne, les variables ainsi que bibliothèques, pour répondre à ces besoins.

Variables

Commençons par les variables MultiChain. Ceux-ci fonctionnent assez comme ceux des langages de programmation classiques, mais avec une touche de blockchain. N'importe quel nombre de variables nommées peut être créé sur la blockchain. Chaque variable a un ensemble dynamique d'adresses qui est autorisé à mettre à jour sa valeur, et cet ensemble est géré par un ou plusieurs administrateurs de variables (par défaut, uniquement le créateur de la variable). Les variables sont créées ou mises à jour dans une transaction blockchain, qui peut être envoyée à l'aide d'une simple commande API de haut niveau. Alternativement, les API de niveau inférieur peuvent être utilisées pour créer des transactions complexes qui définissent de manière atomique une ou plusieurs variables, écrivent des éléments de flux, transfèrent des actifs, modifient les autorisations, etc.

La valeur de la variable elle-même peut contenir n'importe quelle structure JSON, y compris des nombres, des chaînes, des booléens, des objets imbriqués et des tableaux, et est stockée en chaîne dans le UBJSON format de sérialisation. Bien entendu, les filtres intelligents peuvent interroger la valeur actuelle d'une variable à l'aide d'une simple fonction de rappel. Mais comme il s'agit d'une blockchain, l'historique complet des valeurs et des écrivains de la variable est également disponible et peut être récupéré en partie ou en totalité à l'aide d'une autre fonction de rappel. Pour faciliter le développement, ces rappels sont également disponibles via l'API orientée vers l'application.

Bibliothèques

Passons aux bibliothèques, qui sont les plus grands frères des variables. Comme pour les variables, n'importe quel nombre de bibliothèques nommées peut être créé sur la blockchain. Mais les bibliothèques ont un modèle de mise à jour plus riche, avec trois modes disponibles - immuable, instantanéet soumis à l'approbation.

Une fois immuable bibliothèque est créée, son code ne peut jamais être modifié. Une bibliothèque avec instantané les mises à jour peuvent être modifiées comme une variable, avec un ensemble d'adresses pouvant remplacer individuellement son code. Mais dans une bibliothèque avec soumis à l'approbation mises à jour, une mise à jour n'est appliquée qu'après avoir été approuvée par une certaine proportion des administrateurs mondiaux de la blockchain. Ce dernier mode offre un excellent compromis entre sécurité et flexibilité.

Le code d'une bibliothèque est écrit en JavaScript standard et définit une ou plusieurs fonctions à utiliser par les filtres dynamiques. Comme pour les variables, les bibliothèques sont créées ou mises à jour dans une transaction spéciale, envoyée facilement à l'aide de l'API. Lorsqu'un filtre intelligent est créé, ses bibliothèques requises sont ensuite fournies dans un paramètre facultatif. Une bibliothèque s'exécute toujours dans le contexte du filtre qui l'exige, afin de pouvoir utiliser les rappels Smart Filter le cas échéant. MultiChain fournit des fonctionnalités étendues pour tester (et restaurer) les bibliothèques et leurs mises à jour localement, avant d'effectuer une modification sur la blockchain.

Pour finir

Comme pour toutes les fonctionnalités relatives aux règles de la blockchain, les variables et les bibliothèques sont disponibles dans les éditions Community et Enterprise de MultiChain 2.1. Notre documentation développeur fournit une description détaillée du nouveau API JSON-RPC ainsi que Rappels de filtre intelligent disponible. Pour utiliser les nouvelles fonctionnalités sur une blockchain déjà en cours d'exécution, commencez par migrer les nœuds vers MultiChain 2.1, puis améliorer le protocole de la chaîne vers la version 20012.

Alors, quelle est la prochaine étape? Au cours des prochains mois, nous nous concentrerons sur des travaux détaillés et intenses sous le capot, afin d'améliorer les performances et la concurrence de MultiChain lorsqu'il est soumis à une charge importante. Cela augmentera la réactivité des applications qui doivent interroger un nœud tout en continuant à traiter des centaines ou des milliers de nouvelles transactions par seconde.

En attendant, nous tous membres de l'équipe MultiChain souhaitons à nos utilisateurs et clients santé et santé mentale pour l'année à venir. Nous savons que ce sont des moments difficiles pour tout le monde et nous avons hâte de revenir au rythme normal des réunions et des conférences dès que ce sera sûr.

Veuillez poster vos commentaires sur LinkedIn.

Horodatage:

Plus de Multichain