Cosmos란 무엇인가

2019-03-07

다음은 What is Cosmos를 번역한 글입니다. 저작권은 코스모스에 있습니다.

이전 문서의 한국어 번역은 다음과 같습니다. - 코스모스의 가치에 대한 이해

도입

엄밀히 말하면, Cosmos는 독립적인 병렬 블록 체인의 분산된 네트워크이며, 각각은 Tendermint 합의와 같은 BFT 합의 알고리즘을 기반으로 합니다.

즉, 코스모스는 서로 확장 가능하고 상호 운용할 수 있는 블록체인 생태계입니다. Cosmos 이전에는 블록체인이 사일로화되어 서로 통신할 수 없었습니다. 구축하기 어려웠으며 초당 소량의 트랜잭션만 처리할 수 있었습니다. Cosmos는 새로운 기술적 비전으로 이러한 문제를 해결합니다. 이 비전을 이해하려면 블록체인 기술의 기본 원칙으로 돌아가야 합니다.

블록체인이란?

블록체인은 일부 검증자(제3분의 1 미만)가 악의적인 경우에도 정확성을 유지하는 검증자 집합에 의해 유지되는 디지털 원장으로 설명할 수 있습니다. 각 당사자는 원장의 사본을 컴퓨터에 저장하고, 트랜잭션 블록을 수신할 때 프로토콜이 정한 규칙에 따라 갱신합니다. 블록체인 기술의 목표는 장부가 정확하게 복제되었는지 확인하는 것입니다. 즉, 각 정직한 당사자는 주어진 순간에 동일한 버전의 원장을 볼 수 있습니다.

블록체인 기술의 주요 이점은 당사자들이 중앙 당국에 의존할 필요없이 원장을 공유할 수 있는 능력입니다. 블록체인은 분산되어 있습니다. 오늘날 블록체인 기술의 첫 번째 그리고 가장 유명한 적용은 분산 통화인 비트코인입니다.

이제 높은 수준의 관점에서 블록체인이 무엇인지 더 잘 알게 되었으니, 보다 기술적인 면에서 블록체인의 정의를 살펴보겠습니다. 블록체인은 관리자의 3분의 1이 비잔틴 합의 안전을 유지하는 풀노드에서 복제되는 결정론적 상태 기계입니다. 하나씩 살펴보겠습니다.

  • 상태 기계(state machine)는 상태를 유지하고 입력을 수신할 때 수정하는 프로그램의 화려한 단어일 뿐입니다. 애플리케이션에 따라 다른 것을 나타낼 수 있는 상태(예: 암호화에 대한 토큰 잔액)와 상태를 수정하는 트랜잭션(예: 한 계정에서 잔액을 뺀 후 다른 계정에 추가함으로써)이 있습니다.
  • 결정론적(Deterministic)이란 같은 최초 상태(genesis state)에서 같은 거래를 반복하면 항상 같은 결과 상태로 끝나는 것을 말합니다.
  • 합의 안전성(Consensus safety)은 상태 기계가 복제되는 모든 정직한 노드가 동일한 상태를 동시에 보아야 한다는 사실을 의미합니다. 노드들은 트랜잭션 블록을 수신할 때 유효성을 검증하는데, 이는 각 트랜잭션이 유효하고 블록 자체가 검증자(validator)라 불리는 관리자의 3분의 2 이상에서 검증되었다는 것을 의미합니다. 검증자의 3분의 1 미만이 비잔틴한 경우, 즉 악의적인 경우, 안전은 보장될 것입니다.

상태 기계는 애플리케이션 계층과 동일합니다. 어플리케이션의 상태와 상태 전이 기능을 정의합니다. 다른 계층들은 네트워크에 접속하는 모든 노드에서 상태 기계를 복제하는 책임이 있다.

코스모스는 어떻게 더 광범위한 블록체인 생태계에 적합할까?

비트코인 이야기 (BLOCKCHAIN 1.0)

