Hardhat 개발 환경 설정하기

quickstart beginner

마루 네트워크에서 스마트 컨트랙트를 컴파일, 테스트, 배포하기 위해 Hardhat 프로젝트를 구성하는 단계별 가이드입니다.

마루는 EVM 호환이라 표준 Hardhat 프로젝트가 마루 전용 패치 없이 그대로 동작합니다. 이 가이드는 마루 테스트넷을 가리키는 새 Hardhat 프로젝트를 만드는 과정을 다룹니다.

사전 요구사항

  • Node.js 20.19 이상 — Hardhat 3는 engines를 선언하지 않지만 의존성 트리가 이 버전을 요구합니다
  • 잔액이 있는 테스트넷 계정 — 테스트넷 접속 페이지의 파우셋 참고

1. Hardhat 프로젝트 초기화

프로젝트 디렉터리를 만들고 Hardhat을 설치합니다. 인터넷에 있는 대부분의 Hardhat 가이드와 세 가지가 다릅니다. 마루는 Hardhat 3 기준이기 때문입니다. 프로젝트가 ESM이어야 하고, hardhat-toolbox를 설치하면 안 되며, 프로젝트 생성 명령이 npx hardhat --init입니다.
mkdir maroo-project && cd maroo-project
npm init -y

# Hardhat 3는 ESM 전용입니다. 이 줄이 없으면 첫 컴파일이
# "Hardhat only supports ESM projects."로 실패합니다.
npm pkg set type="module"

# 메이저 버전을 고정합니다. @nomicfoundation/hardhat-toolbox는 넣지 마십시오.
# 현재 릴리스는 Hardhat 2도 3도 지원하지 않으며, 마루의 컨트랙트도 쓰지 않습니다.
npm install --save-dev hardhat@^3.1.10

# 프로젝트를 만듭니다. Hardhat 3에서는 `npx hardhat`만 치면 오류가 나므로 --init을 씁니다.
npx hardhat --init
참고: npx hardhat 프롬프트가 나타나면 최상의 개발 경험을 위해 'Create a TypeScript project'를 선택합니다.

2. `hardhat.config.ts` 설정

hardhat.config.ts를 열고 네트워크 항목을 추가합니다. Hardhat 3에서 걸리는 지점이 둘 있습니다. 설정 타입은 type-only import이고, 모든 네트워크에 type을 명시해야 합니다. 개인 키는 .env에서 가져오며 절대 커밋하지 마십시오.
import type { HardhatUserConfig } from "hardhat/config";
import * as dotenv from "dotenv";
dotenv.config();

const PRIVATE_KEY = process.env.PRIVATE_KEY || "";

const config: HardhatUserConfig = {
  // Maroo's own contracts compile with 0.8.28 — match it so bytecode and
  // behaviour line up with the deployed precompiles.
  solidity: "0.8.28",
  networks: {
    maroo_testnet: {
      type: "http",          // required by Hardhat 3; omitting it fails config validation
      url: "https://rpc-testnet.maroo.io",
      chainId: 450815,       // Mainnet: 815
      accounts: PRIVATE_KEY ? [PRIVATE_KEY] : [],
    },
  },
};

export default config;
주의: 개인 키를 절대 Git에 커밋하지 마십시오. 환경 변수(.env 파일)를 사용해 안전하게 관리합니다. 테스트넷 자금은 파우셋에서 요청합니다.

3. 컴파일 및 배포

설정이 완료되었으므로 컴파일하고 배포합니다. Hardhat의 샘플 프로젝트에는 Lock.sol 컨트랙트와 배포 스크립트가 함께 제공됩니다.
# 계약 컴파일
npx hardhat compile

# 마루 테스트넷에 배포
npx hardhat run scripts/deploy.ts --network maroo_testnet

마무리

Hardhat 프로젝트가 마루 테스트넷에 연결됐습니다. 이더리움 메인넷에서 쓰던 동일한 프로젝트 구조, 플러그인, 테스트가 그대로 적용됩니다.
ESC
검색어를 입력하세요