BitInsight
BitInsight

스마트 컨트랙트 이해하기

2026-01-2914분 읽기

스마트 컨트랙트란

스마트 컨트랙트는 블록체인에 저장되어 자동으로 실행되는 프로그램이다. "만약 A 조건이 충족되면 B를 실행하라"는 규칙이 코드로 작성되어 있고, 조건이 충족되면 누구의 개입 없이 자동으로 실행된다.

전통적 계약은 중개자(변호사, 법원)가 집행한다. 스마트 컨트랙트는 코드가 스스로 집행한다. 계약 조건이 충족되면 블록체인 네트워크가 자동으로 실행하며, 누구도 이를 막거나 변경할 수 없다.

예시: 크라우드펀딩 스마트 컨트랙트

  • 목표 금액 도달 → 자금이 프로젝트에 자동 전송
  • 기한 내 목표 미달 → 자금이 후원자에게 자동 반환
  • 중개자 없이 코드가 모든 것을 처리

디파이와 스마트 컨트랙트

디파이의 모든 서비스는 스마트 컨트랙트로 구현된다.

서비스스마트 컨트랙트 역할
DEX (Uniswap)토큰 스왑 규칙, 유동성 풀 관리, 수수료 분배
렌딩 (Aave)담보 관리, 이자율 계산, 청산 실행
스테이블코인 (DAI)담보 예치, 토큰 발행/소각, 청산 경매
일드파밍 (Yearn)전략 실행, 수익 최적화, 자동 복리

은행에서 대출 담당자가 하는 일을 스마트 컨트랙트가 코드로 대체한다. 24시간 작동하고, 모든 사람에게 동일한 규칙을 적용하며, 실수하지 않는다.


트랜잭션과 가스

트랜잭션 (Transaction)

트랜잭션은 블록체인에 기록되는 행동이다. 토큰 전송, 스마트 컨트랙트 호출, 컨트랙트 배포 등 모든 상태 변경은 트랜잭션으로 이루어진다.

각 트랜잭션에는 다음 정보가 포함된다:

  • 보낸 주소 (From): 트랜잭션을 시작한 지갑
  • 받는 주소 (To): 대상 지갑 또는 컨트랙트 주소
  • 금액 (Value): 전송하는 네이티브 토큰 (ETH 등)
  • 데이터 (Data): 컨트랙트 호출 시 함수와 매개변수
  • 가스비 (Gas): 트랜잭션 실행 수수료

가스 (Gas)

가스는 트랜잭션 실행에 필요한 연산 비용을 측정하는 단위다. 복잡한 스마트 컨트랙트 호출은 단순 전송보다 더 많은 가스가 필요하다.

작업대략적 가스 사용량
ETH 전송21,000
ERC-20 토큰 전송65,000
Uniswap 스왑150,000~200,000
Aave 예치/대출200,000~400,000
복잡한 디파이 트랜잭션500,000+

가스비 계산

가스비 = 가스 사용량 × 가스 가격

가스 가격은 Gwei 단위로 표시된다 (1 ETH = 1,000,000,000 Gwei).

예시: Uniswap 스왑, 가스 200,000, 가스 가격 30 Gwei

  • 가스비 = 200,000 × 30 Gwei = 6,000,000 Gwei = 0.006 ETH
  • ETH가 $3,000이면 약 $18

가스 가격 변동

가스 가격은 네트워크 혼잡도에 따라 실시간 변동한다.

  • 한산할 때: 10~20 Gwei
  • 보통: 30~50 Gwei
  • 혼잡할 때: 100~500 Gwei
  • 극단적 혼잡 (NFT 민팅 등): 1,000+ Gwei

Etherscan Gas Tracker에서 현재 가스 가격을 확인할 수 있다.

EIP-1559와 수수료 구조

이더리움의 현재 가스비 구조:

  • Base Fee: 네트워크가 결정. 소각됨
  • Priority Fee (Tip): 사용자가 설정. 검증자에게 지불

메타마스크에서는 "느림", "평균", "빠름" 옵션으로 간편하게 설정하거나, 고급 설정에서 직접 입력할 수 있다.


승인 (Approve)

토큰 승인의 필요성

ERC-20 토큰을 스마트 컨트랙트에서 사용하려면 먼저 **승인(Approve)**이 필요하다. 이것은 "이 컨트랙트가 내 토큰 X개를 사용해도 좋다"고 허락하는 것이다.

왜 필요한가? 보안 때문이다. 아무 컨트랙트나 마음대로 사용자의 토큰을 가져갈 수 없도록, 사용자가 명시적으로 허락해야 한다.

승인 과정

Uniswap에서 USDC를 ETH로 스왑하는 경우:

  1. 첫 번째 트랜잭션 (Approve): USDC 컨트랙트에 "Uniswap 라우터가 내 USDC를 사용해도 좋다"고 승인
  2. 두 번째 트랜잭션 (Swap): 실제 스왑 실행. Uniswap이 승인된 USDC를 가져가고 ETH를 보내줌

같은 프로토콜에서 같은 토큰을 다시 사용할 때는 이미 승인되어 있으므로 스왑만 하면 된다.

승인 금액

승인 시 금액을 설정할 수 있다:

  • 정확한 금액: 이번 거래에 필요한 금액만 승인. 가장 안전하지만 매번 승인 필요
  • 무제한 (Unlimited): 한 번 승인하면 다시 승인할 필요 없음. 편리하지만 위험

무제한 승인의 위험: 해당 컨트랙트가 해킹되거나 악의적으로 설계된 경우, 승인된 토큰 전액이 탈취될 수 있다. 2022년 Multichain 해킹으로 수백만 달러가 탈취된 것도 무제한 승인 때문이었다.

