1. Blockchain
Maintenant, quand j'écris cet article, le taux de change du Bitcoin a chuté de plus de 5 fois par rapport à la valeur maximale et quand j'ai dit que je faisais quelque chose en rapport avec la blockchain, la première chose que j'entends est le scepticisme ouvert - "qui a besoin de tout cela votre blockchain maintenant" .
Oui, en effet, le battage médiatique autour de la blockchain est passé. Mais les technologies sous-jacentes sont restées, elles se développent et continueront de se développer et d'être utilisées dans certaines niches.
Sur Internet et en particulier sur Habré, il existe de nombreux documents décrivant les deux domaines généraux d'application de la technologie (par exemple,
habr.com/company/bitfury/blog/353350 et des exemples plus spécifiques de
habr.com/company/raiffeisenbank/blog/332756 ).
Comme vous le savez, la blockchain est un registre distribué, c'est-à-dire une base de données répartie entre plusieurs nœuds tandis que chaque nœud stocke une copie complète du registre. La particularité de la blockchain est que les enregistrements (transactions) sont regroupés en blocs, et les blocs sont combinés en une chaîne de blocs. Cependant, seules les opérations d'ajout de données sont disponibles. Tout cela conduit au fait qu'il est presque impossible d'apporter des modifications aux transactions déjà enregistrées dans la blockchain.
Il existe de nombreux documents sur le fonctionnement de la blockchain (si vous n'avez jamais entendu parler de la blockchain auparavant, vous pouvez commencer par
cette simple vidéo ).
Au moment de l'augmentation maximale de l'intérêt pour la technologie de la blockchain, il y avait de nombreux appels à utiliser la blockchain absolument partout. Cependant, il existe certains signes de projets / tâches, dont la mise en œuvre peut nécessiter une blockchain.
Tout d'abord, la participation d'un grand nombre d'acteurs (utilisateurs) qui enregistrent des données, alors qu'il est nécessaire de prévenir les incohérences et d'accroître la confiance.
Deuxièmement, l'absence d'un tiers auquel tout le monde fait confiance.
Troisièmement, la nécessité d'un mécanisme de vérification des données publiques.
Si toutes les conditions ci-dessus sont remplies, vous devez penser à utiliser une blockchain.
De telles tâches peuvent survenir dans n'importe quelle industrie. Le projet
www.101blockchains.com recueille des informations sur les projets potentiels et mis en œuvre, ainsi que sur les caractéristiques de l'utilisation de la blockchain dans différents domaines.
Par exemple, dans le secteur de la santé, la blockchain peut être utilisée:
- pour une gestion sûre des données des patients;
- lutter contre les médicaments contrefaits grâce à des transactions invariables tout au long de la chaîne d'approvisionnement;
- améliorer la surveillance et l'efficacité des essais cliniques en éliminant la fraude et la manipulation des données.
Lors de l'utilisation de la blockchain dans le segment d'entreprise, ils utilisent généralement une blockchain privée avec différents niveaux d'autorisation (Blockchain autorisé et privé). Ces réseaux ont un ensemble spécial de nœuds pour confirmer les transactions.
Cependant, lors du développement du premier adaptateur InterSystems IRIS pour travailler avec la blockchain, nous avons choisi
Ethereum , qui appartient à la catégorie de la blockchain sans autorisation - une plate-forme ouverte sans organe directeur. Ce choix est associé à la popularité d'Ethereum et d'une infrastructure assez développée: la présence de divers outils et bibliothèques. Vous pouvez également remarquer qu'en utilisant le logiciel Ethereum, vous pouvez
créer une blockchain privée .
2. L'adaptateur
Il est maintenant temps de passer à l'adaptateur lui-même.
Un adaptateur dans InterSystems IRIS (ainsi que dans Ensemble) est une classe ou un package de classes InterSystems IRIS qui permettent de travailler avec un système externe. Les adaptateurs InterSystems IRIS sont divisés en entrants (pour recevoir des données d'un système externe lorsque le système externe est l'initiateur de l'interaction) et sortants (pour travailler avec un système externe lorsque l'initiateur de l'interaction est InterSystems IRIS).
L'adaptateur IRIS Ethereum est un adaptateur sortant et est légèrement différent de la plupart des autres adaptateurs IRIS InterSystems, car une partie de cet adaptateur est un ensemble de classes IRIS InterSystems, mais l'adaptateur comprend également un petit module NodeJS. L'architecture est illustrée à la figure 1.
Figure 1Le module adaptateur NodeJS utilise les bibliothèques NodeJS existantes pour fonctionner avec Ethereum.
L'adaptateur offre les fonctionnalités suivantes:
- Placez un contrat intelligent dans Ethereum (nous prévoyons de préparer un autre article dans lequel nous parlerons davantage des contrats intelligents, des outils de développement et discuterons d'un exemple).
- Appelez les méthodes de contrat intelligent: à la fois des méthodes qui ne modifient pas l'état de la blockchain et des méthodes qui modifient l'état de la blockchain
- Sauvegarder une transaction (transférer des fonds d'un portefeuille à un autre)
- Appel de méthodes d'assistance pour obtenir l'état de la chaîne de blocs
- Consigner toutes les requêtes (exécute le module NodeJS, utile pour le débogage)
L'adaptateur est disponible avec le code source OpenExchange .
3. Un exemple simple
Un exemple «Hello world» est installé avec l'adaptateur.
Pour commencer à travailler avec Ethereum (y compris pour exécuter cet exemple), vous devez:
- Choisissez le réseau avec lequel vous travaillerez. Pour le développement, des réseaux de test tels que Ropsten sont généralement utilisés.
- Créez un portefeuille sur ce réseau et réapprovisionnez-le
- Installez un client Ethereum local (par exemple, Geth) ou obtenez une clé pour travailler avec un fournisseur de cloud (par exemple, Infura)
Lors de la configuration d'une transaction commerciale, vous devez spécifier (figure 2):
- Serveur et port sur lesquels le module NodeJS est exécuté (le port par défaut est 3000)
- Paramètres du fournisseur (dans ce cas, accès à Infura)
- Détails d'accès (dans les détails d'accès, vous devez indiquer votre portefeuille comme nom d'utilisateur, la clé privée du portefeuille comme mot de passe. Dans InterSystems IRIS, les détails d'accès sont stockés dans une base de données distincte, pour laquelle le cryptage doit être activé)
Figure 2Pour travailler avec des contrats intelligents, vous devrez créer (pour chaque contrat intelligent que vous contacterez) un dossier dans le système de fichiers et y placer 2 fichiers:
* abi.txt
* bytecode.txt
Ces fichiers doivent avoir un contrat intelligent ABI et un Bytecode. Smart contract ABI - une description formelle de l'interface de contrat intelligent au format json. ABI et Bytecode sont créés au moment de la compilation du contrat intelligent.
Le bytecode n'est nécessaire que pour déployer un contrat.
À l'aide du service de test, vous pouvez vérifier le fonctionnement d'une transaction commerciale.
Dans la figure 3, à l'aide du service de test, le contrat intelligent est déployé. Le résultat de l'appel de cette opération commerciale est un message contenant un hachage de transaction.
Figure 3En utilisant le navigateur ropsten.etherscan.io (https://etherscan.io/), vous pouvez trouver cette transaction et obtenir l'adresse du contrat intelligent passé.
Pour exécuter des méthodes de contrat intelligent à l'aide de l'adaptateur, vous devez spécifier les paramètres dans la configuration du produit: ContractFolder et ContractAddress.
Le code pour appeler la méthode du contrat intelligent est assez simple:
set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt") set contract = ..Adapter.GetContract( ##class(Ethereum.Address).%New(..ContractAddress), ..ContractABI) set result = contract.hello() set pResponse = ##class(Ens.StringContainer).%New(result.args)
À l'aide de la méthode de l'adaptateur GetContract, à laquelle l'adresse du contrat intelligent et ABI est transmise, un objet de contrat intelligent est créé, qui est ensuite utilisé pour appeler les méthodes. Dans ce cas, la méthode hello () doit être définie dans le contrat intelligent, qui renvoie une chaîne.
Dans cet exemple, la méthode hello () ne change pas l'état de la blockchain, elle peut donc être appelée de manière synchrone. Cependant, les méthodes qui modifient l'état de la blockchain peuvent prendre beaucoup de temps (en attente de confirmation de transaction).
Pour appeler de telles méthodes, vous pouvez utiliser le mécanisme de réponse différée dans InterSystems IRIS. L'adaptateur doit transmettre le jeton différé, puis, lorsque la transaction NodeJS est confirmée, le module transmet le résultat de son exécution à InterSystems IRIS. Pour ce faire, vous devez configurer l'application Web et ajouter une transaction commerciale au produit qui traitera la réponse reçue.
Code pour appeler une méthode qui change l'état de la blockchain:
Dans ce cas, avant d'appeler la méthode de contrat intelligent setName (), vous devez spécifier un certain nombre de paramètres, y compris un jeton de réponse différée.
Dans notre prochain article, nous parlerons davantage des contrats intelligents et donnerons un exemple de résolution d'une application à l'aide de l'adaptateur InterSystems IRIS Ethereum.