코스모스가 블록체인 생태계에 어떻게 들어맞는지 이해하기 위해서는 블록체인 이야기의 시작으로 돌아가야 합니다. 첫 번째 블록체인은 비트코인(Bitcoin)으로, 2008년에 만들어진 P2P 디지털 통화로, PoW(Proof-Work)라고 알려진 새로운 합의 메커니즘을 사용했습니다. 이는 블록체인에 대한 최초의 분산형 애플리케이션이었습니다. 곧 사람들은 분산 애플리케이션의 잠재력을 깨닫기 시작했고 커뮤니티에서는 새로운 애플리케이션을 만들고자 하는 욕구가 있었습니다.

당시에는 두 가지 분산형 애플리케이션을 개발할 수 있는 옵션이 있었습니다. 비트코인 코드베이스를 포킹하거나 그 위에 빌드하는 것이었죠. 그러나 비트코인 코드베이스는 매우 모놀리식으로 되어 있어 네트워크, 합의, 애플리케이션 등 세 개의 계층가 모두 함께 섞여 있었습니다. 또한 비트코인 스크립팅 언어는 제한적이고 사용자 친화적이지 않았습니다. 더 나은 도구가 필요했죠.

이더리움 이야기 (BLOCKCHAIN 2.0)

2014년에 이더리움(Ethereum)은 분산형 애플리케이션을 구축하기 위한 새로운 제안을 했습니다. 사람들이 어떤 종류의 프로그램이든 배치할 수 있는 단일 블록체인이 있을 것입니다. 이더리움은 애플리케이션 계층를 Ethereum Virtual Machine(EVM)이라는 가상 머신으로 전환함으로써 이를 달성했습니다. 이 가상 머신은 개발자가 허가없이 이더리움 블록체인에 배포할 수 있는 스마트 컨트랙트라는 프로그램을 처리할 수 있었습니다. 이 새로운 접근 방식으로 인해 수천 명의 개발자들이 분산형 애플리케이션(dApp)을 만들 수 있었습니다. 그러나, 이러한 접근법에 대한 제약은 이내 분명해졌고 현재까지도 여전합니다.

첫 번째 제약: 확장성 (Scalability) 첫 번째 제약은 확장성입니다. 즉, 이더리움 위에 구축된 분산 애플리케이션은 초당 15건의 트랜잭션으로 제한됩니다. 이는 이더리움이 여전히 Proof-Of-Work를 사용하고 있으며 이더리움 dApps이 단일 블록체인의 제한된 자원을 놓고 경쟁하고 있기 때문입니다.

두 번째 제약: 사용성 (Usability) 두 번째 제한은 개발자들에게 주어지는 상대적으로 낮은 유연성입니다. EVM은 모든 유즈케이스를 수용해야 하는 샌드박스이기 때문에, 평균 유즈케이스를 최적화합니다. 즉, 개발자는 애플리케이션의 설계와 효율성에 타협해야 합니다(예를 들어, UTXO 모델이 선호될 수 있는 결제 플랫폼에서 어카운트 모델을 사용해야 하는 경우). 그 무엇보다도 몇 개의 프로그래밍 언어에 제한되어 있으며, 코드의 자동 실행을 구현할 수 없습니다.

세 번째 제약: 주권 (Sovereignty) 세 번째 제한은 각 애플리케이션이 모두 동일한 기본 환경을 공유하기 때문에 주권이 제한된다는 것입니다. 기본적으로, 이것은 두 가지 관리 계층, 즉 애플리케이션의 계층과 하부 환경의 계층을 만듭니다. 전자는 후자에 의해 제한됩니다. 애플리케이션에 버그가 있는 경우, 이더리움 플랫폼 자체의 관리가 승인되지 않으면 아무것도 할 수 없습니다. 애플리케이션이 EVM의 새로운 기능이 필요한 애플리케이션의 경우, 이더리움 플랫폼의 통제에 전적으로 의존해야 합니다.

