ブロックチェーン間連携 ~Polkadot & Cosmos~

Yuya Sugano
24 min readMay 9, 2019

--

PolkadotやCosmosなどインターオペラビリティ(相互運用性)を目指すプロジェクトが加速しています。背景には単一のブロックチェーンだけでなく他のチェーンのデータや使用されるトークンの交換を可能にしたいという動機が存在します。この記事ではPolkadotとCosmosの違いの記事の要約とInter-blockchain Communication Protocolについて書いてみました。

Internet of Blockchains

DApps開発における制約

ブロックチェーンを利用したDApps(Decentralized Applications)の開発においてはその採用するブロックチェーンの仕様が大きく影響してきます。

EthereumのスマートコントラクトによるDAppsの実装では、TPS(Transaction per second)の低さによる処理の遅延や、段階的なハードフォークが、実用的なアプリケーション開発を遠ざけている原因の1つとして考えられています。TPSへの対策としてはサイドチェーンを利用して処理をオフロードするPlasma等がレイヤー2技術として検討されています。Ethereumはまだ開発途中の段階であり、現在のConstantinopleからSharding やPoS(Proof of Stake)の実装を経てSerenityへ移行することでハードフォークは限定的になると考えられますが、アプリケーションがレイヤー1のブロックチェーンコアの技術仕様に依存している状況は変わりません。

例えば、Ethereumで独自のハッシュ関数を実装した場合、対象の関数呼び出しに対しては毎回ガスコストがかかります。その関数呼び出しはアプリケーションユーザの操作によって呼び出されるため、ユーザは本来不要であるはずのコストを負担する可能性が発生します。またEthereumではネイティブな文字列型のサポートがなく(検索やスプライシング等がない)、独自の実装を施す必要がありますが、そのようなライブラリの呼び出しの場合にもガスコストがかかります。

※参考記事、Solidity Stringutils で文字列操作

既存のブロックチェーンにおいてはブロック生成時間、トランザクションコスト(ガスコスト)、ブロックチェーンのフォークの可能性など、アプリケーションにとって制約となる仕様が存在するためアプリケーションに応じたパブリックブロックチェーンを作成することも行われています。例えばBinanceでは分散型取引所DEXのために独自のBinance Chainを使用しています。[1]

PolkadotやCosmosはブロックチェーン間の相互接続性(インターオペラビリティ)を確立することでチェーン間のデータやコンセンサス、またトークンの交換を可能としています。

※Polkadotは開発中でまだ本番ローンチされていません

CosmosとPolkadotの違い5点

異なるブロックチェーンは独立して存在していますが、その相互接続性をCosmosとPolkadotは以下のようなアーキテクチャで解決しようとしています。

本編で紹介するCosmosとPolkadotの違い5点のサマリです。

  • ローカル/グローバルセキュリティ
    Cosmosは完全に独立したブロックチェーン、Polkadotは親であるリレーチェーンにグローバルステートの合意プロセス
  • メンバシップとガバナンス
    Polkadotではトークン『DOT』の保有量によるメンバシップやガバナンスあり、Cosmosは各ハブ/ゾーンに依っているがローンチ済みのCosmos HUBには『ATOM』というトークンあり
  • ブロックチェーン間通信
    Polkadotは IBC (inter-blockchain communication) 、CosmosではICMP (inter-chain messaging among parachains)を策定
  • コンセンサスアルゴリズム
    PolkadotのリレーチェーンはGRANDPAを採用、パラチェーンはSubstrateで開発、CosmosはABCIの仕様に基づいていればOK、Tendermintを使用可能
  • SubstrateとCosmos SDK
    ブロックチェーン開発のためのSDKが存在している、Cosmos SDKではGoを、SubstrateではRustなど複数言語でランタイムをコンパイル可能

以下の記事を参考に要約および加筆しています。図などは元ネタを参照してください(-_-;)

1.ローカル/グローバルセキュリティ

PolkadotではブロックチェーンがParachain(以下パラチェーン)として親チェーンであるRelaychain(以下リレーチェーン)へ接続されます。各子チェーンであるパラチェーンは独立したブロックチェーンとして独自のステートマシン、コンセンサスアルゴリズムやブロック処理をするコレータ(Collator)を持っています。同時にリレーチェーンにおいては『グローバルステート』を持ち、パラチェーンのブロックを統合した状態をファイナライズすることが可能です。

