Comment déployer des contrats intelligents sur le réseau Hedera Hashgraph [Tutoriel]

Cet article est consacré à l’une des fonctions principales du Grand livre réparti Hedera Hashgrapgh: le déploiement de contrats intelligents Solidity.

Hashgraph est une technologie de grand livre distribué utilisant le DAG (Directed Acyclic Graph). Il a déjà été utilisé dans l'apprentissage machine (modèle de confiance basé sur un réseau bayésien), les compilateurs et les statistiques. Dans ce cas, les données ne sont pas stockées dans des blocs, mais sont distribuées par des événements.

Les systèmes DAG sont également utilisés pour résoudre le problème des généraux byzantins. En règle générale, chaque projet développant un registre distribué a sa propre méthode de synchronisation des nœuds, c'est-à-dire leur propre algorithme de consensus.

Algorithme de consensus de Hashgraph

Chaque validateur collecte ses transactions, choisit au hasard l'autre participant et transfère les informations sur les transactions au participant, ainsi que les informations que les autres nœuds ont fournies lors de leur connexion.

La fonctionnalité est très simple: le validateur «écoute», reçoit tous les messages qui lui parviennent, puis choisit au hasard l'autre participant et lui envoie toutes les transactions avec le sien.
Hashgraph garantit qu’avec le nombre final d’étapes (séries de travaux du protocole), tous les nœuds atteignent le même état. Le protocole fonctionne assez rapidement et est facilement évolutif.

Dans le réseau, il n'y a pas de leader. Tant qu'il reste 2/3 nœuds honnêtes, le protocole garantit le haut niveau de sécurité.

Pour que les nœuds soient synchronisés et parviennent à un accord, il existe également un processus d’échange entre les autres participants du réseau de manière aléatoire.

A propos du projet Hedera

Un réseau public Hedera Hashgraph se développe sous la direction de Leemon Baird, en utilisant le protocole du même nom. La plate-forme aura des fonctionnalités de fichiers, de portefeuilles et de contrats intelligents.

En mars 2019, un crowdsale était terminé. La crypto-monnaie native du réseau, Hbar, est évaluée à environ 0,12 USD.

Ici, vous pouvez en savoir plus sur l’état du réseau. Le réseau principal et le réseau de test sont actuellement disponibles, mais les contrats intelligents qui nous intéressent ne sont disponibles que dans testnet pour le moment.

Commencer

Enregistrement (KYC)

Vous devez vous inscrire sur le portail et passer la preuve d'identité. C'est important! L'enregistrement sur le portail est possible dans le cadre de la phase de test. Au moment de la publication de cet article, la communauté attend une deuxième série de tests et l'enregistrement est indisponible depuis un certain temps.

Voici les instructions pour l’enregistrement et le processus de KYC par le lien.

Sélection de réseau

Choisissons le réseau pour le travail suivant. La fonctionnalité de contrats intelligents n’est disponible pour le moment que dans testnet, choisissons donc testnet.

L'accès au réseau

Le portail vous demandera de fournir un code d'accès au réseau, qui peut être reçu par courrier électronique, en laissant la demande sur le site Web.

Entrez le code et Hedera renverra les informations suivantes:

Ces données seront nécessaires dans le futur.

Clés publiques et privées

Téléchargez depuis le générateur de clé GitHub et lancez-le à l'aide de la commande

java -jar hedera-sdk-keygen-1.2-run.jar

Nous allons obtenir:

Déploiement de contrats intelligents

Dans le cadre de ce projet, plusieurs outils (SDK) ont été développés pour créer des applications décentralisées sur la plate-forme Hashgraph. Hedera ne supporte actuellement officiellement le SDK que sur Java. Rustbad, С, GO et Python sont pris en charge par Launchbadge.

Considérons le déploiement du contrat intelligent sur le SDK Java.

Commençons par le déploiement du contrat intelligent et examinons cela à l’aide du contrat créé «HelloWorld». Editons des exemples \ node.properties.sample. Nous indiquerons les données vues sur la page Web du portail.

Dans les exemples \ src \ main \ resources \ scExamples, considérons les fichiers suivants:

  • HelloWorld.sol - le code du contrat intelligent basé sur Solidity, pour votre commentaire
  • HelloWorld.info.txt - contient l’ABI de notre contrat intelligent, présenté de la même manière à titre d’exemple
  • HelloWorld.bin - le fichier avec le code d'octet du contrat compilé est toujours nécessaire, car nous ferons référence à ce fichier de temps à autre.

Le code du contact intelligent:

solidité du pragma ^ 0.5.3;
contrat HelloWorld {
 function getInt () public pure return (uint) {
  retourne 42;
 }
 
 function getString () public pure return (mémoire de chaîne) {
  retour "John dit salut";
 }
}

Considérons le code du fichier exécutable: \ exemples \ src \ main \ java \ com \ hedera \ exemples \ simpleDemoContractHelloWorld.java. Nous allons télécharger le contrat sur le réseau et appeler des méthodes à partir de celui-ci.

Cette ligne lit le code binaire du contrat:

Ci-dessous, deux méthodes que nous appellerons du contrat. Notez que les constantes spécifient un ABI monoligne du contrat intelligent:

Lançons le fichier actuellement exécuté considéré. Nous recevrons ce qui suit:

Toutes nos félicitations! Vous venez de lancer votre premier contrat intelligent sur la plateforme Hedera Hashgraph!

Renvois:

  1. Livre blanc sur Hedera Hashgraph
  2. Hedera Hashgraph Dev - русскоговорящее сообщество
  3. Hedera International Discord Room