Foundry로 개발하기
GIWA에서 Foundry를 사용해 스마트 컨트랙트를 개발하고 배포해요.
Foundry는 Ethereum Application을 개발할 때 유용하게 사용할 수 있는 Toolkit 이에요. 빠르고 모듈러 구조를 가지고 있는 것이 특징이에요. Foundry를 설치하면 아래와 같은 네 가지의 개발 핵심 도구를 사용할 수 있어요.
forge: 스마트 컨트랙트 개발, 테스트, 배포 및 검증anvil: 네트워크 Forking이 가능한 로컬 Ethereum 개발 노드 실행cast: 컨트랙트 상호작용, 트랜잭션 전송 및 체인 데이터 조회chisel: 빠른 프로토타이핑과 디버깅을 위한 Solidity REPL
개발 환경 세팅
Foundry를 먼저 설치해요.
curl -L https://foundry.paradigm.xyz | bash
foundryupFoundry 툴킷이 모두 설치되었다면, forge 툴을 이용해서 Solidity Project를 생성할 수 있어요.
forge init giwa_project
cd giwa_project생성된 giwa_project 는 아래와 같은 구조를 가져요.
giwa_project/
├── foundry.toml # 프로젝트 설정이 담겨있는 파일
├── lib # 프로젝트에서 사용하는 외부 라이브러리
├── script # 배포, 시뮬레이션 등을 위한 스크립트
├── src # 프로젝트 소스 코드 디렉토리
└── test # 작성한 컨트랙트 테스트를 위한 디렉토리컨트랙트 작성하기
아주 간단한 컨트랙트부터 작성해볼까요?
위 스마트 컨트랙트 코드는 Giwa 라는 이름의 컨트랙트이고, helloGiwa 라는 함수와 HelloGiwa라는 이벤트를 가진 컨트랙트예요.
앞서 소개했듯, 고수준의 Solidity 코드를 저수준의 바이트코드로 컴파일되어야 EVM 위에서 실행할 수 있어요. 아래 명령어를 통해 컴파일을 할 수 있어요.
테스트 코드 작성하기
작성한 이 컨트랙트가 의도한대로 동작하는지 확인하기 위해 테스트 코드를 작성힐 수 있어요. forge는 Solidity 코드 형태로 테스트 코드를 작성할 수 있어요.
결과를 확인하려면 아래와 같이 입력하면 돼요.
아래와 같이 결과가 나왔다면, 우리가 작성한 테스트가 통과했다는 뜻이예요.
컨트랙트 배포하기
forge는 체인과 상호작용하거나 컨트랙트를 배포할 때 Solidity 형태로 스크립트 작성할 수 있어요.
체인에 배포하기 위해서, 아래와 같이 환경변수 설정을 해야해요.
그리고 배포에 사용할 지갑을 cast를 통해 Import 할 수 있어요.
배포는 위에 작성한 스크립트를 실행해서 진행할 수 있어요. 아래와 같이 입력해서 스크립트를 실행해요.
잘 수행되었다면 아래와 같은 결과가 출력될 거예요.
위와 출력에서 컨트랙트 주소를 확인하고, 익스플로러를 통해 컨트랙트가 잘 배포되었는지 확인할 수 있어요. 컨트랙트 배포와 검증이 잘 이루어졌으면 익스플로러 UI 를 통해서 컨트랙트와 바로 상호작용할 수 있어요.

더 알아보기
Foundry Book 을 통해 더 많은 가이드를 읽어보세요.
Last updated