Polkadot and Cosmos [KR]

Ian J. Um
Turnpike
Published in
12 min readAug 24, 2021

Polkadot Wiki의 Polkadot and Cosmos 번역입니다. 오역 발견 시 피드백 주시면 감사드리겠습니다.

Polkadot과 Cosmos는 서로 다른 상태 기계가 소통할 수 있도록 인터페이스를 제공하는 프로토콜입니다. 두 프로토콜 모두 향후 블록체인이 개별적으로 존재하는 것이 아니라 상호 운용이 필요할 것 이라는 논제를 전제로 합니다.

Model

Polkadot은 프로토콜의 각 샤드가 추상화된 STF(State Transition Function)를 갖는 모델을 사용합니다. Polkadot은 WebAssembly (Wasm)를 “메타-프로토콜”로 사용합니다. Polkadot의 검증인이 Wasm 환경 내에서 실행할 수 있는 한 샤드의 STF는 추상적일 수 있습니다.

Polkadot 샤드는 “parachain”이라고 합니다. parachain은 상태를 변경하려할 때마다 Polkadot 검증인이 독립적으로 검증할 수 있도록 블록 (batch of state transitions)을 상태 증명과 함께 제출합니다. 이 블록들은 Polkadot의 메인 체인인 Relay Chain에서 완결될 때, 비로소 완결됩니다. 따라서 모든 parachain은 전체 시스템과 상태를 공유합니다. 이는 하나의 parachain에서 재구성 (re-organization)이 발생하는 경우, 다른 parachain들과 Relay Chain에서 재구성이 필요하다는 것을 의미합니다.

Cosmos는 Tendermint 체인을 연결하는 브릿지 허브 모델을 사용합니다. 시스템은 여러 허브를 가지며 (기본 허브는 “Cosmos Hub”), 각 허브는 “zone”이라고 하는 외부 체인 그룹들과 연결됩니다. 각 zone은 충분한 스테이킹과 탈중앙화된 검증인 그룹으로 체인의 보안을 책임져야합니다. zone은 IBC (Inter-Blockchain Communication) 프로토콜을 사용하여 허브 간 메시지와 토큰을 전송합니다. zone은 상태를 공유하지 않기 때문에, 하나의 zone에서 재구성이 일어나도, 다른 zone에서는 재구성이 일어나지 않게 됩니다. 이는 각 메시지의 발신인 보안이 수신인 신뢰의 신뢰 범위가 된다는 것을 의미합니다.

Architecture

Polkadot

Polkadot은 시스템의 메인 체인으로 작동하는 Relay Chain을 갖고 있습니다. Polkadot의 모든 검증인은 Relay Chain에 존재합니다. parachain은 parachain 블록을 구성하고 검증인에게 제안하는 collator를 갖고 있습니다. collator는 보안에 대한 어떠한 책임도 갖고 있지 않으므로, 강력한 인센티브 시스템을 필요로 하지 않습니다. collator는 하나의 parachain 블록을 6초마다 Relay Chain 으로 제출할 수 있습니다. parachain에서 블록이 제출하면, 검증인은 체인에 커밋하기 전에 가용성 및 유효성 검증을 수행합니다.

parachain의 슬롯은 제한되어 있기 때문에 parachain 후보들은 최대 2년 기한의 슬롯을 예약하기 위한 경매에 참여합니다. parachain 슬롯을 위한 자금 조달이 어렵거나 6초의 블록 시간으로 실행이 필요없는 경우를 위해 Polkadot은 parathread도 갖추고 있습니다. parathread는 종량제 방식으로 실행하며, 필요한 때에 블록을 실행하도록 지불하는 방식입니다.

자체적인 완결 프로세스를 갖고 있는 체인(e.g. Bitcoin)과 상호 작용하기 위해, Polkadot은 양방향 호환성을 제공하는 브릿지 parachain을 갖고 있습니다.

Cosmos

