В быстро меняющемся мире развития блокчейнов внедрение смарт-контрактов является решающим шагом. Чтобы упростить этот процесс, разработчики часто обращаются к инструментам автоматизации, таким как 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. Используя эти методы, вы можете ускорить процесс развертывания контракта и сосредоточиться на создании инновационных децентрализованных приложений.