블록체인

[Solidity] 하드햇 튜토리얼 요약

viviviviviid 2024. 6. 11. 15:48
예전에 해둔 요약 그대로 포스팅

https://hardhat.org/tutorial

 

Hardhat | Ethereum development environment for professionals by Nomic Foundation

Hardhat is an Ethereum development environment. Compile your contracts and run them on a development network. Get Solidity stack traces, console.log and more.

hardhat.org

 

Hardhat 튜토리얼

  1. npm init
  2. 하드햇 깔고
  3. config 빈 파일 생성하고
  4. 플러그인(toolbox : 유용한거 다 들어있음) 설치하고 config 파일에 추가하기
  5. contracts와 test 폴더 생성
  6. contracts 폴더 내에 *.sol 파일 생성 및 내용 채워넣기
  7. 그 뒤, npx hardhat compile 하면 자동으로 contracts 내의 컴파일이 안된 *.sol 코드를 컴파일해줌
  8. 그러면 자동으로 /artifacts와 /cache 폴더가 생성되면서, 컴파일된 내용들이 추가됨
  9. 이제 컴파일된 컨트랙트가 정상적인 출력값을 내놓는지 테스트하려함.
  10. js의 chai 라이브러리 기반으로 테스트 코드를 작성
  11. chai 내의 test, describe, it 모듈들 설명
  12. toolbox의 loadFixture 모듈 설명 (중복 코드 해결)
  13. waitForDeployment()를 이용해서 배포된 다음 진행되게
  14. hardhat/console.sol을 solidity 파일에 임포트하고, 함수내에서 이벤트 emit 외에도, consoke.log함수를 이용하면 하드햇 터미널에서도 이벤트가 발생된다.
  15. hardhat ignition 으로 다른 체인에 배포
    • 배포 스크립트: deploy.js에서 명령형으로 작성.
    • 배포 과정: 터미널에서 npx hardhat run 명령으로 실행.
    • 특징: 단순하고 명령형이며, 병렬 처리나 오류 복구 기능이 기본적으로 포함되지 않음.
    Hardhat Ignition 배포 방식
    • 모듈 파일: TokenModule.js에서 선언형으로 작성.
    • 배포 과정: 터미널에서 npx hardhat ignition deploy 명령으로 실행.
    • 특징: 선언형 접근 방식으로 병렬 처리, 오류 복구, 중단된 배포 재개 등의 고급 기능 제공.
    컨트랙트와 hardhat.config 파일은 동일하지만, js 파일과 터미널 커맨드가 다름
  16. 일반적인 Hardhat 배포 방식
  17. /ignition/modules 폴더를 생성하고 그 내에 js 파일 생성 및 채워넣기
  18. npx hardhat ignition deploy ./ignition/modules/Token.js —network <네트워크이름>에서 —network 파라미터를 사용하지 않으면 실행은 되지만, 실행이 끝난 이후 전부 날라가게된다.
  19. 다른 네트워크에 배포하기 위해, hardhat.config 파일 내에서 INFURA 세팅을 해주자