
Smart Contract스마트 컨트랙트
스마트 컨트랙트(Smart Contract)는 계약 조건을 코드로 작성해 블록체인에 배포하고, 조건이 충족되면 제3자의 개입 없이 자동으로 실행되는 프로그램이다.
개요
1994년 Nick Szabo가 개념을 제안했으며, 이더리움이 2015년 튜링 완전한 스마트 컨트랙트 플랫폼을 구현함으로써 실용화됐다. "코드가 곧 법(Code is Law)"이라는 블록체인 철학을 구현하는 핵심 기술이다.
이더리움 계정 유형
이더리움에서 스마트 컨트랙트는 단순한 코드가 아니라 독립적인 블록체인 계정이다. 이더리움에는 두 가지 계정이 존재한다.
| 구분 | 외부 소유 계정 (EOA) | 컨트랙트 계정 (CA) |
|---|---|---|
| 제어 주체 | 개인 키 보유자 | 배포된 코드(자율 실행) |
| 트랜잭션 시작 | 가능 | 불가 (다른 계정의 호출로만 실행) |
| 코드 보유 | 없음 | 있음 |
| ETH 보유 | 가능 | 가능 |
| 생성 시점 | 키 생성 즉시 | 블록체인 배포 시 |
자판기 비유: 스마트 컨트랙트는 자판기와 같다. "ETH 입금 + 상품 선택 → 자동 배출"처럼, 미리 정의된 규칙에 따라 누구의 개입 없이 정확하게 실행된다. 자판기를 신뢰하듯, 상대방이 아닌 코드를 신뢰한다.
작동 원리
배포와 가스
스마트 컨트랙트 배포는 일반 ETH 전송보다 훨씬 많은 가스를 소비한다. 코드 자체를 블록체인에 기록하기 때문이다.
| 항목 | 내용 |
|---|---|
| 배포 비용 | 코드 크기·복잡도에 비례, 수십~수백 달러 수준 |
| 함수 호출 비용 | 상태를 변경하는 쓰기 함수는 가스 소비, 읽기(view) 함수는 무료 |
| 크기 제한 | 컨트랙트 크기 최대 24KB (EIP-170). 초과 시 배포 불가 |
| 크기 초과 대응 | 다이아몬드 패턴으로 로직을 여러 컨트랙트에 분산 |
누구든 가스 비용만 지불하면 허가 없이 스마트 컨트랙트를 배포할 수 있다. 배포 후에는 고유 주소가 부여되며, 이 주소가 영구적인 계약의 식별자가 된다.
주요 특성
| 특성 | 설명 |
|---|---|
| 자동 실행 | 조건 충족 시 중개자 없이 자동 처리 |
| 불변성 | 배포 후 코드 변경 불가 (업그레이드 패턴 별도 존재) |
| 투명성 | 코드와 실행 결과가 블록체인에 공개 |
| 신뢰 불필요 | 상대방을 믿지 않아도 계약 이행 보장 |
| 상호운용성 | 다른 컨트랙트를 직접 호출해 기능 조합 가능 (컴포저빌리티) |
스마트 컨트랙트 언어
Solidity (이더리움)
가장 널리 사용되는 스마트 컨트랙트 언어. JavaScript와 유사한 문법.
Rust (Solana, Near)
성능과 안전성이 중요한 L1 체인에서 사용.
Vyper
Python 유사 문법, 보안성 강조. Curve 등에서 사용.
주요 활용 분야
DeFi
AMM, 렌딩 프로토콜, 스테이블코인 등 모든 DeFi 서비스의 핵심.
NFT
ERC-721, ERC-1155 표준으로 디지털 자산의 소유권 관리.
DAO 거버넌스
투표 집계, 제안 실행, 트레저리 관리 자동화.
토큰 발행
ERC-20 표준으로 대부분의 암호화폐가 스마트 컨트랙트로 구현됨.
부동산
중개인 없이 매매 계약 체결·에스크로·소유권 이전을 자동화. 계약 조건 충족 시 즉시 소유권 이전이 실행된다.
공급망 관리
생산→가공→유통→판매 단계별 데이터를 블록체인에 기록해 위변조를 방지하고 소비자가 원산지를 직접 검증할 수 있게 한다.
의료
환자 동의 하에 의료 데이터를 암호화·공유하고, 보험금 청구 조건 충족 시 자동 지급을 실행.
보안 취약점
스마트 컨트랙트 버그는 자금 손실로 직결된다.
| 취약점 | 설명 | 대표 사례 |
|---|---|---|
| 재진입 공격 (Reentrancy) | 외부 호출 중 함수를 재호출해 잔액을 반복 인출 | The DAO 해킹 (2016, $60M) |
| 정수 오버플로우 | 최대값 초과 시 0으로 리셋 | BECToken (2018) |
| 접근 제어 취약점 | 권한 검사 누락 | Poly Network (2021, $611M) |
| 오라클 조작 | 가격 피드 조작으로 청산 유발 | Mango Markets (2022) |
| 플래시 론 공격 | 무담보 대출을 이용한 시세 조작 | 다수 DeFi 프로토콜 |
상호운용성과 컴포저빌리티
스마트 컨트랙트는 공개 API처럼 동작한다. 배포된 컨트랙트의 함수는 누구나 호출할 수 있고, 다른 컨트랙트에서 직접 호출하는 것도 가능하다. 이를 컴포저빌리티(Composability) 라 하며, DeFi 생태계의 핵심 특성이다.
"머니 레고(Money Lego)": Uniswap + Aave + Curve 같은 독립 컨트랙트들을 조합해 복잡한 금융 로직을 구현하는 것이 가능하다.
한계
| 한계 | 내용 |
|---|---|
| 코드 불변성 | 배포 후 버그 수정이 어렵고 잘못된 로직이 그대로 실행됨 |
| 오프체인 데이터 접근 불가 | 블록체인 외부 데이터를 직접 읽지 못해 오라클에 의존 |
| 크기 제한 | 최대 24KB — 복잡한 로직은 다이아몬드 패턴으로 분산 필요 |
| 법적 불확실성 | 많은 국가에서 스마트 컨트랙트의 법적 효력에 대한 명확한 규제 미비 |
| 가스 비용 | 네트워크 혼잡 시 실행 비용 급등으로 소액 거래에 비경제적 |
업그레이드 패턴
배포 후 변경 불가라는 한계를 극복하기 위한 설계 패턴.
- •프록시 패턴: 로직 컨트랙트를 교체 가능한 구조 (OpenZeppelin Transparent Proxy)
- •다이아몬드 패턴: 여러 로직 컨트랙트를 모듈화
멀티시그 (Multi-Signature)
단일 키 대신 여러 서명이 모여야 실행되는 컨트랙트. N-of-M 형식으로 표기한다.
예) 4/7 멀티시그: 7명의 서명자 중 4명 이상 동의해야 트랜잭션 실행
| 특성 | 설명 |
|---|---|
| 단일 실패 지점 제거 | 키 하나가 탈취돼도 자산 안전 |
| 책임 분산 | DAO 트레저리·팀 자금 공동 관리 |
| 자금 손실 방지 | 실수로 인한 단독 송금 차단 |
대표 구현체: Safe(구 Gnosis Safe) — DeFi 프로토콜 트레저리에 가장 널리 쓰인다.
검증 및 감사
배포 전 보안 감사(Audit)가 필수적이다.
- •공식 검증: 수학적으로 코드 정확성을 증명
- •보안 감사: Trail of Bits, OpenZeppelin, ChainSecurity 등 전문 감사 기관
- •버그 바운티: Immunefi 등 플랫폼을 통해 화이트햇 해커에게 취약점 신고 보상
미래 전망
| 방향 | 내용 |
|---|---|
| AI 결합 | AI 에이전트가 스마트 컨트랙트와 직접 상호작용해 자율적인 온체인 의사결정 수행 |
| CBDC 통합 | 중앙은행 디지털 화폐 발행·유통·소각 로직을 스마트 컨트랙트로 구현하는 실험 진행 중 |
| 크로스체인 | 다른 체인 간 컨트랙트 호출을 가능하게 하는 브릿지·메시지 프로토콜 성숙 |
| 계정 추상화(ERC-4337) | 스마트 컨트랙트가 지갑 역할을 해 가스 스폰서·배치 트랜잭션 등 UX 개선 |
| 규제 명확화 | EU MiCA 등 법적 프레임워크 정비로 기업 채택 확산 예상 |
관련 개념
- •거버넌스 토큰 — 스마트 컨트랙트로 투표권 행사
- •DeFi — 스마트 컨트랙트 기반 금융 서비스
- •DAO — 스마트 컨트랙트로 조직 운영 자동화
참고문헌
- 1.Szabo, N. (1994). Smart Contracts.
- 2.Ethereum Foundation. (2024). Smart Contracts. ethereum.org
- 3.Engineer Daddy. (2024). 스마트 컨트랙트란?
- 4.Antonopoulos, A. & Wood, G. (2018). Mastering Ethereum. O'Reilly Media.
- 5.OpenZeppelin. OpenZeppelin Contracts
- 6.Ethereum Foundation. Solidity Documentation