Cosmos는 “Hub”라는 메인 체인이 “zone”이라고 일컫어지는 다른 블록체인과 연결되어 있습니다. Cosmos는 여러 개의 허브가 있을 수 있지만, 이번 포스트에서는 하나의 허브를 가정하도록 하겠습니다. 각 zone은 자체 상태를 유지해야 하기 때문에 자체적인 검증인 커뮤니티를 가져야합니다. zone이 다른 zone과 통신할 때는, IBC를 통해 packet을 보냅니다. 허브는 토큰 잔액에 대한 멀티 토큰 원장을 유지합니다. (메시지는 전달되지만, 상태는 허브에 저장되지는 않음)

zone은 light client로 허브의 상태를 모니터링하지만, 허브는 zone의 상태를 추적하지 않습니다. zone은 허브를 통해 다른 체인들에 메시지를 전송하기 위하여 결정론적 완결 알고리즘 (현재 Tendermint 사용)을 사용해야하며, IBC 인터페이스를 구현해야 합니다.

Cosmos는 브릿지 parachain과 유사한 “peg zone”을 사용하여 외부의 체인들과 상호 운용될 수 있습니다.

Consensus

Polkadot은 BABE와 GRANDPA라는 두 개의 서브 프로토콜로 구성된 하이브리드 합의 프로토콜을 사용합니다. 이 프로토콜은 “Fast Forward”라고 불립니다.

BABE (Blind Assignment for Blockchain Extension)는 검증인에 슬롯을 할당하는 VRF (verifiable random function)와 각 슬롯에 작성자가 있는지 확인하는 폴백 라운드 로빈 패턴을 사용합니다. GRANDPA (GHOST-based Recursive Ancestor Deriving Prefix Agreement)는 개별 블록이 아닌 체인에 투표합니다. BABE는 완결된 체인이 확장되도록 후보 블록을 제안하며, GRANDPA는 수백만 블록을 일괄적으로 완료시킵니다.

이러한 작업의 분리는 여러 이점이 있습니다. 첫째로 블록 생성과 완결을 위한 전송 복잡성의 감소를 의미합니다. BABE의 복잡도는 선형으로 증가하기 때문에 네트워크 오버헤드가 작은 수천 블록 생성자로 쉽게 확장할 수 있습니다. GRANDPA는 이차 복잡도를 갖지만 지연 시간 또는 하나의 배치에서 완결되는 블록 수에 따라 감소합니다.

둘째, 완료되지 않은 블록으로 체인을 확장할 수 있으면 검증인은 광범위한 가용성 및 유효성 검사를 수행하여 유효하지 않은 상태 전환이 완결된 체인에 포함되는지 확인할 수 있습니다.

Cosmos는 허브와 zone 모두 즉각적인 완결성을 제공하는 라운드 로빈 프로토콜인 Tendermint 합의를 사용합니다. 블록 생성과 완결은 동일한 알고리즘 선상에 있기 때문에, 하나의 블록을 한번에 생성하고 완결시키게 됩니다. GRANDPA와 같은 PBFT 기반의 알고리즘이기 때문에 이차 전송 복잡도를 갖고 있지만, 한번에 한 블록만 완결할 수 있습니다.

Staking Mechanics

Polkadot은 NPoS (Named Proof of Stake)를 사용하며, 순차적 Phragmén 알고리즘을 사용하여 검증인을 선택합니다. 검증인 그룹의 크기는 거버넌스 (1,000명의 검증인으로 계획)에 의해 설정되며, 검증인 인프라를 수행하지 않는 지분 위임자는 16명의 검증인을 지정할 수 있습니다. Phragmén’s 알고리즘은 최적의 지분 배분을 선택합니다. 여기서의 최적은 가장 고르게 지분이 배분되는 것입니다.

Polkadot의 모든 검증인은 합의 프로토콜에서 동일한 가중치를 갖고 있습니다. 이는 체인에 대한 지지가 2/3 이상이 되기 위해서는 2/3의 지분보다 2/3 이상의 검증인 지지가 필요하다는 것을 의미합니다. 마찬가지로 검증인 보상은 지분량이 아닌 블록 생성과 완결 정당성 등의 그들의 활동과 관련있습니다. 이렇게 하면 지분율이 낮은 검증인을 지명할 인센티브가 생기는데, 이는 그들이 보유한 토큰에 대해 더 높은 수익을 얻게 되기 때문입니다.

