Ceramic:Web3.0ソーシャルアプリケーションのために作られたミドルウェア
著者:Chloe, IOSGアソシエイト
"種子を求める"時代のストレージプロトコル:BitTorrent
BitTorrentと言うと、多くの人が馴染みがないと感じるかもしれません。しかし、"種子"のダウンロードを思い出すと、数年前にゲームや映画を楽しむためにネット上で"種子を求める"光景を思い出す人も多いでしょう。ここでの種子はBitTorrentのダウンロード用語です。種子ファイルは、ダウンロードファイルの保存位置、サイズ、ダウンロードサーバーのアドレス、発行者のアドレスなどのデータを記録したインデックスファイルです。
簡単に言えば、BitTorrentはP2Pダウンロードプロトコルであり、従来のウェブサーバーからのダウンロード方法よりもはるかに効率的です。具体的な例を挙げると、学生時代にクラスメートが集まって宿題を写す場面を想像してください。しかし、宿題を書いたのは一人の学生だけで、他の全員がその一つの答えを写さなければなりません。宿題を写す速度はそれぞれ異なり、写す人が増えるとこのプロセスは非常に困難になります。したがって、一般的な方法は、一部の学生が選択問題を写し、他の学生が空欄問題を写し、さらに他の学生が回答問題を写すという形で、みんなで交代しながら写すことで効率が上がります。
BitTorrentの原理は"宿題を写す"のと似ています。ダウンロードが必要なファイルを持つユーザーは、ファイルの一部だけをダウンロードし、ダウンロードの同時に私たちのコンピュータはサーバーとしてその部分を他のユーザーに転送します。つまり、私たちがダウンロードしている間、私たちもアップロードしている(他の人が私たちのコンピュータからダウンロードしている部分)ということです。他の人が提供するダウンロードを楽しむ一方で、私たちも貢献しているのです。 したがって、このファイルをダウンロードするユーザーが多ければ多いほど、種子が多くなり、同期が進む速度が速くなり、ダウンロード速度も速くなります。
(画像出典:IOSG Ventures)
去中心化ストレージの先駆者:IPFS
ダウンロード効率を大幅に向上させたものの、BitTorrentにはいくつかの問題が残っています。これらの問題を最適化するためには、IPFSに触れざるを得ません。多くの読者はIPFSにもっと馴染みがあると思いますが、現在有名な去中心化ストレージプロジェクトであるArweaveやFilecoinは、IPFSを基に構築されています。IPFSの日本語訳はインターステラーファイルシステムで、分散ストレージとファイル共有のためのネットワーク転送プロトコルです。
BitTorrentでダウンロードする際には、必ず種子ファイルを使用する必要があります。ユーザーはすべてのダウンロード内容のアドレスをこの種子ファイルに入れなければダウンロードできません。IPFSの顕著な利点の一つは、DAGデータ構造を使用してデータを保存することです。このデータ構造の利点は、IPFSがアドレスベースではなく、コンテンツベースのアドレッシング方式でファイルを保存し、探すことです。 つまり、ファイルを探す際に、そのファイルがどこにあるかを知る必要はなく、どのような内容が含まれているかを知っていればよいのです。IPFSは各ファイルにユニークなハッシュ値(例:QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan)を生成し、ユーザーがこのファイルを検索する際には、IPFSにこのハッシュ(QmS…Vaan)を持っている人を尋ねるだけで検索が完了します。ハッシュ値は重複保存を防ぐため、同じ内容のファイルはIPFSに重複して保存されません。この方法はストレージを最適化し、ネットワーク性能を向上させます。
(画像出典:researchgate.net)
動的ストレージの解決策:Ceramic
上記の説明から、注意深い読者はIPFSに大きな欠陥があることに気づくかもしれません。IPFSでは、ファイルが一度保存されると、システム内で変更することができません。なぜなら、ファイルの内容を変更するとファイルのハッシュ値が変わり、ユーザーは元のハッシュ値を使って変更されたファイルを見つけることができなくなるからです。これはIPFSが批判される痛点の一つであり、常に更新やアップグレードが必要なファイルの保存には不向きです。したがって、人々は動的データを効率的かつ去中心化して保存する解決策を切実に求めています。
幸いなことに、この分野の探求はすでに始まっています。Web 3.0、SocialFi、またはDIDに関心のある友人は、このプロジェクトの名前を聞いたことがあるでしょう------Ceramic。Ceramicはデータを作成、ホスティング、共有するための去中心化オープンソースプラットフォームであり、多くのDIDやソーシャルグラフはCeramic上に構築されています。
前述のように、IPFSは静的ファイルの保存においては優れた性能を発揮しますが、計算や状態管理の能力が不足しており、可変性、バージョン管理、アクセス制御、プログラム可能なロジックなど、データベースに類似した高度な機能を実現できません。そしてCeramicの登場により、これらの問題はある程度解決されました。
効率的なバージョン管理
Ceramicでは、各ストレージ情報は重ね合わせ可能なログ(コンピュータでプログラムの実行状況を記録するログファイル)として表現され、これをStreamと呼びます。Streamは概念的にGitに似ています。Gitはオープンソースの分散バージョン管理システムであり、大規模なプロジェクトのバージョン管理を効率的かつ高速に処理することができ、現在最も人気のあるバージョン管理ソフトウェアであり、コードの保存、修正履歴の追跡、コード変更のマージ、以前のコードバージョンへの復元などに使用されます。
Gitはデータを処理する際に"スナップショット"のように機能し、これはGoogle Docsで文書を共有し、履歴バージョンを確認するのに似ています。更新を提出したりデータの状態を保存したりするたびに、その時点でのすべてのファイルのスナップショットを作成し、そのスナップショットのインデックスを保存します。ファイルが変更されていない場合、Gitはそのファイルを再度保存せず、以前に保存されたファイルへのリンクだけを保持し、効率を大幅に向上させます。
(画像出典:IOSG Ventures)
実際、IPFS上でもGitを使用して動的データを保存することができます。しかし、開発者はGit内に新しいハッシュログファイルを作成し、各GitログとIPFSハッシュの更新のマッピングテーブルを記録し、手動で動的に同期を保つ必要があります。または、IPNS命名システムを使用して動的更新を維持する必要があります。このような操作は時間がかかり、効率が非常に低いです。
Ceramicは"重ね合わせログ"の方式を採用しており、StreamIDは内容に応じて変わらないため、修正バージョンや以前のバージョンを非常に簡単に保存できます。ハッシュ値を頻繁に変更する必要もありません。さらに、Ceramicは他のストレージプロトコルの上に新しいレイヤーを構築しており、そのため高い組み合わせ性を持っています。
ユーザーはデータをどこに保存するかを自由に選択でき、去中心化のArweave、Filecoin、中央集権のAWSなど、Ceramicを利用して自動化されたバージョン管理を実現できます。また、各Streamはデータではなくログのみを保存するため、Ceramicはデータ状態を全体的に同期するためのグローバル台帳を必要とせず、したがってCeramicの横方向のスケーラビリティは非常に高いです。
(画像出典:IOSG Ventures)
便利な認証とアクセス制御
バージョン管理の利点に加えて、Ceramicは非常に便利な認証とアクセス制御を提供します。新しいデータがStreamに追加される際、変更者は身分を確認する必要があり、そうでなければデータを変更することができません。異なるStreamは異なる認証メカニズムを要求でき、Ceramicは非常に強力な内蔵認証メカニズム------DIDを提供しています。
例えば、エンドユーザーに適した3ID DID、開発者に適したkey DID、NFTによる認証をサポートするNFT DID、DAOなどの多重認証が必要なSafe DIDなどがあり、データの安全性を確保しています。また、CeramicはStreamにプログラム可能なロジックを付与しており、例えばStream Aの状態が変わると、Stream Bにアクセスでき、アップグレードされるなどの機能があります。
Ceramicの登場はWeb 3.0の構築に大きな力を与えました。現在、多くのDIDおよびWeb3.0ソーシャルプラットフォームプロジェクトがCeramic上で開発されています。注目すべきは、ソーシャルグラフミドルウェアプラットフォームCyberConnect、Web3.0 TwitterのOrbis、インスタントメッセージングプラットフォームThe Convo Spaceなどです。私たちはCeramicのインフラストラクチャがアプリケーション層にもたらす新しい可能性を期待しています。