リレーチェーンのバリデータが強固でセキュアである限りは、共有セキュリティモデルとして各パラチェーンの整合性はグローバルステートにおいて担保されている状態と考えることができます。

※リレーチェーンでは独自のコンセンサスアルゴリズム GRANDPAが採用されている

問題となるのはリレーチェーンのバリデータがパラチェーンに対して優位である点です。例えばリレーチェーンの特定のバリデータがあるパラチェーンのコレータ(Collator)からのブロック更新を何らかの理由で拒否した場合、このパラチェーンのブロックはリレーチェーンへは取り込まれず、ブロックチェーンは孤立した状態となってしまいます。

この問題を防ぐためにPolkadotではバリデータの担当するパラチェーンをシャッフルし、それぞれがランダムにパラチェーンを検査するようにしています。またPolkadotでは Fishermenと呼ばれるバリデータの不正行為を監視する特殊なバリデータも動いています。工場などでよくいる部品の検査員を後ろから監視する人、みたいなイメージでしょうか。

対照的にCosmosではローカル(パラチェーン)やグローバル(リレーチェーン)といった共有セキュリティモデルは取らず、個別のセキュリティモデルです。つまり各チェーンはあくまで独立した個別のチェーンであり、Polkadotのリレーチェーンのような上位で全体のバリデートをするブロックチェーンはありません。

従ってCosmosではブロックチェーンの整合性をチェーン間で保つことはできません

Cosmosで各チェーンはZone(以下ゾーン)として他のゾーンへとトークンを送付できます。この送付されたトークンがHub(以下ハブ)という中継点を通過して対象のゾーンへとトークンをルーティングする、というものがCosmosにおけるインターオペラビリティです。このハブという中継点自体もブロックチェーンで、このトークンの中継を行うメッセージングプロトコルを IBCP (Inter-Blockchain Communication Protocol)、チェーン間通信プロトコルと呼んでいます。

IBCPはICS (Inter-chain Standards) として現在ドラフト段階にあります。IBCPについては活発な議論が現在行われているようです。[4]

2.メンバシップとガバナンス

まずはメンバシップにおける違いです。Polkadotにおいて親チェーンであるリレーチェーンは単一の存在で、サポート可能なパラチェーンの数は限られてきます。パラチェーンの割り当てはオークション形式となっていて、一定期間 DOT(Polkadotで使用される仮想通貨)をステークすることで割り当てスロットを獲得することができます。つまりPolkadotではこのオークションによってパラチェーンとして採択されるよう DOT を十分に購入しておくことが求められます(少し集権的なポイントです)。

Cosmosではブロックチェーンの接続(ハブとのIBCプロトコルのやり取り)に特別な要件はありません。ハブやゾーンは誰でも作成し接続することが可能です。ハブはそれ自体が独立したブロックチェーンで、他のブロックチェーンの中継点として作成されます。ハブはアプリケーション(DApps)を実装する目的で構築されるブロックチェーンではありません。

現在既にローンチ済みのハブとしては Cosmos HubIris Hubが存在します。[5]

Hey It’s Governance !!

メンバシップと同様にガバナンスについても違いがあります。PolkadotではDOTの保有者の投票によってカバナンスの決定がなされます。投票はDOTの保有量に応じたメカニズムです(Governanceのページに記載されている)。このDOTの保有量による投票システム以外に、Polkadotはカウンシル機能を持っています。カウンシルは6人から始まり24人まで2週ごとに増えていき、このメンバーは賛成投票によって選出されます。ガバナンスプロセスの詳細は現段階で不明確ですが、このプロセスによってリレーチェーンのブロックのパラメータやパラチェーンへのメンバシップ変更のルールなどを変更することができるようになります。例えば、パラチェーンの割り当てオークションで必要となるDOTの保有量を変更できます。このプロセスによってメンバシップ変更のルールを変更できますが、パラチェーンのメンバ自体を退出させるなどということは行えません。[6]

一方Cosmosでは単一の決まったガバナンスプロセスは存在しません。ハブも複数存在することができます。それぞれ異なったルールで運用されているため、Polkadotのリレーチェーンにおける統一されたガバナンスやカウンシルのようなものはありません。ただ注意点として、Cosmosでガバナンスという言葉が使用された際、多くの場合、Cosmos Hubのことを指しています。

