[INBEX(인벡스) BLOCKBUSTERS][서울대 Decipher : 김재윤] 코스모스 스타일의 인터체인 기술

in #kr5 years ago (edited)

블록체인의 확장성 문제를 해결하는 방법의 하나로 체인 간 통신을 기반으로 한 인터체인(interchain) 기술이 있다. 앞선 글에서 네트워크의 수평적 확장이 가장 활발히 연구되고 있는 부분이라고 하였다. 인터체인 기술은 네트워크의 수평적 확장이라는 말에 가장 적합한 기술이며, 코스모스(Cosmos)라는 프로젝트가 오래전부터 활발히 연구 개발해오던 분야이다. 최근에는 많은 블록체인 프로젝트들이 코스모스 프로젝트를 따라 한 코스모스 스타일의 인터체인 기술을 연구 중이기 때문에 코스모스가 어떻게 인터체인을 구성하는지 알아볼 필요가 있다.


머클 트리를 이용한 트랜잭션의 증명

1) 머클 트리(Merkle tree)[1]

블록체인에 트랜잭션을 담을 때 보통 머클 트리라는 자료 구조를 사용한다. 머클 트리는 해시 함수(hash function)[2]를 이용하는데, 해시 함수란 임의의 길이의 데이터를 규칙성이 없는 고정 길이의 데이터로 바꿔주는 역할을 한다.

해시 함수의 특징은 입력값(input)으로부터 출력값(output)을 도출해내기는 쉬우나, 역연산이 밝혀지지 않았으므로 출력값으로부터 입력값을 알아내기는 힘들다는 점이다. 게다가 입력값의 범위(domain)가 출력값의 범위보다 크므로 하나의 출력값은 여러 개의 입력값을 가질 수 있어서 원래 정보를 알아내기가 더 힘들어진다.

머클 트리는 해시 함수를 반복적으로 사용해서 트리를 만들어 낸다. 그림 1을 보면, 가장 아래에 원본 데이터들이 있고 이를 리프 노드(leaf node)라고 부른다. 리프 노드의 데이터를 해시화한 값들이 그 위에 존재하고, 이 값들을 이어 붙여서(concatenate) 다시 해시값을 얻어내는 작업을 하나의 노드만 남을 때까지 반복해서 올라간다. 그렇게 해서 최종적으로 얻어낸 값을 머클 루트(Merkle root) 값이라고 한다.



그림 1. 머클 트리(Merkle tree)


2) 머클 증명(Merkle proof)

독자들은 왜 이렇게 복잡한 자료 구조를 만들어내는지 궁금할 것이다. 비트코인 논문[3]에서 사토시 나카모토가 이 머클 트리를 이용해서 SPV(Simplified Payment Verification) client를 만드는 방법을 제시했었는데, 방법은 다음과 같다.

그림 2에서 어떤 사용자가 머클 루트 값을 아는 상태에서 머클 트리의 모든 데이터를 갖고 있지 않아도 블록에 리프 노드 중에 8이라는 데이터가 존재함을 증명하고 싶다고 하자. 이 증명에 사용되는 데이터가 머클 증명이다. 그 사용자는 머클 트리를 갖고 있지 않으므로 머클 트리를 가지고 있는 다른 사용자에게 머클 증명에 필요한 데이터를 요청한다. 그러면 다른 사용자는 8이라는 데이터를 증명할 수 있는 머클 증명을 사용자에게 전송하는데, 이때 머클 증명에는 그림 2에서 보이는 빨간색 노드들에 해당하는 값을 포함한다. 사용자가 8이라는 데이터를 알고 있으므로 이를 해시화 하고, 그 값과 다음 빨간 노드 값을 이어 붙여서 다시 해시 함수에 집어넣는다. 이 과정을 반복하면 결과적으로 머클 루트 값을 도출하게 되고, 이 값이 사용자 본인이 알고 있는 머클 루트 값과 같은지 비교함으로써 8이라는 데이터의 유효성을 증명할 수 있다.