이러한 제한은 이더리움에만 국한되지 않고 모든 유즈케이스에 맞추려는 단일 플랫폼을 만드는 모든 블록체인에 적용됩니다. 이 점이 코스모스가 중요해지는 부분입니다.

코스모스의 비전 (BLOCKCHAIN 3.0)

코스모스의 비전은 개발자들이 서로 트래잭션하게 함으로써 블록체인을 쉽게 만들고 블록체인 사이의 장벽을 깨도록 하는 것입니다. 최종 목표는 분권화된 방식으로 서로 소통할 수 있는 블록체인 네트워크인 블록체인 인터넷을 만드는 것입니다. 코스모스를 이용하면 블록체인이 주권을 유지하고 거래를 신속하게 처리하며 생태계의 다른 블록체인과 통신하여 다양한 유즈케이스에 최적으로 사용할 수 있습니다.

이 비전은 Tendermint, Cosmos SDK 및 IBC와 같은 오픈 소스 도구 세트를 통해 달성되며, 사람들이 사용자 정의, 보안, 확장성 및 상호운용 가능한 블록체인 애플리케이션을 신속하게 구축할 수 있도록 합니다. 코스모스 네트워크의 기술 아키텍처뿐만 아니라 생태계에서 가장 중요한 도구 몇 가지를 자세히 살펴보겠습니다. 코스모스는 원래 Tendermint 팀이 구축한 오픈소스 커뮤니티 프로젝트라는 점입니다. 누구나 더욱 크고 풍요로운 개발자 생태계를 위해 추가적인 도구를 만들 수 있습니다.

Tendermint Core와 ABCI란?

최근까지 블록체인을 구축하려면 3가지 계층(네트워킹, 합의, 애플리케이션)을 모두 처음부터 구축해야 했습니다. 이더리움은 누구나 스마트 컨트랙트 형태로 커스터마이징 로직을 배포할 수 있는 가상 머신 블록체인을 제공함으로써 분산형 애플리케이션의 개발을 간소화했습니다. 그러나 블록체인 자체 개발을 단순화하는 것은 아니었습니다. 비트코인과 마찬가지로 Go-Ethereum도 포킹과 커스터마이징이 어려운 모놀리식 기술 스택으로 남아 있습니다. 이 점이 바로 2014년 Jae Kwon이 Tendermint를 만든 이유입니다.

Tendermint Core는 블록체인의 네트워킹과 합의 계층을 일반적인 엔진으로 패키징하여 개발자들이 복잡한 기본 프로토콜이 아닌, 애플리케이션 개발에 집중할 수 있도록 하는 솔루션입니다. 결과적으로 Tendermint는 수백시간의 개발 시간을 절약합니다. Tendermint는 또한 Tendermint Core 엔진 내에서 사용되는 비잔틴 결험 허용(BFT) 합의 알고리즘을 지정할 수 있습니다. 합의 프로토콜과 BFT의 역사에 대한 자세한 내용은 Tendermint 공동창업자 Ethan Buchman의 멋진 팟캐스트를 확인해보세요.

Tendermint Core 엔진ABCI(Application Blockchain Interface)라는 소켓 프로토콜에 의해 애플리케이션에 연결됩니다. 이 프로토콜은 어떤 프로그래밍 언어로도 래핑할 수 있으며, 개발자들은 자신의 필요에 맞는 언어를 선택할 수 있습니다.

