RIFストレージ進捗情報:SWARMとのパートナーシップ締結

この記事は、RIFチームであるVojtěch ŠimetkaRinke Hendriksenによるブログポスト, RIF Storage: The First Chunksを和訳したものです。

数週間前、初めての分散型ストレージに関する記事が公開されました。その記事ではRIFストレージの必要性やビジョンに焦点を当てていましたが、その後多くの進展がありました。短く紹介すると、MVPの規模、重要課題の解決、ビジョン実現のためのEthereum Swarmとのパートナーシップ締結などです。このパートナーシップがこれからのカギとなります。SwarmとRIFストレージの両方を同時運用しながら、分散型ストレージで著名なSwarmプロジェクトから学ぶ機会を与えてくれるでしょう。そこで、今回のブログでは、このパートナーシップ実現までの過程やRIFストレージに関する概要をお伝えします。

コラボレーションの始まり

画像:rif x SWAR パートナーシップ

これまでの記事でお伝えしたとおり、分散化ストレージは平等な社会の実現にとって重要なものです。その重要さを踏まえれば当然ともいえますが、 IPFSStorjSiaMaidSafeSwarm等の様々なプロジェクトが分散型ストレージの実装に挑戦しています。これらプロジェクトにはそれぞれ特色があるものの、世界中の情報の管理方法・アクセス方法の変革を目指す点では共通の目的を持っています。この分野に関してRIFは二番手です。しかし、二番手という利点を活かして、上記のような興味深いプロジェクトのメリット・デメリットについて学べるという利点があります。
独自分析の結果、私たちが最も有望だと判断したのがSwarmです。独創的なデザインと強いビジョンを持っていることに加え、インセンティブ型分散型ストレージ実行への道筋がはっきりと見えたため(後ほど詳しく説明します)興味を抱いていました。分析をしていた時期に、Swarmが2019 Swarmサミットinマドリードの開催を企画中とのことを聞きました。そこで、代表としてVojtech Simetka氏・Ale Banzas氏をサミットに派遣し、結論を出すに至りました。これを機にSwarmプロジェクトの詳細もより明確に知ることができ、Swarmは理論的に優れているものの、根幹となるストレージ以外の機能(インセンティブ・メカニズム等)は未だ研究・試作段階のものもあることがわかりました。
インセンティブ型分散型ストレージはセカンドレイヤー決済ソリューションに大きく依存しています。その理由は、少額決済が、ノードに報酬を与えることでネットワークにとって有益な行動をさせるという仕組みの中でとても重要となるためです。私たちのチームはセカンドレイヤー・ペイメント・ソリューションの経験があることから(RIF決済、Lumino)、その経験を活かし、Swarmチームとコラボによるインセンティブ型ストレージの実現の可能性を見出したのです。
こうして、パートナーシップが結ばれ、 インセンティブ・トラックが生まれました。このトラックはSwarmのFabio Barone氏の指揮のもとRIFストレージのVojtech Simetka氏によって調整されたもので、Swarmチームの研究に基づき、最低限の装備(参照:MVP スコープ)でインセンティブ型ストレージを実現することを目的とします。
さらに、3か月以内に(RBTCやETH等の)EVM通貨や、(RIF等の)ERC20トークンのサポート体制を整えていく予定です。

RIFストレージとSwarmの基礎知識

ここからは、分散型ストレージ(この場合、Swarm)の仕組みやインセンティブの役割について説明していきます。さらなる詳細につきましては、公式なSwarm ドキュメントを参照ください。
分散型ストレージでユーザーが求める動作は、主にファイルのアップロードダウンロードの2つです。まずは、アップロードの手順から見てみましょう。以下の3ステップに分けられます:

  1. ファイルをノードにアップデート
  2. ファイルの準備(チャンク化、暗号化)
  3. チャンクのネットワークへの分散

最初のステップはシンプルです。ユーザーは起動中のSwarmノードに接続しファイルをアップロードします。この際、例えば、スウォームアップ <filename>のコマンドを使ったり、近い将来にはRIFストレージUIのようにユーザーインタフェースでもアップロードできるようになるでしょう。次のステップでは、ネットワークにアップロードできるようファイルが準備されます。ファイルはチャンク¹と呼ばれる小さいパーツに分けられ、セキュリティーとプライバシーのため暗号化されます。以下のGIFでイメージをつかめるでしょう。

