블록체인 상호운용성과 사이드체인, 릴레이

Luke Park
CURG
Published in
10 min readAug 29, 2020

블록체인 상호운용성(interoperability)은 여러 체인 간 자산의 이동이 가능하도록 하는 속성이다. 보다 일반화하자면 체인 간 임의의 데이터 이동이나, 상대 체인의 이벤트 발생 감지 등이 가능하도록 하는 속성이다.

상호운용성을 갖춘 블록체인은 플랫폼의 제약을 받지 않는다. 가령 비트코인에서는 풍부한 기능을 갖춘 스마트 컨트랙트를 구동할 수 없지만, 만일 상호운용하다면 비트코인에서 이더리움상의 스마트 컨트랙트를 호출할 수가 있다.

이외에도 상호운용성은 다양하게 활용 가능하다. 대표적으로 다음과 같은 용처들이 있다:

  • 자산 이동: 체인 A에서 체인 B로의 자산 이동이 가능하다. 또는 체인 B의 자산에 대한 담보로써 체인 A의 자산을 묶어둘 수 있다.
  • 스마트 컨트랙트의 호출: 스마트 컨트랙트 기능이 없는 체인 A에서 다른 체인 B상의 컨트랙트를 호출할 수 있다.
  • 보안성 위탁: 체인 A의 보안성이 부족한 상황, 가령 작업증명(PoW) 기반 블록체인이지만 네트워크 참여자 수가 적은 경우에, 자산을 엮음으로써 (상대적으로) 안전한 체인 B의 보안성에 의존할 수 있다. 그러나 체인 A의 보안 위협이 체인 B의 자산 가치에 영향을 무조건 주는 것은 아니다. 프로토콜에 따라 줄 수도 있고(가령, 샤딩) 아닐 수도 있다.
  • 확장성 증대: 상호운용이 가능한 여러 체인에서 병렬적으로 트랜잭션을 처리함으로써 블록체인 확장성 증대를 꾀할 수 있다.

상호운용성을 획득하기 위한 기술이 여럿 연구된 바 있는데, 비탈릭 부테린은 2016년 R3 보고서를 통해 블록체인 상호운용성을 세 가지 기술적 관점으로 구분했다[1]:

  • 중앙화된 혹은 멀티시그(multisig) 공증인 스킴: 관계자 또는 관계자 모임의 합의를 통해, 체인 A에서 어떠한 이벤트가 발생했을 때 체인 B에서의 특정 행동이 진행되도록 한다.
  • 사이드체인(Sidechain)/릴레이(Relay): 상대방 블록체인의 이벤트나 상태를 읽고 검증할 수 있는 블록체인의 시스템이다.
  • 해시-락킹(Hash-locking): 해시락이란 특정 데이터(해시의 역상)가 공개되기까지 자금의 사용을 막는 기술이다. 해시락을 이용해 크로스-체인 트레이딩인 아토믹 스왑(atomic swap) 등이 가능하다.

본 글에서는 특히 사이드체인/릴레이를 통한 확장성 증대 측면에 집중하여, 이전 글에서 언급한 허브 앤 스포크(hub-and-spoke) 구조에서의 상호운용성을 살펴볼 것이다.

사이드체인

블록스트림(Blockstream)에서는 사이드체인을 “다른 블록체인으로부터의 데이터를 검증하는 블록체인”으로 정의했다[2]. 그러나 이러한 정의는 너무 광활하다. 본 정의에는 다른 체인의 검증을 수행함으로써 이어지는 행동과 목적이 없다.

일반적으로 사이드체인이라 하면 ‘페깅된(pegged) 사이드체인’을 의미한다. 이는 (주로) 두 체인의 크로스-체인 자산 이동성을 위해 다른 블록체인의 데이터를 읽는 기능성에 해당한다. 페깅을 위해서는 두 체인이 서로가 서로의 사이드체인이 되거나 어떠한 형태로서의 신뢰가 존재해야 한다. 특별한 언급이 없다면 이하 등장하는 사이드체인은 모두 페깅된 사이드체인을 칭한다.

그림 1. 메인 체인과 사이드체인의 관계

“체인 B가 체인 A의 사이드체인이다”라는 말은 얼핏 보면 복종 관계를 암시하지만, 실제로는 전혀 그렇지 않다. 사이드체인은 고유의 합의 알고리즘을 가지는 독립적인 체인이므로 체인 A와 체인 B는 실제로는 평등한 관계에 있다. 다만 데이터의 흐름에 따른 메인 체인(부모 체인, 그림 1에서의 체인 A)과 사이드체인(자식 체인, 그림 1에서의 체인 B)이 존재할 뿐이다. 사이드체인은 메인 체인의 데이터를 읽고 검증할 수 있다.

