- Published on
What is Cosmos?
- Authors
- Name
- 이민기
- Github
- @mingi3442
Introduction
UniSwap이 자체 AppChain을 운영할 예정이 있다는 뉴스를 보았습니다.
AppChain이란
간단하게 정의하면 특정 애플리케이션을 목적으로 설계된 블록체인 이라고 정리 가능합니다.
이번 글에서는 AppChain 생태계 중 대표적인 Cosmos Network에 대하여 알아보겠습니다.
- What is Cosmos?
- Cosmos 구성요소 및 특징
- CometBFT
- Feature
- IBC (Inter-Blockchain Communication)
- How it works?
- Tracking
- Bonding
- Proof Relay
- Validation
- Cosmos SDK (Software Develop Kit)
- Feature
- Zone
- Feature
- Review
- Reference
What is Cosmos?
코스모스 블록체인은 중앙 집중식 서버에 의존하지 않고 분산 원장 간의 통신을 용이하게 하기 위해 개발되었으며 백서는 2016년에 발간되었습니다.
Cosmos 네트워크는 Cosmos SDK를 이용해 각자의 블록체인을 좀 더 쉽게 만들 수 있도록 하며, 각 블록체인을 Zone이라고하여 상호 운용성을 가능하게 하는 플랫폼입니다.
Cosmos 네트워크는 Cosmos Hub, Tendermint 합의 알고리즘 및 IBC(Inter-Blockchain Communication) 프로토콜을 사용하여 블록체인이 안전하게 통신할 수 있도록 하여, 상호 연결된 앱과 서비스의 계속 확장되는 생태계입니다.
암호화폐로는 ATOM
을 사용합니다.
Cosmos 구성요소 및 특징
CometBFT
기존 Tendermint 에서 개선된 합의 알고리즘
What is Tendermint ?
Cosmos의 합의 레이어이며 DPOS와 BFT를 결합한 합의 알고리즘
Finality를 우선시 하여 블록이 생성되자 마자 Finality를 갖는다는 특징이 있음.
100~130개의 대표노드들에게 위임하여 동작하며 검증인이 많아질 수록 합의 속도 증가
그러나 각 AppChain으로 Staking된 금액들이 나누어 지면서 보안성 ↓
⤷ Interchain Security를 통해 보완
⤷ Interchain Security : 새로 만들어지는 체인들이 런칭을 할 때 DPOS 악용 문제 해결을 위해 Total Stake가 큰 체인들(cosmos hub)의 validate set과 voting power를 빌려와 검증에 사용
Feature
- 상위 175개 노드가 프로세스의 벨리데이터로 참여
- ABCI++ : 기존 ABCI(Application BlockChain Interface)는 Application과 Consensus사이에 통신을 위한 인터페이스이며, ABCI를 사용하면 앱은 결정 시간에만 합의와 상호 작용하고 mempool에서 선택할 트랜잭션에 대한 제어를 거의 제공하지 않는다는 단점이 존재했으나 ABCI++로 변경되며 합의 단계에서의 트랜잭션을 재정렬, 수정, 삭제, 지연 또는 추가할 수 있도록 확장한 인터페이스입니다.
IBC (Inter-Blockchain Communication)
IBC는 블록체인 간의 통신을 가능하게 하는 프로토콜입니다. Cosmos의 합의알고리즘의 즉각적인 최종성 속성을 활용하여 서로 다른 체인이 가치 또는 데이터를 서로 전송할 수 있도록 합니다. 이를 통해, 서로 다른 블록체인 간에 토큰이나 기타 데이터를 송수신할 수 있으며, 서로 다른 블록체인 간의 상호 운용성을 가능하게 합니다.
How it works?
체인 A의 계정이 체인 B의 계정에게 10개의 ✪Token을 보내는 시나리오
Tracking
각 체인은 기본적으로 다른 체인의 Light Client를 실행 하여 서로의 헤더 데이터를 수신
Bonding
체인 A에서 토큰을 전송하기 위해 IBC 전송이 시작되면 ✪Token
을 Bonding 상태로 잠금 처리
Proof Relay
그 후 10개의 ✪Token
이 결합되어 있다는 Proof가 체인 A에서 체인 B로 전달
Validation
증명은 체인 B에서 체인 A의 헤더에 대해 검증되며, 유효하면 체인 B에서 10개의 ✪Token
바우처를 생성
𖤐𖤐 체인 B에 생성된 ✪Token은 체인 A에만 존재하기 때문에 실제 체인 B의 ✪Token이 아니며 체인B에 대한 체인A✪Token이 체인A에 동결되어 있다는 증명으로 사용 ✪Token이 원래 체인으로 돌아올 때 역시 유사한 메커니즘을 사용하여 ✪Token의 잠금을 해제하고 체인 B의 ✪Token을 소각
Cosmos SDK (Software Develop Kit)
Cosmos SDK는 Cosmos Blockchain 네트워크 상에 애플리케이션을 구축하는 데 사용되는 도구 모음입니다.
Feature
Cosmos SDK를 사용하면 사용자들은 자신들의 블록체인을 빠르게 구축하고, 다른 블록체인과 손쉽게 통신할 수 있게 됩니다. 또한 Cosmos SDK를 사용하면 기본적인 블록체인 기능들을 모듈로 사용할 수 있어, 개발 시간을 단축하고 코드의 품질을 향상시킬 수 있으며 CLI, REST 서버 및 기타 일반적으로 사용되는 다양한 유틸리티 라이브러리를 구축하기 위한 유용한 기능을 제공합니다.
Zone
Cosmos SDK를 이용해서 만든 Cosmos Ecosystem에 소속된 독립된 블록체인을 의미하며 각 Zone은 개별적인 상태 머신과 합의 알고리즘을 갖고, 특정한 사용 사례나 애플리케이션에 맞게 최적화할 수 있습니다.
Feature
Zone은 Cosmos 네트워크의 핵심 구성 요소 중 하나로, 블록체인의 확장성 문제를 해결하는 데 중요한 역할을 합니다. Zone 각각은 독립적으로 확장될 수 있기 때문에, 전체 네트워크의 성능이나 안정성에 영향을 미치지 않으면서 특정 블록체인의 처리량을 증가시킬수 있다는 특징을 갖고 있습니다.
각 Zone은 Cosmos Hub나 다른 Zone과 IBC(Inter-Blockchain Communication) 프로토콜을 통해 통신할 수 있으며 이를 통해 Cosmos는 다양한 블록체인이 서로 협력하여 복잡한 애플리케이션을 구현할 수 있고, 블록체인의 확장성과 상호 운용성 문제를 개선할 수 있습니다.
Review
백서가 나온지 7년이 넘었으나, 생각보다 강의 또는 자료는 여전히 찾기가 쉽지가 않습니다 ㅠㅠ
그럼에도 Cosmos가 추구하는 바는 충분히 매력적이라고 생각이 들었고,
앞으로 Cosmos SDK에 대해서도 조금씩 공부해서 포스팅할 계획입니다 ☻