그러나 이게 끝이 아닙니다. 다음은 Tendermint Core를 최첨단 블록체인 엔진으로 만드는 속성입니다.

  • 퍼블릭 또는 프라이빗 블록체인 준비: Tendermint Core는 블록체인에 대한 네트워킹과 합의만 처리합니다. 즉, 이는 노드들이 트랜잭션을 전파하고 검증자들이 블록체인에 추가하기 위한 일련의 트랜잭션에 합의하도록 돕는다는 것을 의미합니다. 검증자 집합이 구성되는 방법을 정의하는 것은 애플리케이션 계층의 역할입니다. 따라서 개발자들은 Tendermint Core 위에 퍼블릭 및 프라이빗 블록체인을 모두 구축할 수 있습니다. 애플리케이션에서 지분에 의한 토큰수를 기반으로 유효성 검증자(validator)를 선출한다고 정의한 경우, 블록체인은 PoS(Proof-of-Stake)로 특화될 수 있습니다. 그러나 애플리케이션에서 사전 승인된 엔티티의 제한된 집합만 검증자가 될 수 있다고 정의하는 경우, 블록체인은 퍼미션드(permissioned) 또는 프라이빗으로 특화될 수 있습니다. 개발자들은 블록체인의 검증자 집합이 어떻게 변화하는지 정의하는 규칙을 커스터마이징할 수 있습니다.
  • 고성능: Tendermint Core는 1초 단위로 블록타임을 가질 수 있으며 초당 최대 수천 건의 트랜잭션을 처리할 수 있습니다.
  • 인스턴트 파이널리티(Instant finality): Tendermint 합의 알고리즘의 속성은 인스턴트 파이널리티입니다. 이는 검증자의 3분의 1 이상이 정직한 이상(비잔틴한 경우), 포크는 결코 만들어지지 않는다는 것을 의미합니다. 사용자는 블록이 생성되는 즉시, 거래가 완료되었는지 확인할 수 있습니다 (비트코인 및 이더리움과 같은 PoW 블록체인의 경우 그렇지 않습니다).
  • 보안: Tendermint 합의는 내결함성 뿐만 아니라 책임을 지도록 합니다. 만약 블록체인이 포크된다면, 법적 책임을 결정할 수 있는 방법이 있습니다.

Cosmos SDK와 다른 애플리케이션 계층 프레임워크

Tendermint Core는 블록체인의 개발 시간을 몇 년에서 몇 주 단위로 단축하지만, 처음부터 안전한 ABCI-app을 구축하는 것은 여전히 어려운 작업입니다. 이것이 Cosmos SDK가 존재하는 이유입니다.

Cosmos SDK는 Tendermint Core 위에 안전한 블록체인 애플리케이션을 구축하는 과정을 단순화하는 일반화된 프레임워크입니다. 이는은 다음의 두 가지 주요 원칙에 기초합니다.

모듈성: Cosmos SDK의 목표는 개발자들이 애플리케이션의 각 기능을 처음부터 코딩하지 않고도, 애플리케이션별 블록체인을 쉽게 시작할 수 있는 모듈의 생태계를 만드는 것입니다. 누구나 Cosmos SDK 모듈을 만들 수 있으며 블록체인에 준비된 모듈을 사용하는 것은 어플리케이션으로 임포트하는 것만큼이나 간단합니다. 예를 들어, Tendermint 팀은 Cosmos 허브를 위해 필요한 기본적인 모듈 세트를 만들고 있습니다. 이 모듈들은 자체 애플리케이션을 구축할 때 개발자가 사용할 수 있습니다. 또한 개발자는 새로운 모듈을 만들어 애플리케이션을 커스터마이징할 수 있습니다. Cosmos 네트워크가 발전함에 따라 SDK 모듈의 생태계가 확대되어 복잡한 블록체인 애플리케이션의 개발이 점점 쉬워질 것입니다.

커패빌리티 기반 보안성 (Capabilities-based security): 커패빌리티는 모듈 간의 보안 경계를 제한하므로 개발자가 모듈의 가능한 구성에 대해 더 많이 추론하고 악의적이거나 예기치 못한 상호작용의 범위를 제한할 수 있습니다. 커패빌리티에 대한 자세히 내용은 여기를 클릭하세요.

또한 Cosmos SDK에는 CLI, REST 서버 및 기타 일반적으로 사용되는 다양한 유틸리티 라이브러리를 구축하기 위한 유용한 도구가 함께 제공됩니다.

