【比較】Polkadot vs Ethereum vs Cosmos

m_web3
Unchained
Published in
13 min readApr 16, 2019
Source: Cosmos Network Website, Polkadot Network Website Ethereum Website

Polkadotが現状のブロックチェーンの課題を解決をしようとしているのはわかったけど、それってCosmosとかEthereum2.0と何が違うの?という方に向けて書いています。この記事ではPolkadotと同じようにInteroperabilityやScalabilityの課題を解決しようとしているCosmos、Ethereum2.0との比較を行います。

比較が主な目的なので、Polkadotについての解説はあまり含まれません。本記事の情報を最大限理解するために、まず「初心者のためのPolkadot」に目を通すことをお勧めします。

Ethereum vs. Polkadot

Ethereumはスマートコントラクトというp2p計算処理されるプログラムをオンチェーンでデプロイできるプラットフォームです。Ethereum1.xは現在のEtheumの事を指し、Ethereum2.0はspecで計画されているsharded chainを指します。二つは仕様、目的共に大きく異なりますので、別々に考えます。

Ethereum1.x

Ethereum現モデルとPolkadotとの違いはかなり大きいと言わざるを得ないでしょう。まず、EthereumはSmartContractのデプロイができる単一チェーンであるのに対し、PolkadotはWhitepaperでも述べられているように”fully extensible and scalable blockchain development, deployment and interaction test bed” — 完全拡張可能・スケーラブルブロックチェーン開発、デプロイ、操作テスト環境です。パブリックは勿論、プライベート・コンソーシアムチェーンの追加や多種の異なるチェーン同士のコミュニケーションも可能にしています。

Ethereum2.0

Eth2.0 specに示されているshard chainとbeacon chainは、PolkadotのRelaychainとparachainに比較できます。一見課題解決方法として似ているように見えますが、shard chainはhomogeneous(同種)であるのに対し、Polkadotのparachainはheterogeneous(多種)です。これはつまり、Polkadotは多種多様なロジックに基づいたチェーン同士が共存できる柔軟性を提供しのに対し、Eth2.0 shardsは単一のロジックしか許可していません。さらに、Polkadot上のparachainはセキュリティプールによってセキュリティが守られます。beacon chainはLMD(Latest Message-Driven)GHOSTをフォーク選択ルールとしていますが、PolkadotのRelaychainはブロック作成をBABEに、FinalityをGRANDPAにしています。

Cosmos vs. Polkadot

CosmosはPolkadotと同じように相互互換性を目的としているプロトコルである故に、他のどのプロジェクトよりもPolkadotの競合となる可能性が高いでしょう。ここでこの二つのプロジェクトの違いを明確にして置きたいと思います。既にこの比較はPolkadot Wikiでまとめられているので、詳しく学びたい方はそちらを参照してください。

hubとzone vs. parachainsとrelaychain

Cosmosではチェーンはzoneと呼ばれ、それぞれがTendermintコンセンサスアルゴリズムの個別のインスタンスを使っています。チェーン間コミュニケーションはマスターのhubで処理され、転送は通貨にのみ限られます。一方のPolkadotではhubに相当するrelaychainは通貨だけではなく、メッセージやアイデンティティなどのarbitrary(任意的)なデータ転送をもサポートしています。また、Polkadotはparachainが繋がるrelaychainhは、常に単一の正規チェーンのみであることを確証していますが、Cosmosはhubとzoneの自由なデプロイを許可しています。

コンセンサス

CosmosのコンセンサスアルゴリズムであるTendermintはPBFT(Practical Byzantine-Fault-Tolerent)に基づいたコンセンサスアルゴリズムであり、1/3のbyzantineまで安全。有効性は最新のブロックのハッシュを含んでいることにより認められるため、ブロック生成とFinalityが一体である。Polkadotは説明したようにブロック生成(BABE)とFinality(GRANDPA)のハイブリッドモデル。TendermintのコンセンサスはBizantineが1/3未満である(n > 3f (nは全投票数、fはByzantine))に基づいており、Finalizeには最低でも3f + 1の正直な投票数が必要になる。TendermintとGRANDPAは1/3がByzantineになった場合、直ちにFinalize作業を安全に中止することができるが、ここでの違いはBABEはブロック生成を続けることができる点です。

Finality

GRANDPAとTendermintのFinalityはValidator間のメッセージのBandwidthとLatencyに影響され、Validatorの数の増加とともに送られるメッセージの数が比例するため、Finalityに必要な時間と処理が増加する。これはトレードオフであり、少数のValidatorはネットワークのセキュリティを犠牲に高速なFinalityを実現し、多数Validatorは速度を犠牲に堅牢なネットワークを実現する。分散型ネットワークはセキュリティを重視するため後者が好まれやすく、CosmosもPolkadotもその例外ではない。

ここでの違いは、ブロック生成とFinalityを分離するかしないか。Cosmosは先ほど説明したように、ブロック生成には最新のブロックのハッシュが必要なため、Finalityの順番待ちが発生します。PolkadotではFinalityが滞ったとしても、ブロック生成は別で行われるため、十分な数のValidatorが投票するまでの順番待ちが起こらず、生成されたブロックはチェーン毎にまとめてFinalizeされるので高速Finalityを実現できます。テストネット実装はPoS3で完了しているのでここでFinalizeが行われている様子を実際に見ることができます。執筆時点(4, April)では各ブロック約6秒でFinalizeされています。Cosmosの実際のFinalityの時間は見つかっていないので、知っている方いたら教えてください。TestnetはOfflineでした。

セキュリティプール

