사전 요구 사항
컨트랙트 준비
이 가이드 전반에서 다음 예시 컨트랙트를 사용합니다:
Foundry로 배포하기
Foundry는 Rust 기반의 빠른 Ethereum 개발 툴킷입니다.
-
Foundry를 설치합니다:
.bashrc 또는 .zshrc 파일을 source 해야 할 수도 있습니다.
-
새 Foundry 프로젝트를 설정합니다:
-
Plasma 테스트넷 설정으로
foundry.toml을 업데이트합니다:
-
프로젝트 루트에
.env 파일을 생성합니다:
-
환경 변수를 로드합니다:
-
컨트랙트 코드를
src/SimpleStorage.sol로 저장한 후 배포합니다:
Foundry는 배포 트랜잭션 해시와 컨트랙트 주소를 출력합니다:
-
Foundry의 cast 도구를 사용하여 배포된 컨트랙트를 테스트합니다. 먼저 저장된 데이터를 읽습니다:
-
그런 다음 데이터를 업데이트하고 다시 읽습니다:
다음과 같은 출력이 표시됩니다:
Hardhat으로 배포하기
Hardhat은 풍부한 플러그인을 지원하는 완전한 기능의 개발 프레임워크입니다.
- 다음 사항을 확인합니다:
- Node.js 20+ (최신 Hardhat 호환성에 필요)
- Ethereum 개발 경험
- 테스트넷 토큰이 있는 지갑(테스트넷 체인 상세 정보 참조)
Node.js 18 이하는 더 이상 Hardhat에서 지원되지 않으며 ES 모듈 호환성 문제를 일으킬 수 있습니다.
-
Node.js 버전을 확인합니다:
Node.js 18 이하를 사용하고 있다면 Node.js 20+로 업그레이드합니다:
-
새 Hardhat 프로젝트를 초기화합니다:
호환성 문제가 발생하면 Hardhat 문서에서 최신 지원 버전을 확인하세요.
프롬프트가 나타나면 Create a JavaScript project를 선택합니다.
-
hardhat.config.js를 업데이트합니다:
-
프로젝트 루트에
.env 파일을 생성합니다:
-
scripts 디렉터리와 배포 스크립트를 생성합니다:
-
scripts/deploy.js를 생성합니다:
-
컨트랙트 코드를
contracts/SimpleStorage.sol로 저장한 후 배포합니다:
-
완료되었습니다!
Ethers.js로 배포하기
Ethers.js는 최소한의 프로그램 방식 배포 흐름을 제공합니다.
-
새 프로젝트를 생성합니다:
-
프로젝트 루트에
.env 파일을 생성합니다:
-
Solidity 컨트랙트를 컴파일하기 위한
compile.js를 생성합니다:
-
컨트랙트를
SimpleStorage.sol로 저장한 후 컴파일합니다:
다음과 같이 출력됩니다:
-
deploy.js를 생성합니다:
-
배포 스크립트를 실행합니다:
다음과 같이 출력됩니다:
배포 검증
위의 방법 중 하나로 배포한 후 컨트랙트 배포를 검증하세요.
문제 해결
ES 모듈 호환성 문제
Error [ERR_REQUIRE_ESM]: require() of ES Module과 같은 오류가 발생한다면 일반적으로 다음을 의미합니다:
-
Node.js 버전이 너무 오래됨: 사전 요구 사항에 명시된 대로 Node.js 20+로 업그레이드하세요.
-
종속성 버전 불일치: Node.js 업그레이드가 불가능하다면 문제가 되는 종속성을 다운그레이드할 수 있습니다:
Node.js 버전 경고
지원되지 않는 Node.js 버전에 대한 경고가 표시되는 경우:
사전 요구 사항 섹션의 단계를 따라 Node.js 20+로 업그레이드하세요.
자금 부족
지갑에 충분한 테스트넷 토큰이 있는지 확인하세요. 테스트넷 포셋을 방문하세요.
잘못된 네트워크 구성
네트워크 구성이 테스트넷 체인 상세 정보와 일치하는지 확인하세요.
가스 추정 실패
배포 구성에 명시적인 가스 한도를 설정하세요: