온체인 레이싱 게임 스마트컨트랙트 구조 문서
Hardhat과 Foundry를 병행하는 레이싱 게임 온체인 컨트랙트 저장소의 구조를 정리한 공개 문서
이 프로젝트에서의 TypeChain 활용
컨트랙트 타입 정의 자동 생성
프로젝트 2개에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.
Solidity 스마트컨트랙트 ABI로부터 TypeScript 타입 정의를 자동 생성하는 도구
TypeChain은 스마트컨트랙트의 ABI(Application Binary Interface)를 입력받아 해당 컨트랙트의 함수, 이벤트, 반환값에 대한 TypeScript 타입 선언과 타입이 부여된 컨트랙트 인터페이스 코드를 자동으로 생성해 주는 도구입니다. 원래 Solidity 컨트랙트는 자바스크립트/타입스크립트 코드에서 호출할 때 함수 시그니처나 인자 타입이 컴파일 타임에 검증되지 않아, 오타나 타입 불일치가 런타임에서야 드러나는 문제가 있었습니다. TypeChain은 이 간극을 메워 컨트랙트와 상호작용하는 코드에서도 자동완성과 타입 체크를 받을 수 있게 해줍니다. ethers.js, web3.js, truffle 등 여러 라이브러리를 대상으로 타입을 생성할 수 있습니다.
Hardhat 컴파일 과정에 TypeChain 플러그인을 연결하면 컴파일 시 자동으로 typechain-types 폴더에 타입이 생성되고, 이를 import해 타입 안전하게 컨트랙트를 호출할 수 있습니다.
# 1) 패키지 설치
npm install --save-dev typechain @typechain/ethers-v6 @typechain/hardhat
# 2) 컨트랙트 컴파일 시 타입 자동 생성 (hardhat.config에 @typechain/hardhat 등록 시)
npx hardhat compile
# 3) 생성된 타입 사용 예 (TypeScript)
# import { MyToken__factory } from "./typechain-types";
# const token = MyToken__factory.connect(address, signer);
# await token.transfer(to, amount); // 인자 타입이 컴파일 타임에 검증됨위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.
위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.
Hardhat과 Foundry를 병행하는 레이싱 게임 온체인 컨트랙트 저장소의 구조를 정리한 공개 문서
이 프로젝트에서의 TypeChain 활용
컨트랙트 타입 정의 자동 생성
CryptoZombies/Hardhat 샘플을 관찰자 시점으로 분석해 표준 셋업과 흔한 함정을 정리한 학습 문서
이 프로젝트에서의 TypeChain 활용
Solidity ABI를 TypeScript 타입으로 변환
위 프로젝트들에서 같이 쓰인 다른 기술입니다.