Cosmos 허브는 Bonded Proof of Stake (a variant of Delegated PoS)을 사용하여 검증인을 선출합니다. 지분 위임자는 자금을 본딩하고 위임할 토큰 수와 함께 위임할 각 검증인에 대한 위임 트랜잭션을 제출해야합니다. Cosmos 허브는 최대 300명의 검증인을 지원할 계획입니다.

합의 투표와 보상은 모두 Cosmos 지분에 기반합니다. 합의 투표의 경우 2/3 이상의 검증인이 아닌 2/3 이상의 지분이 커밋되어야 합니다. 마찬가지로, 총 지분의 10%를 보유한 검증인은 보상의 10%를 얻게 됩니다.

마지막으로 Cosmos는 지분 위임자가 거버넌스 투표에서 투표하지 않으면, 검증인이 투표권을 갖게 됩니다. 이로 인하여, Cosmos의 많은 검증인은 프로토콜에 대한 더 많은 통제권을 획득하기 위해 수수료를 무료로 합니다. Polkdadot은 거버넌스와 지분 위임이 완전히 분리되어 있습니다. 검증인을 지명한다고 해서 거버넌스의 의결권이 검증인에게 할당되는 것은 아닙니다.

Message Passing

Polkadot은 parachain에 XCMP (Cross-Chain Message Passing)을 사용하여 임의의 메시지를 보낼 수 있습니다. parachain은 서로 연결되어 있으며 설정된 채널을 통해서 메시지를 보낼 수 있습니다. collator는 parachain의 풀노드이며 동시에 Relay Chain의 풀노드이기 때문에 collator 노드는 메시지 전달의 핵심 구성 요소입니다. 메시지는 Relay Chain을 통하지 않고 포스트 및 채널 작업 (열림, 닫힘 등)만 Relay Chain으로 들어갑니다. 또한 시스템 경계에 데이터를 유지함으로써 확장성을 향상시킵니다.

체인 재구성의 경우, Relay Chain의 포스트 증명에 따라 메시지를 재구성 시점으로 롤백할 수 있습니다. parachain 간 공유된 상태는 메시지들이 신뢰 범위로부터 자유롭다는 것을 의미합니다. 모두 동일한 컨텍스트에서 작동하고 있습니다.

Polkadot에는 크로스 체인 메시지에 대한 공유 로직을 제공하는 SPREE라는 프로토콜이 있습니다. SPREE로 전달되는 메시지는 수신 체인의 증명 및 해석에 대한 추가적인 보증을 전달합니다.

Cosmos는 IBC (Inter-Blockchain Communication)라는 크로스 체인 프로토콜을 사용합니다. Cosmos의 현재 구현에서는 허브를 통해 zone 간에 토큰을 전달합니다. 그러나 Cosmos는 임의의 데이터를 전달하기 위한 새로운 규칙을 갖고 있습니다. 그러나 체인은 상태를 공유하지 않기 때문에, 수신한 체인은 메시지 발신인에 대한 보안을 신뢰해야만 합니다.

Governance

Polkadot에는 제안을 통과시킬 수 있는 여러 방법이 있는 multicameral 거버넌스 시스템을 갖고 있습니다. 모든 제안은 결국 퍼블릭 투표를 통하여 통과되며, 다수의 토큰으로 결과를 제어할 수 있습니다. 투표율이 낮은 경우, Polkadot은 adaptive quorum biasing을 사용하여 통과 임계값을 설정합니다. 투표는 체인 상의 Treasury 자금 배분을 포함한 다양한 제안이 포함될 수 있습니다. 결정은 체인 상에서 일어나며 구속력이 있으면서 자율적입니다.

