Tech Lab2 min read

Truffle 프레임워크 핵심 정리: config 설정으로 보는 스마트 컨트랙트 개발 흐름

Truffle의 역할과 truffle-config.js 핵심 설정(networks·compiler·test·DB)을 예제 코드와 표로 정리해, 실제 배포 환경에서 바로 활용할 수 있도록 설명합니다.

#Truffle#스마트컨트랙트#Solidity#배포설정#이더리움

이 글을 통해 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연결할 블록체인 노드 주소
portRPC 서버 포트
network_id네트워크 식별자 (*는 전체 허용)
providerInfura 등 외부 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"
    }
  }
}
속성설명
enabledTruffle DB 활성화 여부
adapter.name사용할 DB 타입
directory데이터 저장 경로

일반적인 학습·개발 환경에서는 비활성화 상태로 두는 경우가 많습니다.

정리

  • Truffle은 스마트 컨트랙트 개발 전 과정을 통합 관리하는 프레임워크입니다.
  • truffle-config.js배포 환경과 컴파일 조건을 결정하는 핵심 파일입니다.
  • 네트워크·컴파일러·테스트 설정을 분리해 관리하면 실수 없는 배포가 가능합니다.

참고 링크

다음으로 읽어볼 글