2019/04/21こんにちはユーキムラです。前回はCosmosとPolkadotの違いについて話をしました。CosmosとPolkadotの話をしよう大石さんの記事もあります。http://doublehash.me/cosmos-polkadot/補完関係の記事書きあうのはm0t0k1ch1さんのとき以来でなんか良いですね。トークンエコノミーとBFTエコノミーの比較さて、両者の本質的な違いはマージバリデーションの有無だということですが、マージバリデーションが標準的なPolkadotではセキュリティはすべて共有なのであんまり気にしなくていいのは誰の目にも明らかでしょう。逆に、各ブロックチェーンにブロック承認を任せてるCosmosは危険ではないのか、という発想もあるでしょう。セキュリティの観点ですね。CosmosHubが必要なのか毎度のごとく、チェーンAとそこのネイティブトークンA’、みたいな感じでB,B’,C,C’を考えます。Aでは、A’が100枚発行されているとしましょう。ここで、AからBにA’を60枚送ります。するとAでA’は40枚BでA’は60枚という残高になるはずですね。チェーンAが不正に、「Cに対してA’をまた60枚送るよ~」というIBCを送信しようとしたとします。AにはA’は40枚しかないので、60枚はホントは送ってはいけませんね。送れてしまうと、AでA’は-20枚BでA’は60枚CでA’は60枚となり、ブロックチェーンでマイナスの残高、つまり負債が発生することになります。分散型台帳で根本的に負債を表現することはできません。負債を抱えるアカウントは、捨ててしまえば良いからです。どのようにして「残高足りないのにAからCにA’を60枚送る」ような不正なIBCを防ぐことができるのか。マージバリデーションしてしまう(Polkadotの手法)各チェーンは、世の中に存在するすべてのIBC通信を監視する中継監視役をつくるこの最後の「中継監視役」こそがCosmosHubなのです。Hubを経由してやってもらうことによって、先程のような不正なIBCがあれば不正だと弾く役割があります。AがCosmosHubに「BにA’を60枚送る」とIBC送信したとしましょう。次にAがCosmosHubに対して「CにA’を60枚送る」という不正IBCを送るとしましょう。Hubは、不正だとして弾きます。「おめえ残高40しかないのになに60も送ろうとしてんだ」と。Hubの役割は、たったこれだけです。?と思う人もいるでしょうが本当にこれだけです。Hubの必要性しかしながら、これだけの役割でも、大きな役割です。いうのも、3つの解にあげた2つ目を採用する場合を考えてみましょう。「各チェーンは世の中に存在するすべてのIBC通信を監視する」というものです。チェーンA,B,Cがあったとして、これをやるにはAとBの通信BとCの通信CとAの通信の3通りの組み合わせがあります。この3経路を監視することになりますね。チェーンA,B,C,Dがあった場合を考えてみましょう。AとBの通信BとCの通信CとDの通信DとAの通信AとCの通信BとDの通信と、6通りも組み合わせがでてきてしまいます。高校数学で習う、\({}_n\mathrm{C}_r\)通りの数になるんですね。ここでは\({}_4\mathrm{C}_2=6\)です。ここでチェーンの数が5,6,7,とどんどん増えていくと...組み合わせの数は\({}_n\mathrm{C}_2\)通りとなり、nに対して指数関数的に増大します。組み合わせ爆発というやつです。nが大きい場合、\({}_n\mathrm{C}_2\)をすべて監視することは到底できません。Hubがあると、経路が\(n\)個に減るのです。ハブアンドスポーク理論的なやつですね。Hubと並列的または子的な別のHubが出てくることになった場合は、一番最上位の階のHubの数は高々3個が限界だと考えられます。nが3の場合はハブ化しても経路が減らないが、4から減るため。まあこのようにHubも無限に増やせるので、スケーラビリティという観点では無限と言えると思います。Hubはたったこれだけの役割しか(その大きな役割一つだけしか)やりません。そんなんでネットワークのセキュリティ保てるのかと思う人もいると思いますが、結論としては、セキュリティの問題は極めて限定的と言えると思います。Hubのバリデーターに悪意あるノードが1/3を占めた場合、IBCはうまく動かなくなります。各ブロックチェーン(ゾーン)はどうかというと、IBCで送られてきたトークン以外はすべて正常に作動します。Hubに関係なくバリデーションするので当然ですね。一方でPolkadotのようなマージバリデーションだと、ハブとなるチェーン(リレーチェーン)に悪意あるノードが多数を占めると、各ブロックチェーン(パラチェーン)はすべて作動しなくなります。要約すると、IBCでセキュリティの問題が別チェーンに波及するのはIBCで送ったトークンに限られる。それ以上にはなんの影響もない。このように影響を非常に小さくできるのは、バリデーションすら分散化されているから。IBCでできないアレよく、「PolkadotはCosmosのIBCと違って、トークンだけでデータもやりとりできる」というのを見かけます。Storeの値を読み取るくらいなら、各チェーンがKVSデータを見せるAPIを提供していればなんの造作もありません。この点はなんの差別化にもなっていないというかなんというか、「中にVMがあるかないか」によって生まれた違いでしかないのではないかと思っています。CosmosゾーンはVMを持たないのが普通で、ビジネスロジックはそのままチェーンにハードコーディングされ、むしろVM内プログラムにデータを受け渡すインターフェイスが必要ないだけではないかと。KVSデータとってくるくらい余裕なんですから。ようするに、マージバリデーションがデフォルトでついてるかついてないかで違う、そこだけが唯一にして最大の違いでしょう。