블록체인 운영 구조: 분산 원장과 스마트 컨트랙트, 합의 알고리즘

분산 원장과 스마트 컨트랙트 실행 환경, 합의 알고리즘, P2P 네트워크 및 OS 수준의 블록체인 노드 운영 요소를 정리한다.

2026-08-14 · 최초 발행 2026-01-19

원장부터 커널까지 이어지는 블록체인 구조

블록체인은 탈중앙화된 원장을 유지하기 위해 합의, 계약 실행, 피어 통신, 저장소 관리를 동시에 처리한다. DApp과 월렛에서 시작한 요청은 스마트 컨트랙트 실행 환경과 합의 엔진, P2P 네트워크, 스토리지를 거쳐 운영체제 커널과 하드웨어 위에서 처리된다.

  • 애플리케이션 레이어: 디앱(DApp), 월렛, 사용자 인터페이스
  • 스마트 컨트랙트 레이어: 비즈니스 로직 실행 환경(EVM, WASM 등)
  • 합의 레이어: 분산 합의 알고리즘(PoW, PoS, PBFT 등)
  • 네트워크 레이어: P2P 통신, 블록 전파, 트랜잭션 브로드캐스트
  • 스토리지 레이어: 블록 데이터, 상태 데이터 저장
  • 운영체제 레이어: 프로세스 관리, 메모리 관리, I/O 관리
디앱/월렛스마트 컨트랙트 실행 환경합의 엔진P2P 네트워크 레이어블록체인 스토리지운영체제 커널하드웨어보안 모듈

노드는 보유 데이터와 네트워크 내 역할에 따라 나뉜다. 풀 노드는 전체 블록체인 데이터를 저장하고 검증하며, 라이트 노드는 블록 헤더만 보관한 채 SPV(Simplified Payment Verification)를 사용한다. 마이너 또는 밸리데이터 노드는 블록 생성 권한을 보유하고, 아카이브 노드는 전체 히스토리 상태를 저장한다.

블록과 상태를 저장하고 검증하는 방식

블록은 헤더와 바디로 구성된다. 헤더에는 체인 연결과 검증에 필요한 정보가, 바디에는 트랜잭션 목록이 담긴다.

블록 헤더:
- 버전: 블록 포맷 버전
- 이전 블록 해시: 블록체인 연결
- 머클 루트: 트랜잭션 요약
- 타임스탬프: 블록 생성 시간
- 난이도: PoW 난이도 타겟
- 논스: PoW 해답

블록 바디:
- 트랜잭션 리스트
- 트랜잭션 개수

각 블록은 이전 블록의 해시를 참조해 연결된다. 이 연결 관계 때문에 특정 블록의 변경은 이후 검증 과정에 영향을 준다.

해시해시블록 N-1블록 N블록 N+1Tx1, Tx2, Tx3Tx4, Tx5

트랜잭션 집합의 무결성은 머클 트리로 검증한다.

머클 루트해시(AB)해시(CD)해시(A)해시(B)해시(C)해시(D)Tx ATx BTx CTx D

머클 트리는 O(log n) 복잡도로 트랜잭션 포함 증명을 제공한다. 전체 블록을 내려받지 않아도 라이트 클라이언트가 검증할 수 있으며, 단일 트랜잭션이 바뀌면 루트 해시도 바뀌므로 변경을 탐지할 수 있다.

상태 모델도 체인별로 다르다. Bitcoin의 UTXO 모델은 Unspent Transaction Output을 독립적인 상태로 다루고, Ethereum의 어카운트 모델은 계정 잔액과 상태를 직접 저장한다. 상태 트라이는 패트리샤 머클 트리로 상태를 저장하고 검증한다.

데이터가 누적될수록 프루닝, 샤딩, 레이어2 솔루션, 상태 압축이 중요해진다. 프루닝은 오래된 상태 데이터를 삭제하고, 샤딩은 블록체인을 여러 조각으로 분할한다. 레이어2는 메인체인 외부에서 트랜잭션을 처리한 뒤 요약을 기록하며, 상태 압축은 스냅샷과 델타 인코딩을 사용한다.

