Развертывание и верификация смарт-контракта в тестовой сети с помощью Hardhat

В следующем посте мы узнаем, как развернуть и верифицировать смарт-контракт в тестовой сети Rinkeby с помощью hardhat.

ПРИМЕЧАНИЕ: Rinkeby скоро будет устаревшим, нажмите здесь, если вы хотите узнать больше о нем, в любом случае этот пример может работать для любого другого тестнета, например Goerli, Kovan и т.д.

Что такое Hardhat?

Согласно официальной документации, Hardhat — это среда разработки для программного обеспечения Ethereum. Она состоит из различных компонентов для редактирования, компиляции, отладки и развертывания ваших смарт-контрактов и dApps, которые работают вместе, создавая полноценную среду разработки.

Необходимые условия

  • Установленный Node.js
  • Кошелек Metamask
  • API-ключ Infura
  • Учетная запись Etherscan
  • У вас есть немного средств Rinkeby в вашем кошельке, в случае необходимости вы можете использовать этот кран

Создание нашего проекта

  1. откройте терминал и введите следующие команды
  2. mkdir hardhat-tutorial
  3. cd hardhat-tutorial
  4. npm init —y
  5. Откройте проект в удобном для вас редакторе кода

Зависимости

  • dotenv
  • hardhat
  • @nomiclabs/hardhat-etherscan
  • @nomicfoundation/hardhat-toolbox

Для установки зависимостей перейдите в папку проекта, откройте терминал и введите следующие команды:

npm i dotenv
Войти в полноэкранный режим Выйти из полноэкранного режима
npm i hardhat --save-dev hardhat @nomiclabs/hardhat-etherscan @nomicfoundation/hardhat-toolbox
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь выполните следующую команду

npx hardhat
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы можете использовать опцию JavaScript для этого примера

Структура файла проекта

hardhat-tutorial/
├── contracts/
├── node_modules/
├── scripts/
├── test/
├── .env
├── hardhat.config.js
└── package.json
Войти в полноэкранный режим Выход из полноэкранного режима

Оглавление

  1. Настройка нашего файла .env
  2. Настройка hardhat.config.js
  3. Создание контракта для развертывания
  4. Сценарий развертывания
  5. Развертывание и проверка
  6. Заключение

1. Настройка нашего файла .env

Давайте создадим файл .env, если вы еще этого не сделали, и откроем его.

Нам нужно будет установить следующие переменные:

INFURA_API_KEY = your infura api key
METAMASK_ACCOUNT = your metamask account
ETHERSCAN_API_KEY = your etherscan api key
Вход в полноэкранный режим Выйти из полноэкранного режима

Если вы не знаете, как получить учетную запись Metamask, просто выполните следующие действия:

  1. Откройте расширение браузера metamask, нажмите на 3 точки.

  1. Нажмите на Детали учетной записи

  1. Нажмите на Экспорт закрытого ключа

  1. Наконец, введите свой пароль

2. Настройка файла hardhat.config.js

Сначала нам нужно настроить конфигурационный файл, поэтому давайте откроем hardhat.config.js, вы увидите что-то похожее на это

require("@nomicfoundation/hardhat-toolbox");
require("@nomiclabs/hardhat-etherscan");

module.exports = {
  solidity: "0.8.9",
};
Войти в полноэкранный режим Выход из полноэкранного режима

Нам нужно указать сети, которые мы хотим использовать, в данном примере мы будем использовать только rinkeby.

require("@nomicfoundation/hardhat-toolbox");
require("@nomiclabs/hardhat-etherscan");
//dotenv
require("dotenv").config();

module.exports = {
  solidity: "0.8.9",
  networks: {
    rinkeby: {
      url: `https://rinkeby.infura.io/v3/${process.env.INFURA_API_KEY}`,
      accounts: [`${process.env.METAMASK_ACCOUNT}`]
    }
  },
  etherscan: {
    apiKey: process.env.ETHERSCAN_API_KEY
  }
};
Войти в полноэкранный режим Выйти из полноэкранного режима

3. Создание контракта для развертывания

Для этого примера мы будем использовать контракт Dummiy под названием Greeter.sol, поэтому давайте откроем его.

//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

  import "hardhat/console.sol";

  contract Greeter {
      string public greeting = 'Hello World';

      function setGreeting(string memory _greeting) public {
          console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
          greeting = _greeting;
      }
  }
Войти в полноэкранный режим Выйти из полноэкранного режима

4. Скрипт развертывания

Перейдите в папку scripts и откройте deploy.js, удалите все внутри.

  1. Сначала потребуем эфиры из hardhat.
  2. Затем создадим функцию, которая будет выполняться при выполнении скрипта
  3. мы будем использовать ethers.getSigners() для получения объекта с информацией о нашем счете ethereum
  4. затем с помощью getContractFactory() мы абстрагируем информацию о контракте, в данном случае Greeter.sol
  5. мы развернем эту информацию с помощью deploy().
  6. Наконец, мы ждем, пока контракт будет развернут, и получаем адрес контракта.
const { ethers } = require("hardhat");

async function main(){
  const [deployer] = await ethers.getSigners();

  console.log("Deploying contracts with the account: ", deployer.address);

  const DummyContract = await ethers.getContractFactory("Greeter");
  const dummyContract = await DummyContract.deploy();

  await dummyContract.deployed();

  console.log("DummyContract deployed to: ", dummyContract.address);
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  })
Вход в полноэкранный режим Выход из полноэкранного режима

5. Развертывание и проверка

Наконец, мы выполним следующие команды для развертывания и проверки нашего контракта.

npx hardhat run scripts/deploy.js --network rinkeby
Войти в полноэкранный режим Выйти из полноэкранного режима

вы получите что-то похожее на это:

DummyContract deployed to:  0x5c2E1BD82EDC0695cbA5AE64dA7aE34f073E167C
Войти в полноэкранный режим Выйти из полноэкранного режима

затем для проверки контракта введите следующую команду:

адрес, используемый в следующей команде, будет значением, которое вы ранее получили из консоли.

npx hardhat verify --network rinkeby 0x5c2E1BD82EDC0695cbA5AE64dA7aE34f07
Войти в полноэкранный режим Выйти из полноэкранного режима

В конце вы получите сообщение, подобное этому:

Successfully verified contract Greeter on Etherscan.
https://rinkeby.etherscan.io/address/0x5c2E1BD82EDC0695cbA5AE64dA7aE34f073E167C#code
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь, если вы перейдете по этой ссылке, вы сможете увидеть ваш контракт, а также код.

6. Заключение

Мы узнали, как развернуть и проверить смарт-контракт с помощью Hardhat.

Я очень надеюсь, что вы смогли следовать этому посту без каких-либо проблем, в противном случае я прошу прощения, пожалуйста, оставьте мне свои сомнения или комментарии.

Если вы ищете должность разработчика блокчейна или что-то другое, связанное с контентом, вам стоит заглянуть на сайт codenjobs.

Вы также можете посетить испанскую версию этого поста

Вы можете связаться со мной по telegram, если вам нужно нанять Full Stack разработчика.

Вы также можете добавить меня в Discord Appu#9136.

Спасибо за ваше время.

Оцените статью
devanswers.ru
Добавить комментарий