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
-
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
-
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.
-
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
- Ouvrez votre wallet de navigateur (MetaMask, Trust Wallet ou Rabby) et cliquez sur le sélecteur de réseau.
- Sélectionnez l’option pour ajouter un réseau personnalisé (par exemple Ajouter un réseau, Ajouter manuellement ou Ajouter un réseau personnalisé).
- 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
- Enregistrez le réseau et basculez vers le Plasma Testnet dans votre wallet.
Obtenir des tokens de testnet
- Copiez l’adresse de votre wallet depuis votre wallet de navigateur.
- Visitez openfaucet.org.
- Saisissez votre adresse et demandez des tokens de testnet.
- Attendez que la transaction se termine (elle devrait apparaître dans votre wallet en quelques secondes).
-
Exportez la clé privée de votre compte en utilisant les paramètres de compte de votre wallet de navigateur.
-
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
-
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;
}
}
-
Compilez le contrat :
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
-
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");
});
});
-
Exécutez les tests :
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
-
Créez d’abord un répertoire
scripts :
-
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);
});
-
Déployez le contrat :
npx hardhat run scripts/deploy.js --network plasmaTestnet
Cela devrait produire quelque chose comme :
Deploying SimpleStorage...
SimpleStorage deployed to: 0xaa4FB2A8eD6953A4e57b8097BAf048d7919e6262
-
Notez l’adresse
deployed to:. C’est l’adresse de votre contrat sur le testnet Plasma.
Vérifier le déploiement
- Copiez l’adresse du contrat.
- Visitez l’explorateur du testnet Plasma.
- Recherchez l’adresse de votre contrat pour voir la transaction de déploiement.
Dépannage
| Problème | Résolution |
|---|
| Erreurs d’estimation de gas | Assurez-vous que le wallet a suffisamment de XPL |
| Erreurs de connexion réseau | Vérifiez l’URL RPC et la disponibilité du testnet |
| Erreurs de clé privée | Assurez-vous que .env est correctement configuré (pas de préfixe 0x si requis) |
| Délai de l’explorateur | Attendez quelques minutes ; l’explorateur peut être en cours de synchronisation |