---
title: "스마트 컨트랙트"
title_en: "Smart Contracts"
type: 용어
url: https://wiki.tokenpost.kr/w/smart-contracts
canonical: https://wiki.tokenpost.kr/w/smart-contracts
language: ko
publisher: "토큰포스트"
updated: 2026-07-30T07:25:39.279+00:00
created: 2026-07-28T22:43:14.81119+00:00
same_as: ["https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A7%88%ED%8A%B8_%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8"]
status: draft
---

# 스마트 컨트랙트
> Smart Contracts

> **인용 전에 확인해 주세요.** 이 문서는 자동으로 만든 초안이며 사람의
> 검수를 거치지 않았습니다. 사실 관계는 아래 각주의 원문으로 확인해 주세요.

**분류**: 용어

스마트 컨트랙트는 계약의 조건과 실행 결과를 코드로 작성해 블록체인에 배포한 프로그램으로, 조건이 충족되면 중개자 없이 계약이 자동으로 이행된다. 오늘날 탈중앙화 금융을 비롯한 대부분의 블록체인 서비스를 떠받치는 기반 기술이다.

## 1. 개요

스마트 컨트랙트(smart contract)는 계약의 조건과 실행 결과를 코드로 작성해 블록체인에 배포한 프로그램이다. "만약 A가 일어나면 B를 실행한다"와 같은 규칙을 미리 정의해 두면, 조건이 충족되는 순간 중개자 없이 계약이 자동으로 이행된다. 코드와 그 실행 기록이 블록체인의 [분산원장](https://wiki.tokenpost.kr/w/distributed-ledger)에 저장되므로 한번 배포된 계약은 임의로 변경하거나 되돌리기 어렵고, 누구나 그 내용과 실행 결과를 검증할 수 있다.

종이 계약서가 사람의 판단과 법적 강제에 기대어 이행되는 것과 달리, 스마트 컨트랙트는 조건 충족 여부를 코드가 스스로 판정하고 결과를 자동으로 집행한다는 점이 핵심이다. 이 때문에 스마트 컨트랙트는 단순한 자산 이전뿐 아니라 [디앱](https://wiki.tokenpost.kr/w/dapp), 즉 블록체인 위에서 돌아가는 애플리케이션의 실행 논리를 담는 그릇으로 쓰인다.

이 문서에서 다루는 '스마트 컨트랙트'는 [이더리움](https://wiki.tokenpost.kr/w/ethereum)으로 대표되는 범용 계약 실행 환경을 중심으로 한 개념이며, 이 백과 안에서 [탈중앙화 금융](https://wiki.tokenpost.kr/w/defi)·[탈중앙화 거래소](https://wiki.tokenpost.kr/w/dex)·토큰 표준 등 여러 문서가 공통으로 참조하는 기반 개념이기도 하다.

## 2. 개념의 기원과 역사

개념 자체는 1990년대 암호학자 닉 사보(Nick Szabo)가 제안했다. 그는 자동판매기처럼 조건이 충족되면 사람의 개입 없이 약속이 이행되는 장치를 계약의 원형으로 보고, 이를 코드로 일반화한 아이디어를 '스마트 컨트랙트'라 불렀다. 다만 당시에는 계약을 실제로 실행하고 그 상태를 위·변조 없이 공유할 수 있는 기반이 없었다.

실제로 널리 쓰이게 된 것은 [튜링 완전성](https://wiki.tokenpost.kr/w/turing-complete)을 갖춘 프로그래밍 환경을 제공한 이더리움이 등장한 이후이다. [비트코인](https://wiki.tokenpost.kr/w/bitcoin)이 제한된 형태의 조건부 거래만 지원한 데 비해, 이더리움은 임의의 논리를 담은 프로그램을 [메인넷](https://wiki.tokenpost.kr/w/mainnet)에 배포하고 실행할 수 있게 했다. 이로써 스마트 컨트랙트는 특정 용도에 갇힌 기능이 아니라 다양한 서비스를 얹을 수 있는 범용 실행 계층이 되었다.

초기 역사에서 특히 중요한 사건은 2016년 더 다오(The DAO) 사태다. 대규모 자금을 모은 [탈중앙화 자율 조직](https://wiki.tokenpost.kr/w/dao)의 계약 코드에서 취약점이 악용돼 자금이 빠져나갔고, 그 대응을 둘러싼 이견 끝에 [하드 포크](https://wiki.tokenpost.kr/w/hard-fork)가 이루어지면서 이더리움과 [이더리움클래식](https://wiki.tokenpost.kr/w/ethereum-classic)으로 체인이 갈라졌다. 이 사건은 "코드는 곧 법"이라는 이상과 현실의 긴장을 드러낸 사례로 자주 인용된다.

## 3. 작동 방식

스마트 컨트랙트는 블록체인 네트워크의 여러 노드에서 동일하게 실행되어 같은 결과를 내며, 그 결과가 [합의 알고리즘](https://wiki.tokenpost.kr/w/consensus-algorithm)을 거쳐 장부에 기록된다. 특정 서버 한 곳이 아니라 네트워크 전체가 같은 코드를 돌려 결과를 대조하므로, 한 노드가 조작하거나 멈추더라도 계약의 실행 결과는 유지된다.

계약을 실행하려면 연산량에 비례한 수수료(이더리움의 경우 [가스](https://wiki.tokenpost.kr/w/gas))가 필요하며, 사용자는 자신의 [지갑](https://wiki.tokenpost.kr/w/wallet)을 통해 계약을 호출하고 [전자서명](https://wiki.tokenpost.kr/w/digital-signature)으로 요청을 승인한다. 수수료는 무한 반복 같은 악의적·비효율적 코드가 네트워크 자원을 고갈시키는 것을 막는 장치이기도 하다.

대체로 다음 흐름을 따른다.

- **작성**: [솔리디티](https://wiki.tokenpost.kr/w/solidity) 같은 언어로 계약 코드를 작성한다.
- **검증**: [테스트넷](https://wiki.tokenpost.kr/w/testnet)에서 실제와 유사한 환경으로 동작을 확인한다.
- **배포**: 컴파일한 코드를 메인넷에 올리면 고유한 주소를 가진 계약이 생성된다.
- **호출·실행**: 사용자나 다른 계약이 그 주소를 호출하면 정해진 논리가 실행되고, 상태 변화가 장부에 기록된다.

배포·실행 내역과 계약 코드는 [블록 익스플로러](https://wiki.tokenpost.kr/w/block-explorer)에서 조회할 수 있어, 제3자도 계약이 무엇을 어떻게 실행했는지 확인할 수 있다.

## 4. 기술 구조

이더리움 계열에서 스마트 컨트랙트는 [이더리움 가상머신](https://wiki.tokenpost.kr/w/evm)(EVM) 위에서 실행된다. 개발자가 솔리디티 등으로 작성한 코드는 EVM이 이해하는 바이트코드로 컴파일되어 배포되고, 네트워크의 모든 노드는 같은 EVM 규칙으로 이 바이트코드를 실행해 동일한 상태에 도달한다. EVM이 사실상의 표준 실행 환경이 되면서, 여러 다른 체인도 EVM 호환을 내세워 같은 계약을 그대로 옮겨 쓸 수 있게 하는 경우가 많다.

연산마다 정해진 양의 가스가 소모되며, 사용자는 [가스 가격](https://wiki.tokenpost.kr/w/gas-price)(단위는 [그웨이](https://wiki.tokenpost.kr/w/gwei))을 지정해 수수료를 낸다. 복잡한 계약일수록 더 많은 가스를 소비하므로, 코드의 효율은 곧 사용자의 비용과 직결된다.

계약끼리 서로를 호출해 조립할 수 있다는 점도 중요한 특징이다. 하나의 계약이 다른 계약의 기능을 불러다 쓰는 이런 조합성(composability) 덕분에, 예치·교환·대출 같은 개별 계약을 레고 블록처럼 이어 붙여 복잡한 금융 서비스를 구성할 수 있다. 다만 조합이 깊어질수록 한 계약의 결함이 이를 참조하는 다른 서비스로 번질 위험도 함께 커진다.

## 5. 토큰 표준

스마트 컨트랙트가 널리 쓰이면서, 서로 다른 계약이 같은 방식으로 상호작용할 수 있도록 공통 인터페이스를 정한 표준이 자리 잡았다. 대표적인 것이 이더리움의 토큰 표준이다.

- **[ERC-20](https://wiki.tokenpost.kr/w/erc20)**: 대체 가능한 토큰(fungible token)의 표준으로, 전송·잔액 조회·승인 같은 기본 기능을 정의한다. 대부분의 알트코인성 토큰과 [스테이블코인](https://wiki.tokenpost.kr/w/stablecoin)이 이 표준을 따른다.
- **[ERC-721](https://wiki.tokenpost.kr/w/erc-721)**: 각 토큰이 고유한 대체 불가능 토큰(NFT) 표준으로, 하나하나 구별되는 자산을 표현한다.

표준화 덕분에 지갑·거래소·[디앱](https://wiki.tokenpost.kr/w/dapp)은 개별 토큰의 내부 구현을 몰라도 동일한 방식으로 이를 다룰 수 있다. 이는 스마트 컨트랙트 생태계가 빠르게 확장될 수 있었던 밑바탕이 되었다.

## 6. 보안과 검증

한번 배포된 코드는 원칙적으로 수정할 수 없기 때문에, 배포 전에 테스트넷에서 충분히 검증하는 과정이 중요하다. 코드에 결함이 있으면 이를 악용한 자금 탈취가 발생할 수 있고, 이미 실행된 거래는 되돌리기 어렵기 때문이다. 앞서 언급한 더 다오 사건이 이 위험을 극명하게 보여준 사례다.

이런 특성 때문에 스마트 컨트랙트는 코드 감사(audit)와 보안 검토의 핵심 대상이 된다. 전문 인력이 코드를 검토해 재진입(reentrancy), 권한 관리 오류, 정수 오버플로 같은 전형적 취약점을 찾아내며, 수학적으로 코드가 명세대로 동작함을 증명하는 [정형 검증](https://wiki.tokenpost.kr/w/formal-verification)을 적용하기도 한다.

다만 감사를 받았다고 해서 안전이 보장되는 것은 아니다. 여러 계약이 조합된 구조에서는 개별 계약이 모두 정상이어도 그 상호작용에서 예기치 않은 결함이 나타날 수 있고, 계약이 외부 데이터에 의존할 때는 그 데이터원의 신뢰성 문제가 새로운 공격 표면이 된다.

## 7. 오라클과 외부 데이터

스마트 컨트랙트는 블록체인 내부의 상태만 직접 읽을 수 있고, 가격·날씨·경기 결과처럼 체인 밖에서 벌어지는 사실은 스스로 알지 못한다. 이 간극을 메우기 위해 외부 데이터를 계약에 전달하는 장치를 오라클(oracle)이라 부른다.

예를 들어 담보 가치가 일정 밑으로 떨어지면 청산하도록 짠 대출 계약은, 자산의 시세를 알려주는 오라클이 있어야 조건을 판정할 수 있다. [체인링크](https://wiki.tokenpost.kr/w/chainlink)처럼 여러 출처의 데이터를 모아 계약에 공급하는 서비스가 이 역할을 맡는다.

오라클은 스마트 컨트랙트의 활용 범위를 크게 넓히지만, 동시에 약점이기도 하다. 오라클이 잘못된 값을 전달하면 계약은 그 값을 사실로 받아들여 그대로 실행하므로, 시세 조작을 노린 공격이 오라클을 겨냥하는 경우가 적지 않다.

## 8. 활용 사례

스마트 컨트랙트는 오늘날 다양한 블록체인 서비스의 토대가 된다.

- **[탈중앙화 거래소](https://wiki.tokenpost.kr/w/dex)**: 이용자가 중개 기관 없이 자산을 교환한다. 별도의 호가창 대신 수식으로 가격을 정하는 자동화 시장조성자(AMM) 방식이 대표적이며, 이 교환 논리 전체가 스마트 컨트랙트로 구현된다.
- **[스테이블코인](https://wiki.tokenpost.kr/w/stablecoin)**: 가치를 일정하게 유지하도록 설계된 토큰의 발행과 상환을 계약이 규칙에 따라 처리한다.
- **[실물자산 토큰화](https://wiki.tokenpost.kr/w/rwa)**: 부동산이나 채권 같은 실물 자산의 권리를 토큰으로 표현하고 그 이전·분배를 계약으로 관리한다.
- **[탈중앙화 금융](https://wiki.tokenpost.kr/w/defi)**: 대출, 예치, 자동화된 자산 운용 등을 코드로 구현한 대표적 응용 영역이다. 이용자는 자산을 맡기고 이자를 받거나, 담보를 걸고 대출을 받는 과정을 사람의 승인 없이 계약을 통해 처리한다.

또한 거래를 빠르고 저렴하게 처리하기 위한 [레이어 2](https://wiki.tokenpost.kr/w/layer-2) 솔루션 역시 스마트 컨트랙트를 활용해 메인 체인과 상호작용한다. 레이어 2는 다수의 거래를 밖에서 처리한 뒤 그 결과를 메인 체인의 계약에 정산하는 방식으로, 스마트 컨트랙트가 두 계층을 잇는 신뢰의 기준점 역할을 한다.

이 밖에도 조건부로 자금을 묶어 두었다가 이행 시 풀어 주는 [에스크로](https://wiki.tokenpost.kr/w/escrow), 서로 다른 체인의 자산을 조건부로 교환하는 [해시 타임락 계약](https://wiki.tokenpost.kr/w/htlc) 등도 스마트 컨트랙트의 응용에 속한다.

## 9. 한계와 과제

강력한 기반 기술이지만 스마트 컨트랙트에는 여러 근본적 제약이 있다.

- **불변성의 양면성**: 변경할 수 없다는 성질은 신뢰의 원천이지만, 배포 후 발견된 결함을 바로잡기 어렵게 만든다. 이 때문에 업그레이드 가능한 구조를 별도로 설계하기도 하는데, 이는 다시 관리 권한이 집중되는 문제를 낳는다.
- **외부 세계와의 단절**: 오라클 없이는 체인 밖 사실을 알 수 없고, 오라클을 쓰면 그만큼 신뢰해야 할 대상이 늘어난다.
- **비용과 확장성**: 연산마다 수수료가 들고 네트워크가 혼잡하면 비용이 크게 오른다. 레이어 2 등은 이를 완화하려는 시도다.
- **법적 지위**: 코드로 자동 집행되는 계약이 기존 법 체계에서 어떤 효력을 갖는지, 분쟁이 생겼을 때 어떻게 다룰지는 나라마다 정리가 진행 중인 과제다.

결국 스마트 컨트랙트의 안전성과 유용성은 코드 자체의 품질뿐 아니라, 그것이 의존하는 데이터·거버넌스·법제도 전반의 성숙에 함께 달려 있다.

## 10. 연표

- **1994** (이정표) 암호학자 닉 사보가 '스마트 컨트랙트' 개념과 용어를 제안
- **2013** (이정표) 비탈릭 부테린이 스마트 컨트랙트 실행 환경을 갖춘 이더리움 구상을 백서로 발표
- **2015** (설립) 이더리움 메인넷 가동으로 범용 스마트 컨트랙트 실행이 현실화
- **2016** (사건) 더 다오(The DAO) 사건 — 스마트 컨트랙트 코드 취약점을 악용한 대규모 자금 탈취
- **2016** (이정표) 사건 대응을 위한 하드 포크로 이더리움과 이더리움클래식이 분리
- **2017** (이정표) 토큰 발행 표준 ERC-20이 정식 표준으로 확정
- **2018** (이정표) 대체 불가능 토큰(NFT) 표준 ERC-721 확립
- **2020** (이정표) 탈중앙화 금융(DeFi) 서비스가 스마트 컨트랙트 기반으로 급속히 확산
- **2022** (이정표) 이더리움이 지분증명으로 전환(머지)

---

같은 개체: [위키백과(한국어)](https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A7%88%ED%8A%B8_%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8)

원문: https://wiki.tokenpost.kr/w/smart-contracts
최종 수정: 2026-07-30T07:25:39.279+00:00
발행: 토큰포스트 위키. 인용할 때 문서 제목과 원문 주소를 함께 밝혀 주세요.