fbpx Déployer un smart contract sur Ethereum : Le guide complet ! | Développeur Blockchain France

Déployer un smart contract sur Ethereum : Le guide complet !

Posté par Vincent Ton le novembre 6, 2019 dans Formation Développeur Blockchain
Card Image

Déployer un smart contract sur Ethereum peut sembler compliquer et couteux, mais avec cet article vous allez tout savoir.

Compile permet de transcrire votre smart-contract en Bytecode
Deploy permet de mettre le contrat dans la blockchain Ethereum, ou ses réseaux de tests !

Vous avez écrit votre smart-contract et même fait des tests unitaires pour vérifier le bon fonctionnement de votre smart contract. Félicitation !

Maintenant, il vous reste à déployer sur le réseau Ethereum. Et de vous passer de Ganache. Car oui, Ganache c’est cool. Ça permet de tester en local votre smart-contract, sans payer les frais de transaction ! Mais ça ne vous déploie pas sur la blockchain Ethereum !

Et là, vous vous posez pleins de questions. Du style :

  • « Combien vais-je payer en euros pour déployer mon smart contract ? »
  • « Est-ce que l’opération va marcher ? »
  • « Et si personne n’utilise mon DAPP, vais-je jeter l’argent par la fenêtre ? »

Rassurez-vous, car en lisant cet article jusqu’au bout vous allez :

  • Déployer gratuitement votre smart contract sur l’Ethereum
  • Connaître les procédures pour déployer un smart contract sur Ethereum

Oui, vous allez déployer gratuitement votre smart-contract ! Car il y a Ethereum et ses réseaux de tests !

Déployer un smart contract sur Ethereum : pourquoi utiliser les réseaux de tests comme Kovan ou Ropsten ?

Peut-être que vous vous dites que ça ne sert à rien d’utiliser les réseaux de tests sur l’Ethereum. Que pour vous, un DAPP qui n’est pas déployé sur le réseau principal de l’Ethereum (main Ethereum) n’est pas un DAPP.

Pourtant certains sites connus utilisent les réseaux de tests comme capturetheether qui utilise Kovan. C’est un site qui vous permet d’apprendre la sécurité dans un smart contract.

Et voici 4 raisons qui font que vous devez utiliser les réseaux de tests !

Raison 1 : C’est mieux que ça reste gratuit si notre application a un bug

Vous êtes content. Vous avez réussi à créer votre premier DAPP. L’interface graphique a même été réalisée par un designer. Ou par vous-même. Et vous avez réussi à connecter la partie cliente de votre application à votre smart contract.

Vous déployez votre DAPP sur le réseau principal de l’Ethereum. Cela vous a couté entre 3 et 20 euros. Vous avez lié un lien URL à votre DAPP.

Et là, un utilisateur vous dit qu’un bouton ne fonctionne pas. C’est la panique !

Vous ne savez pas si c’est votre smart contract qui est en défaut ou si c’est la partie cliente qui a mal été codée. Et le pire, c’est que vous avez dépensé de l’argent pour une application qui ne fonctionne pas …

En utilisant les réseaux de tests, vous allez éviter tout ce stress inutile. Vous allez être serein pour détecter le bug et le corriger. Et si jamais vous devez refaire un smart contract, vous n’allez pas polluer le réseau principal avec un smart contract non-fonctionnel.

Raison 2 : On augmente la qualité de notre DAPP en utilisant les réseaux de tests

Savez-vous qu’il existe des sites qui recensent les applications décentralisées ? Il y a par exemple :
stateofthedapps
dappradar

Dans ces sites, vous pouvez soumettre votre DAPP. Et si vous renseigniez l’adresse qui contient le smart contract sur Kovan, Ropsten et Rinkeby, vous augmentez vos chances d’être pris au sérieux.

image dapp submit stateofthedapp
En soumettant un DAPP sur stateofthedapp, plus on remplit les informations, plus le site le prend au sérieux

Raison 3 : Tester la validité de notre projet

Si vous voulez que votre application décentralisée soit un succès, il est préférable de la faire tester par d’autres utilisateurs. Et quoi de mieux que d’utiliser les réseaux de tests ?

Vous pouvez déployer votre smart contract sur les réseaux de tests. Et avoir un lien URL propre à votre DAPP.

