리비전 diff

빈 문서 → r1 · 2026-07-19 22:18

본문 변경 비교
+891 -0 변경 0
기준: 새 문서
이전 이전 내용 현재 현재 내용
1 [[인포박스]]
2 | 스마트 컨트랙트(Smart Contract) | |
3 |:---:|:---:|
4 | **분류** | 코인 용어 / 블록체인 기술 / 스마트 컨트랙트 / 온체인 프로그램 |
5 | **영문명** | Smart Contract |
6 | **한 줄 요약** | 블록체인 위에 배포되어 정해진 조건과 코드에 따라 자동으로 실행되는 프로그램 |
7 | **관련 분야** | 블록체인, 이더리움, DeFi, NFT, DAO, 토큰, 오라클, RWA, 게임파이 |
8 | **주요 기능** | 조건부 실행, 자산 전송, 토큰 발행, 권한 관리, 자동 정산, 온체인 기록 |
9 | **대표 플랫폼** | Ethereum, BNB Chain, Solana, Sui, Aptos, Avalanche, Polygon, Arbitrum, Optimism |
10 | **대표 언어** | Solidity, Vyper, Rust, Move, Cairo |
11 | **대표 실행 환경** | EVM, SVM, Move VM, WASM |
12 | **대표 활용 사례** | ERC-20 토큰, NFT, DEX, 대출 프로토콜, 스테이블코인, DAO, 브리지, 게임 아이템 |
13 | **관련 개념** | 가스비, 트랜잭션, ABI, 오라클, 프록시, 멀티시그, 감사, 재진입 공격 |
14 | **공식 참고 문서** | [Ethereum Smart Contracts](https://ethereum.org/developers/docs/smart-contracts/) |
15 | **Solidity 문서** | [Solidity Docs](https://docs.soliditylang.org/) |
16 | **OpenZeppelin** | [OpenZeppelin Docs](https://docs.openzeppelin.com/) |
17 | **Chainlink Oracle** | [Chainlink Docs](https://docs.chain.link/) |
18 [[/인포박스]]
19
20 ## 개요
21
22 스마트 컨트랙트는 블록체인 위에서 실행되는 프로그램이다.
23
24 일반적인 계약은 사람이 계약서를 작성하고, 조건이 충족되었는지 확인한 뒤, 은행·법원·플랫폼·중개기관 등이 실행을 돕는다.
25
26 반면 스마트 컨트랙트는 조건과 실행 규칙을 코드로 작성하고, 그 코드를 블록체인에 배포한다.
27
28 이후 사용자가 트랜잭션을 보내면 스마트 컨트랙트는 정해진 코드에 따라 자동으로 실행된다.
29
30 예를 들어 다음과 같은 규칙을 코드로 만들 수 있다.
31
32 - 사용자가 토큰을 보내면 NFT를 발행한다.
33 - 담보 가치가 기준 이하로 떨어지면 대출 포지션을 청산한다.
34 - 투표 기간이 끝나면 가장 많은 표를 받은 제안을 실행한다.
35 - 일정 수량의 토큰을 예치하면 보상을 지급한다.
36 - 두 사용자가 조건을 만족하면 자산을 교환한다.
37 - 특정 NFT 보유자만 콘텐츠를 열람할 수 있게 한다.
38
39 스마트 컨트랙트는 블록체인 애플리케이션의 핵심 구성 요소이다.
40
41 DeFi, NFT, DAO, 스테이블코인, 브리지, 게임파이, RWA, 런치패드, 온체인 거버넌스는 대부분 스마트 컨트랙트를 기반으로 작동한다.
42
43 스마트 컨트랙트의 핵심 특징은 다음과 같다.
44
45 1. 블록체인에 배포된다.
46 2. 특정 주소를 가진다.
47 3. 코드와 상태를 가진다.
48 4. 트랜잭션을 통해 실행된다.
49 5. 실행 결과가 온체인에 기록된다.
50 6. 배포 후 임의 수정이 어렵다.
51 7. 누구나 코드를 검증할 수 있는 경우가 많다.
52 8. 중개자 없이 자동 실행될 수 있다.
53
54 스마트 컨트랙트는 “자동 계약서”라고 설명되기도 하지만, 실제로는 법률 문서라기보다 블록체인 위에서 실행되는 프로그램에 가깝다.
55
56 ## 스마트 컨트랙트란
57
58 스마트 컨트랙트는 특정 조건이 충족되면 미리 정해진 로직을 실행하는 온체인 프로그램이다.
59
60 스마트 컨트랙트는 사람이 직접 실행하지 않아도 된다.
61
62 사용자가 트랜잭션을 보내면 블록체인 네트워크의 검증자 또는 노드가 해당 코드를 실행하고, 실행 결과를 네트워크 상태에 반영한다.
63
64 스마트 컨트랙트는 다음과 같은 구조를 가진다.
65
66 - 코드
67 - 상태
68 - 함수
69 - 이벤트
70 - 주소
71 - 권한
72 - 저장소
73 - 외부 호출
74 - 트랜잭션 실행 기록
75
76 예를 들어 ERC-20 토큰 스마트 컨트랙트에는 다음과 같은 정보가 들어간다.
77
78 - 토큰 이름
79 - 심볼
80 - 총 공급량
81 - 주소별 잔액
82 - 전송 함수
83 - 승인 함수
84 - 소각 함수
85 - 발행 함수
86 - 이벤트 로그
87
88 사용자가 토큰을 전송하면 스마트 컨트랙트는 보내는 주소의 잔액을 줄이고, 받는 주소의 잔액을 늘린다.
89
90 이 과정은 블록체인에 기록되고, 누구나 거래 내역을 확인할 수 있다.
91
92 ## 작동 방식
93
94 스마트 컨트랙트의 기본 작동 흐름은 다음과 같다.
95
96 1. 개발자가 스마트 컨트랙트 코드를 작성한다.
97 2. 코드를 컴파일한다.
98 3. 블록체인 네트워크에 배포한다.
99 4. 컨트랙트 주소가 생성된다.
100 5. 사용자가 컨트랙트 함수에 트랜잭션을 보낸다.
101 6. 네트워크가 코드를 실행한다.
102 7. 상태가 변경된다.
103 8. 실행 결과와 이벤트가 블록체인에 기록된다.
104
105 예를 들어 NFT 민팅 컨트랙트라면 다음과 같은 흐름이 가능하다.
106
107 1. 사용자가 민팅 버튼을 누른다.
108 2. 지갑에서 트랜잭션에 서명한다.
109 3. 트랜잭션이 블록체인에 전송된다.
110 4. 스마트 컨트랙트가 민팅 조건을 확인한다.
111 5. 조건이 맞으면 NFT를 발행한다.
112 6. NFT 소유자가 사용자 주소로 기록된다.
113 7. 민팅 이벤트가 발생한다.
114 8. 블록 익스플로러에서 기록을 확인할 수 있다.
115
116 ## 코드와 상태
117
118 스마트 컨트랙트는 코드와 상태로 구성된다.
119
120 ### 코드
121
122 코드는 스마트 컨트랙트의 규칙이다.
123
124 예를 들어 다음과 같은 로직이 코드에 포함될 수 있다.
125
126 - 누가 토큰을 받을 수 있는지
127 - 몇 개의 토큰을 발행할 수 있는지
128 - 언제 출금할 수 있는지
129 - 어떤 조건에서 청산되는지
130 - 누가 관리자 권한을 가지는지
131 - 수수료를 얼마로 설정할지
132 - 보상을 어떻게 계산할지
133
134 ### 상태
135
136 상태는 스마트 컨트랙트가 현재 기억하고 있는 데이터이다.
137
138 예를 들어 다음 정보가 상태에 해당한다.
139
140 - 주소별 토큰 잔액
141 - NFT 소유자
142 - 예치된 담보 수량
143 - 대출 부채
144 - 투표 수
145 - 관리자 주소
146 - 유동성 풀 잔액
147 - 락업 종료 시간
148 - 보상 누적량
149
150 스마트 컨트랙트의 함수가 실행되면 상태가 변경될 수 있다.
151
152 예를 들어 토큰 전송 함수가 실행되면 보내는 사람과 받는 사람의 잔액 상태가 바뀐다.
153
154 ## 트랜잭션
155
156 스마트 컨트랙트는 보통 트랜잭션을 통해 실행된다.
157
158 트랜잭션은 사용자가 블록체인에 보내는 요청이다.
159
160 예를 들어 다음 행동은 모두 트랜잭션이다.
161
162 - 토큰 전송
163 - NFT 민팅
164 - DEX 스왑
165 - 대출 실행
166 - 담보 예치
167 - 스테이킹
168 - DAO 투표
169 - 컨트랙트 배포
170 - 권한 변경
171
172 트랜잭션이 실행되면 가스비가 발생할 수 있다.
173
174 가스비는 네트워크가 해당 코드를 실행하고 데이터를 저장하는 데 필요한 비용이다.
175
176 스마트 컨트랙트 트랜잭션은 단순 코인 전송보다 복잡할 수 있으므로 더 많은 가스비가 필요할 수 있다.
177
178 ## 가스비
179
180 가스비는 스마트 컨트랙트를 실행하기 위해 지불하는 네트워크 수수료이다.
181
182 스마트 컨트랙트는 단순히 글을 저장하는 것이 아니라 실제 계산을 수행한다.
183
184 계산이 많거나 저장하는 데이터가 많을수록 더 많은 가스가 필요하다.
185
186 가스비가 발생하는 이유는 다음과 같다.
187
188 - 네트워크 자원 사용 비용 지불
189 - 스팸 트랜잭션 방지
190 - 검증자 또는 채굴자 보상
191 - 복잡한 계산에 비용 부과
192 - 온체인 데이터 저장 비용 반영
193
194 예를 들어 다음 거래는 일반적으로 가스비가 든다.
195
196 - ERC-20 토큰 전송
197 - NFT 민팅
198 - DEX 스왑
199 - 대출 포지션 생성
200 - DAO 투표
201 - 컨트랙트 배포
202 - 브리지 사용
203
204 반대로 단순 조회 함수는 블록체인 상태를 바꾸지 않기 때문에 사용자가 직접 가스비를 내지 않는 경우가 많다.
205
206 ## 배포
207
208 스마트 컨트랙트를 블록체인에 올리는 과정을 배포라고 한다.
209
210 배포가 완료되면 컨트랙트 주소가 생성된다.
211
212 이 주소는 사용자가 해당 컨트랙트와 상호작용할 때 사용하는 주소이다.
213
214 배포 과정은 일반적으로 다음과 같다.
215
216 1. 개발자가 코드를 작성한다.
217 2. 테스트넷에서 테스트한다.
218 3. 보안 검토 또는 감사를 진행한다.
219 4. 메인넷 배포 트랜잭션을 보낸다.
220 5. 컨트랙트 주소가 생성된다.
221 6. 블록 익스플로러에 코드를 검증한다.
222 7. 프론트엔드 또는 앱에서 해당 주소를 연결한다.
223
224 컨트랙트 주소를 잘못 입력하면 다른 컨트랙트와 상호작용할 수 있으므로, 공식 주소 확인이 중요하다.
225
226 ## ABI
227
228 ABI는 Application Binary Interface의 약자이다.
229
230 스마트 컨트랙트와 외부 애플리케이션이 대화하기 위한 인터페이스이다.
231
232 사용자가 웹사이트에서 버튼을 누르면, 프론트엔드는 ABI를 이용해 어떤 함수를 호출해야 하는지 이해한다.
233
234 ABI에는 다음 정보가 포함된다.
235
236 - 함수 이름
237 - 함수 입력값
238 - 함수 출력값
239 - 이벤트 구조
240 - 읽기 함수
241 - 쓰기 함수
242
243 예를 들어 DEX 앱은 ABI를 통해 스마트 컨트랙트의 `swap`, `addLiquidity`, `removeLiquidity` 같은 함수를 호출할 수 있다.
244
245 ## 이벤트
246
247 이벤트는 스마트 컨트랙트 실행 중 발생한 기록을 외부에서 쉽게 추적할 수 있도록 남기는 로그이다.
248
249 예를 들어 ERC-20 토큰에서는 토큰 전송 시 `Transfer` 이벤트가 발생한다.
250
251 NFT가 발행될 때도 전송 이벤트가 기록된다.
252
253 이벤트는 다음 용도로 사용된다.
254
255 - 블록 익스플로러 표시
256 - 지갑 내 거래 내역 표시
257 - 데이터 인덱싱
258 - 알림 서비스
259 - 디앱 상태 업데이트
260 - 분석 대시보드
261
262 이벤트는 스마트 컨트랙트의 상태 변경을 외부 서비스가 추적하는 데 매우 중요하다.
263
264 ## 읽기 함수와 쓰기 함수
265
266 스마트 컨트랙트 함수는 크게 읽기 함수와 쓰기 함수로 나눌 수 있다.
267
268 ### 읽기 함수
269
270 읽기 함수는 블록체인 상태를 조회만 한다.
271
272 예시는 다음과 같다.
273
274 - 토큰 잔액 조회
275 - 총 공급량 조회
276 - NFT 소유자 조회
277 - 현재 가격 조회
278 - 보상 누적량 조회
279 - 담보비율 조회
280
281 읽기 함수는 상태를 바꾸지 않기 때문에 일반적으로 가스비를 직접 내지 않는다.
282
283 ### 쓰기 함수
284
285 쓰기 함수는 블록체인 상태를 변경한다.
286
287 예시는 다음과 같다.
288
289 - 토큰 전송
290 - NFT 민팅
291 - 스왑
292 - 예치
293 - 출금
294 - 스테이킹
295 - 대출
296 - 청산
297 - 투표
298
299 쓰기 함수는 트랜잭션을 발생시키며, 가스비가 필요하다.
300
301 ## 스마트 컨트랙트 언어
302
303 스마트 컨트랙트를 작성하는 언어는 블록체인마다 다를 수 있다.
304
305 대표적인 언어는 다음과 같다.
306
307 ### Solidity
308
309 Solidity는 이더리움과 EVM 계열 체인에서 가장 널리 사용되는 스마트 컨트랙트 언어이다.
310
311 ERC-20, ERC-721, DeFi, DAO, DEX, 대출 프로토콜 등 많은 컨트랙트가 Solidity로 작성된다.
312
313 ### Vyper
314
315 Vyper는 이더리움 계열 스마트 컨트랙트 언어이다.
316
317 Python과 유사한 문법을 가지고 있으며, 단순성과 보안성을 강조한다.
318
319 ### Rust
320
321 Rust는 Solana, Near, CosmWasm 등 여러 생태계에서 사용된다.
322
323 성능과 메모리 안전성을 강조하는 언어이다.
324
325 ### Move
326
327 Move는 Sui와 Aptos 등에서 사용되는 스마트 컨트랙트 언어이다.
328
329 디지털 자산의 안전한 표현을 위해 설계되었으며, 리소스 모델을 강조한다.
330
331 ### Cairo
332
333 Cairo는 Starknet 생태계에서 사용되는 언어이다.
334
335 영지식 증명과 확장성 환경에 맞춰 설계되었다.
336
337 ## EVM
338
339 EVM은 Ethereum Virtual Machine의 약자이다.
340
341 이더리움 스마트 컨트랙트가 실행되는 가상머신이다.
342
343 EVM은 이더리움뿐 아니라 여러 블록체인에서 사용된다.
344
345 대표적인 EVM 계열 네트워크는 다음과 같다.
346
347 - Ethereum
348 - BNB Chain
349 - Polygon
350 - Arbitrum
351 - Optimism
352 - Base
353 - Avalanche C-Chain
354 - Fantom
355 - Kaia
356 - Linea
357 - Scroll
358
359 EVM의 장점은 개발자와 도구가 많다는 것이다.
360
361 Solidity, Hardhat, Foundry, MetaMask, Etherscan, OpenZeppelin 같은 도구와 생태계가 널리 사용된다.
362
363 ## 스마트 컨트랙트와 토큰
364
365 스마트 컨트랙트의 대표적인 활용 사례는 토큰 발행이다.
366
367 토큰은 블록체인 위에서 특정 가치를 표현하는 디지털 자산이다.
368
369 대표적인 토큰 표준은 다음과 같다.
370
371 - ERC-20
372 - ERC-721
373 - ERC-1155
374 - ERC-4626
375 - SPL Token
376 - Sui Coin
377 - Move Object 기반 자산
378
379 ### ERC-20
380
381 ERC-20은 이더리움 계열에서 가장 대표적인 대체 가능 토큰 표준이다.
382
383 대체 가능 토큰은 각 단위가 서로 같은 가치를 가진다.
384
385 예를 들어 1 USDC와 다른 1 USDC는 같은 가치로 취급된다.
386
387 ERC-20은 다음과 같은 자산에 사용된다.
388
389 - 거버넌스 토큰
390 - 유틸리티 토큰
391 - 스테이블코인
392 - 거래소 토큰
393 - 보상 토큰
394 - 래핑 토큰
395
396 ### ERC-721
397
398 ERC-721은 NFT 표준이다.
399
400 각 토큰이 고유한 ID를 가지며 서로 다른 자산으로 취급된다.
401
402 활용 예시는 다음과 같다.
403
404 - 디지털 아트
405 - 프로필 이미지
406 - 게임 아이템
407 - 멤버십
408 - 티켓
409 - 인증서
410 - 도메인 이름
411
412 ### ERC-1155
413
414 ERC-1155는 여러 종류의 토큰을 하나의 컨트랙트에서 관리할 수 있는 표준이다.
415
416 대체 가능 토큰과 NFT를 함께 다룰 수 있어 게임 아이템에 자주 사용된다.
417
418 ## 스마트 컨트랙트와 DeFi
419
420 DeFi는 Decentralized Finance의 약자이다.
421
422 DeFi는 스마트 컨트랙트를 이용해 금융 기능을 온체인에서 구현한다.
423
424 대표적인 DeFi 서비스는 다음과 같다.
425
426 - 탈중앙화 거래소
427 - 대출 프로토콜
428 - 스테이블코인
429 - 유동성 공급
430 - 파생상품
431 - 수익 최적화
432 - 스테이킹
433 - 보험
434 - 자산 관리
435
436 예를 들어 DEX에서는 스마트 컨트랙트가 유동성 풀을 관리한다.
437
438 사용자가 토큰을 스왑하면 스마트 컨트랙트가 가격 공식에 따라 토큰을 교환하고, 수수료를 유동성 공급자에게 배분한다.
439
440 대출 프로토콜에서는 스마트 컨트랙트가 담보, 부채, 이자, 청산을 관리한다.
441
442 사용자가 담보를 예치하고 자산을 빌리면, 스마트 컨트랙트는 담보비율을 계산하고 기준 이하로 떨어질 경우 청산을 실행한다.
443
444 ## 스마트 컨트랙트와 NFT
445
446 NFT는 스마트 컨트랙트를 통해 발행되고 전송되는 고유 디지털 자산이다.
447
448 NFT 컨트랙트는 다음 정보를 관리한다.
449
450 - 토큰 ID
451 - 소유자
452 - 메타데이터 주소
453 - 승인 권한
454 - 전송 기록
455 - 민팅 조건
456 - 로열티 정보
457
458 NFT는 단순 이미지뿐 아니라 여러 권리를 표현할 수 있다.
459
460 활용 예시는 다음과 같다.
461
462 - 디지털 아트
463 - 게임 아이템
464 - 멤버십 카드
465 - 콘서트 티켓
466 - 출석 증명
467 - 인증서
468 - 부동산 권리 증명
469 - 커뮤니티 패스
470
471 ## 스마트 컨트랙트와 DAO
472
473 DAO는 Decentralized Autonomous Organization의 약자이다.
474
475 DAO는 스마트 컨트랙트를 이용해 조직 운영과 의사결정을 온체인으로 관리한다.
476
477 DAO 스마트 컨트랙트는 다음 기능을 제공할 수 있다.
478
479 - 제안 생성
480 - 투표
481 - 투표권 계산
482 - 금고 관리
483 - 제안 실행
484 - 권한 관리
485 - 멀티시그 연동
486 - 보상 지급
487
488 DAO에서는 토큰 보유량, NFT 보유 여부, 스테이킹 수량 등에 따라 투표권이 정해질 수 있다.
489
490 스마트 컨트랙트는 투표 결과에 따라 자동으로 자금을 이동하거나 설정을 변경할 수 있다.
491
492 ## 스마트 컨트랙트와 오라클
493
494 스마트 컨트랙트는 기본적으로 블록체인 안의 정보만 직접 읽을 수 있다.
495
496 그러나 많은 서비스는 외부 정보가 필요하다.
497
498 예를 들어 다음 정보는 블록체인 밖에 있다.
499
500 - 코인 가격
501 - 환율
502 - 주식 가격
503 - 날씨
504 - 스포츠 경기 결과
505 - 선거 결과
506 - 실물 자산 가격
507 - 신용 점수
508 - 배송 상태
509
510 오라클은 이러한 외부 데이터를 스마트 컨트랙트에 전달하는 인프라이다.
511
512 대표적인 오라클 프로젝트에는 Chainlink, Pyth, RedStone 등이 있다.
513
514 오라클은 DeFi에서 특히 중요하다.
515
516 대출 프로토콜은 담보 가격을 알아야 청산을 실행할 수 있고, 파생상품 프로토콜은 외부 가격 데이터를 바탕으로 정산해야 하기 때문이다.
517
518 오라클이 잘못된 가격을 제공하면 정상 사용자 자산이 청산되거나, 공격자가 프로토콜을 악용할 수 있다.
519
520 ## 프록시와 업그레이드
521
522 스마트 컨트랙트는 한 번 배포되면 코드를 수정하기 어렵다.
523
524 이 특징은 신뢰성을 높여주지만, 버그 수정이나 기능 개선이 어려워지는 단점도 있다.
525
526 이를 해결하기 위해 일부 프로젝트는 프록시 패턴을 사용한다.
527
528 프록시 구조는 다음과 같다.
529
530 - 사용자는 프록시 컨트랙트와 상호작용한다.
531 - 프록시 컨트랙트는 실제 로직 컨트랙트로 호출을 전달한다.
532 - 로직 컨트랙트를 교체하면 기능을 업그레이드할 수 있다.
533 - 저장소는 프록시 쪽에 유지된다.
534
535 프록시 업그레이드는 편리하지만 관리자 권한 리스크가 존재한다.
536
537 관리자가 악의적으로 로직을 바꾸면 사용자 자산에 영향을 줄 수 있다.
538
539 따라서 업그레이드 가능한 컨트랙트는 다음 장치를 함께 사용하는 경우가 많다.
540
541 - 멀티시그
542 - 타임락
543 - DAO 투표
544 - 감사
545 - 업그레이드 공지
546 - 권한 분리
547
548 ## 멀티시그
549
550 멀티시그는 여러 명의 서명이 있어야 거래를 실행할 수 있는 지갑 또는 권한 구조이다.
551
552 예를 들어 5명 중 3명이 승인해야 자금 이동이 가능한 구조가 있다.
553
554 이를 3-of-5 멀티시그라고 부른다.
555
556 멀티시그는 스마트 컨트랙트 운영에서 자주 사용된다.
557
558 활용 예시는 다음과 같다.
559
560 - DAO 금고 관리
561 - 프로토콜 관리자 권한 관리
562 - 업그레이드 승인
563 - 긴급 중단 권한
564 - 토큰 발행 권한
565 - 보안 대응
566
567 대표적인 멀티시그 도구로는 Safe가 있다.
568
569 ## 타임락
570
571 타임락은 특정 작업이 즉시 실행되지 않고 일정 시간이 지난 뒤 실행되도록 하는 장치이다.
572
573 예를 들어 스마트 컨트랙트 업그레이드가 제안되면 48시간 뒤에만 실행되도록 할 수 있다.
574
575 타임락의 장점은 사용자에게 대응 시간을 준다는 점이다.
576
577 만약 위험한 업그레이드가 제안되면 사용자는 자산을 인출하거나 거버넌스에서 반대할 수 있다.
578
579 타임락은 다음 영역에 사용된다.
580
581 - DAO 제안 실행
582 - 컨트랙트 업그레이드
583 - 관리자 권한 변경
584 - 수수료 변경
585 - 담보 설정 변경
586 - 토큰 발행 정책 변경
587
588 ## 스마트 컨트랙트 보안
589
590 스마트 컨트랙트 보안은 매우 중요하다.
591
592 스마트 컨트랙트에는 실제 자산이 들어갈 수 있기 때문이다.
593
594 버그가 있으면 공격자가 자금을 탈취하거나, 프로토콜을 비정상적으로 조작할 수 있다.
595
596 대표적인 스마트 컨트랙트 취약점은 다음과 같다.
597
598 - 재진입 공격
599 - 오버플로우와 언더플로우
600 - 권한 설정 오류
601 - 가격 오라클 조작
602 - 프론트러닝
603 - MEV 공격
604 - 무제한 승인 악용
605 - 업그레이드 권한 탈취
606 - 초기화 함수 누락
607 - 잘못된 청산 로직
608 - 랜덤값 조작
609 - 브리지 검증 오류
610
611 스마트 컨트랙트 보안을 위해 다음 절차가 사용된다.
612
613 - 단위 테스트
614 - 통합 테스트
615 - 퍼즈 테스트
616 - 정적 분석
617 - 형식 검증
618 - 외부 감사
619 - 버그 바운티
620 - 테스트넷 운영
621 - 코드 공개
622 - 모니터링
623 - 긴급 중단 기능
624
625 ## 재진입 공격
626
627 재진입 공격은 스마트 컨트랙트 보안에서 가장 유명한 취약점 중 하나이다.
628
629 재진입 공격은 컨트랙트가 외부 컨트랙트로 자금을 보내는 과정에서, 외부 컨트랙트가 다시 원래 컨트랙트를 호출해 상태가 완전히 업데이트되기 전에 반복 출금을 시도하는 방식이다.
630
631 대표적인 방어 방법은 다음과 같다.
632
633 - Checks-Effects-Interactions 패턴
634 - Reentrancy Guard 사용
635 - 외부 호출 최소화
636 - 상태 업데이트를 먼저 수행
637 - 출금 방식 분리
638
639 재진입 공격은 과거 여러 DeFi 해킹 사건의 원인이 되었기 때문에, 스마트 컨트랙트 개발에서 반드시 고려해야 한다.
640
641 ## 권한 관리
642
643 스마트 컨트랙트에는 관리자 권한이 존재할 수 있다.
644
645 관리자 권한은 다음 기능을 수행할 수 있다.
646
647 - 컨트랙트 업그레이드
648 - 수수료 변경
649 - 토큰 발행
650 - 긴급 중단
651 - 오라클 변경
652 - 화이트리스트 관리
653 - 자금 이동
654 - 파라미터 변경
655
656 관리자 권한은 필요할 수 있지만, 동시에 중앙화 리스크가 된다.
657
658 특정 개인 지갑 하나가 관리자 권한을 가지고 있다면, 해당 지갑이 해킹되거나 악용될 경우 전체 프로토콜이 위험해질 수 있다.
659
660 따라서 중요한 프로토콜은 보통 다음 방식을 사용한다.
661
662 - 멀티시그
663 - 타임락
664 - DAO 거버넌스
665 - 권한 분리
666 - 관리자 권한 제거
667 - 점진적 탈중앙화
668
669 ## 승인과 무제한 승인
670
671 DeFi를 사용할 때 사용자는 특정 스마트 컨트랙트가 자신의 토큰을 사용할 수 있도록 승인한다.
672
673 이 기능을 approve라고 한다.
674
675 예를 들어 DEX에서 USDC를 ETH로 바꾸려면, 먼저 DEX 컨트랙트가 사용자의 USDC를 사용할 수 있도록 승인해야 한다.
676
677 문제는 많은 사용자가 편의를 위해 무제한 승인을 한다는 점이다.
678
679 무제한 승인은 다음 위험이 있다.
680
681 - 컨트랙트가 해킹되면 승인된 토큰이 탈취될 수 있음
682 - 악성 사이트가 승인 권한을 악용할 수 있음
683 - 오래된 승인 권한이 남아 있을 수 있음
684
685 따라서 사용자는 주기적으로 토큰 승인 권한을 확인하고, 사용하지 않는 권한을 해제하는 것이 좋다.
686
687 ## 스마트 컨트랙트 감사
688
689 스마트 컨트랙트 감사는 외부 보안 전문가가 코드를 검토하는 과정이다.
690
691 감사는 버그와 취약점을 줄이는 데 도움이 된다.
692
693 하지만 감사를 받았다고 해서 안전이 100% 보장되는 것은 아니다.
694
695 감사의 주요 범위는 다음과 같다.
696
697 - 코드 로직 검토
698 - 권한 구조 검토
699 - 경제 설계 검토
700 - 오라클 리스크 검토
701 - 재진입 가능성 확인
702 - 수학 계산 오류 확인
703 - 업그레이드 구조 확인
704 - 테스트 커버리지 확인
705 - 알려진 취약점 패턴 확인
706
707 감사 보고서는 사용자가 프로젝트의 보안 수준을 판단하는 데 참고 자료가 될 수 있다.
708
709 ## 스마트 컨트랙트와 법적 계약
710
711 스마트 컨트랙트라는 이름 때문에 법적 계약과 동일하다고 오해하기 쉽다.
712
713 하지만 스마트 컨트랙트는 기본적으로 코드이다.
714
715 코드가 특정 조건에 따라 실행된다고 해서, 그 자체가 모든 국가에서 법적 계약으로 인정되는 것은 아니다.
716
717 법적 계약은 다음 요소를 요구할 수 있다.
718
719 - 당사자
720 - 의사표시
721 - 계약 목적
722 - 법적 효력
723 - 관할권
724 - 분쟁 해결 방식
725 - 소비자 보호
726 - 규제 준수
727
728 스마트 컨트랙트는 이러한 법적 계약을 자동 실행하는 도구로 활용될 수 있지만, 법률 문서와 코드가 항상 같은 의미를 가지는 것은 아니다.
729
730 특히 RWA, 증권형 토큰, 보험, 대출, 부동산, 실물 자산 거래에서는 법적 구조와 온체인 코드가 함께 설계되어야 한다.
731
732 ## 장점
733
734 스마트 컨트랙트의 장점은 다음과 같다.
735
736 ### 자동 실행
737
738 조건이 충족되면 코드가 자동으로 실행된다.
739
740 중개자가 직접 처리하지 않아도 된다.
741
742 ### 투명성
743
744 공개 블록체인에서는 컨트랙트 주소, 코드, 거래 내역을 확인할 수 있다.
745
746 ### 조합성
747
748 여러 스마트 컨트랙트가 서로 연결될 수 있다.
749
750 예를 들어 DEX, 대출, 스테이블코인, 오라클, 금고가 서로 조합되어 복잡한 DeFi 전략을 만들 수 있다.
751
752 ### 검열 저항성
753
754 탈중앙화된 네트워크 위에 배포된 컨트랙트는 특정 중앙 서버보다 중단되기 어렵다.
755
756 ### 무신뢰 실행
757
758 사용자는 상대방을 직접 신뢰하지 않아도 스마트 컨트랙트 규칙을 기준으로 거래할 수 있다.
759
760 ### 글로벌 접근성
761
762 인터넷과 지갑만 있으면 전 세계 사용자가 동일한 컨트랙트에 접근할 수 있다.
763
764 ## 한계 및 주요 변수
765
766 스마트 컨트랙트는 강력한 기술이지만 한계도 있다.
767
768 가장 큰 변수는 코드 오류이다.
769
770 스마트 컨트랙트에 버그가 있으면 배포 후 수정이 어렵고, 공격자가 실제 자산을 탈취할 수 있다.
771
772 또한 스마트 컨트랙트는 기본적으로 블록체인 밖의 정보를 직접 알 수 없다.
773
774 외부 가격, 날씨, 경기 결과, 실물 자산 상태 같은 데이터는 오라클을 통해 가져와야 한다.
775
776 오라클이 잘못되면 스마트 컨트랙트도 잘못된 결정을 내릴 수 있다.
777
778 가스비도 중요한 변수이다.
779
780 복잡한 스마트 컨트랙트는 많은 가스비를 필요로 한다.
781
782 네트워크가 혼잡하면 단순한 거래도 비싸질 수 있다.
783
784 업그레이드 구조도 중요하다.
785
786 완전히 불변인 컨트랙트는 신뢰성이 높지만 버그 수정이 어렵다.
787
788 업그레이드 가능한 컨트랙트는 유연하지만 관리자 권한 리스크가 있다.
789
790 스마트 컨트랙트의 장기적인 활용에는 다음 요소들이 영향을 줄 수 있다.
791
792 - 코드 보안
793 - 감사 품질
794 - 오라클 안정성
795 - 가스비 수준
796 - 네트워크 확장성
797 - 사용자 지갑 보안
798 - 승인 권한 관리
799 - 프록시와 업그레이드 권한
800 - 관리자 권한 분산
801 - 법적 계약과의 연결
802 - 규제 환경
803 - 개발자 도구
804 - 블록체인 생태계의 실제 사용량
805
806 ## 활용 분야
807
808 ### 토큰 발행
809
810 ERC-20, SPL, Move 기반 자산 등 다양한 토큰을 발행할 수 있다.
811
812 ### NFT
813
814 디지털 아트, 게임 아이템, 멤버십, 티켓, 인증서 등을 NFT로 만들 수 있다.
815
816 ### DeFi
817
818 DEX, 대출, 스테이블코인, 파생상품, 금고, 유동성 공급 등 금융 기능을 구현할 수 있다.
819
820 ### DAO
821
822 투표, 금고, 제안 실행, 보상 지급 등 조직 운영을 온체인으로 관리할 수 있다.
823
824 ### 게임
825
826 게임 아이템, 캐릭터, 보상, 마켓플레이스, 플레이어 간 거래를 구현할 수 있다.
827
828 ### RWA
829
830 부동산, 채권, 펀드, 예술품, 원자재 같은 현실 자산의 권리를 온체인에서 표현할 수 있다.
831
832 ### 보험
833
834 특정 조건이 충족되면 자동으로 보험금을 지급하는 구조를 만들 수 있다.
835
836 ### 공급망
837
838 상품 이동, 인증서, 원산지, 물류 상태를 온체인으로 기록할 수 있다.
839
840 ### 신원과 인증
841
842 자격 증명, 멤버십, 출석 증명, 학위 증명 등을 스마트 컨트랙트와 NFT로 관리할 수 있다.
843
844 ## 생태계
845
846 스마트 컨트랙트 생태계는 개발자, 사용자, 지갑, 블록체인, 오라클, 감사 업체, 프론트엔드, 인덱서, DAO, 거래소로 구성된다.
847
848 개발자는 스마트 컨트랙트 코드를 작성한다.
849
850 블록체인은 코드를 실행하고 상태를 기록한다.
851
852 사용자는 지갑으로 트랜잭션을 보내 컨트랙트와 상호작용한다.
853
854 오라클은 외부 데이터를 제공한다.
855
856 감사 업체는 코드 보안을 검토한다.
857
858 프론트엔드는 사용자가 컨트랙트를 쉽게 사용할 수 있도록 화면을 제공한다.
859
860 인덱서는 이벤트와 데이터를 정리해 앱과 분석 도구에 제공한다.
861
862 DAO는 스마트 컨트랙트를 통해 거버넌스와 금고를 운영한다.
863
864 거래소와 지갑은 사용자가 토큰과 컨트랙트에 접근할 수 있게 한다.
865
866 스마트 컨트랙트는 이 모든 요소를 연결하는 블록체인 애플리케이션의 핵심 실행 계층이다.
867
868 ## 같이 보기
869
870 * [[블록체인]]
871 * [[이더리움]]
872 * [[솔리디티]]
873 * [[EVM]]
874 * [[트랜잭션]]
875 * [[가스비]]
876 * [[DeFi]]
877 * [[NFT]]
878 * [[DAO]]
879 * [[오라클]]
880 * [[Chainlink]]
881 * [[ERC-20]]
882 * [[ERC-721]]
883 * [[토큰]]
884 * [[스테이블코인]]
885 * [[탈중앙화 거래소]]
886 * [[대출 프로토콜]]
887 * [[브리지]]
888 * [[멀티시그]]
889 * [[프록시 컨트랙트]]
890 * [[RWA]]
891 * [[게임파이]]
r1 보기 역사 목록