마지막 한 마디: Cosmos SDK는 모든 Cosmos 도구와 마찬가지로 모듈식으로 설계되었습니다. 현재, 개발자는 Tendermint Core 위에 에 구축할 수 있습니다. 또한 ABCI를 구현한 다른 컨센서스 엔진과 함께 사용할 수 있습니다. 우리는 시간이 지날수록, 서로 다른 아키텍처 모델로 구축되고 여러 개의 합의 엔진과 호환 가능한 여러 개의 SDK가 단일 생태계인 코스모스 네트워크 내에 등장할 것으로 기대합니다.

SDK 위에서 애플리케이션을 코딩하는 방법을 배우려면 이 튜토리얼을 확인하시면 됩니다.

ETHERMINT Cosmos SDK의 가장 큰 장점은 모듈화를 통해 개발자가 이미 Golang에 있는 기존의 블록체인 코드베이스를 이식할 수 있다는 것입니다. 예를 들어, Ethermint는 이더리움 가상 머신을 SDK 모듈에 포팅하는 프로젝트입니다. Ethermint는 Ethereum과 똑같이 작용하지만 또한 Tendermint Core의 모든 특성을 활용할 수도 있습니다. 기존의 모든 이더리움 도구(Truffle, Metamask 등)는 Ethermint와 호환되며 추가작업 없이 스마트 컨트랙트를 체결할 수 있습니다.

가상 머신 블록체인 위에 분산된 애플리케이션을 배포할 수 있는데 왜 굳이 Cosmos SDK로 블록체인을 만드나요?

이 질문은 현재 대부분의 분산형 애플리케이션이 Ethereum과 같은 가상 머신 블록체인 위에 개발되었다는 점을 고려하면 당연합니다. 첫째, 이러한 현상의 원인은 지금까지 블록체인이 스마트 컨트랙트보다 훨씬 더 개발하기 어려웠다는 점입니다. Cosmos SDK 덕분에 이제는 그렇지 않습니다. 이제 개발자는 여러 가지 장점을 지는 애플리케이션별 블록체인을 쉽게 개발할 수 있습니다. 무엇보다도 유연성, 보안, 성능과 소버린티가 주어집니다. 애플리케이션별 블록 체인에 대한 자세한 내용은 이 포스트를 참조하세요. 물론, 독자적인 블록체인을 구축하고 싶지 않은 경우, 스마트 계약을 Cosmos와 호환되게 Ethermint에 배포할 수 있습니다.

블록체인 함께 연결하기 - IBC

개발자가 커스터마이징 블록체인을 신속하게 구축할 수 있게 되었으니, 이 블록체인들을 어떻게 연결하는지 살펴 보겠습니다. 블록체인 사이의 연결은 IBC(Inter-Blockchain Communication Protocol)라는 프로토콜을 통해 이루어집니다. IBC는 Tendermint 합의의 인스턴트 파이널리티(“빠른 파이널리티” 블록체인 엔진과 함께 작동할 수 있지만)을 활용하여 이기종 체인이 서로 가치(예: 토큰) 또는 데이터를 전송할 수 있게 합니다.

이기종 체인(HETEROGENEO CHAINS)이란?

