セラミックコア技術の概要:ダイナミックストレージはなぜデータ価値をより良く解放できるのか?
著者:Wayne, Dongxuan, Linda
出典:BixinVentures
石刻から結び目、竹簡、紙に至るまで、人類文明の大部分はデータの保存メディアの問題を解決することに取り組んできました。その後、フロッピーディスク、ハードディスク、クラウドサーバーのストレージなどの技術が、容量、安全性、速度などの効率の問題をさらに解決しました。FilecoinやArweaveなどの分散型ストレージソリューションの台頭は、データの権利確定の機会をもたらしました------個人、組織、機関、企業は、真に自分のデータを所有することができ、巨大企業による独占から解放されることが、Web3の精神を示しています。
しかし、所有権が確定すると、自然に次の問題が浮かび上がります:所有者はどのようにこの権利を行使し、より大きな価値を得ることができるのか?私たちはこの二つの問題を「データの有用性」の問題に集約します。
可組み合わせデータのための分散型ストレージネットワークとして、「権利」が「有用性」に進化する過程で、Ceramicは重要な役割を果たしています。これは、私たちが最近Ceramicネットワークの発展とそのエコシステム、アプリケーションの構築に注目し、研究している重要な理由です。
数ヶ月前の静けさと比べて、Ceramicは多くの開発者プロジェクトを展開しており、Eth Denver、HackFS、DecentralHacks、DAO Global Hackなどの多くのハッカソンで多くの開発者に採用されています。Ceramicが公開したデータによれば、3月末時点でCeramicを基盤としたプロジェクトは50を超え、NFT、DAO、Gamefiなどの多くの分野にわたっています。さらに、3月初めにはCeramicがMulticoinとUSVのリードによる3000万ドルの投資を獲得しました。
Ceramicのデータの可組み合わせ性に関する潜在能力については、すでに多くの記事が参考にされていますので、ここでは詳述しません。本稿では、動的データの最適化、柔軟なコンセンサスメカニズム、ネットワークの安全性とプライバシーなどの観点から、Ceramicがデータの有用性を向上させる技術的可能性を詳しく説明します。また、ネットワークノード、アプリケーションの発展などに関する重要な情報も提供します。私たちが考えるCeramicの最も重要な三つの価値は次の通りです:
● 分散型ストレージの水平スケーリングソリューション
● コミュニティ主導のデータモデル市場
● オープンなAPIネットワーク共有リソース
一、動的データストレージの最適化
分散型ストレージはデータをノードに保存し、集中型サーバーではなく、データの使用権をデータの創造者がより多く掌握できるようにします。個人の行動の継続的な更新やデータの連続使用と反復により、個人データには大量の動的データ(システムアプリケーション内で時間とともに変化するデータ)が存在しますが、IPFS、Sia、Arweaveなどは現在主に静的データ(あまり呼び出されないか更新されないデータ)を対象にしており、動的データの処理能力が不足しており、コストも高くなっています。
IPFSを例にとると、IPFSは各ユーザーにユニークなハッシュ値を生成することで、アドレスベースではなくコンテンツベースの検索を実現しています。ユーザーがこのファイルを検索する必要がある場合、IPFSに誰がこのハッシュを持っているかを尋ねることで検索が完了します。しかし、ハッシュ値でデータをマークすることにはいくつかの明らかな問題があります:
- 更新のたびにネットワークの検証が必要で、関連するハッシュ値を生成する必要があり、ハッシュ値を繰り返し変更することはストレージ時間を増加させます;
- 呼び出し時にハッシュ値を確認することは、一般的なデータベースの呼び出しよりも速いとは限りません------遠距離ノードが存在する場合、転送速度が逆に遅くなることがあります;
- ハッシュ値をデータに変換した後、多くの場合、組み合わせるために時間がかかります。これらの問題は静的データのストレージと呼び出し時の速度や価格にはあまり影響しませんが、動的データに対しては、この操作を繰り返すことがストレージネットワークの速度や容量に影響を与え、高コストを生むことになります。
Ceramicは「Streams制御メカニズム」を通じて動的データストレージの最適化を実現し、ストレージ時間を短縮すると同時にストレージコストも大幅に削減しました。ここで特に説明が必要なのは、この最適化ソリューションはIPFSなどの分散型ストレージ技術から独立して実現されているわけではなく、IPFSの上に構築されているということです。
「Streams制御メカニズム」とは、個人のアイデンティティアカウントを利用して、個人の行動から生成されたデータ、すなわちストリーム(Stream)をデータフロー(Streams)として集約し、データを制御するメカニズムです。
普段私たちが共有ドキュメントを使用する際に、特定の時刻のバージョンを確認できるように、各Streamには固定のStreamID(共有ドキュメントを作成したようなもの)があり、動的データが更新されるたびに、ハッシュ値やStreamIDを直接変更するのではなく、ログ(Log)を更新します。ログはCeramic内でネットワーク内のStreamに関連するイベントを記録したパラメータであり、各更新は特定のバージョンを表します。このように、頻繁に更新されるデータは、更新内容の後にログ値を変更するだけで済み、ハッシュ値を再生成する必要がなくなり、ストレージ消費の時間を削減します。
Steamsメカニズムの図解
動的データは時間の経過とともに使用頻度が減少したり静的データに変わったりするため、ユーザー自身も静的データを生成します。したがって、これらの静的データや更新回数の少ない動的データは最終的にIPFSやArweaveなどの分散型ストレージやAWS(アマゾンウェブサービス)などの従来のクラウドサービスプロバイダーに委託することができます。
さらに、「StreamID」により、データの可組み合わせ性も容易になりました。異なるプログラムが異なるデータ形式を採用している場合、呼び出し時に互換性のない結果が必然的に生じ、多くのデータが組み合わせて使用できなくなります。また、呼び出し時に呼び出し権限が不足する問題もあります。たとえば、個人の信用を評価する際にDAO内の貢献データとDefiの貸出データが必要な場合、呼び出し方法があってもデータを直接信用データとして作成することはできません。
しかし、CeramicではアプリケーションがAPIを介してCeramicの分散データネットワークに接続し、データを保存、変更、検索します。ネットワーク上に存在するすべてのデータは、他のアプリケーションで簡単に再利用または再利用できます。
他の分散型ストレージソリューションとの統合
Ceramicはストレージ速度を向上させるために、短期ストレージ提出の内蔵キャッシュメカニズムを設定しています。CeramicノードがStreamに対して書き込みまたはクエリを実行するたびに、そのStreamのすべての提出はまずネットワークから同期され、自動的にそのノードのメモリキャッシュにロードされます。これにより、最も人気のあるStreamが最も多くコピーされ、一定のデータの永続性と可用性が提供されます。ただし、ディスクスペースとノードリソースを保持するために、メモリキャッシュはデフォルトで500のStreamに制限されています(ただし、任意の数に設定可能で、理論的には数が少ないほど速度が速くなり、数が多いほど使用率が高くなります)。
この数字に達すると、最も古いStreamはノードのキャッシュから追い出され、新しいStreamのためのスペースが確保されます。
ノードが偶然にシャットダウンまたは再起動した場合、キャッシュはクリアされます。あまり使用されない動的データや追加のデータ永続性対策(たとえば、ローカルハードディスクやクラウドに保存されている場合)がないデータは、他のノード間で十分にコピーされていない限り、永遠に失われます。
したがって、キャッシュだけでは信頼できるデータの可用性のソースではありません。Ceramicの解決策は、ノードをIPFS、Arweaveなどの一連のストレージプロトコルにバインドし、データの損失を防ぐことです。
二、柔軟なコンセンサスメカニズム
前述のように、個人の操作から生成されたデータはStreamを形成し、StreamはStreamIDという不変の識別子を使用してユーザーのアイデンティティとイベントを確認し、同じStreamの更新ログをまとめることができます。このプロセスで重要な技術メカニズムは「StreamType」です。
データの更新プロセスは、各Streamに必須のStreamTypeを通じてコンセンサス操作を行います。CeramicはStreamTypeを定義し、Streamのデータ構造を処理し、提出に含まれる内容、状態遷移機能、アイデンティティ検証要件、衝突解決戦略などをすべて含めています。
注目すべきは、Ceramicのノードはデータを保存する際に、自身に関連するStreamsのみを検証し、無関係なStreamsを処理または検証しないため、ノードのタスク量が大幅に軽減され、ノードの高速運行とネットワークの拡張に良好な基盤を築いていることです。
Ceramic自体には開発者が選択して使用できるように事前に設定されたStreamTypeがあり、開発者はドキュメントを参考にして独自にコーディングすることもできます。現在、StreamTypeには主に二つの異なるタイプがあります:
- タイルドキュメント(Tile Document)
タイルドキュメントは、アイデンティティメタデータ(プロフィール、ソーシャルグラフ、評判スコア、リンクされたソーシャルアカウントなど)、ユーザー生成コンテンツ(ブログ記事、ソーシャルメディアなど)、他のStreamIDをインデックス化したデータ集合やユーザーテーブルのデータベースの置き換え、DIDファイル、検証可能な声明などに頻繁に使用されます。ノードがタイルドキュメントというStreamTypeを使用してデータを更新する際には、情報を保存するユーザーのDIDが署名されている場合にのみ有効な更新が行われ、データの安全性が保証されます。
- CAIP-10リンク(CAIP-10 Link)
CAIP-10リンクは、ブロックチェーンアドレスをDIDにリンクする暗号的に検証可能な証明のStreamTypeです。1つのDIDは無限のCAIP-10リンクを持つことができ、これらのリンクは多くの異なるブロックチェーンネットワーク上の多くの異なるアドレスにバインドされ、同じDIDアイデンティティの下で関連データを集約することを保証します。
さらに、開発者は独自のStreamTypeをカスタマイズし、自分のCeramicノードにデプロイすることもできます。
コンセンサスの衝突
コンセンサスの衝突は、Streamが更新される際に異なるデバイスやプログラムで同時に更新が発生するシナリオにより、誰が先に更新したかという問題が生じることを指します。
StreamTypeはデータ更新時に、更新内容に対してjson-patchメソッドを呼び出し、jsonドキュメントの具体的な変更(追加、削除、変更、検索など)を記述し、生成された内容を提出します。提出はStreamを構成する単一のIPFSレコードを形成し、1つ以上の提出を含む可能性があります。提出が続くにつれて、Ceramicは継続的に更新され、更新が終了した後にStreamStateが更新されます。
提出プロセスでは、Streamコントローラー(Stream Controller)が新しい署名提出を作成することでStreamを更新することを許可します。この時、同じStreamの二つの衝突ログが発生する可能性があります。たとえば、あるユーザーが二つのチェーンゲームプラットフォームでゲームをしている場合、一方のゲームでモンスターを倒して勝利し、もう一方のゲームでキャラクターがレベルアップするということが同時に発生するか、あるユーザーがスマートフォンとコンピュータなどの異なるデバイスで同時に操作する場合、Streamsの検証に衝突が生じます。
ほとんどのStreamTypesは「最初のアンカーが勝つ」(Earliest Anchor Wins)戦略を用いてStreamログ間の衝突を解決します。ノードは定期的にその中のStreamIDなどをブロックチェーン(現在はイーサリアム)にアンカーします。この不変の公開証明は、更新が発生した時間の信頼できないタイムスタンプを取得するために使用されます。Streamのログの衝突解決策は、より早くアンカーされたブランチが勝つというものです。もし一つのブランチがアンカーされていて、もう一つがアンカーされていない場合は、アンカーされたブランチが優先されます。
現在、Ceramicチームは毎日ノードを定期的に二回アンカーしています。未アンカーの際には、「最長更新チェーン」(Longest update chain)というコンセンサス方法を用いて検証し、衝突時にはどのログがより長いかを保持します。
これにより、最も多くの更新を持つ最も活発な履歴が残ることが保証されます。同じ長さの衝突未アンカーのブランチが存在する場合、システムはランダムに一つを選択して勝利ログとし、すべてのノードが同じログで合意に達することを保証します。これは稀な場合に、数秒以内に書き込み操作が衝突した際にデータが失われる可能性があることを示しています。これはCeramicが現在、複数の最終ユーザーが同時に単一のStreamを更新することを許可するアプリケーションにはあまり適していないことを示しています。
公式に公開された文書によれば:更新間隔が約30秒を超える限り、Ceramicネットワーク全体で更新を共有し、こうした衝突を防ぐのに十分な時間があるはずです。
将来的には、StreamTypesは同時更新を処理するための異なるコンセンサスメカニズムに適応できるようになるでしょう。現在、CeramicはCRDT技術を研究しており、異なるコンセンサスメカニズムの処理と衝突の解決を実現しようとしていますので、衝突問題は今後解決される可能性が高いです。
三、安全性、プライバシー設計
Ceramic ProtocolはCeramicネットワークの「Streams制御メカニズム」を規定するだけでなく、安全性とプライバシーの面でも特別な設計がされています。
- 安全性
暗号署名、公開証明(ブロックチェーンアンカー)およびハッシュリンクデータ(データを最終的にハッシュ値で保存する)の構造を通じて、プロトコルの安全属性が構成されます。これらの属性は、検証可能なデータ構造を構築することを許可します。さらに、Ceramicはlibp2p(IPFSスタック内のピアツーピア通信方法)に依存してStreamsの更新に関する情報を伝播させています。これにより、データの検証やネットワーク内のゴシップ検索が容易になります。
Ceramicノードの主な安全考慮事項は、Streamの新しいヒントがそのStreamの偽または無効なヒントである可能性があるため、検証が必要であるということです。CeramicはDos攻撃、偽ログ攻撃、Caip10Linkクロック同期などの安全問題に対して独自の解決策と検証方法を持っています。
Dos攻撃:悪意のあるノードが大量のメッセージを送信してネットワークにスパムを送信することを指します。Ceramicは自動的な信頼システムを使用して、単一のノードが送信できるメッセージの数を制限し、スパムノードとの接続を切断することでこの問題を解決します。ただし、現在のCeramicではまだ信頼システムは使用されておらず、将来的に段階的に実装される予定です。
偽ログ攻撃:悪意のあるノードが誤った提出ログを送信して特定のStreamに固定されたノードにスパムを送信することを指します。Ceramicが採用する最初の方法は、信頼できないノードからのヒントを受け入れないようにノードを停止することでスパムを拒否することです。第二の方法は、与えられたStreamIDと正しく関連付けられていることを証明する再帰的ゼロ知識証明StreamTypeを構築することです。
Caip10Linkクロック同期:CAIP 10 Linkの複数回の重複バインディングアドレス、またはアドレスを以前にリンクされた任意のDIDに指し示すことを指します。この問題に対処するために、Ceramicはローカルシステム時間を使用して重複を避けるだけでなく、ランダム数やポインタを使用する解決策を提案しています。
上記のいくつかの方法はまだ計画の一部ですが、Ceramicは偽データに対する準備が整っていることがわかります。
- プライバシー
APIがオープンであるため、データ呼び出し時にプライバシーが直接呼び出される可能性があります。このような状況を回避するために、CeramicはデータをConfidential streamsとPrivate streamsの二つのStreamカテゴリに分類しています。前者はStreamの各更新内容が対称鍵で暗号化されることを意味します。
CeramicノードがStreamsを同期する際、対称鍵を持っている場合にのみStreamの内容を読み取ることができます。Streamのメタデータ(どのDIDが更新を署名したか、どの順序で、いつアンカーされたかなど)は依然として公開されています。しかし、Private StreamsはTextile ThreadsDBメソッドを採用しており、特定のノードのみがメタデータを読み取り、Streamを使用できますが、具体的な内容は見ることができず、他のノードはStream内の内容を全く見ることができません。
Ceramicメタデータの例出典
安全性とプライバシーの設計により、Ceramicはネットワークリソースの共有を前提に、ネットワーク内のデータ使用を規範化しています。ユーザーの許可がないデータ呼び出しに対して、プログラムはAPI内のメタデータのみを呼び出すことができ、ユーザーの全データを直接取得することはできず、ユーザーのデータ権益を保護し、データの安全性を向上させています。
四、重要な価値
● 分散型ストレージの水平スケーリングソリューション
Ceramicの基盤は拡張可能な分散型データネットワークであり、最も基本的なデータ保存機能を提供しています。Ceramicネットワークは、許可なしで動作するノードのグループで構成されており、これらのノードは協力してデータ更新時に自身に関連するStreamsを迅速に検証します。
このアーキテクチャはCeramicのコンセンサスメカニズムの下で、システムがほぼ無限に水平に拡張できることを許可します。公式の例によれば:アカウント1 - 1,000,000は一組のCeramicノード上に複製され、アカウント1,000,001 - 2,000,000は別のノードのグループ上に複製されます。最初の100万のアカウントのStreamsは、後の100万のアカウントのノード検証プロセスに一般的には影響を与えません。彼らのアカウントが他のノードの操作やデータに関与しない限りです。
したがって、理論的には、必要であれば、ネットワークは各ユーザーごとに分割され、可組み合わせ性を損なうことはありません。同時に、ユーザー間の状態の検証可能性と可組み合わせ性を確保するために、CeramicノードはStreamIDとCommit情報を含むアンカーをメルクルツリーとして構築します。このすべてのユーザーの取引を集約したメルクルツリーのメルクルルートは、選択されたアンカーブロックチェーンにアップロードされ、任意のアカウントが他の誰かのStreamsの完全性をいつでも検証できるようにします。
同時に、Ceramicはオンチェーンでの発展を積極的に進めており、現在Ceramicプロトコルは7つのパブリックチェーンのアカウントや情報をサポートしています。
● コミュニティ主導のデータモデル市場
Ceramicのデータモデル市場は、より具体的には異なるデータコンポーネント市場です。ある人の名前、住所、電話番号を組み合わせることはデータモデルの一種です。もしあなたが自分のデータを宅配便に使用したい場合、このデータモデルを使用する必要があります。Ceramicはこれをコンポーネントの形式にし、使用する際には直接呼び出すことができます。Ceramicのデータモデル市場は3Boxlabチームとコミュニティによって共同で構築されており、主にコミュニティ主導で、アプリケーション間のデータの可組み合わせ性を解決するために使用されています。
Ceramicは、任意の開発者がエコシステム内の他の開発者とモデルを定義、共有、再利用することを容易にします。2022年4月6日現在、コミュニティには7人の貢献者が7種類のデータモデルを提供しています。
Github上のデータモデル 出典:Github
同じ基盤データモデルを採用することで、アプリケーションは同じ形式のデータを使用してローカルに相互運用できます。これにより、Ceramic上でアプリケーションを構築することはデータモデル市場をブラウズするようなもので、選択したデータモデルをアプリケーションに挿入するだけで、これらのモデルに保存されたネットワーク上のすべてのデータに自動的にアクセスできます。開発者は孤立したユーザーやデータがアプリケーションの立ち上げを困難にすることを心配する必要がなくなり、開発効率が大幅に向上します。
● オープンなAPIネットワーク共有リソース
API呼び出しの料金は典型的なビジネスモデルですが、CeramicのAPIは現在開発者に無料で提供されており、そのAPIは標準化されており、一般的です。開発者はストレージネットワーク上でAPIを通じて共有リソースを取得できます。
ユーザーが特定のプログラムを使用した後に生成したデータは、必要な際にそのアプリケーションのAPIを通じて直接取得されます。Ceramic内の多くのアプリケーションは、データ集約機能を実現するためにAPIを使用しており、ユーザーのアプリケーション上の行動は関連するAPIにバインドされます。たとえば、Twitterアカウントをバインドした後、ユーザーは自分のTwitter関連情報を呼び出すことができます。CeramicはAPIを呼び出すことで、ユーザーのすべてのデータを一度に生成し、真実かつ包括的なユーザーデータを取得します。
APIの例 出典
これらの三つのサービスにより、Ceramicの分散型ストレージネットワークはよりオープンで共有されるようになり、その中のデータはAPIを通じてもデータモデルを通じても強力なデータの可組み合わせ性を実現し、データの価値を高め、データの応用シーンを増やし、その上に保存されたデータにより多くの有用性をもたらします。
五、ノード
Ceramicノードの運営者はCeramicネットワークをホスティングします。Ceramicクライアントはノードに接続する必要があり、ネットワークにアクセスするためには、アプリケーション開発者は自分のノードを立ち上げるか、コミュニティメンバーがホスティングするノードの一つにクライアントを接続する必要があります。
現在、コミュニティメンバーは開発者の開発とテストのために特別に三つのノードを構築していますが、ノードは定期的にデータをクリーニングするため、開発者が安定した安全なストレージ環境を得たい場合は、自分のメインネットノードを構築する必要があります。現在、Ceramicの大部分のノードは開発者によって自ら構築され、独立して運営されています。GeoWeb、MetaGame、Boardroomなどのプログラムは、自ら構築したノードを通じてネットワークの使用権を取得しています。プログラムがノードを構築する過程で、Ceramicネットワーク自体も拡張されました。
Ceramicコミュニティによって運営される一時的なノード
Ceramicを使用する際に料金は発生しませんが、基盤となるサービスプロバイダーにバインドする際には開発者が料金を支払う必要があります。市場にある関連ストレージアプリケーション(IPFS、Arweave、Alephなど)は、トークンでノードの運営者に報酬を与えていますが、Ceramicは現在トークンインセンティブプランを持っておらず(コミュニティ内でトークンインセンティブがある可能性が何度も言及されています)、商業ノードを探求する考えがありますが、具体的なプランはまだ発表されていません。これにより、現在Ceramicには開発者のインセンティブが不足している問題があります。
六、アプリケーションの例
Ceramicのオリジナル製品で、Ceramicのオリジナルチームによって開発および運営されています。これはマルチプラットフォームのアイデンティティプロトコルであり、CeramicのDID基盤(タイルドキュメントなどのStreamType)を利用して、集中型ユーザーテーブルの形式を分散型の代替手段に置き換えます。IDXはユーザーが自分のすべてのデータで構成された統一デジタルアイデンティティを構築できるようにし、開発者が孤島を打破し、アプリケーション間でユーザーデータを自由に共有できるようにします。現在、IDXは900のプロジェクトに採用され、合計35,000のアイデンティティが登録され、25万件の関連記録が生成されています。
最新のweb3アプリを学び、使用することで暗号通貨を獲得するWeb3.0アプリです。RabbitHoleはIDXを使用して複数のWeb3ウォレットとWeb2アカウントを統一されたDIDにリンクします。総信用スコアを計算した後、彼らはこの検証可能な証明をユーザーのアイデンティティに保存し、任意のWeb3アプリケーションで使用できるようにします。
DAOの発見とガバナンスプラットフォームで、ownership economyを形成するコミュニティのホームです。BoardRoomはそのガバナンスアプリケーションに提案、コメント、投票、その他のユーザー生成コンテンツを保存します。Ceramicに切り替えて以来、彼らは参加率を向上させ、ガバナンスへの信頼を増し、バックエンドコンポーネントを排除することができました。
Geo Webはデジタルコンテンツを物理的な位置に固定するためのオープンプロトコルと所有権システムのセットです。GeoWebは、資産の現在の所有者のみが更新できる編集可能なNFTデータを保存するためのシンプルで信頼不要な方法を必要としています。CeramicのStreamとNFT DIDメソッドは、彼らの問題を解決するのに非常に適しています。
大規模なオンライン協力ゲームです。MetaGameはCeramicのアイデンティティプロトコルIDXを使用して、Ethereumユーザーのプロファイルデータを保存します。これらのデータはWeb3メタバース内の任意のアプリケーションで使用、追加、拡張できます。
これらのアプリケーションに加えて、Ceramicネットワーク上にはDeFi、DAO、NFT、GamFiなどの分野で多くのアプリケーションがあります。基本的には、データの可組み合わせ性とオープンで共有されたストレージネットワークを通じてデータの使用問題を解決し、データの組み合わせ後の価値を高め、ユーザーのデータの有用性を向上させ、アプリケーション自体にも相応の価値をもたらしています。
まとめ
Ceramicの「Streams」制御メカニズムは、動的データと静的データのストレージ効率をさらに向上させ、このメカニズムがもたらす水平スケーラビリティにより、Ceramicのストレージネットワークは容量とデータ処理量の両方で大幅に向上しました。基盤データの統一とオープンAPIにより、異なるアプリケーション間でのデータの集約使用が可能になり、データの可用性が真に向上し、データストレージの効率から有用性の向上へと基盤が築かれました。
しかし、現在Ceramicにはいくつかの問題も存在しており、これはプロトコルの今後の発展において注目すべき点です。たとえば、現在ノード運営者や開発者に対するインセンティブメカニズムが存在しないこと;メモリキャッシュの制限がCeramicを使用するプロジェクトに自らのノードを運営させることを強いており、開発負担が増加していることです。