계약 실행 환경이 합의에 맞춰야 하는 이유

스마트 컨트랙트는 모든 노드가 같은 입력에서 같은 결과를 얻어야 한다. EVM은 이를 위한 이더리움의 실행 환경으로, 256비트 워드 크기와 1024 깊이의 스택 기반 아키텍처를 사용한다. 연산량에 비례한 수수료를 부과하는 가스 메커니즘은 무한 루프를 막으며, 가스 제한 안에서는 임의의 계산이 가능하다.

EVM 명령어는 산술 연산의 ADD, SUB, MUL, DIV, MOD, 비교 연산의 LT, GT, EQ, ISZERO, 비트 연산의 AND, OR, XOR, NOT, BYTE 등을 포함한다. 메모리는 MLOAD, MSTORE, MSTORE8로 다루고, 영속 스토리지는 SLOAD와 SSTORE로 접근한다. 제어 흐름에는 JUMP, JUMPI, PC, STOP, RETURN이 사용된다.

Solidity 소스는 컴파일러를 거쳐 EVM 바이트코드와 ABI로 나뉜다. 바이트코드는 블록체인에 배포되고, ABI는 DApp 연동에 사용된다.

Solidity 소스컴파일러EVM 바이트코드ABI(인터페이스)배포블록체인 저장DApp 연동

WASM 기반 실행 환경은 다른 선택지를 제공한다. NEAR Protocol은 WASM VM에서 Rust와 AssemblyScript를 지원하고, Polkadot은 Substrate 프레임워크와 WASM 런타임을 사용한다. Cosmos는 CosmWasm을 통해 멀티체인 WASM 컨트랙트를 다루며, EOS는 EOSIO WASM 엔진을 사용한다.

WASM은 네이티브에 가까운 실행 속도, Rust·C++·Go 등 다양한 언어 지원, 안전한 샌드박싱, 브라우저와 서버에서 공통으로 쓰이는 W3C 표준이라는 특성을 가진다.

계약 코드는 실행 환경의 제약을 전제로 보안을 설계해야 한다. 재진입 공격에는 외부 호출 전에 상태를 업데이트하고, 정수 오버플로우에는 SafeMath 라이브러리를 사용한다. modifier를 통한 권한 검증, 가스 한도를 통한 DoS 공격 방지, 수학적 증명을 이용한 형식 검증도 고려 대상이다.

네트워크가 선택하는 합의 방식

PoW는 Bitcoin과 과거 Ethereum에서 사용된 합의 메커니즘이다. 트랜잭션을 모아 머클 트리를 만들고 블록 헤더를 구성한 뒤, 해시가 타겟 조건을 만족할 때까지 논스를 조정한다.

NoYes트랜잭션 수집머클 트리 구성블록 헤더 생성논스 조정해시 < 타겟?블록 브로드캐스트네트워크 검증체인에 추가

PoW는 51% 공격 비용이 매우 높고 누구나 참여 가능한 Permissionless 방식이라는 특성이 있다. 반면 막대한 전력을 사용하며, 블록 생성 시간 때문에 TPS 확장에 제한이 생긴다.

PoS는 Ethereum 2.0과 Cardano 등에서 쓰이는 방식이다. 보유 지분에 비례한 확률로 블록 제안자를 선택하고, 악의적 행위에는 슬래싱(Slashing)으로 예치금을 몰수한다. 블록 생성 및 검증에는 보상이 주어지며, 일정 조건에서는 블록의 최종성(Finality)을 보장한다. DPoS는 위임으로 대표자를 선출하고, LPoS는 동적 위임과 재위임을 지원하며, NPoS는 지명자와 검증자의 역할을 분리한다.

