Ускорьте развертывание контракта с помощью сценария Hardhat: подробное руководство

В быстро меняющемся мире развития блокчейнов внедрение смарт-контрактов является решающим шагом. Чтобы упростить этот процесс, разработчики часто обращаются к инструментам автоматизации, таким как Hardhat. В этой статье блога мы углубимся во все тонкости использования сценария контракта развертывания Hardhat. Мы обсудим различные методы, предоставим разговорные объяснения и включим примеры кода, чтобы сделать процесс развертывания контракта максимально простым. Итак, начнем!

Метод 1: базовое развертывание с помощью Hardhat
Самый простой способ развернуть контракт с помощью сценария Hardhat — определить задачу развертывания. Вот пример фрагмента кода, иллюстрирующий это:

// hardhat.config.js
module.exports = {
  // ... other configurations ...
  networks: {
    // ... network configurations ...
  },
  defaultNetwork: "hardhat",
  solidity: {
    // ... Solidity compiler settings ...
  },
  paths: {
    // ... paths configuration ...
  },
  // ... other configurations ...
};
// deploy.js
const hre = require("hardhat");
async function main() {
  const MyContract = await hre.ethers.getContractFactory("MyContract");
  const contract = await MyContract.deploy();
  await contract.deployed();
  console.log("MyContract deployed to:", contract.address);
}
main();

В этом примере мы определяем задачу развертывания в скрипте deploy.js. Мы используем функцию hre.ethers.getContractFactory()для получения фабрики контрактов, а затем развертываем контракт с помощью функции deploy(). Адрес развернутого контракта записывается в консоль.

Метод 2: развертывание с аргументами конструктора
Иногда контракты требуют аргументов конструктора во время развертывания. Hardhat поддерживает передачу аргументов конструктора в виде массива. Вот пример:

// deploy.js
const hre = require("hardhat");
async function main() {
  const MyContract = await hre.ethers.getContractFactory("MyContract");
  const contract = await MyContract.deploy("Argument 1", 42);
  await contract.deployed();
  console.log("MyContract deployed to:", contract.address);
}
main();

В этом примере мы передаем два аргумента конструктора: «Аргумент 1» и число 42 при развертывании контракта.

Метод 3: развертывание в определенной сети
Hardhat поддерживает развертывание контрактов в различных сетях, определенных в файле hardhat.config.js. Вот пример развертывания в тестовой сети Rinkeby:

// hardhat.config.js
module.exports = {
  // ... other configurations ...
  networks: {
    rinkeby: {
      url: "https://rinkeby.infura.io/v3/YOUR_INFURA_PROJECT_ID",
      accounts: ["YOUR_PRIVATE_KEY"],
    },
  },
  // ... other configurations ...
};
// deploy.js
const hre = require("hardhat");
async function main() {
  const MyContract = await hre.ethers.getContractFactory("MyContract");
  const contract = await MyContract.deploy();
  await contract.deployed();
  console.log("MyContract deployed to Rinkeby network:", contract.address);
}
main();

Здесь мы определяем конфигурацию сети Rinkeby в файле hardhat.config.jsи передаем имя сети функции deploy()в сценарии развертывания.

Метод 4: Проверка исходного кода контракта на Etherscan
После того, как вы развернули контракт, часто бывает необходимо проверить его исходный код в обозревателях блоков, таких как Etherscan. Hardhat предоставляет для этого простую команду. Вот пример:

npx hardhat verify --network rinkeby 0xContractAddress

Эта команда проверяет контракт, развернутый в 0xContractAddressв сети Rinkeby.

В этой статье мы рассмотрели различные методы развертывания контрактов с помощью сценария развертывания Hardhat. Мы рассмотрели базовое развертывание, передачу аргументов конструктора, развертывание в определенных сетях и проверку исходного кода контракта на Etherscan. Используя эти методы, вы можете ускорить процесс развертывания контракта и сосредоточиться на создании инновационных децентрализованных приложений.