블록체인 학습
0 XP

Chapter 5: 함수 기초

개발 환경 설치와 점검

개발 환경 설치와 점검

지금까지는 이 사이트의 브라우저 에디터에서 Solidity 코드를 작성하고 Run 을 눌러 컴파일했습니다. 편리하지만 한계가 뚜렷합니다. 브라우저 컴파일러는 코드가 문법에 맞는지까지만 확인해 줄 뿐, 컨트랙트를 배포하거나 함수를 호출해 볼 수는 없습니다.

이번 랩에서는 그 다음 단계로 넘어갑니다. 내 컴퓨터에 실제 개발 환경을 설치하고, 지금까지 브라우저가 대신 해 주던 컴파일을 직접 실행해 봅니다. 표준 도구는 Hardhat 3 입니다.

이 레슨부터는 채점이 다릅니다. 로컬 환경 작업은 브라우저가 확인할 수 없으므로, 각 단계를 직접 해 보고 "무엇이 보이면 성공인지"를 눈으로 확인한 뒤 아래 체크리스트에 표시하면 완료됩니다.

1단계 — Node.js 확인

Hardhat 은 Node.js 위에서 동작합니다. 터미널을 열고 설치 여부와 버전을 확인합니다.

node -v
npm -v

v22. 이상이 나와야 합니다. 버전이 낮거나 명령을 찾을 수 없다는 오류가 나오면 nodejs.org 에서 LTS 버전을 먼저 설치하세요.

2단계 — 프로젝트 폴더 만들기

작업할 빈 폴더를 하나 만들고 그 안으로 이동합니다. 폴더 이름은 자유지만 공백과 한글은 피하는 편이 안전합니다.

mkdir solidity-lab
cd solidity-lab

3단계 — Hardhat 3 프로젝트 생성

반드시 빈 폴더 안에서 아래 명령을 실행합니다. 다른 파일이 있는 폴더에서 초기화하면 설정이 꼬이거나 기존 파일과 충돌할 수 있습니다.

npx hardhat --init --template mocha-ethers

--template mocha-ethers 를 붙였기 때문에 아무것도 묻지 않고 바로 설치됩니다. Dependencies installed 와 Project initialized 가 차례로 출력되면 끝입니다. 폴더 구조는 이렇게 생깁니다.

solidity-lab/
├── contracts/          # .sol 파일을 두는 곳 (Counter.sol, Counter.t.sol)
├── test/               # 테스트 코드 (Counter.ts)
├── scripts/            # 배포·호출 스크립트 (다음 랩에서 사용)
├── ignition/           # 배포 모듈 (이 과정에서는 쓰지 않습니다)
├── hardhat.config.ts   # Hardhat 설정
└── package.json

--template mocha-ethers 를 빼먹지 마세요. 플래그 없이 npx hardhat --init 만 실행하면 대화형 마법사가 뜨고, 기본값으로 넘기면 viem 기반 템플릿이 설치됩니다. 이 과정은 뒤에서 ethers.js 를 쓰므로 템플릿이 다르면 다음 랩의 스크립트가 그대로 동작하지 않습니다. 이미 잘못 만들었다면 폴더를 지우고 다시 시작하는 편이 빠릅니다.

4단계 — 컴파일하기

이제 브라우저가 대신 해 주던 그 일을 내 컴퓨터에서 직접 합니다.

npx hardhat compile

contracts/ 폴더의 모든 .sol 파일을 찾아 컴파일하고, 결과물(ABI 와 바이트코드)을 artifacts/ 폴더에 저장합니다. 이 artifacts/ 가 다음 랩에서 배포에 쓰일 재료입니다.

출력은 이런 형태입니다. 파일 개수와 solc 버전은 템플릿 버전에 따라 다를 수 있습니다.

Compiled 2 Solidity files with solc 0.8.34 (evm target: osaka)

컴파일러 버전은 hardhat.config.ts 의 solidity 항목에서 정합니다. 이 과정에서는 0.8.20 이상이면 충분합니다. 컨트랙트의 pragma solidity ^0.8.20; 과 설정된 버전이 맞지 않으면 컴파일이 실패하니, 오류가 나면 이 둘을 먼저 확인하세요.

이미 컴파일한 뒤 다시 실행하면 No contracts to compile 이 나오는데, 바뀐 파일이 없다는 뜻이라 정상입니다.

5단계 — 기본 테스트 실행

Hardhat 이 만들어 준 예제 테스트를 실행해 봅니다.

npx hardhat test

마지막 줄에 통과 개수가 나옵니다.

5 passing (3 solidity, 2 mocha)

Hardhat 3 는 두 종류의 테스트를 함께 돌립니다. contracts/Counter.t.sol 은 Solidity 로 쓴 테스트이고, test/Counter.ts 는 JavaScript(Mocha) 로 쓴 테스트입니다. 그래서 결과가 3 solidity, 2 mocha 로 나뉘어 표시됩니다.

테스트가 통과하면 컴파일러부터 테스트 러너까지 전체 도구 사슬이 정상이라는 뜻입니다.

시작 전 준비물

  • Node.js 22 LTS 이상 설치
  • 터미널(명령 프롬프트) 사용 경험
  • VS Code 등 코드 편집기

진행 확인

0 / 5

각 단계를 직접 수행하고, 아래 ‘확인 기준’이 실제로 보이면 체크하세요. 모두 체크하면 완료할 수 있습니다.