En tant que fournisseur d'éthers, je comprends l'importance d'estimer avec précision les données de déploiement du contrat lorsque je travaille avec la blockchain Ethereum. Dans cet article de blog, je partagerai quelques informations sur la façon d'obtenir l'estimation des données de déploiement du contrat à l'aide de ethers.js, une bibliothèque JavaScript populaire pour interagir avec la blockchain Ethereum.
Comprendre le déploiement de contrats sur Ethereum
Avant de plonger dans les détails techniques de l’estimation des données de déploiement de contrat, comprenons brièvement ce qu’implique le déploiement de contrat sur Ethereum. Lorsque vous déployez un contrat intelligent sur la blockchain Ethereum, vous créez essentiellement une nouvelle instance du code du contrat et la stockez sur la blockchain. Ce processus nécessite l'envoi d'une transaction au réseau, qui inclut le bytecode du contrat et tous les arguments de constructeur nécessaires.
Le coût de déploiement d'un contrat est déterminé par la quantité de gaz nécessaire pour exécuter la transaction de déploiement. Le gaz est une unité de mesure du travail de calcul requis pour exécuter une transaction sur le réseau Ethereum. Plus le code du contrat est complexe et plus les arguments du constructeur sont importants, plus il faudra de gaz pour le déploiement.
Conditions préalables
Pour suivre les exemples de cet article de blog, vous aurez besoin des éléments suivants :
- Node.js installé sur votre machine
- Une compréhension de base de JavaScript et de la blockchain Ethereum
- Familiarité avec ethers.js
Vous pouvez installer ethers.js à l'aide de npm en exécutant la commande suivante :
npm installer des éthers
Estimation des données de déploiement de contrat avec ethers.js
Pour estimer les données de déploiement du contrat, nous devrons effectuer les étapes suivantes :
- Compilez le contrat intelligent pour obtenir le bytecode et l'ABI.
- Créer une nouvelle instance de ethers.js
ContratUsineclasse. - Utilisez le
ContratUsinepour estimer le gaz nécessaire au déploiement.
Passons en revue chaque étape en détail.
Étape 1 : Compiler le contrat intelligent
La première étape consiste à compiler le contrat intelligent pour obtenir le bytecode et l'ABI. Vous pouvez utiliser un outil commesolc(le compilateur Solidity) pour compiler votre contrat. Voici un exemple de comment compiler un contrat Solidity simple en utilisantsolcdans un script Node.js :
const solc = require('solc'); const fs = require('fs'); // Lire le code source du contrat const sourceCode = fs.readFileSync('SimpleContract.sol', 'utf8'); // Compilez le contrat const input = { langage : 'Solidity', sources : { 'SimpleContract.sol' : { content : sourceCode } }, settings : { outputSelection : { '*' : { '*' : ['abi', 'evm.bytecode'] } } } } ; const sortie = JSON.parse(solc.compile(JSON.stringify(input))); const contract = output.contracts['SimpleContract.sol']['SimpleContract']; const bytecode = contrat.evm.bytecode.object; const abi = contrat.abi; console.log('Bytecode:', bytecode); console.log('ABI:', abi);
Dans cet exemple, nous lisons le code source d'un simple contrat Solidity à partir d'un fichier nomméSimpleContract.sol. Nous rédigeons ensuite le contrat en utilisantsolcet extrayez le bytecode et l'ABI de la sortie de la compilation.
Étape 2 : Créez une nouvelle instance duContratUsineclasse
Une fois que nous avons le bytecode et l'ABI, nous pouvons créer une nouvelle instance duContratUsineclasse de ethers.js. LeContratUsineLa classe est utilisée pour déployer de nouvelles instances d'un contrat intelligent. Voici un exemple :
const { éthers } = require('éthers'); // Connectez-vous au réseau Ethereum const supplier = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'); const wallet = new ethers.Wallet('YOUR_PRIVATE_KEY', fournisseur); // Créer une nouvelle instance ContractFactory const contractFactory = new ethers.ContractFactory(abi, bytecode, wallet);
Dans cet exemple, nous nous connectons au réseau principal Ethereum à l'aide d'un fournisseur Infura. Vous devrez remplacerVOTRE_INFURA_PROJECT_IDavec votre ID de projet Infura réel. Nous créons également une nouvelle instance de portefeuille à l'aide d'une clé privée. RemplacerVOTRE_PRIVATE_KEYavec votre clé privée réelle.
Étape 3 : Estimer le gaz requis pour le déploiement
Une fois que nous avons leContratUsinePar exemple, nous pouvons l’utiliser pour estimer le gaz nécessaire au déploiement. LeContratUsinela classe a une méthode appeléegetDeployTransactionqui renvoie un objet transaction représentant la transaction de déploiement. On peut alors utiliser leestimationGazméthode du fournisseur pour estimer le gaz nécessaire à la transaction. Voici un exemple :
// Estimation du gaz requis pour le déploiement const déployerTransaction = contractFactory.getDeployTransaction(); constestimateGas = wait supplier.estimateGas(deployTransaction); console.log('Gaz estimé pour le déploiement :',estimateGas.toString());
Dans cet exemple, nous appelons legetDeployTransactionméthode duContratUsinepour obtenir l'objet de transaction de déploiement. Nous utilisons ensuite leestimationGazméthode du fournisseur pour estimer le gaz nécessaire à la transaction. Le gaz estimé est restitué sous forme deGrandNombre, nous le convertissons donc en chaîne avant de le connecter à la console.
Facteurs affectant l’estimation du gaz de déploiement du contrat
L’estimation du gaz pour le déploiement sous contrat peut être affectée par plusieurs facteurs, notamment :


- Complexité du contrat: Plus le code du contrat est complexe, plus il faudra de gaz pour le déploiement.
- Arguments du constructeur: Si votre contrat comporte des arguments constructeur, la taille et la complexité de ces arguments peuvent également affecter l'estimation du gaz.
- Encombrement du réseau: L'état actuel du réseau Ethereum peut également affecter l'estimation du gaz. Pendant les périodes de forte congestion du réseau, les prix du gaz peuvent être plus élevés, ce qui peut augmenter le coût global de déploiement.
Conclusion
L'estimation des données de déploiement du contrat est une étape importante dans le processus de déploiement d'un contrat intelligent sur la blockchain Ethereum. En utilisant ethers.js, nous pouvons facilement estimer le gaz nécessaire au déploiement et planifier nos transactions en conséquence.
Si vous souhaitez acheter des éthers pour vos projets blockchain, nous sommes un fournisseur d'éthers fiable. Nous proposons des éthers de haute qualité tels queÉther méthyltert-butylique (MTBE),Éther monobutylique d'éthylèneglycol (BCS, EB), etÉther monobutylique de triéthylèneglycol (TBG, TB). Contactez-nous pour discuter de vos besoins en approvisionnement et démarrer un partenariat fructueux.
Références
- Documentation ethers.js : https://docs.ethers.io/v5/
- Documentation Solidité : https://docs.soliditylang.org/
- Site officiel d'Ethereum : https://ethereum.org/