Avec des actions marketing, vous pouvez faire connaître votre DAPP auprès des personnes. Ces personnes, en arrivant sur votre site, vont d’abord installer Metamask s’ils le veulent. Ensuite, ils pourront utiliser votre DAPP sans qu’ils payent de l’Ether.

Et vous, vous pouvez analyser si votre DAPP est fonctionnel et si ça a du succès auprès des utilisateurs. Une fois que c’est validé, là vous pouvez déployer sur le réseau Ethereum.

Raison 4 : Adoption massive de la Blockchain auprès des entreprises

Pour qu’il y ait une adoption massive de la Blockchain, les entreprises doivent l’utiliser. Or dans une entreprise, on aime la procédure.

Je m’explique : Quand une entreprise développe un nouveau projet, il y a différentes phases. L’entreprise aime respecter les 3 phases que sont : le développement d’un projet, la phase de préproduction et la phase de production.

Avec la Blockchain Ethereum, on retrouve bien ces 3 phases :

  • La phase de développement d’un projet, avec Ganache ;
  • La phase de préproduction, avec les réseaux de tests ;
  • La phase de production, avec le réseau principal de l’Ethereum ou mainnet.

Si vous savez déployer un smart contract sur les réseaux de tests, vous augmentez vos chances d’être recruté par une entreprise qui chercher un développeur Blockchain.

Maintenant que vous avez vu les 4 raisons de déployer votre smart contract sur les réseaux de tests, vous allez maintenant découvrir comment déployer un smart contract sur Ethereum. Que ce soit sur le réseau principal ou les réseaux de tests.

Comment déployer un smart contract sur Ethereum grâce à Remix IDE ?

Il existe deux manières de déployer un smart contract sur Ethereum : en utilisant le site remix IDE ou en utilisant l’outil Truffle.

Mais avant de déployer votre smart contract, il vous faut de l’ether ! Ce sera utile pour payer les frais de déploiement. Et pour cela, vous allez avoir besoin de Metamask.

Étape 0 : Installer Metamask si ce n’est pas déjà fait

Si vous avez créé un DAPP sur la Blockchain Ethereum, alors vous avez sûrement réalisé cette action. Sinon, direction :

Étape 1 : Obtenir de l’ether

Kovan
Pour obtenir de l’ether, il faut demander à un faucet ici : https://gitter.im/kovan-testnet/faucet?source=orgpage
Il suffit de laisser son adresse ethereum pour obtenir de l’ether gratuitement.

metamask copier-coller

Pour copier l’adresse, il faut placer son souris sur « account 1 » et il suffit de cliquer ensuite.
Enfin, il faut coller l’adresse sur la discussion comme ceci :

Mettez votre adresse Ethereum dans laquelle vous souhaitez obtenir vos 3 ethers

À la fin, vous allez obtenir 3 ether.

Ropsten
Il faut demander de l’ether à un faucet, ici : https://gitter.im/ethereum/ropsten
Pour cela, il faut copier-coller votre adresse et le mettre dans la discussion.

Rinkeby
Il faut demander à un faucet : https://faucet.rinkeby.io/
Ici, pour obtenir de l’ether il faut :
– Ecrire un tweet
– Copier-coller le lien du tweet sur le input

Comment obtenir de l’ether sur le réseau Rinkeby ? Il suffit de suivre ce qui est indiqué !

Goerli
Il faut demander à un faucet : https://faucet.goerli.mudit.blog/
Ici, pour obtenir de l’ether il faut :
– Écrire un tweet
– Copier-coller le lien du tweet sur le input

Main Ethereum (ou réseau principal de l’Ethereum)
1 – Ouvrir un compte sur Boursorama ou N26. Les banques traditionnelles comme Crédit Agricole refusent les virements vers un crypto exchange. C’est pourquoi il est préférable d’ouvrir un compte Boursorama ou N26 comme le montre ce sondage (lien externe).
Si vous souhaitez ouvrir un compte chez Boursorama, vous pouvez passer par mon lien de parrainnage. Il suffit de me contacter.

2 – Ouvrir un compte sur un crypto exchange du type Kraken. Ici, on va bien sûr utiliser un crypto exchange centralisé car un crypto exchange centralisé est capable de recevoir de l’argent fiduciaire. Contrairement à un crypto exchange décentralisé.
Si vous voulez construire un crypto exchange décentralisé, cliquez ici !

3 – Echanger de l’euro contre de l’ether. Vous pouvez faire un « order market ». Sur ce site, je ne vais pas vous montrer comment faire du trading.