본질적으로 다음과 같이 두 가지로 분류합니다.

  • 서로 다른 계층 (Different layers): 이기종 체인은 서로 다른 계층를 가집니다. 즉, 네트워킹, 합의 및 애플리케이션 파트를 구현하는 방법이 다를 수 있습니다. IBC와 호환되기 위해서, 블록체인은 몇 가지 요구 사항을 따르는 것만으로도 충분합니다. 주요 요구 사항은 합의 계층이 빠른 파이널리티를 가져야 한다는 것입니다. 비트코인과 이더리움과 같은 작업 증명 체인은 확률론적인 파이널리티를 가지고 있기 때문에 이 범주에 속하지 않습니다.

  • 주권 (Sovereignty): 모든 블록체인은 블록체인에 대한 다음 블록을 합의하는 일련의 검증자에 의해 유지됩니다. Proof-of-Work 블록체인에서는 이러한 검증자를 채굴자(마이너)라고 부릅니다. 소버린티 블록체인은 자체 검증자 세트를 지닌 블록체인입니다. 대부분의 경우에 검증자들이 궁극적으로 상태를 수정해야 하는 책임이 있기 때문에 블록체인이 주권을 가지는 것이 중요합니다. 이더리움에서 애플리케이션은 모두 동일한 검증자 집합에 의해 실행됩니다. 이 때문에 각각의 애플리케이션은 제한된 소버린만을 가지고 있습니다.

IBC를 사용하면 이기종 블록체인이 토큰과 데이터이 서로 전송할 수 있습니다. 이는 애플리케이션과 검증자 집합이 서로 다른 블록체인이 상호 운용될 수 있음을 의미합니다. 예를 들어, 퍼블릭 블록체인과 프라이빗 블록체인이 서로 토큰을 전송할 수 있습니다. 현재 다른 블록체인 프레임워크는 이 정도의 상호 운용성을 지원하지 않습니다.

IBC 동작방식

IBC의 원칙은 매우 간단합니다. 체인 A의 계정이 10개의 토큰을 체인 B에 보내고 싶은 경우를 예로 들어보겠습니다.

추적 이이서, 체인 B는 체인 A의 헤더를 받고, 그 반대의 경우도 있습니다. 이는 각 체인이 다른 체인의 검증자 세트를 추적할 수 있게 합니다. 본질적으로 각 체인은 다른 체인의 라이트 클라이언트를 실행합니다.

본딩 IBC 전송이 시작되면 아톰(코인)은 체인 A에 잠겨(본딩) 있습니다.

증거 릴레이 그런 다음 10개의 아톰이 잠겨있다는 증거가 체인 A에서 체인 B로 전달됩니다.

https://cosmos.network/images/intro/05-ibc-02.svg

검증 증명은 체인 B에서 체인 A의 헤더에 대해 검증되고, 유효하다면 체인 B에 10개의 아톰 바우처가 생성됩니다.

아톰은 오직 체인 A에만 존재하기 때문에 체인 B에서 생성된 아톰은 실제 아톰이 아닙니다. 이 아톰들이 체인 A에서 동결되었다는 증거와 함께 체인 A에서 나온 아톰의 B에 대한 표시입니다.

유사한 메커니즘은 원래 체인으로 돌아올 때 아톰을 잠금 해제하는 데 사용됩니다. IBC 프로토콜에 대한 보다 포괄적인 설명을 위해, 이 스펙을 참조할 수 있습니다.

블록체인 인터넷의 설계

IBC는 2개의 이기종 블록체인이 서로 토큰을 전송할 수 있도록 하는 프로토콜입니다. 거기에서 블록체인 네트워크를 만드는 방법은 무엇일까요?

하나의 아이디어는 직접 IBC 연결을 통해 네트워크의 각 블록체인을 다른 모든 블록체인에 연결하는 것입니다. 이 접근법의 주된 문제점은은 네트워크 연결의 수가 블록체인의 수와 함께 2차적으로 증가한다는 것입니다. 네트워크에 100개의 블록체인이 있고 각 블록체인이 서로 다른 IBC 연결을 유지할 필요가 있는 경우, 그것은 4950개를 연결하게 됩니다. 이는 금방 감당할 수 없게 됩니다.

