레이어로 바라본 블록체인 확장성 솔루션 개요

Luke Park
CURG
Published in
13 min readJul 18, 2020

이전 글에서 블록체인 트릴레마를 살펴보면서 ‘확장성’과 ‘확장성 문제’에 대해 언급했었다. 상기해보자. 확장성이란 블록체인이 많은 양의 트랜잭션을 처리할 수 있는 능력이며, 초당 트랜잭션 처리량인 TPS로 수치화할 수 있다. 확장성 문제란 주로 보안성 및 탈중앙화 정도를 훼손하지 않으면서 확장성을 증대시키기 어려움을 의미한다.

이번 글에서는 블록체인 확장성을 증대하기 위한 여러 방법을 소개한다. 앞으로 여러 번에 걸쳐서 각 솔루션을 설명할 것이며, 이들을 구조화하고 비교함으로써 확장성 문제를 해결할 실마리를 찾아볼 것이다.

레이어로 바라본 확장성 솔루션

그림 1. 블록체인 계층과 확장성 솔루션. “SoK: Off The Chain Transactions” 논문에 등장하는 그림을 참고하여 확장 및 재구성함. [1]

구조화를 위해 블록체인을 ‘하드웨어’, ‘네트워크’, ‘블록체인’, ‘오프체인’의 네 계층으로 구분했다. 계층 형태로 구조화된 여타 시스템들처럼, 상위 계층은 하위 계층이 제공하는 서비스를 추상적으로­­ — 상세한 동작 원리를 알 필요 없이 — 이용한다.

하드웨어 계층을 제외한 나머지 논리적 계층들은 순서대로 레이어-0, 레이어-1, 레이어-2라는 별칭이 붙어있다. 가령 레이어-2 확장성 솔루션이란 오프체인 계층에 속해 있는 확장성 솔루션을 지칭한다.

그림 1의 아래 계층에서부터 위 계층에 이르는 상향식(bottom-up) 접근을 통해 계층별 확장성 솔루션을 살펴보자.

하드웨어 계층

그림 2. 하드웨어 계층

하드웨어

하드웨어(hardware) 계층은 가장 낮은 곳에 위치한 계층이자 다른 상위 계층들이 구동되기 위한 기반이다. 상위의 논리적인 계층들에는 레이어 번호가 할당돼 있지만, 하드웨어 계층은 물리적인 영역이므로 별도의 번호를 가지지 않는다.

신뢰 실행 환경

만일 하드웨어적으로 보안을 보장한다면, 즉 데이터와 코드의 무결성 및 기밀성을 보장한다면 신뢰를 제공할 수가 있다. 궁극적으로, 신뢰할 수 있는 하드웨어로 구성된 네트워크에서는 상위 계층 프로토콜들의 효율성이 크게 오를 것이다.

그림 3. 인텔 SGX의 도식

이는 인텔 SGX(Intel Software Guard Extensions)와 같은 신뢰 실행 환경(Trusted Execution Environment, TEE)을 사용함으로써 달성할 수 있다. SGX는 민감하고 보안이 중요한 응용프로그램을 고립된 신뢰 영역인 엔클레이브(enclave)에서 구동해, 운영체제를 비롯한 높은 권한을 가진 프로그램의 임의 조작을 방지한다.

TEE 하에서는 본래 블록체인 프로토콜이 해결해야 할 신뢰 가정을 하드웨어에게 위임할 수 있다. 덕분에 높은 확장성을 가지는 블록체인을 설계할 수가 있다. 관련해서는 CURG에서 다뤘던 이전 글을 참고해보자.

네트워크 계층

그림 4. 네트워크 계층

네트워크는 가장 아래에 위치한 논리적 계층으로, 레이어-0이라고도 부른다. 네트워크 계층은 확장성, 보안, 프라이버시 측면에서 매우 중요한 역할을 담당한다. 효율적인 레이어-0는 높은 트랜잭션 처리량과 회복력을 보장하므로 상위 계층들의 구동을 잘 보조할 수 있다.

공용 네트워크

일반적으로 블록체인에서의 네트워크는 노드 간 비동기적으로 정보를 교환하기 위한 공용(public, 공개) P2P 네트워크이다.

사설 네트워크

