Replicated Security, Opt-in Security, Mesh Securityを比較する

Takuya Fujita
CosmosJapan
Published in
15 min readJun 15, 2023

※本記事は、Cosmos HubのMediumに投稿されたComparing Replicated, Opt-in, and Mesh Securityを日本語に翻訳したものになります。現在Cosmos Hubの開発を行なっている、Informal SystemsのJehan Trembackさんによる記事です。

Cosmos HubはReplicated Securityを発表し、Shared Securityの開発をリードしています。

Replicated Securityの他に、今後のShared Securityとして、Opt-in SecurityとMesh Securityの2つが存在しており、本記事ではそれらがどういうものなのかを掘り下げながら以下の項目に沿って比較を行なっていきます。

  • Interchain Securityの種類としてこれらがどう違うのか
  • Cosmos HubがMesh Securityを通して、どういったポジションになるのか
  • どうCosmos Hubがそのポジションを活用するのか
  • Cosmos HubがOpt-in SecurityからMesh Securityに向けてどう興味深いコンセプトをもたらすのか

Replicated Security, Opt-in Security, Mesh Securityを比較する

Replicated Securityでは、Cosmos Hub上の(ほぼ)すべてのバリデータが(セキュリティをもらう側の)Consumer Chainも運用することになります。これは非常に強力なセキュリティの保証を提供します。Replicated Securityの各Consumer Chainは、Cosmos Hubと全く同じセキュリティを持つこととなります。 すべてのバリデータがすべてのConsumer Chain実行する必要があるため、各Consumer ChainはCosmos Hub上でReplicated Securityを実行するためのガバナンス承認を得る必要があります。その代わりに独自のバリデータセットを用意する必要はありません。

各Consumer Chainは同じバリデータセットを共有するため、synchronous IBCなどの機能が可能になるはずです。これにより、Cosmos HubとConsumer Chain間での即時のIBCトランザクションや、Replicated SecurityのConsumer Chain間でのフラッシュローンなどの機能が実現できる可能性があります。

現在、Replicated Securityは、パフォーマンス上の懸念があります。Tendermintは毎月約600ドルの維持費がかかり、各Consumer Chainの各バリデーターが別々のTendermintノードを実行する必要があるため、承認されるすべてのConsumer Chainは、このコストを維持できるほどの収益性が必要となります。Tendermintのパフォーマンスが向上すれば、この問題は軽減されるでしょう。

Opt-in Securityは、バリデータがConsumer Chainのノードを運用するかどうかを、個別に選択できるようにするものです。これには主に2つの利点があります。第一に、バリデータがConsumer Chainの運営に利益を感じない場合、運営する必要がなくなります。第二に、ガバナンスの提案なしに、コンシューマーチェーンをパーミッションレスに立ち上げることができるようになります。

ただし、欠点もあります。セキュリティの話は、Replicated Securityのように単純ではありません。Cosmos HubのバリデーターがConsumer Chainのノードの運用に参加したり、離脱したりを繰り返すため、Consumer Chain側のセキュリティが日々変動する可能性があります。

また、Opt-in SecurityのConsumer Chainは(Mesh SecurityのConsumer Chainと共に)「サブセット問題」と呼ばれる脆弱性を持つこととなります。Cosmos Hubのバリデータとデリゲータのセット全体は安全だと考えられるかもしれませんが、それらの中から選ばれた任意のサブセット(バリデータのセット)には悪意がある可能性が考えられます。極端な例では、たった一人のバリデータがオプトインした場合、そのバリデーターがチェーン全体を支配してしまうことになるのです。このサブセットの問題は、無効なブロックを生成したバリデータをCosmos Hub上でSlashすることができるfraud proofsを使用することで軽減させることができますが、常にlivenessかどうかの問題が存在することとなります。Consumer ChainにオプトインするCosmos Hubの悪意のあるサブセットは、罰せられることなく、常にそれらを阻止することができてしまいます。

Opt-in Securityが本当に価値を発揮するのは、Consumer Chainを立ち上げる時です。Replicated Securityとは異なり、ガバナンスの提案は必要ありません。また、Mesh Securityとは異なり、Consumer Chainは独自のバリデータ・セットを用意する必要がありません。Cosmos HubにてOpt-in Securityを用いれば、Consumer Chainは1回のパーミッションレス・トランザクションで、非常に高いレベルのセキュリティを得ることができるようになるはずです。

