En tant que débutant dans le développement web3, développer et déployer votre propre token est l'une des façons les plus populaires de commencer à créer des logiciels on-chain, d'améliorer vos compétences en Solidity et de comprendre le cycle de vie du développement web3.
Dans Ethereum, il existe différents standards de tokens, qui sont des ensembles de règles prédéfinies que les tokens doivent respecter pour garantir la compatibilité, la conformité et l'interopérabilité avec le réseau Ethereum et les autres dapps.
Ces standards incluent ERC-20 pour les tokens fongibles, ERC-721 pour les tokens non fongibles (NFT), ERC-1155 pour les types de tokens multiples, ERC-777 pour les fonctionnalités avancées des tokens, ERC-1400 pour les security tokens, et ERC-4626 pour les vaults tokenisés.
Dans ce blog, nous allons développer un token ERC-20 en utilisant OpenZeppelin, une bibliothèque qui fournit des implémentations sécurisées et testées de templates de smart contracts standard. Nous vous guiderons à travers la configuration de votre environnement de développement, la rédaction du contrat de token et son déploiement sur le réseau layer 2 Linea.
Étape 1 : Configurer votre environnement de développement avec Hardhat
Avant de commencer à développer votre token Ethereum, vous devrez configurer votre environnement de développement. Dans ce blog, nous utiliserons Hardhat. Suivez les étapes ci-dessous :
Installer Node.js et npm : Node.js est un environnement d'exécution JavaScript, et npm est son gestionnaire de paquets. Téléchargez-les et installez-les depuis le site officiel de Node.js.
Créer un nouveau projet Hardhat : Ouvrez votre terminal, créez un nouveau répertoire pour votre projet et naviguez jusqu'à celui-ci. Ensuite, exécutez :
mkdir my-token
cd my-token
npm init -y
npm install --save-dev hardhat
npx hardhat
Installer les plugins Hardhat nécessaires et les contrats OpenZeppelin :
npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
Étape 2 : Créer votre token Ethereum
Suivez ces étapes pour créer un token ERC-20 simple :
Créer un contrat de token : Dans votre projet Hardhat, naviguez jusqu'au répertoire contracts et créez un nouveau fichier nommé MyToken.sol. Ouvrez ce fichier et définissez votre contrat de token :
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
Ce smart contract crée un token ERC-20 nommé « MyToken » avec le symbole « MTK » en utilisant la bibliothèque d'OpenZeppelin. Une fois déployé, il mint une offre initiale de tokens spécifiée par le déployeur et les attribue à l'adresse de ce dernier.
Rédiger un script de déploiement : Dans le répertoire scripts, créez un nouveau fichier nommé deploy.js et ajoutez le code suivant pour déployer votre contrat :
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy(1000000);
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Le script ci-dessus déploie le smart contract « MyToken » en utilisant Hardhat et ethers.js, en l'initialisant avec une offre de 1 000 000 tokens. Il récupère l'adresse du déployeur et déploie le contrat.
Compiler et déployer votre contrat localement : Dans votre terminal, compilez et déployez votre contrat sur une blockchain locale fournie par Hardhat :
npx hardhat compile
npx hardhat run scripts/deploy.js --network localhost
Étape 3 : Déployer votre contrat de token sur le testnet Linea
Maintenant que nous avons développé et déployé notre token ERC-20 localement, il est temps de le déployer sur le testnet Linea en utilisant Infura et MetaMask. Suivez ces étapes pour mettre votre token en ligne sur le testnet Linea.
Créer un compte Infura : Infura offre un accès facile aux différents réseaux blockchain et à leurs testnets. Créez un nouveau projet, sélectionnez le testnet Linea Sepolia dans le menu des réseaux pris en charge, et copiez l'ID du projet.
Configurer MetaMask : Ouvrez votre portefeuille MetaMask et accédez à la section réseau. Dans le menu déroulant, assurez-vous que l'option « afficher les réseaux de test » est activée. Sélectionnez ensuite le testnet Linea Sepolia.
Obtenir des ETH Linea Sepolia : Lors du déploiement de votre contrat, vous avez besoin d'ETH Linea Sepolia pour payer les frais de gas. Vous pouvez en obtenir en visitant le faucet officiel Linea Sepolia.
Mettre à jour la configuration Hardhat : Dans votre projet Hardhat, mettez à jour votre hardhat.config.js pour inclure la configuration du testnet Linea :
require("@nomiclabs/hardhat-ethers");
require("dotenv").config();
module.exports = {
solidity: "0.8.0",
networks: {
lineaTestnet: {
url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
accounts: [`0x${process.env.PRIVATE_KEY}`],
chainId: 59141
}
}
};
Assurez-vous que votre fichier .env contient les variables d'environnement nécessaires :
INFURA_PROJECT_ID=your_infura_project_id
PRIVATE_KEY=your_private_key
Déployer votre contrat sur le testnet Linea Sepolia
Maintenant, pour déployer votre contrat de token sur le testnet Linea, exécutez cette commande :
npx hardhat compile
npx hardhat run scripts/deploy.js --network lineaTestnet
Ce script déploiera votre contrat de token ERC-20 sur le testnet Linea en utilisant le compte connecté à MetaMask.
Faites progresser le développement de votre dapp web3 avec MetaMask Developer
En maîtrisant les bases du développement de tokens Ethereum, en configurant votre environnement de développement et en respectant les bonnes pratiques, vous pouvez développer et déployer avec succès votre propre token Ethereum. Que vous créiez une nouvelle cryptomonnaie ou tokenisiez un actif, Ethereum offre les outils et l'écosystème nécessaires pour donner vie à vos idées.
Visitez le portail MetaMask Developer pour des besoins de développement plus avancés, tels que Sign-in-with-Ethereum (SIWE), la prise en charge d'EIP-6963 et l'intégration transparente avec MetaMask via Snaps. Il propose une suite complète d'outils, d'API et de SDK conçus pour simplifier l'onboarding des utilisateurs et permettre aux développeurs de créer des connexions de portefeuille uniques et sans permission, ainsi que des expériences in-dapp adaptées aux utilisateurs de MetaMask.