블록체인 스택(stack)에서는 효율을 위해 사설(private) 네트워크를 활용하기도 한다. 이전 글에서 살펴봤듯이, 블록체인에 트랜잭션을 쓰는(write) 채굴자들은 빠르고 효율적인 채굴을 위해 FIBRE와 같은 전용의 사설 채굴 네트워크`를 사용한다.

믹스넷

그림 5. 믹스넷의 도식. 메시지는 일련의 공개키로 암호화돼 있고, 각 믹스 노드(프록시 서버)는 개인키를 이용해 단계별 암호를 복호화한다. 이때, 노드는 메시지 순서를 섞어 다음 노드로 전송한다.

믹스넷(Mix network)은 여러 송신자의 메시지를 섞어 무작위 순서로 전송하는 프록시 서버(server)들의 체인(chain)을 사용해 통신을 추적하기 어렵게 만든 구조이다. 요청을 보내는 클라이언트와 자원을 공유하는 서버 사이의 연결(link)을 깸으로써 도청자가 종단 간(end-to-end, 엔드-투-엔드) 통신을 추적하기 어렵게 한다.

프록시 서버란 클라이언트가 서버로부터 자원을 찾는 요청에서 중계자 역할을 수행하는 서버 응용프로그램 또는 장비를 의미한다. [2]

믹스넷을 사용하면 상위 레이어들의 보안성을 근본적으로 향상시킬 수 있다.

믹스넷의 대표적인 응용 및 구현체로는 토르(Tor)가 있다.

블록체인 계층

그림 6. 블록체인 계층

블록체인

블록체인 계층은 레이어-1이라고도 부른다. 간단히 복습해보자. 블록은 네트워크 참여자들이 전파한 트랜잭션들의 축적이며, 이들의 체인을 통해 확장만-가능한(append-only) 구조를 형성한다. 각 트랜잭션은 블록체인의 상태(state) 업데이트를 내포한다. 트랜잭션을 통해 디지털 자산을 교환하거나 응용프로그램(스마트 컨트랙트)을 실행할 수 있다. 블록체인의 무결성은 참여자들 간 합의 알고리즘으로부터 보장되는데, 예를 들어 연산에 의존하는 작업 증명 등이 연구되고 있다.

블록체인은 참여 제한 여부에 따라 무허가형(permissionless) 또는 허가형(permissioned)으로 분류된다. 본 장의 레이어-1에서는 비구금형(non-custodial) 속성의 무허가형 블록체인만을 다룬다. 그러나 레이어-2에서는 허가형 블록체인 역시 고려된다.

허브 앤 스포크

그림 7. 허브 앤 스포크 구조의 도식

허브 앤 스포크(Hub-and-spoke) 구조는 ‘중심과 바큇살 구조’로 직역할 수 있다. 문자 그대로 중심이 되는 메인 체인(main chain)과 주변의 자식 체인(child chain) 그리고 메인 체인과 자식 체인 간 연결인 바큇살(spoke)로 형성된 시스템을 칭한다.

메인 체인은 시스템의 합의를 책임진다. 자식 체인은 사용자 레벨에서의 트랜잭션을 처리한다. 자식 체인의 트랜잭션들에 대한 요약(블록의 해시 등)은 메인 체인에 주기적으로 등록된다. [3]

허브 앤 스포크 구조에 기반한 블록체인 확장성 솔루션은 매우 많다. 지금은 레이어-1을 살펴보고 있으니, 레이어-1에 해당하는 솔루션을 살펴보자.

  • 사이드체인(Sidechain): 사이드체인은 고유의 합의 알고리즘을 가지는 독립적인 자식 체인이다. 비록 트랜잭션을 분담해 처리할 수 있지만, 메인 체인과 사이드체인들 각각은 아예 별도의 체인이므로 레이어-2 솔루션으로 분류되지 않는다. 사이드체인과 메인 체인의 소통은 릴레이(relay)를 통해 구현된다.
  • 샤딩(Sharding): 다음 용어들은 이더리움 2.0을 기준으로 한다. 샤딩 시스템에서 비콘 체인(beacon chain)은 합의 참여자인 검증자들(validators)을 저장하고 관리하는 메인 체인이다. 샤드 체인(shard chain)은 샤딩된 사용자의 계정 및 트랜잭션을 저장하고 처리하는 자식 체인이다. 샤딩은 비콘 체인과 샤드 체인 간 타당성을 분리해 생각할 수 없는 긴밀한 결합(tight-coupling)성을 요구하므로 레이어-1 솔루션에 해당한다.

기능성 탈출 속도

블록체인계에서는 “최대한 단순해야 한다” 혹은 “단순함이 최고다” 등의 철학을 흔히 볼 수 있다. 복잡성은 더 많은 오류 발생 가능성과 공격 취약점을 내포하기 때문에 문제가 된다. 블록체인의 오류를 수정하려면 거버넌스를 통해 네트워크 구성원의 동의를 얻어 약속된 시간에 하드포크해야 한다는 어려움이 존재한다. 또한, 공격당할 시 재정을 비롯한 큰 피해를 야기할 수 있다.

따라서 레이어-1은 안정성과 유지에 초점을 맞추고, 오직 긴급 상황에만 큰 변화를 반영하는 것이 좋다. 가령 양자 컴퓨터의 등장으로부터 기반 프로토콜의 암호학적 요소가 붕괴된다면, 레이어-1을 수정해야 한다. 반면 복잡한 기능은 레이어-2로 구현하는 것이 합리적이다. 더불어 레이어-2는 쉽게 도입 및 철회할 수 있으므로 실험적이고 혁신적인 도전도 가능하다.

이러한 종류의 레이어 분리는 매우 좋은 아이디어이며, 장기적으로는 지향해야 할 방향이다. 그러나 이 아이디어는 중요한 점을 놓치고 있다. 바로 “레이어-1이 충분히 강력해야 원하는 레이어-2 프로토콜을 구동할 수 있다”는 점이다.

레이어-1이 충분한 수준의 역량을 확보한 상황을 기능성 탈출 속도(functionality escape velocity)의 확보라 칭한다. [4] 물리학에서 탈출 속도란 중력장을 빠져나가기 위한 최소한의 속도로 이해할 수 있는데, 마찬가지로 기능성 탈출 속도는 레이어-2를 지원하기 위한 최소한의 기능 및 성능으로 이해할 수 있다.

기능성 탈출 속도를 확보했다면 기반(레이어-1)을 수정하지 않고서 그 위에 원하는 바(레이어-2)를 모두 구현할 수 있다. 반면 기능성 탈출 속도를 확보하지 못한 경우에는 레이어-2 프로토콜을 구동하지 못하거나, 신뢰할 수 있는 제삼자(Trusted Third Party, TTP)에게 의존할 수밖에 없다. [5] TTP의 존재는 참여자 모두가 상호 불신하며 이성적(rational)이라는 레이어-1의 가정을 훼손한다.

그림 8. 탈출 속도와 기능성 탈출 속도의 개념. 기능성 탈출 속도를 구성하는 요소로는 프로그래밍 언어, 상태 저장성, 데이터 가용성이 있다.

기능성 탈출 속도는 다음의 세 요소를 충족함으로써 확보할 수 있다.

  • 프로그래밍 언어(Programming language): 레이어-1은 사용자가 작성한 스크립트(script)를 수행할 수 있어야 한다. 프로그래밍 언어는 단순한 기능만을 갖춰도 되며, 고성능일 필요가 없다. 튜링 완전(Turing completeness)할 필요도 없다. 그러나 적어도 레이어-2에서 요구하는 검증 로직(logic)을 수행할 수 있을 만큼의 연산력은 제공해야 한다.
  • 풍부한 상태 저장성(Rich statefulness): 계좌의 모든 코인을 완전히 해제(free)하지 않고서 상태를 바꿀 수 있는 능력이다. 프로그래밍에서 변수를 선언하고 할당 및 갱신할 수 있는 능력으로 쉽게 이해할 수 있다. 가령 롤업(추후에 다룰 것)에서 코인은 최신 상태 루트를 추적하는 프로그램에 의해 제어되는데, 최신 상태 루트의 갱신은 코인을 해제하는 것이 아니라 단순히 상태를 변경함으로써 수행된다. 풍부한 상태 저장성 없이는 대부분의 레이어-2 프로토콜을 구현할 수 없다.
  • 데이터 가용성(Data availability): 레이어-2에서의 활동은 어떤 식으로든 블록체인에 기록돼야 하고, 그 합의는 블록체인이 처리할 수 있고 보장할 수 있는 기록된 데이터의 양에 의존한다. 따라서 블록체인은 적정 수준 이상의 데이터 가용성을 보장할 수 있어야 한다. 또한 데이터 대기 시간도 중요한데, 블록 생성 간격이 너무 길면 레이어-2의 지연(latency) 정도 역시 높아진다.

오프체인 계층

그림 9. 오프체인 계층

오프체인 또는 레이어-2 프로토콜은 레이어-1이 적어도 다음 두 속성을 제공할 것임을 가정하고 있다.

  • 무결성: 오직 유효한 트랜잭션만 장부에 추가된다.
  • 가용성: 유효한 트랜잭션은 임계 시간을 초과하기 전, 언젠가는 장부에 추가된다.

레이어-2 프로토콜은 온체인 트랜잭션과는 달리 모든 트랜잭션을 즉각적으로 블록체인에 공시(publish)하지 않는다. 프로토콜의 무결성과 유효성은 부모 체인(parent-chain)의 합의 알고리즘에 전적으로 의존한다. 사이드체인이 고유의 합의 알고리즘을 가지기 때문에 레이어-2 솔루션으로 분류되지 않음을 상기해보자.

레이어-2 프로토콜은 크게 채널과 커밋 체인의 두 방법으로 분류된다.

더불어, 최근에 주목받는 블록체인 확장성 솔루션으로는 레이어-1에 더 많이 의존하는 준(semi) 레이어-2 프로토콜이 있다. 레이어-2 프로토콜과 준 레이어-2 프로토콜 혹은 레이어-2 프로토콜과 레이어-1 프로토콜의 하이브리드(hybrid) 프로토콜도 연구되고 있다.

채널

채널(Channel)은 스크립트나 스마트 컨트랙트를 통해 사전 설정된 규칙을 따르는 2명 또는 N명의 동등한 당사자들이 참여하는 P2P 매체이다. 본래 채널은 당사자들 간 빠른 자금 교환을 위해 제안됐다. [6] 이후 임의의 상태를 다루도록 개념이 확장됐다.

당사자 간에 직접적으로 연결된 채널이 없어도, 라우팅(routing)을 통해 여러 채널을 거쳐 상태 전이를 반영할 수 있다.

커밋 체인(허브 앤 스포크)

커밋 체인(Commit-chain)은 중앙화됐지만 신뢰할 수 없는 중간자에게 의존하는 레이어-2의 체인이다. 일반적으로 허가형 블록체인의 양상을 띤다.

대표적인 커밋 체인 구현체로는 플라즈마(Plasma)가 있다. 플라즈마는 중앙화된 주체로부터 운영되므로 별도의 합의 알고리즘이 필요치 않다. 만일 운영자가 부적절한 행동을 취하면, 참여자들은 비구금형 특성을 통해 해당 블록체인으로부터 자유로이 탈출(exit)한다. 탈출에 성공한 사용자는 검증된 상태를 가지고 안전하게 상위 체인으로 옮겨간다. 이때 상위 체인이란 레이어-1에 해당하는 메인 체인이 될 수도, 아니면 계층 구조를 가진 다른 플라즈마 체인이 될 수도 있다.

예고

본 글에서는 블록체인 확장성 솔루션을 레이어를 기준으로 가볍게 살펴봤다. 앞으로 언급된 솔루션들을 하나씩 구체적으로 소개할 예정이다. 다음 글에서는 사이드체인과 릴레이를 분석해보도록 하자.

저자

박상현 (Luke Park)

🏠 서울대학교 가상머신 및 최적화 연구실
🖥 https://github.com/lukepark327
✉️ lukepark327@gmail.com

참고문헌

[1] Gudgeon, Lewis, et al. “SoK: Off The Chain Transactions.” IACR Cryptology ePrint Archive 2019 (2019): 360.

[2] Luotonen, Ari, and Kevin Altis. “World-wide web proxies.” Computer Networks and ISDN systems 27.2 (1994): 147–154.

[3] https://vitalik.ca/general/2019/06/12/plasma_vs_sharding.html

[4] https://vitalik.ca/general/2019/12/26/mvb.html

[5] Zamyatin, Alexei, et al. Sok: Communication across distributed ledgers. IACR Cryptology ePrint Archive, 2019: 1128, 2019.

[6] M. Hearn, “Micro-payment channels implementation now in bitcoinj,” 2013, available at: https://bitcointalk.org/index.php?topic=244656.0.

--

--