A repository of bitesize articles, tips & tricks
(in both English and French) curated by Mirego’s team.

Comment créer et déployer un smart contract

Installer Hardhat

Hardhat est un environnement de développement pour les blockchains compatibles Ethereum. Sélectionnez typescript et install default npm dependency.

npx hardhat

Installer OpenZeppelin

OpenZeppelin est une librarie de smart contract auditée ayant les implémentations de base des standards de smart contract.

npm install @openzeppelin/contracts --save-dev

Coder le contract

Créer un fichier ./contracts/MyNFT.sol et ajouter le code suivant.

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

// Inherits from ERC721 standards
contract MyNFT is ERC721 {
    constructor(string memory name, string memory symbol) ERC721(name, symbol) {}

    function helloWorld() public pure returns (string memory) {
        return "Hello World";
    }
}

Écrire et rouler des tests

Afin de valider l'exécution de votre contract, créer un fichier de test ./test/MyNFT.ts et ajouter le code suivant.

import {expect} from 'chai';
import {ethers} from 'hardhat';

describe('MyNFT', function () {
  describe('Basic functionality', function () {
    it('Should answer to hello world', async function () {
      const MyNFTFactory = await ethers.getContractFactory('MyNFT');
      const myNFT = await MyNFTFactory.deploy('Name', 'symbol');
      expect(await myNFT.helloWorld()).to.equal('Hello World');
      expect(await myNFT.balanceOf(myNFT.address)).to.equal(0);
    });
  });
});

La commande suivante execute et valide les tests:

npx hardhat test ./test/MyNFT.ts

Démarrer une node locale

npx hardhat node

Déployer le smart contract

Il n'y a pas de façon built-in de déployer un smart contract. Le module ethers de Hardhat doit être utilisé pour pousser le code sur le blockchain.

Ajoutez le code suivant dans ./scripts/deploy.ts.

import {ethers} from 'hardhat';

async function main() {
  const MyNFTFactory = await ethers.getContractFactory('MyNFT');
  const myNFT = await MyNFTFactory.deploy('Name', 'Symbol');
  await myNFT.deployed();

  console.log(`Deployed`);
}

main();

La commande suivante sert à lancer le déploiement. L'adresse du smart contract déployé apparaîtra à la fin de la commande. Il est important de la noter afin de pouvoir communiquer avec le Smart Contract dans votre application.

npx hardhat run ./scripts/deploy.ts

Vous devriez voir hardhat_addCompilationResult dans l'output de la commande hardhat node. Votre smart contract est prêt à être utilisé!