허가형(Permissioned) 블록체인에서는 BFT 계열이 주로 사용된다. PBFT는 3단계 합의 프로토콜과 O(n²) 통신 복잡도를 가지며, Tendermint는 Cosmos 생태계에서 즉각적 최종성을 제공한다. HotStuff는 선형 복잡도의 BFT로 Libra(Diem)에서 사용됐고, Istanbul BFT는 Quorum 블록체인에 적용된다.

PBFT에서 리더는 Pre-Prepare 단계에 블록을 제안한다. 이어 Prepare 단계에서 노드가 제안 수신을 확인하고, 2f+1 개의 Prepare 메시지를 수신하면 Commit 단계로 진행한다. 마지막 Reply 단계에서 클라이언트에 결과를 응답한다.

알고리즘 TPS 최종성 에너지 효율 탈중앙화 사용 사례
PoW 7-15 확률적 낮음 높음 Bitcoin
PoS 수천 확정적 높음 중간 Ethereum 2.0
PBFT 수만 즉각적 높음 낮음 Hyperledger
DAG 수천 확률적 높음 중간 IOTA, Nano

피어 연결과 블록 전파의 설계

노드 간 연결은 언스트럭처드, 스트럭처드, 하이브리드 방식으로 구성할 수 있다. Bitcoin처럼 랜덤 피어에 연결하는 방식은 언스트럭처드에 속하고, Kademlia DHT 기반의 효율적 라우팅은 스트럭처드 방식이다. 부트스트랩 노드와 동적 피어 발견을 조합하는 구조는 하이브리드에 해당한다.

블록과 트랜잭션을 전파할 때는 대역폭과 지연시간을 줄이는 기법이 사용된다. Compact Block Relay는 전체 블록 대신 트랜잭션 ID만 전송한다. Graphene은 블룸 필터와 IBLT로 블록 크기를 99% 감소시키며, Erlay는 트랜잭션 전파 효율을 높인다. 샤딩은 네트워크를 서브넷으로 분할한다.

새 피어는 DNS Seed, DHT, Gossip Protocol으로 찾는다. DNS Seed는 도메인 이름에서 부트스트랩 노드 목록을 조회하고, DHT는 Kademlia 분산 해시 테이블을 이용한다. Gossip Protocol은 피어 정보를 이웃 노드에 전파한다.

노드 운영에서 보는 OS 자원

노드 성능은 합의 로직만으로 결정되지 않는다. SSD 환경에서는 I/O 스케줄러를 CFQ에서 deadline/noop으로 변경할 수 있고, 파일 시스템은 ext4나 XFS 같은 저널링 파일 시스템에서 큰 파일 처리 최적화를 고려한다. 네트워크는 TCP 버퍼 크기와 커넥션 제한을 조정하며, 메모리 관리는 스왑 비활성화와 대용량 메모리 활용을 다룬다.

Docker와 Kubernetes를 사용하면 노드 배포를 상태 저장 워크로드로 구성할 수 있다.

# Ethereum 노드 배포 예시
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: geth-node
spec:
  serviceName: geth
  replicas: 3
  template:
    spec:
      containers:
      - name: geth
        image: ethereum/client-go:latest
        resources:
          requests:
            cpu: "2"
            memory: "8Gi"
        volumeMounts:
        - name: geth-data
          mountPath: /root/.ethereum
  volumeClaimTemplates:
  - metadata:
      name: geth-data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 1Ti

운영 중에는 블록 동기화 속도를 블록/초로 확인하고, 피어 연결 수로 네트워크 안정성을 살핀다. 트랜잭션 풀 크기는 메모리 사용량과 연결해 관찰하며, 디스크 I/O에서는 IOPS와 처리량을, 네트워크에서는 인바운드·아웃바운드 트래픽을 점검한다.

블록체인은 P2P 네트워크, 가상머신, 암호학적 검증, 상태 관리가 한 시스템 안에서 결합된 구조다. PoW에서 PoS로의 전환, EVM에서 WASM으로의 발전, 레이어2 솔루션의 등장은 성능과 확장성을 높이는 방향의 변화로 이어지고 있다.

블록체인분산 원장스마트 컨트랙트합의 알고리즘운영체제