혼자서 리포트를 읽으며 컨트랙트 오딧을 공부하는 것도 좋지만 영상으로 정리된 강의가 있으면 좋겠다고 생각했었다. Coursera 또는 Udemy에 블록체인 강의는 있지만 스마트컨트랙트 보안 관련 강의는 없다. 그러던 어느 날 한 트윗을 발견하게 되는데..
사실 예전부터 팔로우하던 사람이었고, 유튜브에 올리는 컨트랙트 관련 교육 영상이 맘에 들어서 트위터까지 팔로우하게 된 케이스다. 그 동안 현생에 치여서 못 했던 취약점 종류와 전체적인 개념 정리를 할 수 있을 것 같아 신청했다. 게다가 요즘 가장 핫한 Trust와 Pashov의 보너스 영상까지 있다고 해서 충동구매를 했다.
아쉽게도 foundry가 아닌 hardhat을 주로 다룬다. 개인적으로 foundry를 더 선호하지만 나중에 hardhat으로 테스트 코드를 작성할 일이 있을 것이다. 이번 강의를 통해 hardhat에 익숙해질 수 있는 기회라고 생각해야겠다.
mkdir learn-hardhat
cd learn-hardhat
npx hardhat
폴더를 하나 만들고 프로젝트를 생성한다. IDE로 폴더를 열면 기본 컨트랙트인 Lock.sol
이 있을 것이다.
npx hardhat compile
컴파일 해주고
npx hardhat run ./scripts/deploy.js
script 폴더 안에 있는 파일을 이용해 deploy 해준다. 아래와 같이 컨트랙트가 잘 배포된 것을 알 수 있다.
npx hardhat test ./test/Lock.js
이제 test 폴더에 있는 파일을 이용해 test 코드를 돌려본다. 아래와 같이 정상적으로 테스트를 통과한 것을 볼 수 있다.
npx hardhat node
위 명령어를 통해 로컬 환경에서 노드를 돌릴 수 있다. 명령어를 통해 생성된 프라이빗키를 메타마스크에 임포트하고, 로컬 네트워크로 변경해서 사용할 수 있다.(이 때 chainID는 31337로 설정해야 한다.)