Comment compiler, déployer et tester un Smart Contract sur TomoChain testnet

Cet article comprend les exemples de codes source de contrat Solidity smart et les instructions complètes permettant de:

  • Setup Truffle, le framework de développement le plus populaire pour Ethereum, qui fonctionne également parfaitement pour TomoChain.
  • Créez un portefeuille TomoChain.
  • Obtenir la clé de sauvegarde du portefeuille
  • Demander des fonds pour le portefeuille TomoChain créé.
  • Explorez l'explorateur de blocs
  • Compilez et déployez le contrat intelligent créé sur TomoChain testnet.
  • Connectez Metamask à TomoChain testnet.
  • Créez un site Web frontal et faites-le interagir avec le contrat intelligent TomoChain via web3.js.

Connaissances requises

Pour comprendre clairement des choses entières, vous devez avoir une connaissance de Solidity, Truffle et web3.js. Quoi qu’il en soit, même si ce n’est pas le cas, vous pouvez toujours suivre les instructions étape par étape pour compléter le fichier de code.

Qu'est-ce que TomoChain?

TomoChain est une fourche Ethereum dont les performances sont nettement meilleures. Son temps de blocage a été réduit de 15 à 2 secondes et les frais de transaction sont pratiquement nuls.

Et puisqu'il s'agit d'une fourche Ethereum, tout kit de développement ou langage de programmation compatible avec Ethereum convient également avec TomoChain!

TomoChain est développé par le développeur de la blockchain vietnamienne, ancien chef de projet du célèbre NEM. Mainnet devrait être en direct sur le Q4'18. Quoi qu'il en soit, testnet fonctionne déjà et est également ouvert à tout développeur pour tester sa propre application sur ce dernier, sans aucun frais.

Commencer: Installation

Il y a deux applications que nous devons installer via npm. Le premier est Truffle, le cadre de développement d’Ethereum. Nous allons l'utiliser pour compiler et déployer notre contrat intelligent sur le réseau de test. Et le second est http-server, nous allons l'utiliser pour créer un simple serveur http afin de tester notre site web frontal.

$ npm install -g serveur http truffle

Ensuite, clonons le référentiel tomochain-dapp-example sur votre machine locale. Tous les codes requis sont regroupés dans le référentiel.

$ git clone git@github.com: nuuneoi / tomochain-dapp-example.git

Installez le paquet npm requis.

$ cd tomochain-dapp-example
$ npm install

C'est tout. Votre chaîne d'outils de compilation est maintenant prête!

Créer un portefeuille TomoChain

Pour créer un portefeuille TomoChain, procédez comme suit:

  1. Naviguez jusqu'à https://wallet.tomocoin.io/
  2. Cliquez sur le bouton + CREATE NEW WALLET.

Vous allez maintenant avoir un TomoWallet! L'adresse sera affichée en haut à gauche. Ecrivez-le quelque part. Nous allons l'utiliser dans plusieurs étapes ci-dessous.

Facile, hein?

Obtenir la clé de sauvegarde du portefeuille

La clé de sauvegarde est une graine mnémonique représentant la clé de dépense privée. C'est très important, sans cela, vous ne pourrez pas dépenser le solde de votre adresse. N'oubliez pas de l'écrire quelque part, sinon votre portefeuille pourrait être perdu à jamais.

  1. Naviguez jusqu'à https://wallet.tomocoin.io/
  2. Cliquez sur le menu des trois points en haut à droite, puis sur Afficher la clé de sauvegarde. Vous verrez la boîte de dialogue apparaître comme ceci.

