Truffle 프레임워크 핵심 정리: config 설정으로 보는 스마트 컨트랙트 개발 흐름
Truffle의 역할과 truffle-config.js 핵심 설정(networks·compiler·test·DB)을 예제 코드와 표로 정리해, 실제 배포 환경에서 바로 활용할 수 있도록 설명합니다.
이 글을 통해 Truffle이 무엇을 해주는 도구인지 이해하고, truffle-config.js 설정을 통해 스마트 컨트랙트 컴파일·테스트·배포 흐름을 한눈에 파악할 수 있습니다.

Truffle이란?
Truffle은 스마트 컨트랙트 개발, 테스트, 배포를 지원하는 이더리움 개발 프레임워크입니다.
Solidity 컴파일, 테스트 코드 실행, 네트워크 배포까지의 반복 작업을 표준화해 개발 생산성을 높여줍니다.
Truffle 프로젝트의 핵심 설정은 truffle-config.js 파일에 모여 있으며, 이 파일을 통해 네트워크·컴파일러·테스트 환경을 정의합니다.
truffle-config.js 주요 구성
truffle-config.js는 크게 다음 네 가지 영역으로 나뉩니다.
- networks: 배포 대상 블록체인 설정
- compilers: Solidity 컴파일러 설정
- mocha: 테스트 환경 설정
- db: Truffle DB 설정
networks: 네트워크 설정
Truffle은 로컬 개발 환경(Ganache)부터 테스트넷, 메인넷까지 다양한 네트워크에 배포할 수 있습니다.
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*",
},
goerli: {
provider: () =>
new HDWalletProvider(
MNEMONIC_OR_PRIVATE_KEY,
`https://goerli.infura.io/v3/${PROJECT_ID}`
),
network_id: 5,
confirmations: 2,
timeoutBlocks: 200,
skipDryRun: true,
},
}
네트워크 설정 요소 요약
| 속성 | 설명 |
|---|---|
| host | 연결할 블록체인 노드 주소 |
| port | RPC 서버 포트 |
| network_id | 네트워크 식별자 (*는 전체 허용) |
| provider | Infura 등 외부 RPC 연결용 |
| confirmations | 배포 확정까지 대기할 블록 수 |
| timeoutBlocks | 타임아웃 기준 블록 수 |
| skipDryRun | 배포 전 모의 실행 생략 여부 |
실무에서는 로컬은
development, 실제 배포는testnet/mainnet으로 분리하는 것이 일반적입니다.
compilers: Solidity 컴파일러 설정
컴파일러 설정을 통해 Solidity 버전과 최적화 옵션을 제어할 수 있습니다.
compilers: {
solc: {
version: "0.8.21",
settings: {
optimizer: {
enabled: true,
runs: 200
},
evmVersion: "byzantium"
}
}
}
컴파일러 설정 요소
| 속성 | 설명 |
|---|---|
| version | 사용할 Solidity 버전 |
| optimizer.enabled | 코드 최적화 여부 |
| optimizer.runs | 최적화 반복 횟수 |
| evmVersion | 타겟 EVM 버전 |
팁: 최적화는 가스 비용 절감에 중요하지만, 배포 이후 코드를 바꿀 수 없으므로 충분한 테스트가 필수입니다.
mocha: 테스트 설정
Truffle은 Mocha 테스트 프레임워크를 기본으로 사용합니다.
mocha: {
timeout: 100000
}
| 속성 | 설명 |
|---|---|
| timeout | 테스트 최대 실행 시간(ms) |
블록 생성이나 배포 테스트가 포함될 경우, 기본 타임아웃보다 크게 설정하는 것이 안전합니다.
db: Truffle DB 설정
Truffle DB는 배포된 컨트랙트의 메타데이터를 저장하는 기능입니다.
db: {
enabled: false,
host: "127.0.0.1",
adapter: {
name: "indexeddb",
settings: {
directory: ".db"
}
}
}
| 속성 | 설명 |
|---|---|
| enabled | Truffle DB 활성화 여부 |
| adapter.name | 사용할 DB 타입 |
| directory | 데이터 저장 경로 |
일반적인 학습·개발 환경에서는 비활성화 상태로 두는 경우가 많습니다.
정리
- Truffle은 스마트 컨트랙트 개발 전 과정을 통합 관리하는 프레임워크입니다.
truffle-config.js는 배포 환경과 컴파일 조건을 결정하는 핵심 파일입니다.- 네트워크·컴파일러·테스트 설정을 분리해 관리하면 실수 없는 배포가 가능합니다.