4 – Faire un virement de vos ethers vers votre adresse Metamask via l’opération « withdraw ». 0,1 ETH devrait suffire pour le déploiement de votre smart contract.

Maintenant que vous avez obtenu de l’ether, il est temps de déployer votre smart contract sur l’Ethereum.

Étape 2 : Déployer un smart contract sur Ethereum via Remix IDE

C’est très simple de déployer votre smart contract sur l’Ethereum en utilisant Remix IDE.

Si vous avez testé et validé le bon fonctionnement de votre smart contract, voici ce qu’il faut faire :

  • Aller sur http://remix.ethereum.org/
  • Connecter sur le bon réseau (Kovan, Ropster, Rinkeby, Goerli ou Main Ethereum) sur Metamask
  • Créer un nouveau fichier et insérer votre smart contract
  • Compiler le smart contract avec la bonne version. Pour trouver la bonne version du compileur, il faut aller sur /src/contracts/nomdufichier.json et faire rechercher le mot « compiler » avec CTRL + f
compiler abi smart contract
Ctrl + f puis « compiler » pour trouver la version du compiler
  • Dans l’onglet « Deploy and Run Transaction », choisir « Injected Web3 » dans environnement.
Choisissez Injected Web3 pour vous connecter avec Metamask
  • Déployer le smart contract.

Félicitation, vous avez déployé votre smart contract grâce à Remix IDE !

Déployer un smart contract sur Ethereum en utilisant Truffle :

Cette fois-ci, nous allons utiliser Truffle pour déployer votre smart contract sur la blockchain Ethereum. N’oubliez pas d’obtenir de l’ether gratuitement en allant sur des faucets.

Pour ce faire, nous allons utiliser le site Infura.

A – Modifier le fichier truffle-config.js

Vous vous rappelez que pour utiliser Ganache, vous avez modifié le fichier truffle-config.js comme ceci :

module.exports = {
  networks: {
    ganache: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // matching any id
    }
  }
};

Maintenant, voici ce qui faut mettre sur truffle-config pour utiliser les réseaux de tests :

Kovan :

const HDWalletProvider = require('truffle-hdwallet-provider-privkey');
const privateKeys = process.env.PRIVATE_KEYS || ""

module.exports = {
  networks: {
    kovan: {
      provider: function() {
        return new HDWalletProvider(
          privateKeys.split(','), // Array of account private keys
          `https://kovan.infura.io/v3/${process.env.INFURA_API_KEY}` // URL to an Ethereum Node (KOVAN)
        )
      },
      network_id: 42,
      gas: 4700000
    }
  },
}

Ici, le network_id pour kovan est 42.

Pour déployer sur le réseau de test Kovan :

truffle migrate --network kovan

Ropsten :

const HDWalletProvider = require('truffle-hdwallet-provider-privkey');
const privateKeys = process.env.PRIVATE_KEYS || ""

module.exports = {
  networks: {
    ropsten: {
      provider: function() {
        return new HDWalletProvider(
          privateKeys.split(','), // Array of account private keys
          `https://ropsten.infura.io/v3/${process.env.INFURA_API_KEY}` // URL to an Ethereum Node (ROPSTEN)
        )
      },
      network_id: 3,
      gas: 4700000
    }
  },
}

Ici, le network_id pour Ropsten est 3.

Pour déployer sur le réseau de test Ropsten :

truffle migrate --network ropsten

Rinkeby :

const HDWalletProvider = require('truffle-hdwallet-provider-privkey');
const privateKeys = process.env.PRIVATE_KEYS || ""

module.exports = {
  networks: {
    rinkeby: {
      provider: function() {
        return new HDWalletProvider(
          privateKeys.split(','), // Array of account private keys
          `https://rinkeby.infura.io/v3/${process.env.INFURA_API_KEY}` // URL to an Ethereum Node (RINKEBY)
        )
      },
      network_id: 4,
      gas: 4700000
    }
  },
}

Ici, le network_id pour Rinkeby est 4.

Pour déployer sur le réseau de test Rinkeby :

truffle migrate --network rinkeby

Goerli :

const HDWalletProvider = require('truffle-hdwallet-provider-privkey');
const privateKeys = process.env.PRIVATE_KEYS || ""

