[리서치 7주차] Cosmos
#Cosmos #Tendermint #이더리움연구회
작성일 : 2018.07.17
Research by ‘이더리움 연구회’
(이더리움 연구회 : www.etherstudy.net )
Cosmos는 암호화폐와 블록체인 커뮤니티에서 오랜시간 issue가 됬었던 문제를 해결하기 위한 블록체인 네트워크이다. Cosmos는 독립된 블록체인을 확장하고 상호 운용성을 만들고자 한다.
1. 개요
Cosmos는 기존의 블록체인이 가진 네트워크의 문제를 해결하기 위해 등장했다. 이는 Zone이라고 불리는 많은 블록체인들의 네트워크를 만들고자 한다. Cosmos는 텐더민트 코어를 통해 작동이 되며 이를 통해 확장성을 확보하고 Hub들의 통신을 원할하게 유지하여 상호 운용성을 높이려고 한다.
기존 블록체인들이 가진 문제점은 Cosmos에서 크게 두 가지로 나눈다. 그 중 첫 번째로 확장성을 지적한다. 이를 해결하기 위해 많은 제안들이 나오고 있다. Segwit의 경우 비트코인 블록의 1MB 크기문제를 해결하기 위해 Signature와 Public Key를 다른 블록으로 이동시켜 블록에 더 많은 거래내역을 담게하는 방법이다. Lightening Network의 경우 상위 계층에서 운용되도록 제안된 토큰 전송 네트워크로 대다수 이체들을 지불 채널로 이동시켜 최종적인 지불값만 적용하는 방식이다. 마지막으로 비트코인 NG의 경우 블록 크기 확장과 같은 수직 확장성을 제공하는 방법이다.
이렇게 다양한 방법이 제시되고 있으며, Cosmos의 경우 Tendermint Core를 사용하여 새로운 프로토콜을 만드는데 제약이 없도록 설계하고자 한다. Tendermint는 채굴 대신 암호 서명에 기반한 ‘BFT 라운드 로빈 알고리즘(BFT round-robin algorithm)’을 사용한다. 이를 통해, 다중 병렬 블록체인을 이용한 수평 스케일링을 가능하게 하면서도, 보다 정기적이고 자주 발생하는 블록 커밋에는 수직 스케일링을 적용할 수도 있다. Lightening Network는 다수의 블록체인들에 걸쳐 확장되면서 교환시장을 통해 가치(value)를 전송하도록 하지만, 하나의 블록체인에서 다른 블록체인으로 토큰(token)을 비대칭적으로 전송하는 것은 불가능하다. Cosmos 네트워크의 주된 이점은 그러한 토큰의 직접 전송을 지원한다는 것이다.
두 번째 문제로 Cosmos는 상호 운용성을 지적한다. 서로 독립되어 있는 블록체인들은 서로간의 통신이 어렵다. 이런 상호운용성이 제대로 작동되지 못하여 중앙화 된 거래소에 대한 의존도가 높아지게 된다. 그러나 이는 해킹에 취약하고 프로세스가 원활히 작동하지 않는 등 여러 문제가 있다. 현재는 아토믹 크로스체인 스웝(Atomic cross-chain swaps)과 같은 솔루션이 제시되고 있지만, 아직 진정한 상호운용성을 실현하는 데는 한계가 있다.
Cosmos에서는 후에 다룰 Interblockchain Communication(IBC)를 사용하여 각각의 독립된 블록체인들이 서로 상호 운용이 가능하도록 설계하고자 한다.
Cosmos 네트워크에서는 크게 3가지를 이루고자 한다. Tendermint를 이용한 IBC을 가능케 하여 확장성을 크게 높이고자 한다(초당 수 천건). Cosmos는 다른 블록체인들이 현재 해결하지 못하고 있는 앱과 암호화폐 간의 상호 운용을 가능케 하고자 한다. 마지막으로 Cosmos는 Tendermint 기반을 둔 강력한 툴키트를 제공하여 개발자들이 Dapp을 손쉽게 만들 수 있는 환경을 조성하고자 한다.
Cosmos 생태계는 Hub와 Zone으로 이루어져있다. 기존의 블록체인들은 단일 블록체인을 목표로 하는 반면, Cosmos의 경우에는 많은 블록체인들이 상호 병행으로 실행할 수 있으며 동시에 상호 운용성을 확보할 수 있다고 주장한다. Zone의 경우 여러 독립된 블록체인을 관리하며 최근의 블록 커밋들을 끊임없이 Hub로 전송하여 최신의 상태로 유지한다. 이와 마찬가지로 Zone 또한 Hub의 정보를 수신한다. 이를 Cosmos에서는 IBC라고 이야기한다.
Cosmos의 Hub는 Multi-asset distributed ledger을 관리하는 블록체인이다. 이 생태계 안에서는 개인 사용자들이나 Zone 자체가 Token을 보유할 수 있다. 이들은 Coin Packet이라고 불리며 IBC를 통해 하나의 Zone에서 다른 Zone으로 이동할 수 있다. Zone들간의 전송에도 Cosmos 네트워크는 전역적 불변성을 가지며 Token의 총액은 보존이 된다.
Zone의 경우 Cosmos에서 Hub와 IBC 메시지를 교환하는 독립된 블록체인이다. Zone은 IBC 패킷을 이용하여 Token을 송수신할 수 있는 멀티자산 동적구성원 멀티시그니쳐 계정이다. Zone들은 Token 유형의 소스로 지정되어 Token을 추가로 공급할 수 있고 주고 받는다.
IBC는 Interchain Communication의 약자로써 Hub와 Zone 간의 상호 통신을 하는 방법이다. 가령 Zone1, Zone2 그리고 Hub가 있다고 가정을 해본다.이때 Zone1이 Hub를 통과하여 Zone2에게 메시지를 보낸다고 할 때 Zone2는 메시지를 받는 수신체인이므로 Zone1이 메시지를 발행한다는 것을 확인해야 한다. 이를 위해 Zone2는 Zone1의 최신 블록헤더 정보를 파악한다. 이를 위해서는 IBCBlockCommitTx와 IBCPacketTx를 통해 이체에 대한 송수신을 진행한다.
Cosmos는 Tendermint라는 Core를 사용한다. 이는 DPoS 방식과 PBFT 방식을 결합한 합의 알고리즘이다. Tendermint Core는 모든 결정적 블랙박스 애플리케이션(deterministic blackbox application)을 분산 복제 블록체인(distributedly replicated blockchain)으로 전환시킬 수 있는 어플리케이션 어그노스틱(application-agnostic) 이다. Tendermint Core의 경우 기존 비트코인과 같은 시스템을 사용한다면 노드 간 블록 및 이체 공유와 정규/변경배제 이체순서의 확립을 책임진다. 반면 TMSP의 어플리케이션을 설계할 경우 다음과 같은 부분을 책임진다.
‘TMSP 의 어플리케이션’
•UTXO 데이터베이스 유지
•이체의 암호서명 검증
•존재하지 않는 이체를 지불방지
•클라이언트들의 UTXO 데이터베이스에 대한 query 허용
Tendermint의 합의 과정은 총 3단계(Propose, Prevote, Precommit)로 구성되어 있으며, 합의를 위해서는 검증자(Validator)가 필요하다. 제네시스 기간에는 최대 검증인의 수를 100명으로 설정하며 향후 10년 동안 13%씩 증가하는 방식으로 검증자를 차츰 늘리고자 한다.
Year 0: 100 제 0 년도: 100
Year 1: 113 제 1 년도: 113
Year 2: 127 제 2 년도: 127
Year 3: 144 제 3 년도: 144
Year 4: 163 제 4 년도: 163
Year 5: 184 제 5 년도: 184
Year 6: 208 제 6 년도: 208
Year 7: 235 제 7 년도: 235
Year 8: 265 제 8 년도: 265
Year 9: 300 제 9 년도: 300
Year 10: 300 제 10 년도: 300
Cosmos Hub의 검증인과 위임자는 Cosmos Hub 정책과 관련해서 ‘코드가 아니라 평이한 언어로 된 헌법(규칙)’을 표결에 부쳐 수정한다. 또한 ‘블록 가스 한계(block gas limit)’같은 시스템이 사전에 설정된 제한들을 업그레이드를 통해 자동으로 변경하는 제안(Proposal)도 표결에 부치는 것이 가능하다. 헌법은 The Dao 해킹 사건과 같은 절도 및 버그 관련 문제들에 대해서 이해관계자들이 신속하게 새로운 해결책을 찾는데도 도움을 준다. 또한 각 Zone 역시 자체적인 헌법과 거버넌스 메커니즘을 가질 수 있다. Cosmos는 상호운용성을 가능케 하기 때문에 Hub와 Zone들간의 상이한 헌법 및 정책들을 조율 할 수 있다.
각 제안(Proposal)에 대해, 투표자들은 다음과 같은 옵션으로 투표할 수 있다.
•Yay(찬성)
•Yay With Force(강력히 찬성)
•Nay(반대)
•Nay With Force(강력히 반대)
•Abstain(기권)
제안(Proposal)의 통과 여부를 결정할 때는 과반수의 투표가 요구되지만, 1/3 이상이 강력하게 반대 (with force) 투표를 던질 때에는 과반수의 결정을 거부할 수 있다. 다만, 이 때 과반수가 거부될 경우, 모두가 거부에 대한 페널티로 수수료 (거부권 패널티 블록)를 지불하고, 과반수 결정을 거부한 당사자는 자신의 아톰 중 일부를 추가로 잃게 된다.
Cosmos에서는 Atom이라는 Token을 사용한다. Atom은 교환 매체나 가치 저장 수단으로 만들어지지 않았으며 Cosmos 블록체인 상에서 지분을 목적으로 Atom의 보유자가 투표, 검증 또는 다른 검증자들에게 위임하기 위해 사용된다. 거래에 대한 수수료를 지불할 때도 Atom을 사용한다. 이는 이더리움의 가스와 같은 개념으로 DDOS 공격을 방지하기 위해 설계되었다.
Atom Token의 경우 다양한 방법으로 사용이 된다.
- 검증인 처벌
검증인의 경우 고의성의 여부를 떠나 정해진 프로토콜 규칙을 어길 시에는 처벌을 받는다. . 동일한 높이(height) 또는 라운드 별 이중 서명 혹은 Tendermint 합의 프로토콜 규칙을 위반했을 경우 검증인은 해당 지위를 상실하게 되고 예치된 Atom Token과 지분(지급준비금 풀 내 토큰 비례분)을 상당수 잃게 된다.
악의적인 행위가 증거로 남지 않는 경우에도 압도적 다수의 합의가 존재한다면, 검증인들이 외부에서 합의 후 악의적인 검증인을 강제로 작업 중단(timeout)시킬 수 있다. - 인센티브
각 검증인은 블록 가스제한을 초과하지 않는한 교환비율과 트랜잭션 방식을 선택할 수 있다. Atom의 보유자들은 일정 수준의 투표권을 검증인에게 Bonding할 수 있다. 검증자가 거래를 합의해주고 수수료를 받으면 이 수수료는 Atom에 비례하여 Bonding된 주주들에게 재분배가 된다. - 해커에 대한 인센티브
Cosmos의 경우 검증인과 위임자들이 보안의 핵심이다. Hub에서 해커들이 특정 검증인을 해킹하는 사실을 전달해주면 해당 검증자는 비활성화되고 이들의 Atom의 일부를 포상금으로 지급해준다.
Cosmos의 경우 Gaia 8000을 목표로 개발을 하고 있다. 현재는 Gaia 7004의 테스트넷이 이용가능하다.
이더리움 연구회의 1,2기 정기 발표나 향후 업데이트 되는 3기 연구 자료는http://etherstudy.net을 통해서 확인 하실 수 있습니다.