1. 개요
스마트 컨트랙트는 블록체인 위에서 실행되는 프로그램이다.
일반적인 계약은 사람이 계약서를 작성하고, 조건이 충족되었는지 확인한 뒤, 은행·법원·플랫폼·중개기관 등이 실행을 돕는다.
반면 스마트 컨트랙트는 조건과 실행 규칙을 코드로 작성하고, 그 코드를 블록체인에 배포한다.
이후 사용자가 트랜잭션을 보내면 스마트 컨트랙트는 정해진 코드에 따라 자동으로 실행된다.
예를 들어 다음과 같은 규칙을 코드로 만들 수 있다.
- 사용자가 토큰을 보내면 NFT를 발행한다.
- 담보 가치가 기준 이하로 떨어지면 대출 포지션을 청산한다.
- 투표 기간이 끝나면 가장 많은 표를 받은 제안을 실행한다.
- 일정 수량의 토큰을 예치하면 보상을 지급한다.
- 두 사용자가 조건을 만족하면 자산을 교환한다.
- 특정 NFT 보유자만 콘텐츠를 열람할 수 있게 한다.
스마트 컨트랙트는 블록체인 애플리케이션의 핵심 구성 요소이다.
DeFi, NFT, DAO, 스테이블코인, 브리지, 게임파이, RWA, 런치패드, 온체인 거버넌스는 대부분 스마트 컨트랙트를 기반으로 작동한다.
스마트 컨트랙트의 핵심 특징은 다음과 같다.
- 블록체인에 배포된다.
- 특정 주소를 가진다.
- 코드와 상태를 가진다.
- 트랜잭션을 통해 실행된다.
- 실행 결과가 온체인에 기록된다.
- 배포 후 임의 수정이 어렵다.
- 누구나 코드를 검증할 수 있는 경우가 많다.
- 중개자 없이 자동 실행될 수 있다.
스마트 컨트랙트는 “자동 계약서”라고 설명되기도 하지만, 실제로는 법률 문서라기보다 블록체인 위에서 실행되는 프로그램에 가깝다.
2. 스마트 컨트랙트란
스마트 컨트랙트는 특정 조건이 충족되면 미리 정해진 로직을 실행하는 온체인 프로그램이다.
스마트 컨트랙트는 사람이 직접 실행하지 않아도 된다.
사용자가 트랜잭션을 보내면 블록체인 네트워크의 검증자 또는 노드가 해당 코드를 실행하고, 실행 결과를 네트워크 상태에 반영한다.
스마트 컨트랙트는 다음과 같은 구조를 가진다.
- 코드
- 상태
- 함수
- 이벤트
- 주소
- 권한
- 저장소
- 외부 호출
- 트랜잭션 실행 기록
예를 들어 ERC-20 토큰 스마트 컨트랙트에는 다음과 같은 정보가 들어간다.
- 토큰 이름
- 심볼
- 총 공급량
- 주소별 잔액
- 전송 함수
- 승인 함수
- 소각 함수
- 발행 함수
- 이벤트 로그
사용자가 토큰을 전송하면 스마트 컨트랙트는 보내는 주소의 잔액을 줄이고, 받는 주소의 잔액을 늘린다.
이 과정은 블록체인에 기록되고, 누구나 거래 내역을 확인할 수 있다.
3. 작동 방식
스마트 컨트랙트의 기본 작동 흐름은 다음과 같다.
- 개발자가 스마트 컨트랙트 코드를 작성한다.
- 코드를 컴파일한다.
- 블록체인 네트워크에 배포한다.
- 컨트랙트 주소가 생성된다.
- 사용자가 컨트랙트 함수에 트랜잭션을 보낸다.
- 네트워크가 코드를 실행한다.
- 상태가 변경된다.
- 실행 결과와 이벤트가 블록체인에 기록된다.
예를 들어 NFT 민팅 컨트랙트라면 다음과 같은 흐름이 가능하다.
- 사용자가 민팅 버튼을 누른다.
- 지갑에서 트랜잭션에 서명한다.
- 트랜잭션이 블록체인에 전송된다.
- 스마트 컨트랙트가 민팅 조건을 확인한다.
- 조건이 맞으면 NFT를 발행한다.
- NFT 소유자가 사용자 주소로 기록된다.
- 민팅 이벤트가 발생한다.
- 블록 익스플로러에서 기록을 확인할 수 있다.
4. 코드와 상태
스마트 컨트랙트는 코드와 상태로 구성된다.
4.1 코드
코드는 스마트 컨트랙트의 규칙이다.
예를 들어 다음과 같은 로직이 코드에 포함될 수 있다.
- 누가 토큰을 받을 수 있는지
- 몇 개의 토큰을 발행할 수 있는지
- 언제 출금할 수 있는지
- 어떤 조건에서 청산되는지
- 누가 관리자 권한을 가지는지
- 수수료를 얼마로 설정할지
- 보상을 어떻게 계산할지
4.2 상태
상태는 스마트 컨트랙트가 현재 기억하고 있는 데이터이다.
예를 들어 다음 정보가 상태에 해당한다.
- 주소별 토큰 잔액
- NFT 소유자
- 예치된 담보 수량
- 대출 부채
- 투표 수
- 관리자 주소
- 유동성 풀 잔액
- 락업 종료 시간
- 보상 누적량
스마트 컨트랙트의 함수가 실행되면 상태가 변경될 수 있다.
예를 들어 토큰 전송 함수가 실행되면 보내는 사람과 받는 사람의 잔액 상태가 바뀐다.
5. 트랜잭션
스마트 컨트랙트는 보통 트랜잭션을 통해 실행된다.
트랜잭션은 사용자가 블록체인에 보내는 요청이다.
예를 들어 다음 행동은 모두 트랜잭션이다.
- 토큰 전송
- NFT 민팅
- DEX 스왑
- 대출 실행
- 담보 예치
- 스테이킹
- DAO 투표
- 컨트랙트 배포
- 권한 변경
트랜잭션이 실행되면 가스비가 발생할 수 있다.
가스비는 네트워크가 해당 코드를 실행하고 데이터를 저장하는 데 필요한 비용이다.
스마트 컨트랙트 트랜잭션은 단순 코인 전송보다 복잡할 수 있으므로 더 많은 가스비가 필요할 수 있다.
6. 가스비
가스비는 스마트 컨트랙트를 실행하기 위해 지불하는 네트워크 수수료이다.
스마트 컨트랙트는 단순히 글을 저장하는 것이 아니라 실제 계산을 수행한다.
계산이 많거나 저장하는 데이터가 많을수록 더 많은 가스가 필요하다.
가스비가 발생하는 이유는 다음과 같다.
- 네트워크 자원 사용 비용 지불
- 스팸 트랜잭션 방지
- 검증자 또는 채굴자 보상
- 복잡한 계산에 비용 부과
- 온체인 데이터 저장 비용 반영
예를 들어 다음 거래는 일반적으로 가스비가 든다.
- ERC-20 토큰 전송
- NFT 민팅
- DEX 스왑
- 대출 포지션 생성
- DAO 투표
- 컨트랙트 배포
- 브리지 사용
반대로 단순 조회 함수는 블록체인 상태를 바꾸지 않기 때문에 사용자가 직접 가스비를 내지 않는 경우가 많다.
7. 배포
스마트 컨트랙트를 블록체인에 올리는 과정을 배포라고 한다.
배포가 완료되면 컨트랙트 주소가 생성된다.
이 주소는 사용자가 해당 컨트랙트와 상호작용할 때 사용하는 주소이다.
배포 과정은 일반적으로 다음과 같다.
- 개발자가 코드를 작성한다.
- 테스트넷에서 테스트한다.
- 보안 검토 또는 감사를 진행한다.
- 메인넷 배포 트랜잭션을 보낸다.
- 컨트랙트 주소가 생성된다.
- 블록 익스플로러에 코드를 검증한다.
- 프론트엔드 또는 앱에서 해당 주소를 연결한다.
컨트랙트 주소를 잘못 입력하면 다른 컨트랙트와 상호작용할 수 있으므로, 공식 주소 확인이 중요하다.
8. ABI
ABI는 Application Binary Interface의 약자이다.
스마트 컨트랙트와 외부 애플리케이션이 대화하기 위한 인터페이스이다.
사용자가 웹사이트에서 버튼을 누르면, 프론트엔드는 ABI를 이용해 어떤 함수를 호출해야 하는지 이해한다.
ABI에는 다음 정보가 포함된다.
- 함수 이름
- 함수 입력값
- 함수 출력값
- 이벤트 구조
- 읽기 함수
- 쓰기 함수
예를 들어 DEX 앱은 ABI를 통해 스마트 컨트랙트의 swap, addLiquidity, removeLiquidity 같은 함수를 호출할 수 있다.
9. 이벤트
이벤트는 스마트 컨트랙트 실행 중 발생한 기록을 외부에서 쉽게 추적할 수 있도록 남기는 로그이다.
예를 들어 ERC-20 토큰에서는 토큰 전송 시 Transfer 이벤트가 발생한다.
NFT가 발행될 때도 전송 이벤트가 기록된다.
이벤트는 다음 용도로 사용된다.
- 블록 익스플로러 표시
- 지갑 내 거래 내역 표시
- 데이터 인덱싱
- 알림 서비스
- 디앱 상태 업데이트
- 분석 대시보드
이벤트는 스마트 컨트랙트의 상태 변경을 외부 서비스가 추적하는 데 매우 중요하다.
10. 읽기 함수와 쓰기 함수
스마트 컨트랙트 함수는 크게 읽기 함수와 쓰기 함수로 나눌 수 있다.
10.1 읽기 함수
읽기 함수는 블록체인 상태를 조회만 한다.
예시는 다음과 같다.
- 토큰 잔액 조회
- 총 공급량 조회
- NFT 소유자 조회
- 현재 가격 조회
- 보상 누적량 조회
- 담보비율 조회
읽기 함수는 상태를 바꾸지 않기 때문에 일반적으로 가스비를 직접 내지 않는다.
10.2 쓰기 함수
쓰기 함수는 블록체인 상태를 변경한다.
예시는 다음과 같다.
- 토큰 전송
- NFT 민팅
- 스왑
- 예치
- 출금
- 스테이킹
- 대출
- 청산
- 투표
쓰기 함수는 트랜잭션을 발생시키며, 가스비가 필요하다.
11. 스마트 컨트랙트 언어
스마트 컨트랙트를 작성하는 언어는 블록체인마다 다를 수 있다.
대표적인 언어는 다음과 같다.
11.1 Solidity
Solidity는 이더리움과 EVM 계열 체인에서 가장 널리 사용되는 스마트 컨트랙트 언어이다.
ERC-20, ERC-721, DeFi, DAO, DEX, 대출 프로토콜 등 많은 컨트랙트가 Solidity로 작성된다.
11.2 Vyper
Vyper는 이더리움 계열 스마트 컨트랙트 언어이다.
Python과 유사한 문법을 가지고 있으며, 단순성과 보안성을 강조한다.
11.3 Rust
Rust는 Solana, Near, CosmWasm 등 여러 생태계에서 사용된다.
성능과 메모리 안전성을 강조하는 언어이다.
11.4 Move
Move는 Sui와 Aptos 등에서 사용되는 스마트 컨트랙트 언어이다.
디지털 자산의 안전한 표현을 위해 설계되었으며, 리소스 모델을 강조한다.
11.5 Cairo
Cairo는 Starknet 생태계에서 사용되는 언어이다.
영지식 증명과 확장성 환경에 맞춰 설계되었다.
12. EVM
EVM은 Ethereum Virtual Machine의 약자이다.
이더리움 스마트 컨트랙트가 실행되는 가상머신이다.
EVM은 이더리움뿐 아니라 여러 블록체인에서 사용된다.
대표적인 EVM 계열 네트워크는 다음과 같다.
- Ethereum
- BNB Chain
- Polygon
- Arbitrum
- Optimism
- Base
- Avalanche C-Chain
- Fantom
- Kaia
- Linea
- Scroll
EVM의 장점은 개발자와 도구가 많다는 것이다.
Solidity, Hardhat, Foundry, MetaMask, Etherscan, OpenZeppelin 같은 도구와 생태계가 널리 사용된다.
13. 스마트 컨트랙트와 토큰
스마트 컨트랙트의 대표적인 활용 사례는 토큰 발행이다.
토큰은 블록체인 위에서 특정 가치를 표현하는 디지털 자산이다.
대표적인 토큰 표준은 다음과 같다.
- ERC-20
- ERC-721
- ERC-1155
- ERC-4626
- SPL Token
- Sui Coin
- Move Object 기반 자산
13.1 ERC-20
13.2 ERC-721
ERC-721은 NFT 표준이다.
각 토큰이 고유한 ID를 가지며 서로 다른 자산으로 취급된다.
활용 예시는 다음과 같다.
- 디지털 아트
- 프로필 이미지
- 게임 아이템
- 멤버십
- 티켓
- 인증서
- 도메인 이름
13.3 ERC-1155
ERC-1155는 여러 종류의 토큰을 하나의 컨트랙트에서 관리할 수 있는 표준이다.
대체 가능 토큰과 NFT를 함께 다룰 수 있어 게임 아이템에 자주 사용된다.
14. 스마트 컨트랙트와 DeFi
DeFi는 Decentralized Finance의 약자이다.
DeFi는 스마트 컨트랙트를 이용해 금융 기능을 온체인에서 구현한다.
대표적인 DeFi 서비스는 다음과 같다.
예를 들어 DEX에서는 스마트 컨트랙트가 유동성 풀을 관리한다.
사용자가 토큰을 스왑하면 스마트 컨트랙트가 가격 공식에 따라 토큰을 교환하고, 수수료를 유동성 공급자에게 배분한다.
대출 프로토콜에서는 스마트 컨트랙트가 담보, 부채, 이자, 청산을 관리한다.
사용자가 담보를 예치하고 자산을 빌리면, 스마트 컨트랙트는 담보비율을 계산하고 기준 이하로 떨어질 경우 청산을 실행한다.
15. 스마트 컨트랙트와 NFT
NFT는 스마트 컨트랙트를 통해 발행되고 전송되는 고유 디지털 자산이다.
NFT 컨트랙트는 다음 정보를 관리한다.
- 토큰 ID
- 소유자
- 메타데이터 주소
- 승인 권한
- 전송 기록
- 민팅 조건
- 로열티 정보
NFT는 단순 이미지뿐 아니라 여러 권리를 표현할 수 있다.
활용 예시는 다음과 같다.
- 디지털 아트
- 게임 아이템
- 멤버십 카드
- 콘서트 티켓
- 출석 증명
- 인증서
- 부동산 권리 증명
- 커뮤니티 패스
16. 스마트 컨트랙트와 DAO
DAO는 Decentralized Autonomous Organization의 약자이다.
DAO는 스마트 컨트랙트를 이용해 조직 운영과 의사결정을 온체인으로 관리한다.
DAO 스마트 컨트랙트는 다음 기능을 제공할 수 있다.
- 제안 생성
- 투표
- 투표권 계산
- 금고 관리
- 제안 실행
- 권한 관리
- 멀티시그 연동
- 보상 지급
DAO에서는 토큰 보유량, NFT 보유 여부, 스테이킹 수량 등에 따라 투표권이 정해질 수 있다.
스마트 컨트랙트는 투표 결과에 따라 자동으로 자금을 이동하거나 설정을 변경할 수 있다.
17. 스마트 컨트랙트와 오라클
스마트 컨트랙트는 기본적으로 블록체인 안의 정보만 직접 읽을 수 있다.
그러나 많은 서비스는 외부 정보가 필요하다.
예를 들어 다음 정보는 블록체인 밖에 있다.
- 코인 가격
- 환율
- 주식 가격
- 날씨
- 스포츠 경기 결과
- 선거 결과
- 실물 자산 가격
- 신용 점수
- 배송 상태
오라클은 이러한 외부 데이터를 스마트 컨트랙트에 전달하는 인프라이다.
대표적인 오라클 프로젝트에는 Chainlink, Pyth, RedStone 등이 있다.
오라클은 DeFi에서 특히 중요하다.
대출 프로토콜은 담보 가격을 알아야 청산을 실행할 수 있고, 파생상품 프로토콜은 외부 가격 데이터를 바탕으로 정산해야 하기 때문이다.
오라클이 잘못된 가격을 제공하면 정상 사용자 자산이 청산되거나, 공격자가 프로토콜을 악용할 수 있다.
18. 프록시와 업그레이드
스마트 컨트랙트는 한 번 배포되면 코드를 수정하기 어렵다.
이 특징은 신뢰성을 높여주지만, 버그 수정이나 기능 개선이 어려워지는 단점도 있다.
이를 해결하기 위해 일부 프로젝트는 프록시 패턴을 사용한다.
프록시 구조는 다음과 같다.
- 사용자는 프록시 컨트랙트와 상호작용한다.
- 프록시 컨트랙트는 실제 로직 컨트랙트로 호출을 전달한다.
- 로직 컨트랙트를 교체하면 기능을 업그레이드할 수 있다.
- 저장소는 프록시 쪽에 유지된다.
프록시 업그레이드는 편리하지만 관리자 권한 리스크가 존재한다.
관리자가 악의적으로 로직을 바꾸면 사용자 자산에 영향을 줄 수 있다.
따라서 업그레이드 가능한 컨트랙트는 다음 장치를 함께 사용하는 경우가 많다.
- 멀티시그
- 타임락
- DAO 투표
- 감사
- 업그레이드 공지
- 권한 분리
19. 멀티시그
멀티시그는 여러 명의 서명이 있어야 거래를 실행할 수 있는 지갑 또는 권한 구조이다.
예를 들어 5명 중 3명이 승인해야 자금 이동이 가능한 구조가 있다.
이를 3-of-5 멀티시그라고 부른다.
멀티시그는 스마트 컨트랙트 운영에서 자주 사용된다.
활용 예시는 다음과 같다.
- DAO 금고 관리
- 프로토콜 관리자 권한 관리
- 업그레이드 승인
- 긴급 중단 권한
- 토큰 발행 권한
- 보안 대응
대표적인 멀티시그 도구로는 Safe가 있다.
20. 타임락
타임락은 특정 작업이 즉시 실행되지 않고 일정 시간이 지난 뒤 실행되도록 하는 장치이다.
예를 들어 스마트 컨트랙트 업그레이드가 제안되면 48시간 뒤에만 실행되도록 할 수 있다.
타임락의 장점은 사용자에게 대응 시간을 준다는 점이다.
만약 위험한 업그레이드가 제안되면 사용자는 자산을 인출하거나 거버넌스에서 반대할 수 있다.
타임락은 다음 영역에 사용된다.
- DAO 제안 실행
- 컨트랙트 업그레이드
- 관리자 권한 변경
- 수수료 변경
- 담보 설정 변경
- 토큰 발행 정책 변경
21. 스마트 컨트랙트 보안
스마트 컨트랙트 보안은 매우 중요하다.
스마트 컨트랙트에는 실제 자산이 들어갈 수 있기 때문이다.
버그가 있으면 공격자가 자금을 탈취하거나, 프로토콜을 비정상적으로 조작할 수 있다.
대표적인 스마트 컨트랙트 취약점은 다음과 같다.
- 재진입 공격
- 오버플로우와 언더플로우
- 권한 설정 오류
- 가격 오라클 조작
- 프론트러닝
- MEV 공격
- 무제한 승인 악용
- 업그레이드 권한 탈취
- 초기화 함수 누락
- 잘못된 청산 로직
- 랜덤값 조작
- 브리지 검증 오류
스마트 컨트랙트 보안을 위해 다음 절차가 사용된다.
- 단위 테스트
- 통합 테스트
- 퍼즈 테스트
- 정적 분석
- 형식 검증
- 외부 감사
- 버그 바운티
- 테스트넷 운영
- 코드 공개
- 모니터링
- 긴급 중단 기능
22. 재진입 공격
재진입 공격은 스마트 컨트랙트 보안에서 가장 유명한 취약점 중 하나이다.
재진입 공격은 컨트랙트가 외부 컨트랙트로 자금을 보내는 과정에서, 외부 컨트랙트가 다시 원래 컨트랙트를 호출해 상태가 완전히 업데이트되기 전에 반복 출금을 시도하는 방식이다.
대표적인 방어 방법은 다음과 같다.
- Checks-Effects-Interactions 패턴
- Reentrancy Guard 사용
- 외부 호출 최소화
- 상태 업데이트를 먼저 수행
- 출금 방식 분리
재진입 공격은 과거 여러 DeFi 해킹 사건의 원인이 되었기 때문에, 스마트 컨트랙트 개발에서 반드시 고려해야 한다.
23. 권한 관리
스마트 컨트랙트에는 관리자 권한이 존재할 수 있다.
관리자 권한은 다음 기능을 수행할 수 있다.
- 컨트랙트 업그레이드
- 수수료 변경
- 토큰 발행
- 긴급 중단
- 오라클 변경
- 화이트리스트 관리
- 자금 이동
- 파라미터 변경
관리자 권한은 필요할 수 있지만, 동시에 중앙화 리스크가 된다.
특정 개인 지갑 하나가 관리자 권한을 가지고 있다면, 해당 지갑이 해킹되거나 악용될 경우 전체 프로토콜이 위험해질 수 있다.
따라서 중요한 프로토콜은 보통 다음 방식을 사용한다.
- 멀티시그
- 타임락
- DAO 거버넌스
- 권한 분리
- 관리자 권한 제거
- 점진적 탈중앙화
24. 승인과 무제한 승인
DeFi를 사용할 때 사용자는 특정 스마트 컨트랙트가 자신의 토큰을 사용할 수 있도록 승인한다.
이 기능을 approve라고 한다.
예를 들어 DEX에서 USDC를 ETH로 바꾸려면, 먼저 DEX 컨트랙트가 사용자의 USDC를 사용할 수 있도록 승인해야 한다.
문제는 많은 사용자가 편의를 위해 무제한 승인을 한다는 점이다.
무제한 승인은 다음 위험이 있다.
- 컨트랙트가 해킹되면 승인된 토큰이 탈취될 수 있음
- 악성 사이트가 승인 권한을 악용할 수 있음
- 오래된 승인 권한이 남아 있을 수 있음
따라서 사용자는 주기적으로 토큰 승인 권한을 확인하고, 사용하지 않는 권한을 해제하는 것이 좋다.
25. 스마트 컨트랙트 감사
스마트 컨트랙트 감사는 외부 보안 전문가가 코드를 검토하는 과정이다.
감사는 버그와 취약점을 줄이는 데 도움이 된다.
하지만 감사를 받았다고 해서 안전이 100% 보장되는 것은 아니다.
감사의 주요 범위는 다음과 같다.
- 코드 로직 검토
- 권한 구조 검토
- 경제 설계 검토
- 오라클 리스크 검토
- 재진입 가능성 확인
- 수학 계산 오류 확인
- 업그레이드 구조 확인
- 테스트 커버리지 확인
- 알려진 취약점 패턴 확인
감사 보고서는 사용자가 프로젝트의 보안 수준을 판단하는 데 참고 자료가 될 수 있다.
26. 스마트 컨트랙트와 법적 계약
스마트 컨트랙트라는 이름 때문에 법적 계약과 동일하다고 오해하기 쉽다.
하지만 스마트 컨트랙트는 기본적으로 코드이다.
코드가 특정 조건에 따라 실행된다고 해서, 그 자체가 모든 국가에서 법적 계약으로 인정되는 것은 아니다.
법적 계약은 다음 요소를 요구할 수 있다.
- 당사자
- 의사표시
- 계약 목적
- 법적 효력
- 관할권
- 분쟁 해결 방식
- 소비자 보호
- 규제 준수
스마트 컨트랙트는 이러한 법적 계약을 자동 실행하는 도구로 활용될 수 있지만, 법률 문서와 코드가 항상 같은 의미를 가지는 것은 아니다.
특히 RWA, 증권형 토큰, 보험, 대출, 부동산, 실물 자산 거래에서는 법적 구조와 온체인 코드가 함께 설계되어야 한다.
27. 장점
스마트 컨트랙트의 장점은 다음과 같다.
27.1 자동 실행
조건이 충족되면 코드가 자동으로 실행된다.
중개자가 직접 처리하지 않아도 된다.
27.2 투명성
공개 블록체인에서는 컨트랙트 주소, 코드, 거래 내역을 확인할 수 있다.
27.3 조합성
여러 스마트 컨트랙트가 서로 연결될 수 있다.
예를 들어 DEX, 대출, 스테이블코인, 오라클, 금고가 서로 조합되어 복잡한 DeFi 전략을 만들 수 있다.
27.4 검열 저항성
탈중앙화된 네트워크 위에 배포된 컨트랙트는 특정 중앙 서버보다 중단되기 어렵다.
27.5 무신뢰 실행
사용자는 상대방을 직접 신뢰하지 않아도 스마트 컨트랙트 규칙을 기준으로 거래할 수 있다.
27.6 글로벌 접근성
인터넷과 지갑만 있으면 전 세계 사용자가 동일한 컨트랙트에 접근할 수 있다.
28. 한계 및 주요 변수
스마트 컨트랙트는 강력한 기술이지만 한계도 있다.
가장 큰 변수는 코드 오류이다.
스마트 컨트랙트에 버그가 있으면 배포 후 수정이 어렵고, 공격자가 실제 자산을 탈취할 수 있다.
또한 스마트 컨트랙트는 기본적으로 블록체인 밖의 정보를 직접 알 수 없다.
외부 가격, 날씨, 경기 결과, 실물 자산 상태 같은 데이터는 오라클을 통해 가져와야 한다.
오라클이 잘못되면 스마트 컨트랙트도 잘못된 결정을 내릴 수 있다.
가스비도 중요한 변수이다.
복잡한 스마트 컨트랙트는 많은 가스비를 필요로 한다.
네트워크가 혼잡하면 단순한 거래도 비싸질 수 있다.
업그레이드 구조도 중요하다.
완전히 불변인 컨트랙트는 신뢰성이 높지만 버그 수정이 어렵다.
업그레이드 가능한 컨트랙트는 유연하지만 관리자 권한 리스크가 있다.
스마트 컨트랙트의 장기적인 활용에는 다음 요소들이 영향을 줄 수 있다.
- 코드 보안
- 감사 품질
- 오라클 안정성
- 가스비 수준
- 네트워크 확장성
- 사용자 지갑 보안
- 승인 권한 관리
- 프록시와 업그레이드 권한
- 관리자 권한 분산
- 법적 계약과의 연결
- 규제 환경
- 개발자 도구
- 블록체인 생태계의 실제 사용량
29. 활용 분야
29.1 토큰 발행
ERC-20, SPL, Move 기반 자산 등 다양한 토큰을 발행할 수 있다.
29.2 NFT
디지털 아트, 게임 아이템, 멤버십, 티켓, 인증서 등을 NFT로 만들 수 있다.
29.3 DeFi
29.4 DAO
투표, 금고, 제안 실행, 보상 지급 등 조직 운영을 온체인으로 관리할 수 있다.
29.5 게임
게임 아이템, 캐릭터, 보상, 마켓플레이스, 플레이어 간 거래를 구현할 수 있다.
29.6 RWA
부동산, 채권, 펀드, 예술품, 원자재 같은 현실 자산의 권리를 온체인에서 표현할 수 있다.
29.7 보험
특정 조건이 충족되면 자동으로 보험금을 지급하는 구조를 만들 수 있다.
29.8 공급망
상품 이동, 인증서, 원산지, 물류 상태를 온체인으로 기록할 수 있다.
29.9 신원과 인증
자격 증명, 멤버십, 출석 증명, 학위 증명 등을 스마트 컨트랙트와 NFT로 관리할 수 있다.
30. 생태계
스마트 컨트랙트 생태계는 개발자, 사용자, 지갑, 블록체인, 오라클, 감사 업체, 프론트엔드, 인덱서, DAO, 거래소로 구성된다.
개발자는 스마트 컨트랙트 코드를 작성한다.
블록체인은 코드를 실행하고 상태를 기록한다.
사용자는 지갑으로 트랜잭션을 보내 컨트랙트와 상호작용한다.
오라클은 외부 데이터를 제공한다.
감사 업체는 코드 보안을 검토한다.
프론트엔드는 사용자가 컨트랙트를 쉽게 사용할 수 있도록 화면을 제공한다.
인덱서는 이벤트와 데이터를 정리해 앱과 분석 도구에 제공한다.
DAO는 스마트 컨트랙트를 통해 거버넌스와 금고를 운영한다.
거래소와 지갑은 사용자가 토큰과 컨트랙트에 접근할 수 있게 한다.
스마트 컨트랙트는 이 모든 요소를 연결하는 블록체인 애플리케이션의 핵심 실행 계층이다.