본문 바로가기
날것 그대로의 공부기록/solidity

hardhat

by 20j 2023. 4. 27.

기본적인 hardhat 사용하기

- 로컬넷에서 컨트렉트를 테스트 하는 목적으로 사용.

- 배포전에 오류나 테스트를 위해서 사용되어진다.

 

hardhat 기본 자습서를 읽으면서 생각하는 작동순서는 다음과 같다.

 

hardhat은 작업 및 플러그인 개념을 중심으로 설계되었으며 toolbox을 통해서 ethers.js / chai-matchers 등을 지원해주며

디버그에 강력함을 가지고 있다.

 

node를 실행시키면 기본적으로는 로컬환경에서 돌아가며 자동채굴모드 (이벤트 발생마다 블록이 증가하는 방식)과

주기적 간격 채굴 방식을 선택할 수 있다.

 

폴더구조

  • root
    • 프로젝트폴더
      • artifacts (컴파일된 contract etc)
      • cache
      • contracts (여기에 컨트렉트를 작성한다)
        • my1.sol (예시)
        • my2.sol (예시)
      • node_modules
      • scripts (배포관련)
        • deploy.js
      • test (chai를 통한 테스트)
        • test.js
      • hardhat.config.js (task, event 추가가능)
      • packge-lock.js
      • package.js

ethers : provider / signer / contract 3가지로 나누어서 생각하기 가능.

 

사용 시 꿀팁

- openzeppelin 사용, 기본적인 erc20 토큰 제작 등에 관하여 매우 유용함.

 

- ethers.getSigners() : 현재 hardhat network에 있는 signer들의 주소를 반환해줌.

 

- ethers.getContractFactory("컨트렉트이름") : 컴파일되어있는 컨트렉트를 들고옴

- "contract".deploy("매개변수") : 컨트렉트 배포. 위의 get에서 return 되는 값이 "contract"

 

- "contract".connect("signer address")  : 해당 컨트렉트와 상호작용을 위해 연결

 

const { anyValue } = require("@nomicfoundation/hardhat-chai-matchers/withArgs");
const { expect } = require("chai");
const { ethers, hardhatArguments } = require("hardhat");



describe("tokenmake",function() {
    
    it("make token test", async function() {
        const [owner,acc1,acc2] = await ethers.getSigners(); 

        const makets = await ethers.getContractFactory("flashtoken1");
        const dtoken = await makets.deploy(10000);
        
        await dtoken.connect(owner);
        

        const ownerBalance = await dtoken.balanceOf(owner.address);
        expect(await dtoken.totalSupply()).to.equal(ownerBalance);
        });     
});

 

 

- 중간에 약간 헷갈렸던 것은 getContractFactory를 사용할 때 sol파일의 제목으로 호출하였는데

알고보니 contract 이름으로 호출해야하는 것이였다.

 

- expect(함수.to.equal("값")) : test에서 사용함. 함수를 실행하면 값과 같은가? 를 계산. 초기 테스트용

 

 

 

 

번외. 설치

윈도우에서 설치를 진행하였다.

 

a. WSL 설치하기

https://learn.microsoft.com/en-us/windows/wsl/install

 

Install WSL

Install Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine, and more are available.

learn.microsoft.com

해당 페이지를 참고해서 설치하기.

윈도우 상에서 리눅스 운영체제를 사용할 수 있도록 해준다.

hardhat에서는 해당 방법을 통해서 권장하고 있어서 그대로 하였다.

 

b. 패키지 업그레이드

$sudo apt update && apt upgrade

 

c. nvm, node 설치

 

d. vscode에서 wsl 연결하기

설치하고

 

 

이렇게 하면 vscode 세팅 끝.

추가적으로 js와 hardhat 확장프로그램도 깔아주기.

 

다음에는 유니스왑 컨트렉트에 대해 공부해보겠다.

'날것 그대로의 공부기록 > solidity' 카테고리의 다른 글

크립토 좀비(1)  (0) 2023.03.29