Mesh Security

Mesh Securityは、デリゲーターが他のチェーン上のバリデーターに対してデリゲートすることができるという点で、これまでのInterchain Securityとは少し違った仕組みになっています。Cosmos HubのバリデータセットがConsumer Chainのノード運営に関わることは一切ありません。他チェーンのバリデーターがコンセンサスの違反を犯した場合、そのバリデーターにデリゲートしている人はSlashされます。この設計により、チェーンは双方向に互いのセキュリティを高めることができ、これがMesh Securityと呼ばれる所以です。Opt-in Securityと同様に、Mesh Securityにもサブセット問題があるため、安全に動作させるためにはfraud proofが必要です。Replicated SecurityやOpt-in Securityとは異なり、Mesh Securityでは、Consumer Chainが独自のバリデータ・セットを持つ必要があります。このため、新規に参入するチェーンにとって、簡単な選択肢ではありませんが、すでに独自のバリデータセットを持っているチェーンにとっては魅力的に映るかもしれません。

Cosmos HubがMesh Securityを通して、どういったポジションになるのか

Mesh SecurityはCosmos Hubと競合しているという誤解があるようですが、それは間違いです。Cosmos Hubは、Mesh Securityに参加する上で非常に有利な立場にあります。そのため、Mesh Securityを利用して、Cosmos Hubをセキュリティプロバイダーとして追加したConsumer Chainは、その総セキュリティレベルを大幅に向上することができるようになります。Mesh Securityの世界では、Cosmos Hubのデフォルトのポジションは大きな成功をもたらすと考えられます。しかし、この成功を実らせるためには、2つのことが必要です。

まず、異なるブロックチェーンが実際にどの程度のセキュリティを持っているのか、ユーザーは正確な情報を得る必要があります。この点については、これまであまり注目されてきませんでした。というのも、現在、チェーンの安全性をその総ステーク数から導き出すことは些細なことだからです。あるチェーンに1億ドルのステークがある場合、チェーンをコントロールするには6,600万ドル(⅔+)以上、取引を検閲したりチェーンを停止させるには3,300万ドル(⅓+)以上が必要にななります。これらの数字は非常にシンプルに導き出されます。しかし、Mesh Securityの場合、それほど単純ではありません。

シンプルに考えた場合、あるチェーンにセキュリティを提供しているすべてのチェーンのステークされたトークンを単純に合計し、それをステークされた合計と考えるでしょう。しかし、これではvoding powerが考慮されておらず、正確ではありません。私たちは、すべての要素を考慮した数学的モデルを作成しました。ブロックエクスプローラーやウォレットがセキュリティの正確な指標を使用することは重要であり、それによってユーザーはメッシュセキュリティを使用したチェーンのセキュリティレベルを正確に評価することができるようになるからです。私たちは、ウォレットやブロックエクスプローラーが使用できるjavascriptプラグインを作成しましたので、ぜひ使ってみてください。こちらはその一例です。Mesh SecurityのプロバイダーであるCosmos Hubを削除してみて、セキュリティがどれだけ低下するか確認してみてください。

Cosmos HubがMesh Securityを実行しなければならない

第二に、より重要なのは、Cosmos Hubが実際にMesh Securityを実行することです。これに関しては議論が必要です。なぜなら、Mesh Securityは現在CosmWasm(Cosmos上のスマートコントラクトモジュール)上で実行されるアプリとして開発されていますが、Cosmos HubはCosmWasmを実行する環境を有していません。考えられる3つの解決策について説明します。

  1. Cosmos HubにCosmWasmを追加する

