Tech Lab2 min read
스마트 컨트랙트 배포 과정: 컴파일부터 온체인 배포까지
스마트 컨트랙트는 컴파일을 통해 EVM이 이해하는 형태로 변환된 뒤, 배포 트랜잭션을 통해 블록체인에 저장됩니다. Truffle·Hardhat 기준으로 전체 흐름을 한눈에 정리합니다.
#스마트컨트랙트#컴파일#배포#Solidity#EVM
이 글을 통해 Solidity 스마트 컨트랙트가 어떻게 블록체인에 배포되는지를 단계별로 이해하고, 개발 도구(Truffle·Hardhat) 기준의 실제 흐름을 파악할 수 있습니다.

스마트 컨트랙트 배포 과정 개요
스마트 컨트랙트를 블록체인 네트워크에 올리는 과정은 크게 두 단계로 나뉩니다.
- 컴파일(Compile)
Solidity 소스 코드를 EVM이 이해할 수 있는 바이트코드(Bytecode) 와 ABI로 변환합니다. - 배포(Deploy)
생성된 바이트코드를 트랜잭션으로 전송해 블록체인에 저장합니다.
이 두 단계는 EVM 기반 스마트 컨트랙트 개발에서 반드시 거쳐야 하는 기본 절차입니다.
컴파일(Compile)
컴파일은 사람이 읽는 Solidity 코드를 머신이 실행 가능한 형태로 바꾸는 과정입니다.
실행 명령어
truffle compile
# 또는
npx hardhat compile
컴파일 단계에서 수행되는 작업
.sol파일을 바이트코드(.bin) 로 변환- 컨트랙트 외부와 상호작용하기 위한 ABI(Application Binary Interface) 생성
- 컴파일 결과를 JSON 형태로 저장
컴파일 결과물 예시 구조
// Truffle
build/
└── contracts/
└── SimpleContract.json # 바이트코드 + ABI 포함
// Hardhat
artifacts/
└── contracts/
컴파일은 배포 이전에 반드시 수행되는 준비 단계이며, 이 결과물이 있어야 배포가 가능합니다.
배포(Deploy)
배포는 컴파일된 바이트코드를 실제 블록체인 상태(state) 에 기록하는 과정입니다.
배포 시 일어나는 일
- 스마트 컨트랙트 배포용 트랜잭션 생성
- 트랜잭션이 블록에 포함되며 컨트랙트 코드가 온체인에 저장
- 컨트랙트 주소(Address) 가 생성되어 반환
배포 이후 상태
- 블록체인에 스마트 컨트랙트 코드가 영구 저장됨
- 고유한 컨트랙트 주소가 부여됨
- 해당 주소를 통해 함수 호출 및 상태 조회 가능
컴파일 vs 배포 비교
| 구분 | 컴파일 | 배포 |
|---|---|---|
| 목적 | 실행 가능한 코드 생성 | 블록체인에 코드 저장 |
| 결과 | 바이트코드 + ABI | 컨트랙트 주소 |
| 온체인 여부 | 오프체인 | 온체인 |
| 비용 | 없음 | 가스 비용 발생 |
주의: 컴파일은 무료지만, 배포는 트랜잭션이므로 반드시 가스 비용이 발생합니다.
정리
- 컴파일은 Solidity 코드를 EVM이 이해할 수 있는 형태로 바꾸는 단계
- 배포는 변환된 코드를 트랜잭션으로 블록체인에 기록하는 단계