스마트 컨트랙트

MONA·2025년 7월 27일

나혼공

목록 보기
84/92

스마트 컨트랙트

코드로 작성된 자동화된 계약.
특정 조건 만족 시 사람의 개입 없이 자동으로 실행됨.

특징

  1. 자동 실행 : 조건 충족시 즉시 실행
  2. 변경 불가 : 블록체인에 올라가면 수정 불가능 -> 신뢰성 확보
  3. 중앙기관 불필요 : 제 3자 없이도 계약 가능
  4. 투명성 : 누구나 내용을 열람 가능(퍼블릭 블록체인의 경우)

동작 흐름

A -> B 에게 1 이더를 지급하는 계약

  1. A와 B가 조건을 정해 스마트 컨트랙트 작성
    ex. B가 상품 배송을 확인하면 A의 1ETH를 B에게 자동 송금
  2. 작성된 코드를 블록체인에 배포(이더리움에서는 트랜젝션 배포)
  3. 트리거 발생 시 자동 실행
  4. 결과는 블록체인에 저장됨

작성 언어

플랫폼언어
EthereumSolidity (가장 대표적)
SolanaRust, C
Hyperledger FabricGo, Java, JavaScript
NEAR, Aptos 등Move

실행 구조

이더리움 기준
1. 사용자 -> 스마트 컨트랙트에 트랜젝션 요청
2. EVM (Ethereum Virtual Machine)이 스마트컨트랙트 코드를 해석하고 실행
3. 실행 결과는 상태 변경(state change)으로 반영
4. 모든 노드가 이 과정을 검증 및 동기화

EVM (Ethereum Virtual Machine)

스마트 컨트랙트를 실행하는 이더리움의 가상 컴퓨터
이더리움 네트워크의 모든 노드에서 동일하게 작동하는 프로그램 실행 환경

EVM 실행 구조 흐름

  1. 사용자가 트랜젝션 전송 (스마트 컨트랙트 호출 포함)
  2. 트랜젝션이 블록에 포함됨
  3. EVM이 바이트코드를 해석하여 스마트컨트랙트를 실행
  4. 실행 결과를 상태(state)로 반영
  5. 모든 노드가 동일한 결과를 저장 (합의됨)
  • 바이트 코드 기반 -> Solidity로 작성한 코드를 컴파일하여 실행
  • 상태 변경은 영속적이며 가스를 소모함

활용 사례

분야예시
금융탈중앙 금융(DeFi) – 예금, 대출, 거래소
보험조건 충족 시 자동 보상 지급
게임아이템 NFT 발행, 소유권 자동 이전
부동산디지털 계약서, 에스크로 자동 처리
DID신원 검증 자동화, VC 발급 자동화
  1. DeFi (탈중앙 금융)

    • 예시 : Aave, Compound, Uniswap
    • 기능 : 대출, 스왑, 예치, 수익 농사
    • 특징 : 중개자 없는 자동 금융 서비스
  2. NFT (대체 불가능 토큰)

    • 예시 : OpenSea, CryptoPunks
    • 기능 : 고유 자산(그림, 영상 등)의 소유권 증명
    • 특징 : 유일성과 소유권 추적 가능
  3. DAO (탈중앙 자율 조직)

    • 예시 : MakerDAO, Aragon
    • 기능 : 스마트 컨트랙트를 통한 투표, 제안, 자금 운용
    • 특징 : 운영 투명성 및 커뮤니티 중심 구조
  4. DID 및 인증

    • 기능 : 자격 증명 발급, 검증 자동화
    • 특징 : 사용자 주도 신원 통제

스마트 컨트랙트의 한계

  1. 변경 불가 : 한 번 배포된 코드는 수정이 어려움 (보안 결함 발생 시 문제)
  2. 오라클 문제 : 외부 데이터 필요 시(날씨, 주가 등), 오라클이라는 별도 서비스 필요
  3. 가스비 부담 : 이더리움 등 퍼블릭 체인에서는 실행에 수수료(가스비)가 많이 듦
  4. 버그 리스크 : 코드 실수는 피해 발생으로 이어짐 (DAO 해킹 사건 등)

Oracle

스마트 컨트랙트와 외부 데이터를 연결해주는 중간자 시스템
오프체인 데이터를 가져와 스마트 컨트랙트로 전달해줌

예시

종류설명
Inbound Oracle외부 데이터를 블록체인에 전달 (ex. 가격 정보)
Outbound Oracle블록체인 결과를 외부 시스템에 전달 (ex. 이메일 전송)
Software Oracle웹 API 기반 (ex. Chainlink, Band Protocol)
Hardware Oracle센서, IoT 기반 (ex. 배송 상태)

스마트 컨트랙트의 보안 문제

공격 방식설명
재진입 공격 (Reentrancy)외부 계약 호출 중, 다시 자신을 호출해 상태 변경 전에 자금 탈취
Integer Overflow/Underflowuint256의 범위를 넘는 계산으로 값이 왜곡됨
DoS 공격특정 조건으로 실행 중단 유도
Delegatecall 취약점외부 컨트랙트 코드가 호출자의 상태를 조작 가능
Access Control 미흡함수에 권한 검증이 없어 누구나 실행 가능

예방

  • requrie()로 입력값 검증
  • reentrancy guard 또는 checks-effects-interactions 패턴 사용
  • SafeMath 사용 (Solidity 0.8 이후 기본 내장)
  • 함수 접근자 설정 (onlyOwner, private, internal 등)
profile
고민고민고민

0개의 댓글