Iniziare a Sviluppare Smart Contract in Ethereum con Hardhat. Deploy

31 dicembre 2021

Nelle lezioni precedenti abbiamo visto come inizializzare uno Smart Contract di esempio e testarlo con Hardhat. È arrivato il momento di effettuare il deploy in Blockchain! (sempre in locale per il momento).

Per fare ciò utilizzeremo uno script contenuto nella cartella scripts. Qua possiamo trovare il file sample-script.js

sample-script.js
// We require the Hardhat Runtime Environment explicitly here. This is optional
// but useful for running the script in a standalone fashion through `node <script>`.
//
// When running the script with `npx hardhat run <script>` you'll find the Hardhat
// Runtime Environment's members available in the global scope.
const hre = require("hardhat");

async function main() {
  // Hardhat always runs the compile task when running scripts with its command
  // line interface.
  //
  // If this script is run directly using `node` you may want to call compile
  // manually to make sure everything is compiled
  // await hre.run('compile');

  // We get the contract to deploy
  const Greeter = await hre.ethers.getContractFactory("Greeter");
  const greeter = await Greeter.deploy("Hello, Hardhat!");

  await greeter.deployed();

  console.log("Greeter deployed to:", greeter.address);
}

// We recommend this pattern to be able to use async/await everywhere
// and properly handle errors.
main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });

Questo script è abbastanza semplice, sostanzialmente viene creato il nostro Smart Contract che viene inviato in Blockchain inizializzato con la stringa "Hello, Hardhat!". L'ultima linea resta in attesa che il deploy sia stato completato con successo.

const Greeter = await hre.ethers.getContractFactory('Greeter');
const greeter = await Greeter.deploy('Hello, Hardhat!');

await greeter.deployed();

Successivamente, se il tutto è andato a buon fine, viene stampato a console l'indirizzo in Blockchain a cui è stato inserito lo Smart Contract e che potremo utilizzare per interagirvi.

console.log('Greeter deployed to:', greeter.address);

Come suggeriscono i commenti, lo script andrebbe eseguito tramite Hardhat che si occuperà di compilare tutti gli Smart Contract in automatico, in caso volessimo invece lanciare lo script a mano tramite nodejs dovremmo decommentare la linea che si occupa della compilazione:

await hre.run('compile');

Per lanciare lo script per effettuare il deploy possiamo utilizzare questo comando:

npx hardhat run scripts/sample-script.js

Deploying a Greeter with greeting: Hello, Hardhat!
Greeter deployed to: 0x5FbDB2315678afecb367f032d93F642f64180aa3

L'indiricco a cui è stato inserito il nostro Smart Contract (sempre in locale) è quindi: 0x5FbDB2315678afecb367f032d93F642f64180aa3

Per inviare il nostro Smart Contract verso una rete (Blockchain) differente da quella di default di Hardhat dovremo aggiungere il parametro --network <network>, ad esempio:

npx hardhat run scripts/sample-script.js --network localhost