Создание и деплой смарт-контракта Moonbeam используя hardhat
В данном документе мы расскажем как создать и задеплоить смарт-контракт Moonbeam используя локальную ноду, с помощью hardhat
1. Для запуска локальной ноды Moonbeam Development Node мы в нашем примере будем использовать docker. Подготовим наш сервер для использования докера :
sudo apt update
sudo apt install wget -y
wget -O get-docker.sh https://get.docker.com
sudo sh get-docker.sh
sudo apt install -y docker-compose
rm -f get-docker.sh
docker pull purestake/moonbeam:v0.14.2
docker run --rm --name moonbeam_development --network host \ purestake/moonbeam:v0.14.2 \ --dev
sudo apt install curl git
curl https://deb.nodesource.com/setup_12.x | bash -
sudo apt install nodejs
node --version
mkdir hardhat-dev && cd hardhat-dev
npm init --yes
npm install --save-dev hardhat
5. Создаем hardhat проект, на примере используются параметры по умолчанию. Вы можете выставить параметры которые нужны вам :
npx hardhat
npx hardhat compile
7. Теперь подготовим файлы для деплоя смарт контракта. Нам требуется файл конфига, файл скрит-деплоя и файл приватного ключа.
Сначала установим сеть в файл конфига:
nano hardhat.config.js
networks: {
dev: {
url: "http://127.0.0.1:9933",
chainId: 1281,
accounts: [privateKey]
}
}!help Файл конфига должен выглядеть следующим образом :
require("@nomiclabs/hardhat-waffle");
// This is a sample Hardhat task. To learn how to create your own go to
// https://hardhat.org/guides/create-task.html
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
const accounts = await hre.ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more
/**
* @type import('hardhat/config').HardhatUserConfig
*/
const { privateKey } = require('./secrets.json');
module.exports = {
solidity: "0.8.4",
networks: {
dev: {
url: "http://127.0.0.1:9933",
chainId: 1281,
accounts: [privateKey]
}
}
};nano scripts/deploy.js
async function main() {
// We get the contract to deploy
const Greeter = await ethers.getContractFactory('Greeter');
console.log('Deploying...');
// Instantiating a new smart contract
const greeter = await Greeter.deploy('Hi!');
// Waiting for the deployment to resolve
await greeter.deployed();
console.log('Greeter deployed to:', greeter.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});Создаем файл с приватным ключом от метамаска.
Ознакомится с ключами для разработки можете здесь .
nano secrets.json
{
"privateKey": "0x99b3c12287537e38c90a9219d4cb074a89a16e9cdb20bf85728ebd97c343e342"
}npx hardhat run scripts/deploy.js --network dev
Если видите такую картину, то вы не установили приватный ключ. Проверьте файл конфига и файл приватного ключа
Если видите такую картину, то вы пропустили аргумент в файле деплоя. В нашем примере это аргумент const greeter = await Greeter.deploy('Hi!');
https://docs.moonbeam.network/builders/get-started/moonbeam-dev/