이를 해결하기 위해 Cosmos는 Hub와 Zone이라는 두 종류의 블록체인을 가진 모듈형 구조를 제안합니다. Zone은 보통의 이질적인 블록체인이고 Hub는 Zone을 서로 연결하기 위해 특별히 고안된 블록체인입니다. Zone이 Hub와 IBC 연결을 생성하면, Zone은 연결된 다른 Zone에 자동으로 접근(즉, 송수신)할 수 있습니다. 결과적으로, 각 Zone은 제한된 Hub 세트와 제한된 수의 연결만 설정하면 됩니다. Hub는 또한 Zone의 이중 지출을 방지합니다. 즉, Zone이 Hub로부터 토큰을 수신하면, 이 토큰과 Hub의 원래 Zone만 신뢰하면 됩니다.

Cosmos 네트워크에서 출시할 첫 번째 Hub는 Cosmos Hub가 될 것입니다. Cosmos Hub는 아톰이라고 불리며, 거래 수수료가 여러 토큰으로 지불되는 퍼블릭 스테이크 블록체입니다. Hub의 출시는 Cosmos 네트워크의 출시를 보여줄 것입니다.

비-Tendermint 체인 브리징

지금까지 우리가 제시한 Cosmos의 아키텍처는 Tendermint 기반의 체인이 어떻게 상호 운용될 수 있는지를 보여줍니다. 그러나 Cosmos는 Tendermint 체인에 국한되지 않습니다. 사실, 어떤 종류의 블록체인도 코스모스와 연결될 수 있습니다.

우리는 구별해야할 빠른 파이널리티 체인과 확률론적 파이널리티 체인 두 가지 사례가 있습니다.

빠른 파이널리티 체인 어떤 고속의 합의 알고리즘을 이용하는 블록은 IBC를 적응시킴으로써 코스모스와 연결될 수 있다. 예를 들어 이더리움이 Casper FFG(Friendly Finality Gadget)로 전환한다면 IBC를 Casper와 함께 사용하여 Cosmos 생태계와 직접 연결될 수 있습니다.

확률론적 파이널리티 체인 Proof-of-Work 체인과 같이 빠른 파이널리티를 갖지 않는 블록체인의 경우 상황이 좀 더 까다로워집니다. 이 체인의 경우, 페그존(Peg-Zone) 프록시 체인이라고 불리는 특별한 종류의 체인을 사용합니다.

페그존은 다른 블록체인의 상태를 추적하는 블록체인입니다. 페그존 자체는 빠른 파이널리티를 가지고 있어 IBC와 호환이 됩니다. 그 역할은 브릿지에 대한 파이널리티를 확립하는 것입니다. 다음 예제를 살펴보겠습니다.

예제: 이더리움 페그존

우리는 Ethereum과 Cosmos 간에 토큰을 주고 받을 수 있도록 PoW 이더리움 블록체인을 연결하려고 합니다. PoW 이더리움은 빠른 파이널리티를 가지고 있지 않기 때문에, 둘 사이의 다리 역할을 할 페그존을 만들어야 합니다.

첫째, 페그존은 원점 체인의 최종 임계값을 결정해야 합니다. 예를 들어, 원점 체인의 주어진 블록이 100개의 블록이 추가된 후,발신지 체인의 최종 블록이라고 간주할 수 있습니다.

둘째, 메인 이더리움 블록체인에 컨트랙트가 배포됩니다. 사용자들은 이더리움에서 Cosmos로 토큰을 보내고 싶을 때, 이 컨트랙트에 토큰을 보내는 것으로 시작합니다. 그 후, 컨트랙트가 자산을 동결하고 100블록 후에, 이러한 자산의 표시가 Peg-Zone에서 해제됩니다. 유사한 메커니즘은 자산을 이더리움 체인으로 다시 전송하는데 사용됩니다.

흥미롭게도, 페그존은 Cosmos에 사는 토큰을 이더리움 체인(Cosmos 토큰은 이더리움 체인에서 ERC20으로 표시됨)으로 보낼 수 있습니다. Tendermint 팀은 현재 Peggy라고 하는 이더리움 체인을 위한 페그존 구현을 위해 노력하고 있습니다.