머클 증명에 필요한 데이터 일부를 조작하여 같은 머클 루트 값이 도출되도록 하는 것은 불가능에 가까우므로 머클 증명을 제공하는 사용자는 데이터를 조작하지 않았을 것으로 생각할 수 있다. 이렇게 복잡한 과정을 거치는 이유는 머클 증명을 제공하는 다른 사용자를 신뢰할 수 없기 때문이다. 모든 데이터를 갖고 있지 않아도 머클 트리의 높이만큼의 데이터만 가지고 있으면 데이터의 유효성을 보장할 수 있다는 것이 머클 트리의 장점이다.



그림 2. 머클 증명(Merkle proof)


머클 증명을 이용한 인터체인 기술

이러한 머클 증명을 이용해서 체인 간 커뮤니케이션을 할 수 있다. 즉, 어떤 블록체인에서 머클 루트 값을 포함한 블록 헤더 값을 다른 블록체인에 기록하고, 체인 간 커뮤니케이션을 발생시키는 트랜잭션에 대한 머클 증명을 다른 블록체인으로 전송하여 검증함으로써 해당 트랜잭션의 유효성을 보장할 수 있고 원하는 동작을 수행시키는 것이다. 앞서 머클 증명이 데이터를 제공하는 주체를 믿을 수 없기 때문에 필요하다고 하였다. 같은 의미로 어떤 블록체인이 다른 블록체인에서 발생한 정보를 믿을 수 없기 때문에 머클 증명이라는 데이터를 사용하는 것이다.

1) 중개자(Relayer)

그렇다면 두 체인 간 블록 헤더 정보와 머클 증명 데이터를 전송해 줄 주체가 필요하다. 이러한 주체를 중개자(Relayer)라고 부른다. 중개자 역시 믿을 수 없으므로 여러 명의 중개자를 두어 상호 견제를 통해 올바른 데이터가 중개되게 하는 것이 중개자를 통한 인터체인 기술의 핵심이다. 하지만 중개자를 이용한 인터체인 기술은 1to1로만 동작하므로, n개의 블록체인을 연결하려면 nC2만큼의 중개자 집합이 필요하다. 블록체인이 늘어날수록 중개인의 수가 기하급수적으로 증가하므로 현실적이지 않다.

2) 코스모스 허브(Cosmos Hub)

코스모스가 택한 방법은 중개를 위한 새로운 블록체인을 만들어내는 것이다[4]. 이를 코스모스 허브라고 부르고 블록체인 간 데이터를 전송할 때 이 허브를 통하게 함으로써 중개자 집합의 수를 nC2에서 n으로 줄였다. 이렇게 인터체인을 구성하면 빠르고 편리해지지만, 코스모스 허브에 문제가 발생했을 때 다른 블록체인들에 큰 혼란을 가져올 수 있으므로 코스모스 허브의 안정성(Stability)과 보안성(Security)을 보장하는 것이 중요하다.

많은 블록체인이 코스모스 스타일의 인터체인 기술을 차용하여 확장성 문제를 해결하려는 것으로 보인다. 하지만 인터체인 기술이 현실화하기 위해서는 넘어야 할 허들이 많다. 특히 거래의 취소가 발생했을 때 이를 아토믹(atomic)하게, 즉 서로 일관성이 깨지지 않도록 처리하는 문제를 해결하기 어려워서 많은 문제가 파생되고 있다. 이러한 문제들을 깔끔하고 합리적으로 해결할 수 있는 솔루션이 나와서 얼른 블록체인 기술을 실생활에서 쓸 수 있는 날을 기대해 본다.


[1] https://ko.wikipedia.org/wiki/해시_트리 (Feb, 2019).

[2] https://ko.wikipedia.org/wiki/해시_함수 (Feb, 2019). 

[3] https://bitcoin.org/bitcoin.pdf (Feb, 2019). 

[4] https://cosmos.network (Feb, 2019).



INBEX 바로가기

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.039
BTC 69796.92
ETH 3521.66
USDT 1.00
SBD 4.70