Cosmos HubではATOMというトークンをガバナンスプロセスに参加するためのトークンとして使用しています。バリデータやデリゲータとしてATOMトークンをステークすることで合意プロセスに参加することができるようになっています。

3.ブロックチェーン間通信

Polkadotでは独自のメッセージでチェーン間(リレーチェーンとパラチェーン)の通信を行います。結果としてパラチェーン間でのスマートコントラクトのやり取りやトークンの授受が可能となっています。以下のようなことがPolkadotでは可能です。

  • 複数アプリにまたがるユーザ識別システム
  • チェーン間でのDEX処理(注文引き受けやエスクロー)
  • 他のチェーンやコントローラから受け取るIoTのメッセージ
  • クロスチェーンでのスマートコントラクト呼び出し
  • プライベートとパブリックチェーン間での任意のメッセージ授受

Cosmosはアセットトランスファーに注力しているため、よりシンプルなプロトコルと考えることができます。プロトコルとしてPolkadotでは IBC (inter-blockchain communication) 、CosmosではICMP (inter-chain messaging among parachains)を策定しています。以下で概要を見ていきます。

Polkadotは2つの異なるメカニズムを採用しています。1つは既に説明した共有セキュリティモデルによるグローバルステートの状態の保持で、リレーチェーン上でセキュリティを担保することにより各パラチェーンはトラストレスに連携することができます。

Ethereum(高セキュリティ)とVerge(という低セキュリティのブロックチェーン)間でトークンの連携を行うことを考えます。ETHをロックして、ETH-XVGトークンをVerge上で発行します。その後に低セキュリティであるVergeチェーン上で51%攻撃が発生し攻撃者はダブルスペントに成功したとします。この攻撃によって攻撃者はETHの保有額以上に引き出しが可能となりました。こういった攻撃や不正の問題はPlasma Cashなどでも散見されますが、基本的に高セキュリティのブロックチェーン側が低セキュリティのブロックチェーンを信頼する場合に問題が発生しやすいようです。この問題を防ぐためにPolkadotではバリデータの担当するパラチェーンをシャッフルし、ランダムにパラチェーンを検査するようにしています。

もう1つがFishermenと呼ばれるバリデータの不正行為を監視する特殊なバリデータです。工場などでいる部品の検査員を後ろから監視する人、みたいなイメージだと思います。このFishermenがセカンドラインとして監視を行い、バリデータによる不正なブロックの取り込みなどが発見されるとリレーチェーンをロールバックします。これによってパラチェーンの安全性は保たれています。※Fishermenを攻撃してから、バリデータで不正行為を行えばよいのでは?ということは考えました

Cosmosでは各ゾーンやハブはそれ自体が独立したブロックチェーンで、ばらばらなステートやブロック生成、コンセンサスアルゴリズムを持っています。Polkadotのような共有セキュリティモデルはありません。従ってあるゾーンのブロックチェーンにおいて不正なバリデータが存在する可能性は否定できません。

ここであるゾーンAが別のゾーンBとトークンの授受を行う場合、ユーザは中継点でルーティングを行うハブおよびゾーンBを信頼する必要があります。そのためには事前にゾーンBのチェーンのバリデータを検証しなければなりません。Polychain Labs や Zaki Manian’s iqlusion のような複数の有名なバリデータは他のブロックチェーンのバリデータを評価しています。ゾーンBのバリデータの評判が一般的に良い場合はゾーンBは信頼に足る可能性があります。ただしそれらの評価の正当性がどうかという問題はあって、またさらにそのブロックチェーンが信頼できるものだとしても、不正な行為によって問題が引き起こされる可能性も依然として残っています。

A case If Ethermint is compromised !!

仮にゾーンAからゾーンBにABCというトークンを送ったとします(上記の動画内ではEthermintというものを想定して会話している)。トークンABCはゾーンAでバリデートされている状況で、ダブルスペントが発生したとすると影響はゾーンAのブロックチェーンおよびゾーンBのABCトークンに限定され、他のゾーンのブロックチェーンへの影響はありません。Polkadotのようなグローバルステートはないので、局所的に、ゾーン単位やトークン単位でみて問題が発生します。

