Post

Vryx: Fortifying Decoupled State Machine Replication

Vryx: Fortifying Decoupled State Machine Replication

Reference


목차 (Contents)

  • 발표자: 패트릭 오그래디 (Patrick O’Grady)
  • 전통적인 상태 머신 복제 (SMR)
    • 네트워크상의 모든 컴퓨터가 트랜잭션의 실행 순서를 완벽하게 동일하게 복제하고 실행해야 함.
    • 가장 느린 컴퓨터의 속도에 맞춰 전체 네트워크 성능이 하향 평준화됨.
  • 솔라나 (Solana)
    • 이 과정을 병렬로 처리하여 속도를 개선함.
  • Aptos, Sui
    • DSMR (Decoupled SMR): 더욱 파격적인 아이디어를 도입.

DSMR (Decoupled State Machine Replication)

  • 핵심 개념: “일단 저지르고 나중에 수습한다”
    • 유효성 검증이라는 가장 시간이 오래 걸리는 작업을 뒤로 미룸.
  • 프로세스
    • “A 계좌에 잔고가 충분한가?”에 대한 검증을 즉시 수행하지 않음.
    • (A -> B, 100)과 같은 거래 정보를 빛의 속도로 복제하고, 순서(Ordering)부터 확정함.
    • 이후 각 컴퓨터(검증인)에서 개별적으로 실행(Execution)하여 결과를 도출함.
  • 장점
    • 중간 과정의 병목 현상이 사라지면서 결과적으로 엄청난 처리량(Throughput)을 확보할 수 있음.
  • 문제점
    • 잔고가 없는데 이체하는 ‘무효(Invalid) 트랜잭션’도 일단 블록에 기록됨.
    • 결과적으로 시스템에 불량 데이터가 유입될 가능성이 존재함.

악의적 공격 시나리오

1. 단순 복제 공격 (Simple Replication Attack)

  • 방법: 공격자가 동일한 거래를 생성하여 여러 검증인에게 동시에 전송함.
  • 문제: 분산 시스템 특성상 어떤 거래가 원본인지 즉시 알기 어렵기 때문에, 모든 검증인이 해당 거래를 자신의 작업 대기 목록(Mempool)에 올림.
  • 결과: 어차피 중복 거래는 마지막에 한 번만 실행되고 걸러지겠지만, 그전까지 모든 검증인의 대기열이 쓰레기 트랜잭션으로 가득 차버림. (DDoS 및 스팸 공격과 유사)

2. Nonce 충돌 공격 (Nonce Collision Attack)

  • Nonce: 거래 순서를 정하는 고유 번호표 (한 계정에서 거래를 보낼 때마다 증가).
  • 방법: 특정 Nonce(예: Nonce 5)를 사용하여 내용을 살짝 바꾼 여러 버전의 거래를 만들어 여러 검증인에게 뿌림.
  • 문제: 시스템은 어떤 버전이 최종적으로 실행될지 알 수 없으므로, 모든 거래를 일단 유효한 것으로 간주하고 블록에 포함시킴.
  • 결과: 공격자는 단 한 번의 거래 수수료만 지불하면서, 수십 개의 실패한 거래로 블록 공간을 점유해버림.

3. 자금 소진 공격 (Balance Exhaustion Attack)

  • 방법: 딱 한 번의 수수료만 지불할 수 있는 잔고를 넣어두고, 수많은 거래를 동시에 네트워크에 전송함.
  • 문제: 거래 시점에 수수료 지불 능력을 엄격히 검증하지 않기 때문에, 네트워크는 모든 트랜잭션을 처리하려고 시도함.
  • 결과: 첫 번째 거래가 실행되며 수수료가 빠져나가면 나머지 거래는 실패함. 결과적으로 1회분 수수료로 시스템 자원을 10배 이상 낭비하게 함.

공격의 파급 효과와 후유증

  • 성능 저하: 유효 거래량이 최대 99.99%까지 감소할 수 있으며, 최악의 경우 네트워크가 멈춤.
  • 영구적인 데이터 낭비: 무효 거래가 블록체인에 영원히 기록됨. 신규 노드가 데이터를 동기화할 때 쓰레기 데이터를 처리하느라 막대한 시간, 저장 공간, 대역폭이 낭비됨.
  • 의도치 않은 공격 유인: 네트워크 혼잡으로 인해 수수료가 낮아지는 경우, 공격자가 이를 악용하여 본인의 유효 거래를 싼값에 처리하는 혜택을 볼 수 있음.
  • 경제적 구조의 한계: 공격자가 아무런 담보 없이도 이러한 공격이 가능하다는 점이 순수 DSMR의 치명적인 약점임.

해결책: Vryx의 4가지 규칙

1. 계정 사기 증명 (Account Fraud Proofs)

  • 검증자가 헛수고하지 않도록 경제적 안전장치를 마련함.
  • 트랜잭션 실행 전, 예상 수수료 이상의 자금을 미리 잠금(Lock-up)함.
  • 실행 결과가 실패(Invalid)하더라도, 사용자가 미리 잠가둔 자금에서 검증자가 수수료를 강제로 징수(Claim)할 수 있게 함.

2. 시간적 계정 분할 (Temporal Account Sharding)

  • 특정 계정의 거래를 특정 시간대에 특정 검증인에게만 할당하는 방식 (담당 창구 지정).
  • 한 명의 공격자가 모든 검증인에게 동시에 혼란을 주는 것을 방지함.
  • 담당 그룹은 몇 분마다 무작위로 교체되어 담합이나 표적 공격을 방지함.

3. Nonce 없는 거래 (Nonce-less Transactions)

  • 순차적인 Nonce 대신 짧은 유효 기간을 가진 고유 ID를 부여함.
  • 공격자가 동일한 Nonce로 여러 변종 거래를 만들어 블록 공간을 낭비하는 것을 원천 차단함.

4. 사후 실행 필터링 (Post-execution Filtering)

  • 유효/무효 거래를 일단 모두 블록에 담아 실행하되, 실행 후 ‘유효한 거래’들만 모아 요약본을 만들어 영구 저장함.
  • 이를 통해 블록체인 데이터가 쓰레기 데이터로 오염되는 것을 방지함.
This post is licensed under CC BY 4.0 by the author.