Passer au contenu principal
Ce guide couvre la configuration de l’environnement, le déploiement de contrats et l’interaction avec le testnet compatible EVM de Plasma en utilisant Hardhat. Il suppose une familiarité de base avec les outils Ethereum et le développement de smart contracts.

Prérequis

  • Node.js 20+
  • Connaissance de base du développement Ethereum
  • Wallet de navigateur

Configuration de l’environnement

Utilisez Hardhat pour construire et déployer les contrats.

Configuration de Hardhat

  1. Créez un nouveau répertoire de projet et initialisez :
    mkdir my-plasma-project
    cd my-plasma-project
    npm init -y
    npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
    npm install dotenv
    npx hardhat init
    
  2. Suivez les étapes pour créer un projet JavaScript. Sauvegardez le projet où vous voulez. Vous n’avez probablement pas besoin d’un fichier .gitignore pour ce démarrage rapide.
  3. Configurez hardhat.config.js pour le testnet Plasma :
    require("@nomicfoundation/hardhat-toolbox");
    require("dotenv").config();
    
    /** @type import('hardhat/config').HardhatUserConfig */
    module.exports = {
      solidity: "0.8.28",
      networks: {
        plasmaTestnet: {
          url: process.env.RPC_ENDPOINT,
          chainId: 9746,
          accounts: [process.env.PRIVATE_KEY] // We'll set this up next.
        }
      }
    };
    

Configuration du wallet et du testnet

Ajouter le Plasma Testnet à votre wallet de navigateur

  1. Ouvrez votre wallet de navigateur (MetaMask, Trust Wallet ou Rabby) et cliquez sur le sélecteur de réseau.
  2. Sélectionnez l’option pour ajouter un réseau personnalisé (par exemple Ajouter un réseau, Ajouter manuellement ou Ajouter un réseau personnalisé).
  3. Saisissez ces détails :
    • Nom du réseau : Plasma Testnet
    • Nouvelle URL RPC : https://testnet-rpc.plasma.to
    • Chain ID : 9746
    • Symbole de la devise : XPL
    • URL de l’explorateur de blocs : https://testnet.plasmascan.to
  4. Enregistrez le réseau et basculez vers le Plasma Testnet dans votre wallet.

Obtenir des tokens de testnet

  1. Copiez l’adresse de votre wallet depuis votre wallet de navigateur.
  2. Visitez openfaucet.org.
  3. Saisissez votre adresse et demandez des tokens de testnet.
  4. Attendez que la transaction se termine (elle devrait apparaître dans votre wallet en quelques secondes).

Configurer les variables d’environnement

  1. Exportez la clé privée de votre compte en utilisant les paramètres de compte de votre wallet de navigateur.
  2. Créez un fichier .env à la racine de votre projet :
    PRIVATE_KEY=your_private_key_here
    RPC_ENDPOINT=https://testnet-rpc.plasma.to
    
Ne commitez jamais votre clé privée ou votre mnémonique dans le contrôle de version. Ajoutez .env à votre fichier .gitignore.

Écrire un smart contract simple

  1. Créez un contrat de stockage basique contracts/SimpleStorage.sol :
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.28;
    
    contract SimpleStorage {
        string private storedData;
        
        event DataStored(string data);
        
        constructor() {
            storedData = "Hello, Plasma!";
        }
        
        function setData(string memory data) public {
            storedData = data;
            emit DataStored(data);
        }
        
        function getData() public view returns (string memory) {
            return storedData;
        }
    }
    
  2. Compilez le contrat :
    npx hardhat compile
    
    Cela devrait produire quelque chose comme :
    Downloading compiler 0.8.28
    Downloading compiler 0.8.28
    Compiled 2 Solidity files successfully (evm target: paris).
    

Tests

  1. Créez un script de test test/SimpleStorage.js :
    const { expect } = require("chai");
    
    describe("SimpleStorage", function () {
      let simpleStorage;
    
      beforeEach(async function () {
        const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
        simpleStorage = await SimpleStorage.deploy();
        await simpleStorage.waitForDeployment();
      });
    
      it("Should return the initial greeting", async function () {
        expect(await simpleStorage.getData()).to.equal("Hello, Plasma!");
      });
    
      it("Should update the stored data", async function () {
        await simpleStorage.setData("Updated data");
        expect(await simpleStorage.getData()).to.equal("Updated data");
      });
    });
    
  2. Exécutez les tests :
    npx hardhat test
    
    Cela devrait produire quelque chose comme :
    Lock
      Deployment
        ✔ Should set the right unlockTime (454ms)
        ✔ Should set the right owner
        ✔ Should receive and store the funds to lock
        ✔ Should fail if the unlockTime is not in the future
      Withdrawals
        Validations
          ✔ Should revert with the right error if called too soon
          ✔ Should revert with the right error if called from another account
          ✔ Shouldn't fail if the unlockTime has arrived and the owner calls it
        Events
          ✔ Should emit an event on withdrawals
        Transfers
          ✔ Should transfer the funds to the owner
    
    SimpleStorage
      ✔ Should return the initial greeting
      ✔ Should update the stored data
    
    
    11 passing (541ms)
    

Déployer sur le Plasma Testnet

  1. Créez d’abord un répertoire scripts :
    mkdir scripts
    
  2. Ensuite, créez un script pour déployer le contrat scripts/deploy.js :
    async function main() {
      const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
      
      console.log("Deploying SimpleStorage...");
      const simpleStorage = await SimpleStorage.deploy();
      await simpleStorage.waitForDeployment();
      
      const address = await simpleStorage.getAddress();
      console.log("SimpleStorage deployed to:", address);
    }
    
    main()
      .then(() => process.exit(0))
      .catch((error) => {
        console.error(error);
        process.exit(1);
      });
    
  3. Déployez le contrat :
    npx hardhat run scripts/deploy.js --network plasmaTestnet
    
    Cela devrait produire quelque chose comme :
    Deploying SimpleStorage...
    SimpleStorage deployed to: 0xaa4FB2A8eD6953A4e57b8097BAf048d7919e6262
    
  4. Notez l’adresse deployed to:. C’est l’adresse de votre contrat sur le testnet Plasma.

Vérifier le déploiement

  1. Copiez l’adresse du contrat.
  2. Visitez l’explorateur du testnet Plasma.
  3. Recherchez l’adresse de votre contrat pour voir la transaction de déploiement.

Dépannage

ProblèmeRésolution
Erreurs d’estimation de gasAssurez-vous que le wallet a suffisamment de XPL
Erreurs de connexion réseauVérifiez l’URL RPC et la disponibilité du testnet
Erreurs de clé privéeAssurez-vous que .env est correctement configuré (pas de préfixe 0x si requis)
Délai de l’explorateurAttendez quelques minutes ; l’explorateur peut être en cours de synchronisation