繰り返しになりますがPolkadotのリレーチェーンで不正なトランザクションが発生し、Fishermenの監視の目をすり抜けたとすると、グローバルステートへ影響するため、すべてのパラチェーンへも影響することになります。従ってリレーチェーンでは強固なセキュリティを担保する必要があります。Cosmosでは個別のゾーンのブロックチェーンにお任せの状態ですので不正があったとすると影響は限定的です。

4.コンセンサスアルゴリズム

Polkadotのリレーチェーンでは独自のコンセンサスアルゴリズム GRANDPAが採用されています。このアルゴリズムはすべてのパラチェーンのブロックをグローバルステートとしてファイナライズし、最大で1000程度のバリデータまで許容することができます。仕組みとして全てのバリデータが全てのブロックを承認するわけではなく、バリデータはそれぞれが正しいと思う生成ブロックへ投票するシステムになっています。アルゴリズムはそのブロックの過去の全てのブロックへ遡って投票を繰り返し、最終的にすべてのバリデータの投票でもっとも得票の多いブロックの集合体を見つけ、それが『グローバルステート』としてファイナライズされます。GRANDPAはまだ開発途中とのことです。

パラチェーンは独立したブロックチェーンとしてローカルなステートマシン、コンセンサスアルゴリズムやブロック処理をするコレータ(Collator)を持っています。Polkadotの提供するSubstrateでブロックチェーンを作成することができますが、現状はGRANDPA、Rhododendron、Aurandのコンセンサスアルゴリズムが選択できるようです。Substrateではコンセンサスアルゴリズム自体も個別で実装できるため、パラチェーンにおいては自由にブロックチェーンを設計・実装することができます。

Cosmosにはコンセンサスアルゴリズムの制約はありません。リレーチェーンのような『グローバルステート』はないので、ハブおよびゾーンすべてに独立したブロックチェーンを採用できます。ただしチェーン間のやり取りに関してはABCI (Application BlockChain Interface)という仕様を満たしている必要があり現状はTendermintのみが対応しているようです。[7]

TendermintのアルゴリズムはDPoSを使用しており、各ブロックをそれぞれのバリデータが承認し合うことで高速に動作するようになっています。テストでは200ノードのバリデータでブロック生成時間は6秒毎という結果が得られたそうです。CosmosもPolkadotのSubstrateのようにTendermintのSDKを用意しておりGoによってブロックチェーン開発が可能です。

Tendermintでは高速なコンセンサスを得られますが、それぞれのバリデータ間のコミュニーケーションが非常に活発であるため、バリデータ数が増えた際に通信にオーバーヘッドが生じます。200ノードで問題なく高速に動いていたとしても2000ノードになると速度は間違いなく低下します。Substrateではブロックチェーン開発は自由で、またCosmosにおいてもTendermint以外の選択肢は出てくると思うので、アプリケーションに応じてチェーンを選択することができるようになると考えます。

5.SubstrateとCosmos SDK

既に述べましたがPolkadotには Substrate、そしてCosmosにはCosmos SDKというSDKが用意されています。ブロックチェーン開発のために様々なモジュールを提供しており、ガバナンスのモジュール(投票システム)、ステーキングモジュール、認証のモジュールなどをSDKからネイティブに使用できます。大きな違いとしてはCosmos SDKではGoがサポートされていることに対して、SubstrateではRustを中心とした複数の言語で WASM (Web Assembly)というランタイムをコンパイルできるようになっていることです。

CosmosとPolkadotの比較

PolkadotのCosmosに対する利点としては、

  • アプリケーション開発者が自身のセキュリティを開発しなくてよい
  • データのやり取りが必要な場合は、共有セキュリティモデル下でグローバルステートの合意ができる
  • クロスパラチェーンなメッセージのやり取りでスマートコントラクトの呼び出しができる(トークンのみではない)
  • Substrateのほうがコンパイルに対応している言語が多い

です。

逆にCosmosに対するPolkadotの利点としては、

  • Cosmos Hubは稼働しているがPolkadotはまだ開発中である
  • PolkadotはDOTトークンを保持してパラチェーンがバリデートされるように担保する必要があるがCosmosはその必要がない
  • 不正な行為を行うバリデータばFishermenを突破した場合には、リレーチェーンからすべてのパラチェーンへ影響する可能性がある
  • アセットトランスファーへ注力したシンプルさ

