COSMOS OVERVIEW :: 코스모스로의 초대(An Invitation to COSMOS)
들어가며…
코스모스, 허브, 존,텐더민트, 아톰…
코스모스를 사전에 접해보셨던 분들이라면 위 단어들이 꽤나 귀에 익으실 것입니다. 하지만 익숙하다는 것이 항상 이를 명료하게 이해하고 있다는 것과 같지는 않습니다. 이번 연재가 코스모스에 관심은 많았지만 이해하는데 어려움이 있으셨던 분들, 혹은 이제 막 관심을 가지시려는 분들께 코스모스에 대해 쉽고 명료하게 이해 하실 수 있는 기회가 되었으면 좋겠습니다.
코스모스의 등장배경
코스모스를 본격적으로 탐험하기 전에 먼저 코스모스 프로젝트가 왜 시작되었는지 그 배경에 대해 알아보겠습니다.
현재 블록체인의 최대 난제는 바로 확장성입니다. 비트코인에서 시작된 확장성 문제는 어플리케이션 플랫폼으로서의 블록체인인 이더리움에서 더욱 심각한 문제가 되고 있습니다. 특히 지난해 말 크립토키티 사태로 인해 모두가 그 문제의 심각성을 충분히 짐작할 수 있었죠.
이를 해결하기 위해 이더리움 재단에서도 샤딩, 플라즈마 등 확장성 솔루션을 진행하고 있고, 이오스(EOS), 카르다노(ADA) 등 차세대 블록체인 플랫폼을 기치로 내건 프로젝트들 또한 현재 블록체인의 문제점인 확장성을 해결하겠다는 것을 강하게 표방하고 있습니다.
코스모스 또한 이러한 시대적 배경을 바탕으로 시작된 프로젝트입니다. 코스모스는 독특하게도 다른 블록체인 플랫폼과는 조금 다른 방향의 확장성 솔루션을 제안하고 있습니다.
1. 코스모스란?
코스모스를 한 마디로 표현하자면, 서로 다른 종류의 블록체인을 연결할 수 있게 해주는 인터체인 플랫폼입니다.
혹시 사이드체인이라는 말을 들어보셨나요? 사이드체인 또한 인터체인에 포함되는 개념이라 할 수 있습니다. 메인 블록체인 옆에(사이드 Side) 또 다른 체인을 두고, 두 체인을 연결시켜 확장성을 높이겠다는 것이 바로 사이드체인입니다.
인터체인이란 여기서 한 발 더 나아가 서로 다른 블록체인간의 연결 또한 가능하게 하는 것입니다. 쉬운 예를 들자면, 비트코인과 이더리움을 서로 연결하겠다는겁니다. 비트코인과 이더리움은 서로 다른 구조이지만, 만약 이 두개의 체인이 연결 될 수 있다면, 단순히 확장성이 증가하는 것 뿐만 아니라 쉽게 상상할 수 조차 없는 막대한 파급효과가 일어날 것입니다.
수평적 확장(Horizontal Scaling)
코스모스가 확장성을 해결하기 위해 내세우고 있는 것은 바로 이런 인터체인을 바탕으로 한 수평적 확장이라고 할 수 있습니다. 그렇다면 수평적 확장은 무엇일까요?
먼저 수직적 확장이 무엇인지 이해하시면 수평적 확장 또한 쉽게 이해되실 것이라 생각됩니다. 수직적 확장이란 단일 블록체인의 확장성을 증가시키는 것입니다. 쉬운 예를 들면, 이더리움의 블록생성주기가 짧아지고, 각 블록에 담을 수 있는 트랜잭션의 용량이 증가하게 된다면 이는 이더리움이 수직적으로 확장되었다고 할 수 있습니다. (물론 블록의 용량이 커지는게 무조건 좋은 것은 아닙니다)
반대로 이더리움의 플라즈마가 성공적으로 도입되어 여러 플라즈마 체인이 이더리움 루트체인 아래에 연결된다면 이는 수평적 확장이라 할 수 있습니다. 아래 그림을 보시면 보다 직관적으로 이해가 되시리라 생각됩니다.
2. 코스모스 전체 구조
허브와 존(Hub and Zone)
코스모스 생태계는 허브와 존으로 이루어져 있습니다. 서로 이름이 다르지만 둘 모두 결국 하나의 독립적인 블록체인이라는 점은 같습니다.
그렇다면 허브와 존은 구체적으로 어떤 차이가 있는지 살펴보겠습니다.
허브(Hub)
허브는 이름에서 알 수 있듯이 여러가지 존(Zone)들간의 소통을 중간에서 도와주는 블록체인입니다.
보통 허브라는 말을 언제 쓰나요?
‘정부는 인천국제공항을 항공물류 허브로 육성하겠다는 방침을 밝혔다’
라고 했을 때 허브의 의미는 무엇이죠?
잘 모르겠지만, ‘여러 항공물류의 흐름의 중심이 되어 서로를 이어주겠다’ 정도의 의미가 될 것 같습니다. 맞습니다. 코스모스의 허브 또한 여러가지 다른 블록체인의 중심에서 각각을 이어주는 역할을 하는 블록체인입니다.
코스모스 생태계에서 허브는 이 역할을 IBC라는 일종의 프로토콜을 통해 수행합니다. 이를 위해 허브는 토큰 총액의 전역적 불변성(global invariance)를 보장합니다. 각 존의 토큰들은 ‘코인 패킷(coin packet)’이라 부르는 특수 IBC 패킷 형태로 존들 간 교환이 가능한데요, 허브는 이러한 토큰 교환 과정에서 토큰 총액이 변경되지 않도록(이중 지불이 발생하지 않도록)합니다. 즉 코스모스 허브는 코스모스 생태계를 위한 일종의 중앙 원장 역할을 한다고 볼 수 있습니다. (IBC는 코스모스의 알파이자 오메가라고 할 수 있는데요, 여기서는 가볍게 이해하고 보다 자세한 내용은 잠시 후에 설명드리겠습니다)
코스모스 팀에서는 ‘첫 번째 존으로 코스모스 허브를 런칭하겠다’고 했는데요, 무언가 이상하지 않으신가요?
존(Zone)
존(Zone)이란 코스모스에 존재하는 독립된 블록체인입니다. 각 존은 자체적인 컨센서스와 거버넌스, 토큰 이코노미를 가집니다. 블록체인의 구체적인 구조 또한 고유한 형태를 가질 수 있습니다. 존은 IBC(Inter Blockchain Communication)을 통해 허브와 통신이 가능하며, 허브를 경유하여 다른 존과 통신이 가능합니다. (여기서 통신은 토큰의 교환을 의미합니다)
쉽게 말해 존은 각 블록체인을 일컫는 말입니다. 즉 코스모스위에 존재하는 모든 블록체인은 하나의 존인것이죠. ‘첫번째 존으로서의 코스모스 허브’라는 말의 의미가 이제 이해가 되시나요?
존 중에 조금 특별한 친구가 있는데요, 바로 브릿지 존(Bridge Zone; 구 Peg Zone)이라는 친구입니다. 브릿지 존은 코스모스 네트워크 바깥의 블록체인(e.g 비트코인, 이더리움)과의 연결 역할을 담당합니다.
코스모스는 인터체인 플랫폼이라고 했었죠? 바로 이 브릿지 존이 궁극적으로 인터체인의 비전을 실현할 수 있는 막중한 역할을 담당하고 있습니다. 지금은 이 친구의 존재만 인지하는 것으로 충분합니다. 구체적으로 어떻게 그 역할을 수행하는지는 아래에서 자세히 설명드리겠습니다.
허브와 존의 관계
위 이미지는 코스모스의 구조 및 허브-존의 관계를 잘 표현해주고 있습니다. 보시면 코스모스 허브를 중심으로 IBC 를 통해 여러가지 존들과 연결되어있죠?
존들 또한 각각의 고유한 블록체인으로서 자리잡고 있습니다. 현재 코스모스 팀에서 열심히 개발하고 있는 두가지 존이 바로 코스모스 허브와 이더민트 존(Ethermint)입니다. 물론 브릿지 존(그림에서는 Peg Zone)또한 열심히 개발중입니다.
그런데 못보던 용어들이 몇가지 있네요. ABCI는 무엇이고, Tendermint Core는 또 뭘까요? 이 궁금증을 바로 해결하기 전에 먼저 코스모스의 꽃인 아톰과 검증인에 대해 잠깐 알아보고 가도록 하겠습니다.
3. 아톰(Atoms) , 검증인(Validator)
아톰(Atoms)
네 맞습니다. 여러분이 가장 관심이 많으신 그 코인! 아톰입니다.
아톰은 코스모스 허브의 지분 토큰(staking token)입니다. 아톰을 보유함으로써 1)투표(vote), 2)블록 검증(validate), 3)다른 검증인에게 위임(delegate)이 가능합니다. 또한 이더리움과 마찬가지로 거래 수수료(Transaction fee)로도 사용이 가능합니다.
많은 분들이 아톰을 어디서 구할 수 있느냐고 많이 질문하시는데, 아쉽게도 2018년 5월 현재 코스모스 메인넷이 런칭되지 않았기 때문에 아톰을 구할 수가 없습니다. 간혹 코인마켓캡에 올라와 있는 아토믹 코인(Atomic coin)을 아톰이라고 왜곡하시는 분들이 계신데 이는 전혀 사실이 아닙니다. 암호화폐 투자자 분들은 부디 주의하시기 바랍니다.
검증인(Validator)
검증인은 곧 살펴볼 텐더민트라는 컨센서스에서 투표권을 갖고 있는 노드들을 뜻합니다. 비트코인이나 이더리움을 관심 있게 보셨던 분들이라면 채굴자라는 말이 익숙하실텐데요, 텐더민트에서 채굴자에 해당하는 역할이 바로 검증인입니다.
검증인은 자신이 갖고 있는 혹은 다른 사용자들로부터 위임받은(Delegated) 토큰을 본딩(Bonding)하여 그 액수가 일정 순위권 안에 들면 투표권을 부여 받습니다. 이 투표권을 통해 블록을 생성하는 과정에 참여할 수 있게 되는 것입니다.
코스모스위의 첫번째 존인 코스모스 허브 또한 컨센서스를 위해 텐더민트를 사용하기 때문에, 블록을 생성하는 검증인들이 존재합니다. 이전에 아톰은 코스모스 허브의 지분 토큰(Staking Token)이라고 했었죠? 검증인들은 바로 이 아톰을 본딩하여 그 본딩규모가 100위 안에 들면 해당 노드는 검증인의 자격을 부여받습니다. (코스모스 허브에서 검증인 노드의 규모는 점차 증가하여 최종적으로 300개에 이르게 됩니다)
검증인들은 이렇게 블록을 생성하는 수고로움을 치른 보상으로 추가로 발행되는 아톰(Inflationary Atoms)과 수수료 보상(block transaction fees)을 받고, 이는 검증인에게 토큰을 위임했던 위임자(Delegator)에게도 지급됩니다.
4. 코스모스의 핵심
1) 텐더민트(Tendermint)
여기서 텐더민트의 구체적인 작동방식은 설명드리지 않습니다. 텐더민트가 목표하는 방향과 코스모스에서 텐더민트가 가지는 역할에 대해 간략하게 설명드리고, 구체적인 원리는 추후 포스팅에서 설명드리도록 하겠습니다.
텐더민트는 PBFT에 POS를 적용한 블록체인 엔진으로, 코스모스에서 존과 허브의 뼈대역할을 해 줄 친구입니다. 텐더민트는 Nothing-at-Stake 문제를 최초로 해결한 POS 컨센서스이기도 합니다. 하지만 텐더민트의 진정한 가치는 여기서 끝나는 것이 아닙니다.
텐더민트가 추구하는 목적
텐더민트가 추구하는 바는 한마디로 ‘누구나 성능이 뛰어난 블록체인을 쉽게 만들 수 있게하자’입니다. 이 말이 어떤 의미인지 알기 위해서는 블록체인의 역사를 잠깐 들여다 볼 필요가 있습니다.
2008년 사토시 나카모토의 비트코인이 세상에 모습을 드러낸 이후로 수 많은 블록체인이 세상에 나왔습니다. 그러한 시도들은 대부분 비트코인을 포크해서 진행되었습니다. 이더리움의 탄생 이후에는 이더리움을 포크하여 만든 블록체인들이 우후죽순으로 쏟아져 나왔습니다.
이렇게 된 주요한 이유 중 하나는 블록체인의 모든 것을 밑바닥부터 하나하나 개발하는 것이 매우 지루하고 힘든 일이었기 때문입니다. 따라서 개발자들은 잘 만들어진 블록체인인 비트코인과 이더리움을 포크하는 것을 선택했고, 이는 개발과정을 쉽고 용이하게 해주었습니다. 하지만 이는 역설적으로 이후의 블록체인들이 비트코인과 이더리움의 한계에 갇히는 결과를 초래했습니다.
이런 문제점들을 해결하기 위해 텐더민트는 블록체인을 해체하여 구조를 나누는 일종의 모듈화를 제안합니다. 모듈이란 쉽게 말해 부품을 뜻합니다. 블록체인을 여러가지 부품으로 나누어보자는 것입니다.
프로그래밍을 하시는 독자분들께서는 잘 구성된 모듈의 중요성을 아실것입니다. 나아가 거대한 프로그램을 단일 모듈로 설계하는 것이 얼마나 비효율적이고, 얼마나 많은 문제들을 수반하는 것인지에 대해서도 잘 아실것입니다.
텐더민트 코어, ABCI
텐더민트에 의하면 블록체인은 크게 두개의 레이어(Layer)로 나눌 수 있습니다. 하나는 컨센서스 엔진과 P2P 통신 레이어, 다른 하나는 특정 블록체인 어플리케이션의 디테일한 상태(State)구조 입니다.
텐더민트에서는 전자를 컨센서스 엔진인 텐더민트 코어를 통해 쉽게 구현이 가능하게끔 합니다. 그리고 어플리케이션 상태구조에 대한 것은 해당 블록체인을 개발하는 사람들이 자유롭게 설계하도록 하되 이를 텐더민트 코어와 호환이 가능하게끔 ABCI(Application BlockChain Interface)를 통해 이어주는 것입니다.
예시를 통해 더 자세히 살펴보겠습니다.
비트코인을 텐더민트위에 구현해본다고 생각해봅시다. 비트코인은 각 노드들이 검증된 UTXO(Unspent Transaction Output) 데이터베이스를 유지하고 있는 블록체인입니다.
여기서 텐더민트 코어는 다음과 같은 부분을 담당합니다.
- 노드 간 블록과 트랜잭션을 공유하는 것
- 하나의 정규적이고(Canonical), 불변의(Immutable) 트랜잭션 순서를 기록하는 것(쉽게 말해 블록을 이어나가는 것을 말합니다)
반대로 어플리케이션 레이어는 다음을 담당합니다.
- UTXO 데이터베이스를 유지하는 것
- 트랜잭션의 암호화된 서명을 검증하는 것
- 존재하지 않는 UTXO를 사용하는 것을 방지하는 것
- 클라이언트가 UTXO 데이터베이스를 검색할 수 있게 하는 것
텐더민트에서 제공하고자 하는 가치는 바로 이렇게 두가지로 나뉘어진 블록체인 레이어에서 컨센서스와 엔진과 P2P 통신을 담당하는 부품인 텐더민트 코어를 제공해주고, 어플리케이션 부분은 개발자 입맛에 맞게 제작하게 한 뒤에 이를 ABCI를 통해 쉽게 연결할 수 있게 해주는 것입니다.
추후 포스팅에서 더 자세히 다루겠지만, 텐더민트 엔진은 이미 수학적으로 검증된 강력한 블록체인 엔진입니다. 이를 이용해 누구나 자신의 목적에 맞는 블록체인을 보다 쉽게 개발할 수 있다는 것은 개발자들에게 있어선 축복과도 같다고 생각합니다.
2) IBC(Inter-Blockchain Communication)
IBC는 코스모스 허브와 존 간의 코인 교환을 가능하게 하는 통신 프로토콜입니다. 코스모스가 이루고자하는 궁극적인 목표는 서로 다른 블록체인이 연결되어 하나의 블록체인 네트워크를 형성하는 것이고, 이를 가능하게 하는 것이 바로 IBC입니다.
IBC를 이해할 때 주요한 부분은 각 존이 직접 연결되어 토큰을 교환하는 것이 아닌 ‘코스모스 허브’를 경유한다는 점입니다. 그 이유는 예를 통해 쉽게 이해하실 수 있습니다.
Zone 1, Zone 2, Zone 3이 서로간에 IBC 프로토콜로 연결되어 있고, 각 존이 코스모스 허브를 경유하지 않고 토큰을 자유롭게 교환가능하다고 가정했을 때 어떤 문제가 발생하는 지 알아봅시다.
우선 Zone 3에서 발행된 토큰을 Zone 1로 전달한다고 가정했을 때 Zone 1에서는 Zone 3 만 신뢰 하면 됩니다. 즉 Zone 3 내부에서 토큰이 전달 받은 만큼 동결되었는지, 이중 지불이 발생하지 않는지만 체크하면 되는 것이지요.
그러나 Zone 3에서 발행된 토큰이 Zone 2에 전달되고, Zone 2에서 전달받은 Zone 3의 토큰을 Zone 1로 전달한다고 가정하면 Zone 1의 경우 Zone 3, Zone2 모두 신뢰를 해야합니다. 이렇게 토큰이 많은 블록체인(Zone)들을 거쳐갈 수록 더 많은 신뢰가 필요하게 되는 것입니다.
그래서 코스모스는 중간 허브를 두고, 허브가 모든 존에서 발행되는 토큰에 대한 일종의 중앙 원장 역할을 하게 합니다. 허브에서는 자신과 연결된 각 존이 보유한 토큰 수량을 추적하고, 이를 바탕으로 존 간의 토큰 교환이 이루어집니다. 이러한 구조를 취함으로써 Zone 1이 Zone 3에서 발행된 토큰을 전달 받을 때 해당 토큰이 어떤 존을 거쳐왔는지 관계없이 ‘허브’와 ‘Zone 3’만을 신뢰하면 됩니다.
물론 여전히 Zone 3과 허브를 신뢰해야 한다는 문제점이 존재합니다. 코스모스 백서를 살펴보면 Zone 3에 대한 신뢰는 전적으로 사용자가 판단하며, Zone3 내부에서 문제가 발생하는 경우(e.g. 이중 지불 문제) 전적으로 사용자에게 책임을 진다고 합니다.
‘The Cosmos Hub does not verify or execute transactions committed on other zones, so it is the responsibility of users to send tokens to zones that they trust.’ (Source : COSMOS Whitepaper)
또한 컨센서스가 완전히 무너진 존은 더 이상 코스모스 네트워크와 연결되어서는 안 될 것입니다. 하지만 엄밀히 말하면 현재의 IBC에서는 그것을 판단할 수 있는 방법이 없습니다. 이 문제에 대해서 코스모스 백서에서도 추후 허브의 거버넌스 시스템을 이용하여 해결할 것이라고 말하고 있습니다.
In the future, the Cosmos Hub’s governance system may pass Hub improvement proposals that account for zone failures. For example, outbound token transfers from some (or all) zones may be throttled to allow for the emergency circuit-breaking of zones (a temporary halt of token transfers) when an attack is detected. (Source : COSMOS Whitepaper)
사실 이는 그렇게 바람직한 해결 방법은 아닙니다. 블록체인의 장점은 이런 거버넌스 시스템 없이 오로지 코드만으로 신뢰에 대한 문제를 해결할 수 있다는 것입니다. 그것이 사토시가 우리에게 제시한 비전이었습니다.
여기까지 IBC의 기본 개념과 한계에 대해서 개략적으로 설명드렸습니다. 코스모스에서 IBC가 갖는 중요도가 매우 높은 만큼, 이어지는 시리즈에서 IBC의 작동 과정과 한계점에 대해서 구체적으로 설명드리도록 하겠습니다.
3) 브릿지 존(Bridge Zone)
기존의 페그존이 브릿지 존으로 이름이 변경되었습니다.
코스모스의 최종 목표를 이루기 위해선 새로운 블록체인 프로젝트 뿐 만 아니라, 현재 존재하는 다양한 블록체인을 수용할 수 있어야 합니다. 기존 블록체인과 네트워크를 형성할 수 있도록 하는 것이 바로 이 브릿지 존입니다.
브릿지 존은 모든 블록체인을 연결하겠다는 코스모스의 비전이 달성되기 위해서 반드시 필요한 핵심중의 핵심입니다. 그럼 브릿지 존이 어떤 역할을 하는지 알아보도록 하겠습니다.
앞서 ‘존’이란 코스모스 네트워크에 존재하는 하나의 단일 블록체인이라고 말씀드렸는데요, 브릿지 존 또한 마찬가지로 하나의 단일 블록체인입니다. 다만 그 역할이 비트코인, 이더리움과 같은 기존의 블록체인과 코스모스 허브 사이를 연결하여 기존 블록체인에서 사용되는 코인(Ether, Bitcoin)을 코스모스 네트워크에서도 사용이 가능하도록 하는 것이지요.
그럼 어떻게 가능한지 비트코인을 예로 들어 설명해보겠습니다. 1BTC를 코스모스 네트워크에서 사용하기 위해 옮긴다고 가정할 때 어떤 절차를 걸쳐 옮겨지게 되는지 설명하겠습니다.
우선 비트코인 블록체인에서 특정 계좌(브릿지 존의 계좌라고 가정하겠습니다.)로 1BTC를 보내면, 브릿지 존에서는 해당 거래(Transaction)을 확인합니다. 이때 비트코인의 경우 완결성(finality)을 보장하지 않기 때문에 해당 거래가 담긴 블록위에 충분히 많은 블록(보통 6블록 정도가 안전하다고 하죠?)이 쌓여야 할 것입니다.
충분히 안전하다고 판단됬을 때, 브릿지 존에서는 1BTC에 상응하는 코인을 생성합니다. 이렇게 생성된 코인은 1BTC와 동일한 가치를 가지며, 코스모스 네트워크 상에서 자유로이 교환이 가능합니다. 또한 이렇게 생성된 1BTC는 언제든지 브릿지 존을 통하여 비트코인 블록체인으로 다시 이동할 수 있습니다.
이는 마치 금본위제와 비슷합니다. 금 1온스 — 35달러를 유지하던 브레튼우즈 체제(Bretton Woods)에서 달러는 언제든지 금으로 태환할 수 있었죠. 마찬가지로 실제 비트코인(금)을 특정 계좌에 예치하면, 코스모스 네트워크에서 예치된 비트코인에 상응하는 토큰이 발행되며(달러), 이는 언제든지 실제 비트코인으로 교환 가능합니다.
이렇게 기존의 다양한 블록체인을 코스모스 네트워크와 연결함으로서 코스모스 생태계는 무한히 확장될 수 있습니다. COSMOS(질서 있는 시스템으로서의 우주) 라는 프로젝트 명을 사용한 이유를 조금씩 이해하시겠지요?
하지만 아쉽게도 브릿지 존 또한 IBC와 마찬가지로 해결해야 할 문제가 산적해 있습니다. 이에 대해서도 추후 포스팅을 통해 보다 자세하게 설명드리도록 하겠습니다.
맺으며…
어떠셨나요? 코스모스를 이해하는데 조금 도움이 되셨나요?
지금까지 코스모스라는 큰 프로젝트를 가볍게 한 바퀴 둘러보았습니다. 여러분들께서 이 글을 읽으시면서 코스모스가 흥미로운 프로젝트라고 느껴지신다면 글을 열심히 쓴 보람이 있겠네요.
앞으로는 더욱 재밌는 것을 하려고 합니다. 코스모스 SDK를 이용해 직접 개발을 해보면서 이 여정을 글로 남기려고 합니다. 그저 삽질의 기록이 아니라 여러분께 조금이나마 도움이 되는 글을 남기기 위해서 열심히 달려봐야겠네요!
Written by Aiden Park with Soo-bok Jin