module.exports = {
  networks: {
    goerli: {
      provider: function() {
        return new HDWalletProvider(
          privateKeys.split(','), // Array of account private keys
          `https://goerli.infura.io/v3/${process.env.INFURA_API_KEY}` // URL to an Ethereum Node (GOERLI)
        )
      },
      network_id: 5,
      gas: 4700000
    }
  },
}

Ici, le network_id pour Goerli est 5.

Pour déployer sur le réseau de test Goerli :

truffle migrate --network goerli

Mainnet ou réseau principal de l’Ethereum :

const HDWalletProvider = require('truffle-hdwallet-provider-privkey');
const privateKeys = process.env.PRIVATE_KEYS || ""

module.exports = {
  networks: {
    mainnet {
      provider: function() {
        return new HDWalletProvider(
          privateKeys.split(','), // Array of account private keys
          `https://mainnet.infura.io/v3/${process.env.INFURA_API_KEY}` // URL to an Ethereum Node (MAINNET)
        )
      },
      network_id: 1,
      gas: 4700000
      confirmations: 2,
    }
  },
}

Ici, le network_id pour mainnet est 1.

Pour déployer sur le réseau principal : truffle migrate –network live

Maintenant, il y a 2 variables qui restent à définir :
– PRIVATE_KEYS
– INFURA_API_KEY

B – Comment trouver la clé privée ? (PRIVATE_KEYS)

Nous allons utiliser Metamask pour trouver la clé privée de votre adresse. Pour cela :
1 – cliquer sur l’icône Metamask
2 – Cliquer sur les 3 barres
3 – Cliquer sur détails

Metamask how to find private key
Cliquez sur « Détails »

4 – Cliquer sur « exporter la clé privée »

Cliquez sur « Exporter la clé privée » puis renseignez le mot de passe

5 – Renseigner le mot de passe et ensuite, vous pouvez copier-coller votre clé privée.

SURTOUT NE DONNEZ JAMAIS LA CLÉ PRIVÉE À D’AUTRES PERSONNES !

Une personne malintentionnée qui possède votre clé privée peut importer votre adresse de portefeuille sur son propre Ledger ou sur son Metamask. Et prendre tout l’argent qu’il y a dessus.

C’est pourquoi, on va cacher cette information en utilisant le fichier .env. Ce fichier, on va l’exclure de GitHub grâce au fichier .gitignore !

Voilà concrètement ce qui faut faire. Vous allez coller la valeur de votre clé privée sur le fichier .env comme ceci :

PRIVATE_KEY="numero de votre clé privé"

Et sur le fichier .gitignore, écrivez :

.env

pour exclure le fichier .env qui contient votre clé privée au moment de la publication de votre projet sur GitHub.

C – Comment définir la variable INFURA_API_KEY ?

Pour cela, vous allez vous inscrire sur le site https://infura.io/

Ensuite, vous allez créer un projet.

À la suite de ça, vous pouvez voir qu’il y a une rubrique appelée « keys »

Copiez-coller la valeur du « project ID » puis mettez-le dans la variable INFURA_API_KEY

Vous allez prendre la valeur du project ID pour définir la variable INFURA_API_KEY

Et dans le fichier .env, faite comme ceci :

PRIVATE_KEY="valeur du project ID"

Ensuite, il ne reste plus qu’à déployer votre projet grâce à :

truffle migrate --network (votre réseau)

Encore un peu de patience, le temps qu’un nouveau bloc soit créé sur Ethereum et c’est fait !

Vous avez déployé votre smart contract sur Ethereum !

Conclusion

Dans cet article, vous avez appris :

  • Les 4 raisons qui font que vous devez utiliser les réseaux de tests
  • Comment acheter de l’ether en passant par un crypto exchange comme Kraken
  • Comment obtenir de l’ether gratuitement sur les réseaux de tests en passant par un faucet
  • Comment déployer un smart contract sur Ethereum en utilisant Remix IDE : la manière la plus rapide
  • Comment déployer un smart contract sur Ethereum en utilisant Truffle
  • Où trouver la clé privée sur Metamask
  • Un nouveau site qui est Infura

En sachant tout ceci, vous pouvez enfin créer plusieurs projets Blockchain. Prenez du temps à lire cet article, imprimez-le si nécessaire.

Et réservez un appel téléphonique ci-dessous si vous voulez travailler avec moi.

Laisser un commentaire

Your email address will not be published. All fields are required.

Les commentaires