Hardhat

Деплой смарт-контракта с использованием Hardhat

Что такое Hardhat?

Hardhat - это среда разработки для Ethereum, которая помогает разработчикам управлять и автоматизировать общие задачи, связанные с созданием смарт-контрактов и децентрализованных приложений. Она может напрямую взаимодействовать с Ethereum API компании Caldera, позволяя развертывать смарт-контракты в сети Caldera.

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

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

  1. Создайте директорию для своего проекта:

    mkdir hardhat && cd hardhat
  2. Инициализируйте проект, для чего создавайте файл package.json

    npm init -y
  3. Установите Hardhat

    npm install hardhat
  4. Создайте проект

    npx hardhat
  5. Создайте пустой hardhat.config.js и установите плагин Ethers для использования Ethers.js библиотеки для взаимодействия с сетью.

    npm install @nomiclabs/hardhat-ethers ethers

Создание своего смарт-контракта

  1. Создайте директорию contracts

    mkdir contracts && cd contracts
  2. Создайте файл your_contract.sol в директории contracts

    touch your_contract.sol

Создание конфигурационного файла

Измените конфигурационный файл Hardhat и создайте безопасный файл для хранения приватного ключа в нем.

  1. Создайте файл secrets.json для хранения приватного ключа

    touch secrets.json
  2. Добавьте ваш приватный ключ в secrets.json

    {
        "privateKey": "YOUR-PRIVATE-KEY-HERE"
    }
  3. Добавьте файл к своему проекту .gitignore, и никогда не раскрывайте свой закрытый ключ.

  4. Измените файл hardhat.config.js

    • Импортируйте плагин Ethers.js

    • Импортируйте файлsecrets.json

    • Внутрь module.exports добавьте конфигурации сети Caldera

    hardhat.config.js

    require('@nomiclabs/hardhat-ethers');
    const { privateKey } = require('./secrets.json');
    
    module.exports = {
    solidity: "0.8.1",
    defaultNetwork: "rinkeby",
    networks: {
        rinkeby: {
        url: "https://eth-rinkeby.alchemyapi.io/v2/123abc123abc123abc123abc123abcde",
        accounts: [privateKey]
        },
        caldera: {
        url: "RPC URL",  // Insert your RPC URL Here
        }
    },
    }

Деплой смарт-контракта

  1. Скомпилируйте контракт

    npx hardhat compile
  2. Создайте новую директорию для скрипта и назовите ее scripts и добавьте новый файл с названием deploy.js

    mkdir scripts && cd scripts
    touch deploy.js
  3. Создайте скрипт деплоинга, например belowscripts/deploy.js

    async function main() {
    // 1. Get the contract to deploy
    const Your_Contract = await ethers.getContractFactory('your_contract');
    console.log('Deploying Your_Contract...');
    
    // 2. Instantiating a new smart contract
    const your_contract = await Your_Contract.deploy();
    
    // 3. Waiting for the deployment to resolve
    await your_contract.deployed();
    
    // 4. Use the contract instance to get the contract address
    console.log('Your_Contract deployed to:', your_contract.address);
    }
    
    main()
    .then(() => process.exit(0))
    .catch((error) => {
        console.error(error);
        process.exit(1);
    });

  4. Задеплойте your_contract.sol используя команду ниже

    npx hardhat run scripts/deploy.js --network caldera

Last updated