코드로 작성된 자동화된 계약.
특정 조건 만족 시 사람의 개입 없이 자동으로 실행됨.
A -> B 에게 1 이더를 지급하는 계약
| 플랫폼 | 언어 |
|---|---|
| Ethereum | Solidity (가장 대표적) |
| Solana | Rust, C |
| Hyperledger Fabric | Go, Java, JavaScript |
| NEAR, Aptos 등 | Move |
이더리움 기준
1. 사용자 -> 스마트 컨트랙트에 트랜젝션 요청
2. EVM (Ethereum Virtual Machine)이 스마트컨트랙트 코드를 해석하고 실행
3. 실행 결과는 상태 변경(state change)으로 반영
4. 모든 노드가 이 과정을 검증 및 동기화
스마트 컨트랙트를 실행하는 이더리움의 가상 컴퓨터
이더리움 네트워크의 모든 노드에서 동일하게 작동하는 프로그램 실행 환경
| 분야 | 예시 |
|---|---|
| 금융 | 탈중앙 금융(DeFi) – 예금, 대출, 거래소 |
| 보험 | 조건 충족 시 자동 보상 지급 |
| 게임 | 아이템 NFT 발행, 소유권 자동 이전 |
| 부동산 | 디지털 계약서, 에스크로 자동 처리 |
| DID | 신원 검증 자동화, VC 발급 자동화 |
DeFi (탈중앙 금융)
NFT (대체 불가능 토큰)
DAO (탈중앙 자율 조직)
DID 및 인증
스마트 컨트랙트와 외부 데이터를 연결해주는 중간자 시스템
오프체인 데이터를 가져와 스마트 컨트랙트로 전달해줌
| 종류 | 설명 |
|---|---|
| Inbound Oracle | 외부 데이터를 블록체인에 전달 (ex. 가격 정보) |
| Outbound Oracle | 블록체인 결과를 외부 시스템에 전달 (ex. 이메일 전송) |
| Software Oracle | 웹 API 기반 (ex. Chainlink, Band Protocol) |
| Hardware Oracle | 센서, IoT 기반 (ex. 배송 상태) |
| 공격 방식 | 설명 |
|---|---|
| 재진입 공격 (Reentrancy) | 외부 계약 호출 중, 다시 자신을 호출해 상태 변경 전에 자금 탈취 |
| Integer Overflow/Underflow | uint256의 범위를 넘는 계산으로 값이 왜곡됨 |
| DoS 공격 | 특정 조건으로 실행 중단 유도 |
| Delegatecall 취약점 | 외부 컨트랙트 코드가 호출자의 상태를 조작 가능 |
| Access Control 미흡 | 함수에 권한 검증이 없어 누구나 실행 가능 |
requrie()로 입력값 검증reentrancy guard 또는 checks-effects-interactions 패턴 사용SafeMath 사용 (Solidity 0.8 이후 기본 내장)onlyOwner, private, internal 등)