注目のクロスチェーンネットワークCOSMOSをイーサリアムを用いて考える
COSMOS ネットワークは簡潔に言うとTendermintチェーンなどのチェーンから成る、チェーンどうしでトークンのやり取りが可能かつスケーラビリティも理論上は無限なクロスチェーンネットワークです。
COSMOSネットワークにはHubチェーンとZoneチェーンの2種類のチェーンが存在しており、Hubチェーンというチェーンを中心に、Zoneチェーンとして無数のチェーンが接続されているという構造になっています。
このZoneチェーンどうしでトークンのやり取りができることがCOSMOSの特徴です。
そもそもどうやってチェーン間でトークンをやり取りするの?
COSMOSネットワーク間でのトークン移動はIBC(Inter-Blockchain Communication Protocol)というプロトコルを用いることで可能になっています。
IBCプロトコルを用いることで異なるチェーン間でのトークン移動が可能になりますが、どんなチェーンでも結び付けられるわけではありません。
IBCプロトコルを使うことができるチェーンの条件
- ファイナリティ
最も重要な条件としてチェーンのConsensusレイヤが高速なファイナリティ性を持っているかがあげられます。例えばPoWは確率的なファイナリティしか得られず確定的なファイナリティが得られないため直接IBCを用いたやり取りは不可能です。Tendermintチェーンは即座にファイナリティを得られるのでIBCを用いたチェーン間でのトークン移動が可能です。 - 独自のバリデータ群
チェーンが独自のバリデータ群を持っており、チェーンの状態はこのバリデータ群だけが決定する性質を持っていること。
具体的にどのようにしてチェーン間でトークンのやり取りをするのか
例としてチェーンAからチェーンBにaトークンを送信する場合で説明します。
まずチェーンAでaトークンがロックされるトランザクションが発生します。このaトークンがロックされたというトランザクションはチェーンAからチェーンBへと伝えられます。
チェーンBはチェーンAのバリデータたちを見に行き、このaトークンをロックするトランザクションがチェーンAのバリデータによって2/3以上の票数を得ているかを確認し、有効ならaトークン(のコピー)がチェーンBで生成されます。
あくまでチェーンBに存在するaトークンはコピーであることに注意しましょう。本物のaトークンはチェーンAでロックされています。チェーンBがチェーンAのバリデータによって2/3以上の票数を得ているかを確認しにいったのは、ロックされたトークンが本当にロックされていて動かせないのかを確認しに行ったのです。
COSMOSネットワークのアーキテクチャ
なぜCOSMOSはわざわざHubチェーンを中心として無数のチェーンが結びついたネットワークを構造しているのかということについて以下で、説明していきます。
最も単純なネットワーク構造であるネットワークのノードどうしが互いに結びついている構造ではダメなのでしょうか?
問題点1: チェーンの数が増えていくと接続の数が指数関数的に増えていく
例えば100個のチェーンがあったとしてそれぞれが他のチェーンすべてとつながっていた場合、接続の総数は4950に及びます。(100C2) 100個くらいなら問題ないですが、実際のZoneチェーンの総数は100個どころでは済まないのですぐに手に負えなくなることが容易に想像できます。
問題点2:信頼しなければならないチェーンの総数が多すぎる
あるZoneチェーンが他のZoneチェーンからトークンを受け取る場合を考えてみましょう。
例1.受け取るトークンが、送り手側のチェーンで生み出されたトークンだった場合を考えてみます。
このときは、受け手側のチェーンが、送り手側のチェーンのバリデータが不正をしないように信頼する(監視する) だけで問題ありません。
例2.受け取るトークンが、送り手側のチェーンではない別のチェーンで生み出されたトークンだった場合
このときは、送り手側のチェーンだけではなく、そのトークンが経由したすべてのチェーンのバリデータが不正をし ないように信頼しなくてはいけません。 実際にCOSMOSネットワークでトークンをやり取りする場合、トークンは色んなチェーンからチェーンへとせわしなく 移動していくことでしょう。トークンが循環するほど信頼しなくてはならないチェーンが増えるため、このネットワー ク構造は実用的ではありません。
COSMOSネットワークではHub-Zone型の構造をとることでこの2つの問題を解結しました。 この構造ならば各ZoneチェーンはHubチェーンと接続するだけでよくなり、Zoneチェーンが増えても接続数が指数的に 増えるということはありませんし、あるZoneチェーンが他のZoneチェーンが作ったトークンをHubから受け取る場合 も、受け手側のZoneチェーンはHubのバリデータとトークンを作ったチェーンのバリデータを信用するだけでよくなり ます。
チェーンどうしお互いに結び付いた場合のネットワーク構造。 ア個だけでも気が狂いそうですね。
COSMOSに組み込めるチェーン
COSMOSのZoneチェーンとして組み込めるチェーンについて説明していきます。
- 即時ファイナリティ性を持つチェーン
即時ファイナリティ性を持つチェーンはIBCプロトコルを用いてチェーンをCOSMOSのZoneチェーンとして組み込むことができます。
Tendermintはもちろんのこと、ETHもまた、現在のPoWから将来実装予定のCasper(FFG)アルゴリズムに移行することで確定したファイナリティ得られるようになるためCOSMOSネットワークに組み込めるようになります。 - ビットコインのような確率的ファイナリティしか持たないチェーン
BTCや現在のETHのようなチェーンは、確率的なファイナリティ性しか得られないので直接COSMOSと繋げるのは不可能です。
しかしチェーンとCOSMOSネットワークの間にPeg-Zoneと呼ばれる後述のプロキシチェーンを噛ませることでCOSMOSとの接続を実現させることができます。
Peg-Zone
COSMOSと接続するチェーンの状態を再現するチェーンです。
Peg-Zone自体は即時ファイナリティ性を持っているのでCOSMOSネットワークと接続できます。
例としてイーサリアムとCOSMOS間でトークンをやり取りする場合を考えて、Peg-Zoneがどのように働くか解説していきます。
まずPeg-Zoneでイーサリアムチェーンの状態がどの程度まで進んだ時にファイナリティとするかというラインを定義します。
例えば、イーサリアムチェーンで100承認が得られる、つまりそのブロックが生成された後新たに100ブロック生成されたらファイナリティが得られたと定義しましょう。
トークンをイーサリアム上からPeg-Zoneを介してCOSMOSのZoneチェーンに移す場合、まずイーサリアム上に作ったPeg-Zone用のコントラクトアカウントにトークンを送信し、コントラクトアカウントに送られてきたトークンはロックされます。
このトランザクションが100承認を得たら、Peg-Zoneチェーンは『トークンはロックされているという事実は覆らない』という解釈をして、Peg-Zoneチェーンにこのトークンのコピーが作られてCOSMOSで使えるようになります。
100ブロックと聞くとかなり時間がかかり面倒に聞こえるかもしれませんが、Peg-Zone上にコピーが生成されてからはCOSMOS上で自由に動かせるため、待たなくてはならないのはあくまでイーサリアムからPeg-Zone上にトークンを持ち込むときだけです。
もちろん逆もまた然りで、Peg-Zoneを介してCOSMOS上にあるチェーンのトークンをイーサリアムチェーン上に持ち込むことができるようになります。(ただし、あくまで実体はイーサリアム上のPeg-Zoneコントラクトアカウント内の数値です。)
スケーラビリティ
スケーラビリティを高める手段としては以下の2種類に分けられますがCOSMOSでは両方の手段を利用しています。
- 垂直型スケーラビリティ
チェーン自体の性能を高めて、単位時間当たりに処理できるトランザクションの量を増やそうという手段です。
有名な例を挙げるならBitcoinCashのブロックサイズ拡大ですね。
COSMOSネットワークの標準的なZoneチェーンとして使用されるTendermintチェーンでは1秒間に何千ものトランザクションの処理が可能になっています。(イーサリアムは1秒あたり7~15くらいです。) - 水平型スケーラビリティ
チェーン自体のスケーラビリティをいくら高めようと、チェーン単体では必ず処理できる限界が来ます。
水平型スケーラビリティは、チェーン自体を増やすことでスケーラビリティを図る手段です。COSMOSではこの方法により理論上無制限のスケーラビリティが可能になっています。
CosmosHub
CosmosHubのコンセンサスアルゴリズムはBFT型PoSシステムを取っています。デポジットトークンにはAtomというトークンを使っています。
CosmosのHubチェーンでのバリデータには、デポジット額(Atom)が上位100位のアドレスからのみ選出されます。
ただし、自身のデポジット額のみではなくデリゲーターから委託された分も含めたトータルのデポジット額が上位100位以内です。
デリゲーターはバリデータになれない、もしくは十分なデポジット額を用意できるがバリデータになりたくない人たちのことで自分のAtomをバリデータにデポジットすることができます。
AtomとPhoton:CosmosのHubチェーンで使われるトークン
Atom
Atomは上で述べたようにCosmosHubチェーンにおいてPoSのデポジットとして使われるためだけのトークンです。
HubチェーンにAtomをDeposit(ロック)することでホルダーはバリデータになりたい人はバリデータになるか、バリデータになりたくない人はバリデータに自分のAtomを委任することができます。
ホルダーは一度DepositしたAtomを引き出したいときには3週間待つ必要があります。
Photon
Photonトークンは手数料支払い用のトークンです。
なぜ2種類のトークンが存在しているのでしょうか?
PoS用のトークンとトランザクション手数料用のトークンを分けることで前者の流動性が低くなります。流動性が低くなるということは供給も低くなりトークン価格は高騰します。
トークン高騰により買い占めが難しくなるためTendermintの攻撃ラインである1/3のトークン所有を難しくし、ネットワークへの攻撃をしにくくすることが目的です。
まとめ
クロスチェーンネットワークのCOSMOSについて説明しました。COSMOSのZoneチェーンとして使われるTendermintについての記事も近日公開予定ですので、そちらのほうも併せて読むことをおすすめします。