Hardhat/
FundMe/
install hardhat
yarn add --dev hardhat
create new hardhat project
yarn hardhat
select "Create a JavaScript project
Hardhat/
FundMe/
contracts/
FundMe.sol
PriceConverter.sol
작업했던 FundMe.sol, PriceConverter.sol을 복사해서 프로젝트내의 contracts폴더에 붙여넣는다.
hardhat.config.js에서 solidity버전을 0.8.8로 수정한다.
yarn hardhat complie
Error HH411: The library @chainlink/contracts, imported from contracts/PriceConverter.sol, is not installed. Try installing it using npm.
위와같이 에러가 발생하는데 리믹스에서는 NPM이나 GitHub에서 바로 import했지만 Hardhat에서는 구체적으로 어디서 왔는지 알려야한다.
yarn add --dev @chainlink/contracts
설치 후 성공적으로 컴파일이 된다.
이제 배포할 차례이다. Hardhat Deploy 패키지를 이용한다.
yarn add --dev hardhat-deploy
hardhat.config.js
require("hardhat-deploy")
추가해준다.
/scripts
deploy.js
deploy.js 삭제
/deploy
폴더를 생성해준다.
yarn add --dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers
Hardhat 런타임 환경에 ethers 객체를 추가한다.
/deploy
01-deploy-fund-me.js
module.exports = async ({ getNamedAccounts, deployment }) => {
const { deploy, log } = deployments
const { deployer } = await getNamedAccounts()
const chainId = network.config.chainId
}
async 익명함수를 만들고 hardhat runtime environment
에서 getNamedAccounts
, deployment
파라미터를 가져와 넣어주고 모듈화 해준다. deploy
함수와 log
함수를 가져와 deployments
에 묶어준다. deployer
를 만들고 키가 이름이고 값이 주소인 객체를 반환하는 getNamedAccounts
함수를 가져온다.
hardhat.config.js
namedAccounts: {
deployer: 0
},
user: {
default: 1,
}
설정을 추가 해준다. 기본적으로 첫 번째 계정을 deployer로 사용한다. 두 번째 계정을 user로 사용(테스트에서 배포자와 다른 계정이 된다).
안녕하세요. hardhat 공부하고있는 사람입니다..;; 질문이있는데
module.exports = async ({ getNamedAccounts, deployment }) => {
const { deploy, log } = deployments
const { deployer } = await getNamedAccounts()
const chainId = network.config.chainId
}
여기서 저 함수들을 어디에서 가져오는건가요?? 벌써 구현된 함수들을 가져온거 같은데 이해가 잘 안갑니다.. async 안에 인자가 정확히 뭐고 deploy, log, deployer도 뭔지 잘 모르겠습니다. 다 어디에서 가져오는건지..