1・・・チャンク

データ通信やファイル形式などの分野で、ひとまとまりのデータの塊のことをチャンク(チャンク形式、チャンク構造)ということがある。一つのチャンクは、データ本体の先頭にそのデータについての情報(データ長やデータの種類、識別子など)を付加した形になっており、これをいくつも連ねてデータ全体を表現する。

参考:e-Words より

画像:(上から下)ソースファイル➡チャンカー&パダー➡チャンク➡暗号化➡暗号化されたチャンク

これらチャンクは、統合性のあるハッシュツリーにマッピングされます。その樹形図は下記のようになります:

この樹形図では、木の根幹がファイル全体のハッシュを表し、枝分かれした部分が各チャンクのハッシュを表します。これらハッシュには2つの用途があり、1つはそれぞれのチャンクが統合されていることの確認、そしてもう1つはネットワーク内でのチャンクの位置特定です。チャンクは、ノードのアドレスとコンテンツのハッシュのXOR距離に基づいて配置されます。概略図は以下のようになります:

ファイルのダウンロードの過程も、同様のアルゴリズムに従いますが、順序は逆になります。ユーザーは、ハッシュツリーの根幹のルートハッシュを使って、ネットワークにあるファイルを要求し、個々のノードからのチャンク(ハッシュツリーのノードを残す)の要求に変換されます。最後に、チャンクの暗号が解かれ、ファイルがアセンブルされます。

インセンティブ化

先ほども少し言及しましたが、上記のようなネットワークにおいてインセンティブ化は極めて重要です。なぜでしょうか?ファイルをハードドライブに保存するとき、パソコンを1日中稼働させてチャンクをひたすら分割させるという作業を誰がなんのメリットもなしにやろうとする人はいないでしょう。健全なネットワークに貢献するためチャンクを提供しても良いとユーザーに思わせるような動機付けが必要となります。
そこでSwarmが紹介するのが、Swarm アカウンティング・プロトコル(SWAP)です。これは、要求/提供したデータの量をノードが記録する返報システムです。つまり、ある人が他人に100万チャンクを要求する場合、要求された人は100万チャンクを提供する代わりに報酬を得るという形になります。しかし、ファイルストレージのネットワークにおいて、このシステムでは問題が生じてしまいます。ネットワークの利用方法は様々あり(例:2時間ビデオ視聴、4時間のパソコン放置など)、ノードの能力には差があります(スマートフォンの場合大量のチャンクを提供することができません)。SWAPを使えば、ノードが残高計算を行ってくれます。ノードがユーザーにたくさんのチャンクを要求した場合、そのユーザーはセカンドレイヤー決済ソリューションを通じて支払い要求を送ることができます。

上の図がSWAPのメカニズムです。このように、ノードがチャンクの取引を行う中でどちらかの供給量が多くなった時(チャンクメーターがどちらかに傾いた時)に支払い要求が発生します。

デザインはとてもシンプルですが、このコンセプトは分散型ネットワークにおいてとても強力なものです。ビットコインや暗号通貨の人気から分かるように、報酬システムの構造がしっかりしていると、健全なネットワークのために望ましい態度をとるようノードを後押しすることができます。この場合、報酬目的のノードがネットワークに参加して最も重要なチャンクを高スループットサーバーへ提供することが期待されます。こうすることで、より速く強固なネットワークになります。さらに、このようなシステムでは誰でも無料でRSK/イーサリアムのエコシステムに参加することができます。

次のステップ

このように、素晴らしい技術を皆様にご利用いただけるよう開発に勤しんでいます。進捗状況は、インセンティブボードでご確認いただけます。開発者の方は、GitHubの課題から選んだものに対してポステージ等の研究のお手伝いをしていただけるとありがたいです。協働に関してもご気軽にご連絡ください。では、次回は公開前のRIFストレージUIについて特別にご紹介させていただきますので、ご期待ください。

原文:RIF Storage: The First Chunks by Vojtěch Šimetka & Rinke Hendriksen