Polkadot 체인 상에는 허가를 필요로 하지 않는 주체들이 있습니다. 가장 중요한 주체는 Phragmén 방식으로 선출된 계정들로 구성된 위원회입니다. 의회는 소수 이익을 대표하며, 따라서 위원회가 만장일치로 승인한 제안은 퍼블릭 투표에서 통과 임계값이 낮습니다. 기술 권고(e.g.: 버그를 수정하기 위한 긴급 런타임 업그레이드)를 위한 기술 위원회도 있습니다.

Cosmos는 투표를 통과시키기 위하여 coin-vote signalling을 사용합니다. 거버넌스 결정의 실제 실행은 다른 블록체인들과 마찬가지로 프로토콜 포크를 통해 수행됩니다. 모든 토큰 보유자들은 투표할 수 있지만, 위임자가 투표를 기권하는 경우, 검증인이 투표 권한을 위임받습니다. Polkadot의 검증인은 그들을 지명한 이로부터 투표 권한을 받지 않습니다.

Upgrades

Polkadot은 Wasm 메타 프로토콜을 사용하여 하드 포크 없이도 체인 업그레이드가 가능하며, 제안을 성공적으로 반영할 수 있습니다. STF 안에서, 트랜잭션 대기열이나 오프체인 워커 등 모든 항목을 체인의 포크없이 업그레이드 할 수 있습니다.

Cosmos는 메타 프로토콜에 기반하지 않기 때문에, 일반적인 포크 메커니즘을 통해 업그레이드와 제안을 반영합니다.

Development Framework

Cosmos와 Polkadot의 각 체인은 STF를 갖추고 있으며, Wasm과 EVM (Ethereum Virture Machine) 스마트 컨트랙트를 지원합니다. Polkadot은 선행 Wasm 컴파일러와 인터프리터 (Wasmi)를 제공하지만, Cosmos는 인터프리터로만 스마트 컨트랙트를 실행합니다.

Cosmos 체인은 Go로 작성된 Cosmos SDK를 사용하여 개발할 수 있습니다. Cosmos SDK에는 체인의 STF에 포함될 수 있는 약 10개의 모듈(예: 스테이킹, 거버넌스 등)이 포함되어 있습니다. SDK는 Tendermint 위에 구축됩니다.

parachain의 기본 개발 프레임워크는 Rust로 작성된 Substrate입니다. Substrate는 체인의 STF에 사용할 40개의 모듈 세트 (“pallets”라고 불리는)인 FRAME이 함께 제공됩니다. 단순히 pallets를 사용하는 것 외에도, 개발자가 커스텀 모듈을 추가하고 체인에 대한 파라미터와 초기 스토리지 값을 구성함으로써 FRAME의 pallets를 구성할 수 있는 추상화 계층이 추가되어 있습니다.

Note: Polkadot은 메타 프로토콜 Wasm으로 컴파일되는한 어떠한 언어로 작성된 STF도 지원할 수 있습니다. 마찬가지로 작성된 STF는 Substrate 클라이언트 (database, RPC, networking, etc.)를 사용할 수 있습니다. 인터페이스에는 원시 요소만 구현하면 됩니다.

Conclusion

Polkadot는 신뢰 없는 환경을 구축하려면 확장성과 상호 운용성을 위한 공유 검증 로직이 필요하다는 원칙에 따라 설계되었습니다. 더 많은 블록체인이 개발되는데 따라, 보안은 경쟁적인 것이 아닌 협력적이어야 합니다. 따라서 Polkadot은 여러 체인에 걸쳐 검증 논리를 공유하고 보안 프로세스를 제공하여 체인들이 동일한 보안 컨텍스트 내에서 실행된다는 것을 인지한 상태에서 상호작용하게 합니다.

Cosmos 네트워크는 브릿지 허브 모델을 사용하여 체인을 독립적인 보안 보증으로 연결합니다. 이는 체인 간 통신이 발신 체인에 대한 수신 체인의 신뢰에 의해 제한된다는 것을 의미합니다.

--

--