最もシンプルで簡単な解決策です。こうすることで、Cosmos Hubは他のチェーンと全く同じメッシュセキュリティの実装を利用することになり、すぐに適用させることができるようになります。なお、Cosmos Hubのガバナンスにて、CosmWasm利用を拒否した前例があります(proposal #69)。これまでの状況を考慮すると、新しい提案はまだコミュニティ内で抵抗があるかもしれません。

  1. CosmWasmの代わりに、Go言語を用いてモジュールでMesh Securityの実装を開発する

これは大規模な開発が必要となり、CosmWasmの実装に既に行われている多くの作業と重複するものを実装することになります。このリスクは、Go言語を用いたモジュールの実装がCosmWasmのメイン実装に遅れをとり、Mesh Securityを利用されるポジションとしてCosmos Hubが不利になることです。Goの実装がメインの実装になる可能性も少しはありますが、Cosmos Hubの優位性を選択せずに、これに挑むのは優先順位を間違えているように思えます。この実装を行うことにより、CosmWasmを載せない他のチェーンもMesh Securityを利用できるようになるかもしれませんが、それによりCosmos Hubが得られるメリットは別にありません。

  1. Replicated SecurityのConsumer ChainでMesh Securityを実行する。

Cosmos Hub自体がCosmWasmを載せなくても、CosmWasmが動作しているReplicated SecurityのConsumer Chain上で、CosmWasmで書かれたMesh Securityを実行できる可能性があります。この場合、Replicated Securityにいくつかの変更が必要になります。このConsumer Chainは信頼できるものである必要があります。

Consumer ChainからCosmos Hubに対して、IBCパケットを送信することで、追加の検証なしに個々のデリゲータのステークをslashする能力を持つ必要があります。これはReplicated Securityの実装に組み込むことが可能ですが、バリデーターを直接Slashするのではなく、Slash用のパケットを送信するために、Consumer Chain側にも若干の変更が必要になると思われます。また、Mesh Securityが進化するにつれて、この信頼できるコンシューマーチェーンはReplicated Securityに追加の変更を必要とし、さらなる実装が必要となる可能性もあります。

どの選択肢がベストなのか?

1つ目の選択肢である、CosmWasmをCosmos Hubに載せるというのは、現時点では既に十分テストされていますが、大きな決断になります。

3つ目の選択肢はより複雑ですが、いくつかの変更を加えて、CosmWasmで実装されるMesh Securityを利用することができます。しかし、その(CosmWasmの)Mesh Securityの仕様に変更が加えられた場合、Consumer Chainを実行しているReplicated Securityの仕様にも変更を加える必要がある可能性があります。これは、1つ目の選択肢よりもずっと大変な作業になるかもしれません。

2つ目の選択肢は、圧倒的に作業量が多く、Cosmos Hub側で用意するGo実装がCosmWasmで実装されるMesh Securityに遅れをとるリスクを伴います。例えば、CosmWasmを実行したくない他のチェーンや、2つの実装を持つことで技術仕様のレベルが上がるなど、Goの実装が存在することにメリットはありますが、これはCosmos Hubにとって直接のメリットではありません。また、分散型プロトコルの実装を複数持つことは管理や維持が大変なことです。私の知る限り、TendermintもIBCも、異なる言語による完全な相互運用性のある実装は存在していません。

先述したように、Opt-in Securityの最も刺激的な点は、新しいCosmosプロジェクトのためのローンチパッドとして機能する点です。新しいプロジェクトは、誰の許可もいらずに自分たちのプロジェクト、チェーンをOpt-in Securityを利用したConsumer Chainにするためのトランザクションを作成することができます。そして、Cosmos Hubのバリデータはこれらのチェーンの検証をするかどうかを選択できるようになります。Opt-in SecurityのConsumer Chainは、Cosmos Hubを利用して、多様なバリデータから高いセキュリティをもつチェーンをパーミッションレスで起動することができるようになります。

Opt-in Securityはすぐに準備できますが、Mesh Securityはもう少し時間がかかると思われます。Cosmos Hubは、このパーミッションレス・チェーン・ローンチパッドを、準備が整った時点でMesh Securityに拡張することができます。Mesh Securityで立ち上げられるチェーンも、Cosmos Hub上でのパーミッションレスなトランザクションから実行できるようになります。これにより、Cosmos Hubのバリデータは新しいMesh Secured Chainのバリデータセットに参加することができ、ATOMデリゲータは彼らにデリゲートすることができるようになります。

Mesh Securityを介して、新しいMesh Secured Chainを質の高いバリデータセットと高いセキュリティレベルで立ち上げることを考慮すると、Cosmos Hubが最も適した場所だと言えるでしょう。新しいチェーンをローンチすると、すぐに他のメッシュセキュリティチェーンに接続することができるようになります。

以上

Cosmos Japanより

Cosmos Japanには公式Discordがあります。日々CosmosやInterchainに興味のある人達が集まっています。本記事のわからなかったことや、開発に置いてつまづいたこと、基本的なCosmosのことまでなんでも気軽に聞いてみてください!お待ちしております。

Discordはこちら

--

--