PolkadotはRelaychainのValiadaorセキュリティをプールするように設計されています。これにより、Relaychainに繋がるParachainは提供される安全なセキュリティの恩恵を受け、コンセンサスや経済的セキュリティを管理するコスト無しに、チェーンが専門とすることに集中できます。もちろん、独自のコンセンサスアルゴリズムを使うことも可能です。

一方、Parachainの対であるCosmosのZoneは、それぞれ独自の政治を行い、Tendermintのインスタンスを持つ必要があります。これが意味することは、Zoneのコンセンサスやセキュリティは各自が管理する必要があるということで、Validatorが少ないZoneでは十分な安全性が確保できません。また、CosmosのZoneは経済的に独立しているため、お互いを信頼して取引することはできず、二重支払いが行われた事実を知るにはトークンの移動を追跡しているCosmos Hubで情報を得るしかありません。

まとめると、PolkadotはCosmosに比べると遥かに強いチェーン間とRelaychain全体のセキュリティを提供していると言えます。さらにParachainは独自のコンセンサスやチェーンロジックを実装できるという柔軟性も兼ね備えています。

チェーン間コミュニケーション

CosmosはIBC(Inter-blockchain communication)をzone間のメッセージ交換に採用しています。IBCプロトコルは開発段階であり、現状のCosmos hubに実装されているものとは異なるため、Polkadotと比較することは困難です。パブリックの情報から考えるに、IBCはTendermintを動かしているzone間のトークンの転送のみをサポートしています。Cosmosはチェーンが”fast finality”と”accumulator proofs”の二つの要素を持っているため、非依存的だと述べられていますが、詳細ドキュメントは見つからず、現状ではTendermintのみをサポートしていると考えられます。(つまりagnostic 非依存的ではない。)

対するPolkadotのICMP(Interchain Message Passing)はParachain間でのトークンに限らない任意のメッセージの転送を許可しています。詳しくはICMPにて。

外部チェーンコミュニケーション

CosmosはPeg Zoneと呼ばれるBridgeに相当する外部チェーンを繋ぐレイヤーを持ち、EthereumやBitcoinといった異なるコンセンサスメカニズムを採用するチェーンとトークンの互換性を提供している。これにはセキュリティプールモデルが使われ、Peg Zone内のEthereumノードを持つ特殊なValidatorを信頼する必要がある。CosmosからEthereumのトークン移動の場合、ValidatorはネイティブトークンAtomをロックし、ERC20のAtomトークンを発行する。EthereumからCosmosの場合、EthereumのLock-inコントラクトにEtherをロックし、IBC上で送りあえる”Cosmos-Ether”が発行され、相互互換性が確保される。PolkadotのBridgeがどうBitcoinやEthereumとBridgeを介してコミュニケーションをとるのかについては「初心者のためのPolkadot」で詳しく解説しています。

下図内のABCI(Application Blockchain Interface)はTendermintとブロックチェーンを分ける境界線で、ABCIが唯一ブロックチェーンのState状態を更新できる入り口であるため(Tendermintしか更新できない)、ブロックチェーンはセキュアに保たれる。

Cosmos Hubが他の4つのTendermint上で動作するブロックチェーンとインタラクトしている。図左上はPegZoneによりEthereumとCosmos間のトークン移動ができる。

プログラム言語

Cosmosのcosmos-sdk(SRMLに相当する)はGo言語で書かれており、他の言語をサポートする予定は発表されていません。それに比べ、PolkaddotではWebAssembly(Wasm)を採用しており、Wasmにコンパイルできる言語ならどの言語でも開発を行うことができます:Rust, Go, C++, TypeScript, OCaml, Brainfuck など。SRMLはRustで書かれていますが、Go言語やC++での実装もChainSafeなど他のプロジェクトで進んでいます。Polkadotでは様々な言語で開発可能ですが、CosmosではGoしか選択肢がありません。

まとめ

今回比べたことを以下に表としてまとめました。また、筆者はCosmosについて詳しい訳ではないため、本記事に間違いがあればお気軽にお知らせください。今回カバーできなかったCosmosのメリットもあると思いますので、より良い比較のためにCosmosファンの方はぜひ教えてください。

Cosmos vs Polkadot 早見表

よくある質問

・ParachainはRelaychainに繋がる必要があるのか、それともCosmosのように独自のチェーン内政治を行えるのか。

Parachainがセキュリティプールの恩恵を受け、チェーン間コミュニケーションを行いたいのなら、Relaychainに繋がる必要がある。しかしSubstrateで作ったチェーンはRelaychainに繋がる必要はなく、上の恩恵が必要ないのならCosmosのZoneと同じように、独自チェーン内政治を実装することができる。BridgeやPeg Zoneを使うと外部チェーンとも限られたコミュニケーションが可能。

・GRANDPA/BABEはPBFTと似ているか。

全く異なり、GRANDPAはFinalityガジェットで、BABEはブロック生成メカニズムである。GRANDPAはEthereumのCasperに似たGHOSTからアイデアを得ており、BABEはOuroboros Praosに似たメカニズムを採用している。

この記事は以下の資料を元に執筆しました。

Blockchain Interoperability: Cosmos vs. Polkadot, https://medium.com/@davekaj/blockchain-interoperability-cosmos-vs-polkadot-48097d54d2e2

Polkadot Wiki Comparison, http://wiki.polkadot.network/en/latest/polkadot/learn/comparisons/

Polkadot Wiki Cosmos Comparison, http://wiki.polkadot.network/en/latest/polkadot/learn/comparisons/cosmos/

Reddit cosmos vs polkadot comparison, https://www.reddit.com/r/dot/comments/b8tw3g/cosmos_vs_polkadot_comparison/

--

--