Hardhat_03

atesi·2022년 10월 22일
0

blockchain

목록 보기
11/12
Hardhat/
	FundMe/

Starting

  • install hardhat

    yarn add --dev hardhat
  • create new hardhat project

    yarn hardhat

    select "Create a JavaScript project

Hardhat FundMe

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 Depoly

이제 배포할 차례이다. 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로 사용(테스트에서 배포자와 다른 계정이 된다).

profile
Action!

1개의 댓글

comment-user-thumbnail
2023년 9월 13일

안녕하세요. hardhat 공부하고있는 사람입니다..;; 질문이있는데
module.exports = async ({ getNamedAccounts, deployment }) => {
const { deploy, log } = deployments
const { deployer } = await getNamedAccounts()
const chainId = network.config.chainId
}
여기서 저 함수들을 어디에서 가져오는건가요?? 벌써 구현된 함수들을 가져온거 같은데 이해가 잘 안갑니다.. async 안에 인자가 정확히 뭐고 deploy, log, deployer도 뭔지 잘 모르겠습니다. 다 어디에서 가져오는건지..

답글 달기