Copiez les mots sur la dernière ligne et écrivez-les quelque part. (Ces mots doivent également être insérés dans notre code source à l'étape de déploiement du contrat intelligent ci-dessous.)

Veuillez noter que cette graine mnémonique doit rester privée. Ne le donnez à personne et ne le publiez pas dans l’espace public, sinon vous perdriez tout l’équilibre au profit du méchant.

Vous pouvez maintenant fermer l'onglet du portefeuille, car nous n'utiliserons plus ce site. Nous en avons juste besoin pour générer une adresse et obtenir la clé de sauvegarde associée.

Demande de fonds

Des fonds sont nécessaires pour réaliser des tâches telles que le déploiement de contrats intelligents. Ne vous inquiétez pas, cela ne vous coûte pas d’argent puisque c’est le testnet! Vous pouvez simplement demander que des fonds soient transférés dans votre portefeuille en quelques étapes faciles:

  1. Accédez à https://faucet.tomochain.com/
  2. Mettez votre adresse de portefeuille dans la zone de texte et assurez-vous de réussir le test Captcha, puis cliquez sur le bouton DEMANDER 1 TOMO.

Attendez 5 à 10 secondes, puis… tadaaaa. Votre portefeuille devrait maintenant avoir 1 TOMO transféré dans. Allons le vérifier.

Explorez l'explorateur de blocs

Pour vérifier le dernier solde de l’adresse, faisons-le dans Tomoscan a.k.a., l’explorateur de blocs TomoChain!

  1. Accédez à https://explorer-testnet.tomochain.com/
  2. Dans la zone de recherche en haut à droite, entrez l'adresse, puis appuyez sur la touche Entrée.
  3. La balance TOMO doit être représentée par 1 TOMO comme ceci.

Conseils: Ne regardez pas le solde de TOMO USD car il pourrait être très déprimant en ce moment.

Votre portefeuille a maintenant assez d’équilibre pour faire tout le travail de ce didacticiel, alors… allons-y!

Compiler et déployer le contrat intelligent créé sur TomoChain testnet

Le code source de ce dépôt git est écrit dans le framework Truffle, ce qui est très pratique. Vous pouvez compiler et faire les choses en une seule ligne de commande.

Regardez le code source

Ceci est un code source Solidity utilisé dans ce tutoriel. Vous pouvez le trouver dans le fichier contracts / SimpleContract.sol.

solidité du pragma ^ 0.4.18;
contract SimpleContract {
    événement BalanceUpdated (solde non exhaustif);
    balance intime;
    constructeur () public {
        // Définir le solde initial à 1000
        solde = 1000;
    }
    fonction setBalance (uint newBalance) public {
        // Le solde maximum doit être compris entre 0 et 10 000 (inclus)
        require (newBalance <= 10000);
        // Définir un nouvel équilibre
        balance = newBalance;
        // émettre un événement
        émettre BalanceUpdated (solde);
    }
    function getBalance () public view retours (uint) {
        retour du solde;
    }
}

Ce contrat intelligent est super basique. Il vous permet de définir la balance de variable publique via la fonction setBalance et vous pouvez récupérer la balance en appelant getBalance. Si vous connaissez déjà Solidity, vous devez comprendre tout le code en un rien de temps.

Compilation

Pour compiler le code source, tapez simplement cette commande dans le répertoire du référentiel.

$ compiler des truffes

Le résultat suivant devrait être affiché.

Compilation ./contracts/Migrations.sol ...
Compilation ./contracts/SimpleContract.sol ...
Écrire des artefacts dans ./build/contracts

Maintenant, votre contrat intelligent a déjà été compilé. Le code compilé est stocké dans le répertoire de construction. Tu peux aller voir si tu veux.

Configuration du portefeuille de déploiement

Il est maintenant presque prêt à être déployé sur le réseau testnet. Quoi qu'il en soit, nous devons spécifier le portefeuille TomoChain pour déployer le contrat intelligent en premier. Bien sûr, le portefeuille que nous allons utiliser est celui que nous avons créé à l'étape précédente. Voici les étapes pour

  1. Ouvrez le fichier truffle.js. Voici le contenu à l'intérieur.
'use strict'
var HDWalletProvider = require ("fournisseur de truffle-hdwallet");
var mnemonic = '';
module.exports = {
  réseaux: {
    développement: {
      hôte: "127.0.0.1",
      port: 7545,
      gaz: 4000000,
      network_id: "*"
    },
    tomotestnet: {
      fournisseur: function () {
        renvoyer le nouveau HDWalletProvider (mnemonic, 'https://testnet.tomochain.com');
      },
      gaz: 1000000,
      network_id: 89
    }
  }
};

2. Copiez la clé de sauvegarde obtenue à l'étape précédente et collez-la en tant que valeur de variable mnémonique.

var mnemonic = '';

Terminé. Veuillez noter que le réseau tomotestnet sera utilisé pour déployer le contrat intelligent que nous avons créé. Toutefois, si vous connaissez Ganache, vous pouvez également utiliser le réseau de développement pour effectuer le test local si vous le souhaitez.

Déploiement

Il est maintenant temps de déployer le contrat intelligent sur le réseau de test TomoChain! Vous pouvez déployer le contrat intelligent compilé à l'aide de la commande suivante.

$ truffle migrate - réseau tomotestnet

Voici le résultat attendu.

Utilisation du réseau ‘tomotestnet’.

Migration en cours: 1_initial_migration.js
  Déployer des migrations ...
  ... 0x081825424ce179259d661e2cd508b6a3ec5d3c622275168bff3f0d8460348c3f
  Migrations: 0x65730da7e39d3787723a8949bc7d41e7f0f013ba
Enregistrer une migration réussie vers le réseau ...
  ... 0xd96186343a751f2365d6311d6c7c52d67a86eee04854c40806a628526b0a573a
Sauvegarde d'artefacts ...
Migration en cours: 2_deploy_contracts.js
  Déploiement de SimpleContract ...
  ... 0xe80a4bac1ebbfcdd5170d469aa3998f1ee292227b3c7fa677e108135a7feb705
  SimpleContract: 0xb9cb9aa779c0ae4d6fe8a2292fc61233c5cad4be
Enregistrer une migration réussie vers le réseau ...
  ... 0x1397e27ad32783349568f65397e81f54dd3b1c36aa9405f06a804b271a23a88c
Sauvegarde d'artefacts ...

Ne soyez pas surpris si ces codes hexadécimaux ne sont pas les mêmes que les miens car ils seraient différents pour chaque personne.

Il est à noter que le code hexadécimal long est le TxHash alors que le code court est l’adresse du contrat. Si vous voulez jouer, n'hésitez pas à copier ce code hexadécimal dans l'explorateur de blocs et à voir les détails. Quoi qu'il en soit, je ne reviendrai pas sur ces choses car elles sont trop détaillées.

D'accord, bien qu'il y ait beaucoup de choses sur les extraterrestres imprimées en ce moment mais la seule adresse que nous devons utiliser à l'étape suivante est 0xb9cb9aa779c0ae4d6fe8a2292fc61233c5cad4be, qui est l'adresse contractuelle de SimpleContract que nous avons créée. Veuillez noter que votre adresse contractuelle sera différente de la mienne; veuillez donc ignorer mon adresse et utiliser la vôtre.

Aller vérifier la transaction de déploiement

Les étapes de déploiement sont en réalité simplement un ensemble de transactions afin que nous puissions les voir sur l’explorateur de blocs. Alors… allons les voir! Allez simplement sur la page Tomoscan et entrez votre adresse. 4 nouvelles transactions apparaissent comme ci-dessous.

Aucune action à ce sujet. Je veux juste que vous vous assuriez que le déploiement de votre contrat a bien été effectué sur TomoChain testnet.

Vous avez peut-être déjà remarqué la rapidité de l'étape de déploiement ci-dessus. Il a utilisé environ 20 secondes pour terminer ou seulement 5 secondes pour chaque transaction créée à confirmer. Super rapide !

Connectez Metamask à TomoChain testnet.

Metamask sera utilisé en tant que fournisseur pour créer une transaction et interagir avec smart contract sur le réseau de test. (Comme je l'ai déjà mentionné ci-dessus, tout ce qui fonctionne avec Ethereum fonctionnera également avec TomoChain).

Cependant, TomoChain n'est pas pris en charge de manière native sur Metamask. Nous devons définir manuellement le serveur RPC personnalisé pour TomoChain testnet. Voici les étapes à suivre:

  1. Installer Metamask pour Chrome

2. Cliquez sur l'icône Metamask dans la barre d'adresse. Cliquez sur le menu en haut à gauche et choisissez Custom RPC

3. Tapez https://testnet.tomochain.com dans la zone de texte RPC, puis cliquez sur Enregistrer.

4. Cliquez sur Restore from seed phrase et placez le mnémonique de l'étape ci-dessus dans la zone de texte Semences du portefeuille. N'oubliez pas non plus de définir un mot de passe pour protéger le portefeuille des personnes qui partagent l'ordinateur avec vous.

5. Vous devriez maintenant être bon. Le porte-monnaie suppose que l’adresse et la balance soient affichées correctement.

Veuillez noter que l’unité du portefeuille ici est TOMO, mais comme Metamask ne connaît pas TOMO, elle apparaît donc sous la forme ETH comme vous pouvez le voir ci-dessus.

Toutes nos félicitations! Metamask est maintenant prêt à interagir avec TomoChain testnet!

Créer un site Web frontal interagissant avec le contrat intelligent

Un simple site Web de démonstration utilisé pour interagir avec le contrat intelligent déployé est également venu avec le référentiel tomochain-dapp-example. Vous pouvez le trouver dans le répertoire Web. Le seul fichier que vous devez utiliser est index.html. Le Web est presque prêt à fonctionner mais nécessite encore quelques modifications. Veuillez suivre les étapes suivantes.

  1. Recherchez la valeur abi json dans build / contracts / SimpleContract.json, copiez-la et remplacez la valeur abi dans index.html par ce tableau json, par exemple.
var abi = [
    {
      "contributions": [],
      "payable": faux,
      "stateMutability": "nonpayable",
      "type": "constructeur"
    },
    {
      "anonyme": faux,
      "contributions": [
        {
          "indexé": faux,
          "nom": "balance",
          "type": "uint256"
        }
      ],
      "name": "BalanceUpdated",
      "type": "événement"
    },
    {
      "constante": faux,
      "contributions": [
        {
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "setBalance",
      "les sorties": [],
      "payable": faux,
      "stateMutability": "nonpayable",
      "type": "fonction"
    },
    {
      "constant": vrai,
      "contributions": [],
      "name": "getBalance",
      "les sorties": [
        {
          "Nom": "",
          "type": "uint256"
        }
      ],
      "payable": faux,
      "stateMutability": "view",
      "type": "fonction"
    }
  ];

2. Remplacez l'adresse du contrat par votre propre adresse de contrat SimpleContract, par exemple,

var contractAddress = '0xb9cb9aa779c0ae4d6fe8a2292fc61233c5cad4be';

3. Le code source est maintenant prêt. Il est maintenant temps de faire tourner le serveur http en accédant à Terminal et en tapant la commande suivante.

$ cd web
$ http-server.

Le serveur est maintenant lancé sur le port 8080. Vous pouvez maintenant naviguer sur le Web créé via le navigateur à l'adresse http: // localhost: 8080 et faire un test!

Tester

Une fois ouvert, le serveur frontal appelle immédiatement la fonction getBalance () et affiche le résultat dans la zone ci-dessus.

Vous pouvez saisir le nouveau solde dont vous avez besoin et cliquer sur le bouton Définir un nouveau solde pour définir la nouvelle valeur.

Et puisque cette opération nécessite que Metamask crée et signe une transaction pour vous, Metamask sera automatiquement lancé avec le paramètre prédéfini appelant la fonction setBalance () sur le contrat intelligent déployé. S'il vous plaît n'hésitez pas à examiner ces paramètres Tx et puis cliquez simplement sur le bouton ENVOYER.

La progression de la transaction sera mise à jour dans la zone ci-dessous. Vous pouvez également afficher les informations de transaction à partir de la ligne TxHash si vous le souhaitez.

Il est à noter que la cohérence de la transaction est confirmée 4 à 5 secondes après la création de votre Tx, ce qui est très rapide! (2 secondes de temps de blocage et 2-3 secondes de latence du réseau.)

Toutes nos félicitations! Votre premier contrat intelligent est maintenant déployé sur TomoChain testnet et vous pouvez également interagir avec ce dernier via le simple fournisseur web3.js sur le Web frontal!

Désolé de ne pas avoir examiné le code source frontal, car je crains que ce ne soit trop. Cependant, le code source n'est pas si compliqué, n'hésitez pas à le réviser vous-même!

Auteur

Tutoriel créé par Sittiphol Phanvilai (nuuneoi)