릴레이

공증인 스킴

메인 체인에서 사이드체인의 데이터를 다루기 위해서는 어떤 방법을 통해서든 사이드체인을 메인 체인에 온체인 데이터화해야 한다. 가장 쉬운 방법은 공증인이라는 신뢰할 수 있는 중간자를 통하는 것이다. 이 공증인은 체인 B에서 일어난 일을 체인 A에 전달하고 이후 작업을 시작한다.

완체인(Wanchain), 코스모스(Cosmos), 폴카닷(Polkadot) 등 여러 이종 다중체인(heterogeneous multi-chain) 프레임워크에서 공증인 스킴을 채택하고 있다[3]. 그러나 이러한 공증인 스킴은 당연하게도 탈중앙화 정도의 훼손을 야기한다.

릴레이

반면 릴레이는 별도의 신뢰 주체 없이 체인 스스로가 다른 체인의 데이터/이벤트를 검증하도록 하는 기술이다. 릴레이를 위해서는 상호작용에 앞서 블록 헤더를 전달해야 한다:

  • 블록 헤더의 전달 (그림 2)
  1. 사이드체인인 체인 B에는 메인체인인 체인 A의 블록 헤더를 검증할 수 있는 스마트 컨트랙트 C가 있다. 릴레이어(Relayer)가 체인 A의 블록 헤더를 C로 전달한다.
  2. C가 체인 A의 블록 헤더의 유효성을 검증해, 유효할 경우 저장한다.
  3. 체인 A의 최신 블록에 대해 과정 1~2를 반복한다.
그림 2. 블록 헤더의 전달

이는 체인 B의 컨트랙트를 통해 체인 A의 읽기-전용(read-only) 라이트 클라이언트를 구동하는 것으로 간주할 수 있다. 혹은 체인 A의 헤더 체인을 구동하는 셈이다. 다음 그림 3을 참고하자.

그림 3. 헤더 체인 개념으로 이해할 수 있다.

이제 체인 B에 체인 A에 대한 데이터가 기록되어 있으므로, 본격적으로 상호작용할 수 있다:

  • 트랜잭션의 검증 (그림 4)
  1. 체인 A상에서 체인 B와 상호작용하기 위한 트랜잭션 T를 발생(가령, 토큰의 잠금)시킨다. 이 트랜잭션이 담긴 블록의 블록 헤더를 H_A라 하자.
  2. 상호작용의 주체는 목적 트랜잭션 T가 H_A에 포함되었음을 체인 B상에서 입증하고자 한다. 이를 위해 T와 T의 머클 증명 P_T을 제출한다.
  3. 체인 B상의 스마트 컨트랙트를 통해 P_T가 올바름을 검증한다.
  4. H_A가 스마트 컨트랙트 C에 포함되어 있고 머클 증명 P_T가 유효하면, 그리고 T가 목적에 맞으면(가령, 토큰의 잠금) 상호작용의 이후 절차(가령, 토큰의 발행)를 수행한다.
그림 4. 트랜잭션의 검증

즉, 저장된 헤더 체인과 머클 증명을 통한 SPV(Simple Payment Verification)를 스마트 컨트랙트에서 수행하는 셈이다. 이로써 상대 체인에서 발생된 목적 트랜잭션의 존재 혹은 부재를 검증할 수 있다[4].

브릿지

릴레이가 타 블록체인의 읽기와 검증을 수행하는 기술 및 시스템이라면, 브릿지(bridge)는 서로 다른 블록체인 간 상호작용을 수행하는 주체 혹은 시스템이다. 즉, 브릿지가 릴레이 기술을 활용하는 포괄적 개념이다.

사이드체인/릴레이 사례

BTCRelay

BTCRelay는 이더리움 스마트 컨트랙트에서 비트코인 체인을 읽을 수 있도록 한 구현체이다. 물론, 이러한 종류의 상호운용성은 단방향(one-way)이다. 비트코인의 스크립트 언어는 충분히 복잡한 기능을 담을 수 없기 때문에 이더리움 체인을 읽을 수 없다.

PeaceRelay

PeaceRelay는 두 이더리움 기반 블록체인을 연결하는 기술이다. 가령 PeaceRelay를 통해 이더리움과 이더리움 클래식을 연결할 수 있다. 양 체인 모두 스마트 컨트랙트의 구동이 가능하므로 양방향 페깅이 가능하다.

워털루(Waterloo)