승인 관리

기존 승인을 확인하고 취소할 수 있다:

정기적으로 오래된 승인을 정리하는 것이 보안에 좋다. 특히 더 이상 사용하지 않는 프로토콜의 승인은 취소해야 한다.


스마트 컨트랙트와 상호작용

메타마스크에서 트랜잭션 확인

디파이 사이트에서 작업을 요청하면 메타마스크 팝업이 표시된다. 확인해야 할 항목:

  1. 사이트 주소: 피싱 사이트가 아닌지 확인
  2. 받는 주소 (To): 상호작용하는 컨트랙트 주소
  3. 함수명: 어떤 함수를 호출하는지 (swap, deposit 등)
  4. 금액: 전송되는 토큰/ETH 양
  5. 예상 가스비: 지불할 수수료

이해되지 않는 트랜잭션은 절대 승인하지 않는다.

읽기 함수 vs 쓰기 함수

스마트 컨트랙트 함수는 두 종류다:

읽기 함수 (Read/View):

  • 데이터를 조회만 함
  • 블록체인 상태를 변경하지 않음
  • 가스비 무료
  • 예: 잔액 확인, 이자율 조회

쓰기 함수 (Write):

  • 블록체인 상태를 변경함
  • 가스비 필요
  • 트랜잭션으로 기록됨
  • 예: 토큰 전송, 스왑, 예치

컨트랙트 검증하기

검증된 컨트랙트

Etherscan에서 컨트랙트 코드가 공개되어 있으면 "Contract" 탭에 ✅ 표시가 있다. 이것은 배포된 바이트코드와 소스코드가 일치함을 의미한다.

검증되지 않은 컨트랙트는 코드를 확인할 수 없으므로 더 위험하다. 새로운 프로토콜이나 소규모 프로젝트일수록 주의가 필요하다.

확인할 항목

  1. 컨트랙트 검증 여부: 코드가 공개되어 있는가?
  2. 감사(Audit) 여부: Trail of Bits, OpenZeppelin 등의 보안 감사를 받았는가?
  3. 업그레이드 가능 여부: Proxy 패턴이면 로직이 바뀔 수 있음
  4. 관리자 권한: 누가 컨트랙트를 제어할 수 있는가?

보안 감사 (Audit)

전문 보안 회사가 스마트 컨트랙트 코드를 검토하여 취약점을 찾는 과정이다. 감사를 받았다고 100% 안전한 것은 아니지만, 받지 않은 것보다는 훨씬 안전하다.

주요 보안 감사 회사:

  • Trail of Bits
  • OpenZeppelin
  • Consensys Diligence
  • ChainSecurity
  • Certik

감사 보고서는 대부분 프로젝트 문서나 GitHub에 공개된다.


레이어 2와 가스비 절감

레이어 2란

이더리움 메인넷의 가스비가 높기 때문에, **레이어 2(L2)**에서 디파이를 사용하는 것이 대중화되었다. L2는 메인넷의 보안을 상속받으면서 더 빠르고 저렴한 거래를 제공한다.

주요 레이어 2

L2유형가스비 (ETH 대비)특징
Arbitrum OneOptimistic Rollup~5~10%최대 TVL, 다양한 디파이
OptimismOptimistic Rollup~5~10%Synthetix, Velodrome
BaseOptimistic Rollup~5~10%코인베이스 운영
zkSync EraZK Rollup~5~10%ZK 기술 선두
Polygon zkEVMZK Rollup~5~10%Polygon 생태계

L2에서 디파이 시작하기

  1. 메타마스크에 L2 네트워크 추가 (Chainlist 사용)
  2. 브릿지로 자산 이동 (공식 브릿지 또는 Orbiter 등)
  3. L2에서 디파이 사용 (Uniswap, Aave 등 동일 UI)

L2에서는 가스비가 $0.1~1 수준으로 매우 저렴하여 소액으로도 디파이를 활발히 사용할 수 있다.


흔한 실수와 방지

트랜잭션 실패

트랜잭션이 실패해도 가스비는 소모된다. 흔한 실패 원인:

  • 가스 한도(Gas Limit)가 너무 낮음
  • 슬리피지 설정이 너무 낮음
  • 이미 다른 트랜잭션이 처리됨
  • 컨트랙트 조건 미충족

방지: 충분한 가스 한도 설정, 적절한 슬리피지 (0.5~1%)

잘못된 네트워크

이더리움에서 Arbitrum으로 보내려다 잘못된 네트워크에서 전송. 같은 주소라도 다른 네트워크면 자산이 갇힐 수 있다.

방지: 전송 전 현재 네트워크 확인. 소액으로 테스트 전송.

잘못된 주소

컨트랙트 주소에 ETH를 직접 전송하면 영구 손실될 수 있다. 특히 토큰 컨트랙트 주소로 ETH를 보내면 복구 불가능.

방지: 주소 복사/붙여넣기 후 다시 확인. 처음 전송 시 소액으로 테스트.


정리

스마트 컨트랙트는 블록체인에서 자동 실행되는 프로그램으로, 디파이의 모든 서비스를 구동한다. 트랜잭션 실행에는 가스비가 필요하며, 네트워크 혼잡도에 따라 변동한다. 토큰을 컨트랙트에서 사용하려면 승인(Approve)이 필요한데, 무제한 승인은 리스크가 있으므로 정기적으로 관리해야 한다. 레이어 2를 활용하면 가스비를 크게 절감할 수 있다. 모든 트랜잭션은 서명 전에 신중히 확인해야 한다.

다음 글: 디파이 생태계 지도 - 체인과 프로토콜 이해하기