Deterministic결정론적 실행
결정론적(Deterministic)이란 동일한 입력에 대해 항상 동일한 출력을 보장하는 속성이다. 블록체인에서 결정론적 실행은 네트워크의 모든 노드가 같은 트랜잭션을 처리할 때 반드시 동일한 상태에 도달해야 한다는 핵심 요구사항이다.
왜 결정론적이어야 하는가
블록체인은 수천 개의 노드가 동일한 상태를 유지하는 분산 시스템이다.
하나라도 다른 결과가 나오면 합의(Consensus)가 깨져 블록체인이 분기(Fork)된다. 합의 메커니즘은 어떤 블록을 선택할지 결정하지만, 결정론적 실행만이 그 블록이 모든 노드에서 동일한 의미를 갖도록 보장한다.
비결정론적 요소의 제거
스마트 컨트랙트는 다음과 같은 비결정론적 요소를 사용할 수 없다.
| 금지 요소 | 이유 |
|---|---|
| 현재 시각 (Date.now()) | 노드마다 시계가 다름 |
| 랜덤 숫자 | 노드마다 다른 값 생성 |
| 외부 API 호출 | 네트워크 상태에 따라 다름 |
| 부동소수점 연산 | 플랫폼마다 결과 다름 |
| 외부 라이브러리 버전 | 컴파일러·버전 차이 |
이더리움 EVM이 정수 연산만 지원하고 외부 호출을 직접 허용하지 않는 이유다.
오라클(Oracle)의 역할
외부 데이터(가격, 날씨, 스포츠 결과)가 필요할 때는 오라클이 결정론적으로 데이터를 공급한다.
외부 세계 → 오라클 네트워크 → 합의된 단일 값 → 스마트 컨트랙트
Chainlink 등의 오라클은 여러 소스에서 데이터를 수집해 합의된 값 하나를 컨트랙트에 제공한다.
오라클 문제 (Oracle Problem)
오라클이 중앙화되면 탈중앙 블록체인이 중앙화된 데이터 소스에 의존하는 모순이 발생한다. 오라클 데이터가 조작되거나 지연될 경우 컨트랙트가 잘못 실행되어 큰 금전적 손실이 발생할 수 있다. 이를 해결하기 위해 Chainlink 같은 탈중앙화 오라클 네트워크가 다수의 독립 노드에서 데이터를 집계한다.
결정론적 난수 생성
스마트 컨트랙트에서 안전한 난수가 필요할 때는:
- •Chainlink VRF(Verifiable Random Function): 온체인 검증 가능한 난수 생성
- •블록 해시 기반: 조작 가능성 있어 소액에만 적합
- •커밋-공개 방식: 사용자 시드를 커밋 후 공개
관련 개념
- •Ethereum — EVM의 결정론적 실행 환경
- •스마트 컨트랙트 — 결정론적으로 실행되는 블록체인 프로그램
- •합의 메커니즘 — 결정론적 실행을 통해 네트워크 합의 달성
- •오라클 — 외부 데이터를 결정론적으로 공급
- •EVM — 결정론적 실행을 강제하는 가상 머신