워털루는 이더리움과 이오스 간의 릴레이를 위한 프로젝트이다. 양방향 상호운용을 위해 워털루는 두 릴레이 솔루션을 엮었다, 즉, 이더리움에서 이오스로의 릴레이와, 이오스에서 이더리움으로의 릴레이라는 두 독립적인 솔루션으로 구성된다. 두 솔루션 모두 스마트 컨트랙트를 통해 상대 체인의 헤더 검증을 수행한다.

도지더리움(Dogethereum)

도지더리움은 도지코인과 이더리움 간 양방향 페그를 가능하게 했다. 우선 그 구조를 간단하게 생각해보자. 도지(Doge)에서 이더(ETH)로의 이동은 이더리움 스마트 컨트랙트를 사용하면 된다. 그러나 도지코인에는 스마트 컨트랙트가 없으므로, 이더에서 도지로의 이동은 다른 방법을 생각해야 한다.

도지더리움에서는 담보를 활용해 양방향 페그가 가능하게 했다. 우선 도지에서 이더로의 이동을 생각해보자. 사용자가 이더리움상의 도지 토큰을 얻고 싶다면 ‘브릿지 운영자’에게 도지를 보낸다. 브릿지 운영자는 도지를 받으면 잠금 상태로 보유한다. 이후 스마트 컨트랙트가 ERC20 도지 토큰을 발생해 배부한다.

다음은 이더에서 도지로의 이동이다. 사용자가 도지 토큰을 소각한다면, 브릿지 운영자는 상응하는 양의 도지를 사용자에게 돌려주도록 요구받는다.

도지더리움 플랫폼에서는 누구나 브릿지 운영자가 될 수 있다. 브릿지 운영자는 담보(보증금)로써 이더를 스마트 컨트랙트에 묶어두는데, 만일 악의적 행동을 했을 경우 타인의 신고를 통해 보증금을 잃게 된다.

사이드체인/릴레이의 향후 연구

현재로서 사이드체인/릴레이 기술에는 몇 가지 한계점이 존재한다:

  • 데이터 가용성 문제: 릴레이에는 상대 블록 헤더 정보를 주기적으로 업로드하는 주체인 릴레이어가 존재한다. 데이터 가용성을 온전히 릴레이어에게 의존한다는 점이 보안 취약점으로 작용할 수 있다.
  • 분기(Fork)의 발생: 릴레이한 메인 체인의 블록 헤더가 당장에는 유효할지라도, 분기가 일어나 결과적으로 유효하지 않은 블록이 될 수 있다.
  • 릴레이의 비동기성: 하나 혹은 양 체인 모두 완결(finalize)이 느린 경우, 한 체인이 다른 체인에서 검증되기까지 오랜 시간이 소요된다. 이는 크로스-체인 연산의 속도를 제한한다.
  • 합의 알고리즘의 제한: 메인 체인은 작업증명 기반 블록체인일 필요가 있다. 지분증명(PoS) 등 다른 종류의 합의 알고리즘에 대한 유효성 검증을 계산적으로, 효율적으로 스마트 컨트랙트에서 수행할 방법이 아직 없기 때문이다. 또한 메모리 I/O 병목을 이용하는 블록체인은 검증에 막대한 저장 공간을 요구하므로 스마트 컨트랙트에서 처리할 수가 없다. 이 경우 검증을 우회할 여러 기법들이 추가 요구된다.
  • 프라이버시 블록체인: 기밀 트랜잭션이나 스텔스 주소를 사용하는 프라이버시 블록체인의 트랜잭션을 외부의 다른 블록체인에서 검증할 방법에 대한 고찰이 필요하다.
  • 컨트랙트 호출 비용: 주기적으로 블록 헤더를 등록하고 검증하기 위한 비용과 머클 증명을 검증하기 위한 비용 등이 과다하게 청구될 수 있다.

이를 극복하기 위한 여러 연구들이 진행되어 왔으며, 현재에도 진행 중에 있다. 이는 독자들의 몪으로 남겨두겠다. “Retrofitting a two-way peg between blockchains”의 “Open problems” 절에 잘 설명되어 있으니 궁금한 독자들은 참고하길 바란다[5].

저자

박상현 (Luke Park)

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

참고문헌

[1] Buterin, Vitalik. “Chain interoperability.” R3 Research Paper (2016).

[2] http://blockstream.com/sidechains.pdf

[3] Wood Gavin. Polkadot: Vision for a heterogeneous multi-chain framework. 2016.

[4] 박상현, and 문수묵. “ASIC 저항 알고리즘에 기반한 블록체인의 릴레이 기술 현황 조사.” 정보과학회 컴퓨팅의 실제 논문지26.7 (2020): 338–343.

[5] Teutsch, Jason, Michael Straka, and Dan Boneh. “Retrofitting a two-way peg between blockchains.” arXiv preprint arXiv:1908.03999 (2019).

--

--