です。

Is Blockchain Routing Protocl possible ??

インターネットはBGP (Border Gateway Protocol)というプロトコルを使用してネットワークアドレスをルーティングし、事業者や個人はTCP/UDPという基盤の上でアプリケーションを構築しています(WebであればHTTP/HTTPSを上位レイヤーとして使用)。

同様に各個別のブロックチェーンをBGPのAS(Autonomous System)と考えるとループフリーなブロックチェーンのインターネット(Internet of Blockchains / IoB)のようなものが成立しそうです。

Inter-blockchain Communication Protocol (IBC) のアーキテクチャにおいてIBCプロトコルをサポートするブロックチェーン間においては同レイヤーとしてデータやトークンの授受が成立するため、隣接するブロックチェーン間で行えるIBCによる通信を推し進め、複数のASを跨ぐデータトランスファーを確立することは難しくないと考えています。[8]

What is IBC ?

The inter-blockchain communication protocol is a reliable & secure inter-module communication protocol, where modules are deterministic processes that run on independent distributed ledgers (also referred to as blockchains).

IBC can be used by any application which builds on top of reliable & secure interchain communication. Example applications include cross-chain asset transfer, atomic swaps, multi-chain smart contracts (with or without mutually comprehensible VMs), and data & code sharding of various kinds.

IBCは、ブロックチェーン内のモジュール間通信プロトコルで、独立した分散型台帳つまりブロックチェーン上で動きます。

IBCはブロックチェーン間のアセットトランスファー、アトミックスワップ、マルチチェーンコントラクトやまたデータおよびコードシャーデングに使用できます。

Scope

IBC handles authentication, transport, and ordering of structured data packets relayed between modules on separate ledgers. The protocol is defined between modules on two ledgers, but designed for safe simultaneous use between any number of modules on any number of ledgers connected in arbitrarily topologies.

IBCは、複数の分散型台帳のIBCモジュール間の認証、トランスポート、データパケットの順序を規定します。

プロトコルはモジュールで定義されますが、複数のモジュール間接続、任意のネットワークトポロジに対応しています。

  • Data relay(ブロックチェーン間データ配送)
  • Reliability(TCPのようなシーケンスによる信頼性)
  • Flow control(上位アプリケーションに沿ったフローコントロール)
  • Authentication(データグラムの認証)
  • Statefulness(ステートフルな接続の監視)
  • Multiplexing(複数チャネルの同時並行接続のサポート)

IBCによって当該モジュールを規定するブロックチェーンは今後プロトコル標準に則ってブロックチェーン間の通信ができる可能性が大きくなります。EthereumなどIBCに対応していないチェーンについてはトランスレーターのノードなどを媒介することでIBCのモジュールへ変換したデータを渡すことが考えられるでしょう。

ブロックチェーンのBGPプロトコルを策定することで世界中どこのブロックチェーンからでもデータを送受信することができるようになるかもしれません。

まとめ

  • アプリケーション独自のブロックチェーンと既存のブロックチェーンの接続性が求められている
  • Polkadotでは『グローバルステート』の合意を形成するリレーチェーンがある、Cosmosではハブ/ゾーンともにすべて独立したブロックチェーンである
  • PolkadotはDOTトークンを保持してパラチェーンがバリデートされるように担保する必要があるがCosmosはその必要がない(Cosmos HUBは別)
  • Polkadotはブロックチェーン間通信のプロトコルとしてIBC (inter-blockchain communication) 、CosmosではICMP (inter-chain messaging among parachains)を策定している
  • コンセンサスアルゴリズムはリレーチェーンにGRANDPAを採用、CosmosはABCIの仕様に基づいていることが要件となっている
  • PolkadotにSubstrate、CosmosにはCosmos SDKというブロックチェーン開発のためのSDKが用意されている

--

--

Yuya Sugano
Yuya Sugano

Written by Yuya Sugano

Cloud Architect and Blockchain Enthusiast, techflare.blog, Vinyl DJ, Backpacker. ブロックチェーン・クラウド(AWS/Azure)関連の記事をパブリッシュ。バックパッカーとしてユーラシア大陸を陸路横断するなど旅が趣味。

No responses yet