Hardhat을 사용하여 테스트넷에 스마트 계약 배포 및 검증
참고: Rinkeby는 곧 사용되지 않을 예정입니다. 자세한 내용을 알고 싶다면 here을 클릭하세요. 어쨌든 이 예제는 Goerli, Kovan 등과 같은 다른 테스트넷에서 작동할 수 있습니다.
안전모는 무엇입니까?
공식documentation에 따르면 Hardhat은 Ethereum 소프트웨어용 개발 환경입니다. 스마트 계약 및 dApp을 편집, 컴파일, 디버깅 및 배포하기 위한 다양한 구성 요소로 구성되며, 모두 함께 작동하여 완전한 개발 환경을 만듭니다.
전제 조건
Node.js 설치됨
프로젝트 생성
종속성
종속성을 설치하려면 프로젝트 폴더로 이동하여 터미널을 열고 다음 명령을 입력하십시오.
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 파일 구성
Let's create a .env
file in case you haven't already and open it.
we will need to set the following variables:
INFURA_API_KEY = your infura api key
METAMASK_ACCOUNT = your metamask account
ETHERSCAN_API_KEY = your etherscan api key
In case you don't know how to get your Metamask account, just follow the following steps:
- Open your metamask browser extension, click on the 3 dots
2. hardhat.config.js 설정
First we need to set up the configuration file, so let's open hardhat.config.js
, you will see something similar to this
require("@nomicfoundation/hardhat-toolbox");
require("@nomiclabs/hardhat-etherscan");
module.exports = {
solidity: "0.8.9",
};
We need to specify the networks we want to use, for this example we are only going to use 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. 배포할 컨트랙트 생성
For this example will be using a Dummiy contract called Greeter.sol, so let's open it.
//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. 스크립트 배포
Go to scripts folder and open deploy.js, delete everything inside.
- First let's require ethers from hardhat
- Then we will create a function that will be executed when the script is executed
- we will use ethers.getSigners() to get a object with our ethereum account information
- then we with getContractFactory() we are going to abstract the contract information, in this case of Greeter.sol
- we will deploy that information with deploy().
- Finally we wait for the contract to be deployed and get the address of the contract.
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. 배포 및 확인
Finally we will execute the following commands to deploy and verify our contract.
npx hardhat run scripts/deploy.js --network rinkeby
you will get something similar to this:
DummyContract deployed to: 0x5c2E1BD82EDC0695cbA5AE64dA7aE34f073E167C
then to verify the contract type the following command:
the address used in the next command will be the value that you previously get from the console.
npx hardhat verify --network rinkeby 0x5c2E1BD82EDC0695cbA5AE64dA7aE34f07
마지막으로 다음과 유사한 메시지를 받게 됩니다.
Successfully verified contract Greeter on Etherscan.
https://rinkeby.etherscan.io/address/0x5c2E1BD82EDC0695cbA5AE64dA7aE34f073E167C#code
이제 해당 링크를 방문하면 계약서와 코드를 볼 수 있습니다.
6. 결론
We learned how to deploy and verify a smart contract using Hardhat.
I really hope you have been able to follow the post without any trouble, otherwise i apologize, please leave me your doubts or comments.
If you're looking for a blockchain dev position, or more content related, you should check codenjobs 웹You can also visit the spanish version of this post
You can contact me by telegram if you need to hire a Full Stack developer.
Discord Appu#9136에서 나를 추가할 수도 있습니다.
시간 내 주셔서 감사합니다.
Reference
이 문제에 관하여(Hardhat을 사용하여 테스트넷에 스마트 계약 배포 및 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rtagliavia/deploy-and-verify-a-smart-contract-to-testnet-using-hardhat-9fp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)