페그존은 그들이 연결하는 특정 체인에 맞게 커스터마이징될 필요가 있습니다. 이더리움 페그존을 구축하는 것은 비교적 간단합니다. 왜냐하면 이더리움은 어카운트 기반으로 하고 스마트 컨트랙트를 맺기 때문입니다. 하지만 비트코인 페그존을 만드는 것은 좀 더 어려운 일이다. 비트코인 같은 페그존을 만드는 방법을 설명하는 것은 이 소개에서 범위를 벗어나지만, 이론적으로 가능하다는 것을 기억하세요. 만약 페그존에 대해 더 알고 싶다면 이 스펙을 살펴보시길 바랍니다.

확장성 해결하기

블록체인을 쉽게 만들고 연결할 수 있게 되면, 마지막으로 해결해야 할 문제는 바로 확장성입니다. Cosmos는 두 가지 유형의 확장성을 활용합니다.

수직 확장성: 이는 블록체인 자체를 확장하는 방법을 포함합니다. PoW에서 벗어나 컴포넌트를 최적화함으로써 Tendermint Core는 초당 수천 건의 거래에 도달할 수 있습니다. 병목 현상요소는 애플리케이션 자체입니다. 예를 들어, 가상 머신과 같은 애플리케이션(예: Ethereum Virtual Machine)은 트랜잭션 유형과 상태 전이 기능이 직접 내장된 애플리케이션(예: 표준 Cosmos SDK 애플리케이션)보다 트랜잭션 처리량에 훨씬 더 낮은 한계를 부과합니다. 이것이 애플리케이션별 블록체인이 이치에 맞는 이유 중 하나입니다(더 많은 이유에 대해서는 여기를 읽어보세요).

수평 확장성: 합의 엔진과 애플리케이션이 고도로 최적화된 경우라도, 어느 시점에서는 단일 체인의 거래 처리량이 불가피하게 넘을 수 없는 벽에 부딪칩니다. 수직 스케일링의 한계입니다. 이를 뛰어 넘는 해결책은 다중 체인 아키텍처로 이동하는 것입니다. 이 아이디어는 동일한 애플리케이션을 실행하고 공통 검증자 세트에 의해 작동되는 다중 병렬체인을 갖추어 이론적으로 블록체인을 무한히 확장 가능한 블록체인을 만듭니다. 수평적 확장성에 대한 세부사항은 이 소개에서 상당히 복잡하고 범위를 벗어납니다.

Cosmos는 릴리즈 시점에 매우 우수한 수직 확장성을 제공할 것이며, 현재의 블록체인 솔루션보다 크게 개선될 것입니다. 나중에 IBC 모듈의 완성 후, 수평적 확장성 솔루션이 구현될 것입니다.

그래서 결국 Cosmos는 무언인가요?

이제 Cosmos 프로젝트에 대해 더 선명한 그림을 얻을 수 있기를 바랍니다. 코스모스의 세 가지 점에 대해 간략히 정리하면 다음과 같습니다.

  • Cosmos는 Tendermint Core와 Cosmos SDK의 모듈화로 블록체인을 강력하고 쉽게 개발할 수 있습니다.
  • Cosmos는 블록체인이 IBC와 페그존을 통해 서로 가치를 이전하는 동시에 자주권을 유지하도록 합니다.
  • Cosmos는 블록체인 애플리케이션이 수평 및 수직 확장성 솔루션을 통해 수백만 명의 사용자로 확장될 수 있도록 합니다.

무엇보다 Cosmos는 제품이 아니라 모듈식, 적응식, 상호교환이 가능한 도구들로 구성된 생태계입니다. 개발자 여러분들이 블록체인 기술에 대한 약속을 실현하기 위해 기존의 도구를 개선하고 새로운 도구를 만드는 노력에 동참하실 것을 권장합니다. 이러한 도구들은 분산된 인터넷과 미래의 글로벌 금융 시스템을 구축하는데 필요한 기반입니다.

더 읽어보기

Youngpil Yoon

Powered by Hugo & Kiss.