見出し画像

分散型コンテンツ計算ネットワークCeramic|Data Availabilityと分散型ID

この記事はCeramic Developersの「Tech overview」 「Use cases」 「Data availability」を日本語翻訳したものです。

プロジェクトまたはビジネスがCeramicの分散型データストリーミングプラットフォームを活用できる多くの方法を探ります。Ceramicは汎用プロトコルであるため、このリストは完全ではありません。これは、アイデアの出発点として機能することを目的としています。このリストのユースケースは相互に排他的ではなく、多くのCeramic統合では複数のユースケースが使用されます。

入門

Ceramicをお試しください

ブラウザアプリケーションでCeramicがどのように機能するかを体験するには、Playgroundアプリを試してください。

インストール

Ceramicの使用を開始するのは簡単です。クイックスタートガイドにアクセスしてCeramicCLIの基本を学ぶか、インストールページに従ってCeramicをプロジェクトに統合してください。

ツールとサービス

このドキュメント全体で参照されているさまざまな標準に加えて、Ceramicコミュニティは、Ceramicでの開発体験を簡素化する多くの異なるオープンソースプロトコル、ツール、およびサービスの開発をすでに開始しています。ここにいくつかの注目すべき例があります:

  • 3ID Connect:ユーザーがブロックチェーンウォレットを使用してCeramicと取引できるようにするブラウザベースのアプリケーション用の認証SDK。

  • IDX: DIDがすべてのアプリのすべてのデータのインデックスを1か所に集約できるようにする分散型IDのプロトコル。 IDXは、ユーザー中心のデータストレージ、検出、および相互運用性を可能にします。これは事実上、分散型のクロスプラットフォームユーザーテーブルです。 IDXは、Ceramicストリームやその他のピアツーピアデータベースやファイルなど、すべてのデータソースタイプを参照できます。

  • IdentityLink: DIDがTwitter、Github、Discord、Discourse、Telegram、Instagramなどの他のさまざまなWeb2ソーシャルアカウントを所有していることを証明する検証可能なクレームを発行するサービス。発行されると、クレームはDIDのIDXに保存されます。

  • Documint:ストリームを作成および編集するためのブラウザベースのIDE。

  • タイル:Ceramicネットワークの探索者。

データの可用性

このページでは、Ceramic上のストリームのデータ永続性とデータ可用性モデルについて説明します。

概要

ストリームデータは、コミットステートの2つの主要なカテゴリに分類できます。いくつかの重複はありますが、これら2種類のデータには十分な違いがあるため、ストリームを永続化してホストする方法を計画する際には、別々に検討する必要があります。特定のストリームで書き込みまたはクエリを実行するときは、特定のストリームのすべてのコミットとステートが使用可能である必要があります。そうでない場合、クライアントはエラーを返します。このエラーは、すべてのデータがオンラインに戻ると消えます。不適切な永続性管理のために特定のストリームの1つ以上のコミットが完全に失われた場合、このストリームは破損し、エラーは消えません。

ストリームコミット

すべてのストリームは、1つ以上のコミットで構成されるイベントログであり、各コミットには少なくとも2つのIPLDオブジェクトが含まれます。まとめて、これらのコミットは、ストリームのコンテンツを構成するデータを格納します。

キャッシング

セラミックノードには、コミットを短期的に保存するためのキャッシュメカニズムが組み込まれています。セラミックノードがストリームに対して書き込みまたはクエリを実行するたびに、そのストリームのすべてのコミットが最初にネットワークから同期され、そのノードのメモリ内キャッシュに自動的にロードされます。これにより、最も人気のあるストリームが最も複製され、ある程度のデータの永続性と可用性が提供されます。ただし、ディスクスペースとノードリソースを保持するために、メモリ内キャッシュはデフォルトで500ストリームの制限に設定されています(ただし、任意の数に構成できます)。その数に達すると、新しいストリーム用のスペースを確保するために、最も古いストリームがノードのキャッシュから削除されます。

ノードがたまたまシャットダウンまたは再起動した場合、キャッシュはクリアされます。シャットダウン前の人気または追加のデータ永続性対策のために他のノード間で十分なレプリケーションがないと、メモリ内にのみ存在するストリームは永久に失われます。したがって、キャッシュのみは、特定のセッションよりも長期間にわたって信頼できるデータ可用性のソースではありません。

ピン留め

固定は、コミットのデータ永続性のより長期的なメカニズムを提供します。ピン留めは、特定のストリームのコミットを明示的にホスト(つまり「ピン留め」)するようにセラミックノードに指示するプロセスです。コミットはIPLDに保存されるため、Ceramicノードには、このピン留めが行われる場所であるバンドルされたIPFSノードがすでに含まれています。IPFSノードは、接続されているセラミックネットワークを介してアクセス可能な任意のストリームのすべてのコミットを固定できます。セラミックピン留めは、バンドルされた内部バージョンの代わりに外部IPFSノードを使用して機能することもできます。

開発者がストリームを単一のセッションを超えて永続化し、データ損失に対してより回復力のあるものにする最も簡単な方法が必要な場合は、ピン留めが適切なオプションです。セラミックノードは、無制限の数のストリームを固定できます。ただし、特定のストリームを固定しているIPFSノードが1つだけで、そのストリームが永久に消えたり破損したりすると、そのストリームは失われることに注意してください。また、1つのノードのみがストリームを固定していて(他のCeramicノードがそのストリームをキャッシュに持っていない場合)、そのノードがオフラインになると、そのストリームは他のノードで使用できなくなります。したがって、復元力とデータの可用性を向上させるには、同じストリームを固定する異なる環境で複数のIPFSノードを実行するのが最適です。

セラミックノードにストリームを固定する方法については、固定ガイドを参照してください。

アーカイブ

アーカイブは、コミットの永続性の中で最も耐久性があり、長寿命の形式です。キャッシングとピン留めに加えて、Ceramic開発者は、ストリームを構成するすべてのコミットをアーカイブするために外部サービスに接続するようにノードを構成することもできます。アーカイブによって提供される正確な保証は、実装およびサービスプロバイダーごとに異なります。たとえば、Filecoinにアーカイブすると、従量課金モデルで暗号経済的に保証されたデータの可用性が提供され、Arweaveにアーカイブすると、1回限りの支払いモデルで暗号経済的に保証されたデータの可用性が提供されます。逆に、Amazon S3へのアーカイブはより単純なモデルを提供しますが、Amazonはデータが常に利用可能であることを保証できません(たとえば、請求書の支払いを停止できます)が、ストレージはピン留めとキャッシュのみを使用するよりも回復力があります。

ストリームのステート

IPFSに保存される上記のコミットログに加えて、すべてのストリームには、IPFSに保存されないステートがあり、ストリームをキャッシュおよび/または固定しているすべてのセラミックノードによってまとめて追跡、永続化、および利用可能になります。ストリームを正常にロードして操作するには、完全なコミット履歴とステートの両方が必要です。

キャッシング

ステートキャッシュは、コミットキャッシュと同じように機能します。

ピン留め

ステートの固定は、IPFSでステートの固定が発生しないことを除いて、コミットの固定と同じように機能します。ステートの固定は、Ceramicノードの内部のデータベースで発生します。

アーカイブ

セラミックは、ストリームのステートの可用性を維持および保証するために使用される、耐久性のある分散型のステートストアに取り組んでいます。これはロードマップにあります。セラミックをすぐに使用することは重要ではありませんが、ステートをより回復力のあるものにし、利用可能にするのに役立ちます。その間、CeramicはAmazon S3へのアーカイブステートをサポートし、デフォルトで使用されるローカルデータベースよりも耐久性と信頼性が高いオプションを提供します。

分散型アイデンティティ

分散型IDとポータブルでユーザー制御のデータストレージを使用して、安全なアプリケーションを構築します。CeramicはIDXの本拠地であり、Web3アプリケーションの基礎として機能できる、堅牢で柔軟性のある標準ベースの分散型IDシステムを提供します。IDXを使用して構築すると、ユーザーは単一のアプリケーションやプラットフォームから独立した方法でIDとデータを制御できます。また、開発者は、集中型サーバーでユーザーデータを管理したり、ユーザーエクスペリエンスを低下させたりすることなく、データが豊富なアプリケーションを構築できます。すべてのアプリケーションで同じデータを再作成します。IDはW3C標準に基づいており、さまざまなブロックチェーンやWeb3プラットフォームのウォレットで使用できます。

  • 分散型識別子(DID

  • 集約されたクロスチェーンID

  • Web3:任意のL1またはL2プロトコルからウォレットを接続します

  • Web2:任意のプラットフォームからソーシャルアカウントをリンクする

  • ユーザープロファイル

  • ソーシャルグラフ

  • データストレージ

  • 評判システム

分散型データベース

データベースのバックエンドまたはローカルストレージを置き換え、すべてのコンテンツを可変の分散型ストリームに保存/ホストします。

  • ユーザーデータとユーザー生成コンテンツ

  • ユーザーの活動と履歴

  • アプリケーションデータ

  • アプリケーションのステートおよびその他のCookieのようなコンテンツ

  • クロスデバイスローカルストレージ

進化的ファイル

編集可能なバージョン管理されたファイル、ドキュメント、およびその他のメディアをIPFSに保存します。これにより、ステートの変化を計算したり、アクセス許可を適用したり、CIDの変更を追跡したりする外部サービスを必要とせずに、改ざん防止と監査可能な履歴を維持できます。また、これらのファイルを公開して、グローバルネットワーク上で検出できるようにします。

  • 可変NFTファイル

  • JSONドキュメント

  • JSONスキーマ

  • 任意のメタデータ

  • 検証可能な資格情報

マルチユーザーアプリケーション

Ceramicの独自の機能と特性を活用して、コンテンツが分散化され、プラットフォームではなくユーザーによって所有される、許可のないソーシャルネットワークを作成します。

  • ソーシャルメディア

  • コミュニティプラットフォーム

  • ガバナンスフォーラム

分散型出版物

データをグローバルに利用可能にし、作成者を確認し、リンクを腐敗させることなく、コンテンツの各部分を作成者が改ざん防止の監査証跡を維持しながら更新できる、分散型の検閲に強いプラットフォームでコンテンツを公開およびホストします。変更します。

  • ブログプラットフォーム

  • ニュースメディアと出版物

クロスアプリケーションデータ共有

Ceramicでは、すべてのデータがオープンWebに公開され、正確性を心配したり、集中型サーバーや1回限りのAPI統合を処理したりすることなく、さまざまな組織やアプリケーション間で検証可能な情報をリアルタイムで簡単に共有できます。

  • クロスアプリケーションデータ

  • 組織間のデータ

  • エンタープライズシステムオブレコード(SOR)

セマンティックWeb

複数のストリームをリンクして、グラフを壊すことなくそれぞれ個別に進化できる検証可能なデータオブジェクト間の関係のグラフを形成します。

リミックス可能なコンテンツ

ネットワーク上のストリームをフォークしてリミックスし、まったく新しい作品にします。許可は必要ありません。

Ceramicは、分散型Webに格納されているすべてのタイプのデータ構造に対して、計算、ステート変換、およびコンセンサスを提供する、パブリックで許可のないオープンソースプロトコルです。Ceramicのストリーム処理により、開発者は、信頼できるデータベースサーバーがなくても、動的な情報の上に安全で信頼できない検閲に強いアプリケーションを構築できます。

この概要では、次の方法を紹介します。

  • 分散型コンテンツの計算は、オープンソース情報の新時代を生み出します

  • ストリーム処理は、動的な分散型コンテンツに適切なフレームワークを提供します

  • Ceramicを使用して、データベースを真に分散化された代替手段に置き換えることができます

スキップして構築を開始するには、PlaygroundでブラウザアプリケーションでCeramicをデモするか、クイックスタートガイドでCeramic CLIを使用して基本を学ぶか、インストールページに従ってCeramicをプロジェクトに統合してください。

オープンソース情報のインターネット

インターネットは、IDシステムやユーザーテーブルから、ユーザー、サービス、またはマシンによって生成されたあらゆる種類のコンテンツを格納するためのデータベースやフィードまで、ステートフルなデータソースで実行されるアプリケーションのコレクションです。

今日のインターネット上の情報のほとんどは、独自のリソースとしてデータを保護するように設計されたアプリケーション固有のデータベースサーバーにロックされています。信頼できる仲介者として機能するアプリケーションは、明示的なアクセス許可、1回限りのAPI統合、および返されたステートが正しいことの信頼を要求することにより、他のユーザーがこの情報にアクセスすることを困難かつ不透明にします。このサイロ化された競争の激しい環境は、開発者にとってより多くの摩擦をもたらし、ユーザーにとってより悪い体験をもたらします。

他の側面に沿って、Webは急速に進化し、よりオープンソースで構成可能で協調的なエコシステムになりました。この傾向は、Gitの分散バージョン管理によって実現されたオープンソースソフトウェアと、ブロックチェーンの二重支払い保護によって実現されたオープンソースファイナンスで観察できます。オープンソースの同じ原則はまだコンテンツに適用されていません。

変革をもたらすイノベーションの次の波は、同じオープンソースの原則を世界の情報に適用し、アプリケーションや組織の境界を越えて摩擦なく共有できるコンテンツの世界を解き放つことです。これを実現するには、ファーストクラスの要件として柔軟性、スケーラビリティ、および構成可能性を備えたコンテンツ用に特別に設計された分散型計算ネットワークが必要です。

分散型コンテンツの計算

アプリケーションのコンテンツレイヤーをオープンソーシングするには、ファイルを保存したり、計算を実行したり、ステートを追跡したり、他のユーザーがコンテンツに簡単にアクセスしたりできる、許可のないパブリック環境に情報を展開する必要があります。

他のWeb3プロトコルの進歩は、分散型ファイルストレージですでに成功を収めています。分散型Web用のユニバーサルファイルシステムとして、IPFSIPLDおよびLibp2pを含む)は、非常に柔軟なコンテンツの命名およびルーティングシステムを提供します。ストレージディスクとして、耐久性のある永続性ネットワーク(FilecoinArweaveSiaなど))IPFSファイルで表されるコンテンツが永続化され、利用可能に保たれていることを確認します。このWeb3プロトコルのスタックは、静的ファイルの保存には適していますが、それ自体では、可変性、バージョン管理、アクセス制御、プログラマブルロジックなどのより高度なデータベースのような機能の計算およびステート管理機能が不足しています。これらは、開発者がフル機能の分散型アプリケーションを構築できるようにするために必要です。

Ceramicを使用すると、静的ファイルを高次の可変データ構造に構成し、任意の方法で動作するようにプログラムし、その結果のステートをノードの分散型ネットワーク全体に保存および複製できます。Ceramicは、IPFSファイルシステムと基盤となる永続性ネットワーク、および分散型エコシステムの他のオープンスタンダードに基づいて構築および拡張されており、汎用の分散型コンテンツ計算基盤を備えています。Ceramicの許可のない設計と統合されたグローバルネットワークにより、世界中の誰もが、一元化されたサーバーを信頼したり、1回限りのAPIを統合したり、情報のステートが返されるかどうかを心配したりすることなく、既存のデータをオープンに作成、検出、クエリ、構築できます。正しい。

ストリーム

Ceramicの分散型コンテンツ計算ネットワークは、Web2にあるさまざまなストリーム処理フレームワークをモデルにしています。これらのタイプのシステムでは、イベントが取り込まれ、到着時に処理され、結果の出力がログに適用されます。照会および削減されると、このログは情報の現在のステートを表します。これは、分散型Webで動的情報をモデル化する方法を概念化するための適切なフレームワークです。さらに、特定のストリームで着信イベントを処理する関数は、あらゆるユースケースのロジックでカスタム作成できるため、Web上に存在する可能性のある情報の多様性を表すために必要な汎用の柔軟性と拡張性を提供します。

Ceramicでは、各情報は、ストリームと呼ばれるコミットの追加専用ログとして表されます。各ストリームはIPLDに格納されたDAGであり、StreamIDと呼ばれる不変の名前と、StreamStateと呼ばれる検証可能なステートがあります。ストリームの概念はGitツリーに似ており、各ストリームは独自のブロックチェーン、元帳、またはイベントログと考えることができます。

StreamTypes

各ストリームは、特定のストリームで使用される処理ロジックであるStreamTypeを指定する必要があります。StreamTypeは基本的に、ストリームのステート遷移と結果の出力を管理するストリームへの新しいコミットを受信すると、Ceramicノードによって実行される関数です。StreamTypesは、データ構造、コンテンツ形式、認証またはアクセス制御、コンセンサスアルゴリズムなど、ストリームのすべてのルールとロジックを適用する役割を果たします。。更新がStreamTypeで指定されたロジックに準拠していない場合、更新は無視されます。ストリームに有効なコミットを適用した後、結果のStreamStateはCeramicNetwork上の残りのノードにブロードキャストされます。このストリームを維持している他の各ノードは、この新しいトランザクションを反映するようにStreamStateを更新します。

Ceramicの柔軟なStreamTypesフレームワークにより、開発者は、任意のルールのセットに準拠するあらゆる種類の情報をステートフルイベントストリームとして展開できます。Ceramicクライアントには、幅広い一般的なユースケースをカバーするStreamTypeの標準セットがあらかじめパッケージ化されているため、アプリケーションの構築を簡単に開始できます。

  • タイルドキュメント: JSONドキュメントを格納するStreamTypeで、NoSQLドキュメントストアと同様の機能を提供します。タイルドキュメントは、IDメタデータ(プロファイル、ソーシャルグラフ、レピュテーションスコア、リンクされたソーシャルアカウント)、ユーザー生成コンテンツ(ブログ投稿、ソーシャルメディアなど)、コレクションやユーザーテーブルを形成するための他のStreamIDのインデックスのデータベース置換として頻繁に使用されます。 (IDX)、DIDドキュメント、検証可能なクレームなど。タイルドキュメントは認証をDIDに依存しており、ストリームに対するすべての有効な更新は、ストリームを制御するDIDによって署名されている必要があります。

  • CAIP-10リンク:ブロックチェーンアドレスをDIDにリンクする暗号的に検証可能な証明を格納するStreamType。DIDは、多くの異なるブロックチェーンネットワーク上の多くの異なるアドレスにバインドする無制限の数のCAIP-10リンクを持つことができます。CAIP-10リンクも、タイルドキュメントと同様に、認証にDIDに依存しています。

  • カスタム:事前にパッケージ化されたStreamTypeがユースケースに適していない場合は、独自のStreamTypeを実装し、Ceramicノードにデプロイできます。

認証

StreamTypesは、新しいデータを特定のストリームに追加することを許可する方法の認証要件を指定できます。異なるStreamTypeは、異なる認証要件を実装することを選択する場合があります。Ceramic StreamTypesがサポートする最も強力で重要な認証メカニズムの1つは、分散型識別子のW3C標準であるDIDです。DIDは、デフォルトのStreamTypes(タイルドキュメントとCAIP-10リンク)で使用されます。

DIDは、グローバルに一意でプラットフォームに依存しない文字列識別子から、署名の検証と暗号化のための公開鍵を含むDIDドキュメントに移行する方法を提供します。Ceramicは、あらゆるDIDメソッドの実装をサポートできます。以下に、Ceramicで現在サポートされているDIDメソッドを示します。

  • 3ID DIDメソッド:CeramicのTile DocumentStreamTypeを使用して変更可能なDIDドキュメントを表すDIDメソッド。3IDは通常、エンドユーザーアカウントに使用されます。3IDをIDXおよび3IDキーチェーン 3ID Connectで実装されている)と組み合わせて使用​​すると、3IDは任意のL1またはL2ネットワークの任意の数のブロックチェーンアカウントで簡単に制御できます。これは、他のすべてのプラットフォーム間でユーザーのIDを統合する方法を提供します。

  • キーDIDメソッド:任意のEd25519キーペアから静的に生成されたDIDメソッド。キーDIDは通常、開発者アカウントに使用されます。キーDIDは軽量ですが、欠点は、そのDIDドキュメントが不変であり、侵害された場合にキーをローテーションする機能がないことです。

  • NFT DIDメソッド(近日公開):任意のブロックチェーン上の任意のNFTのDIDメソッド。DIDドキュメントは、オンチェーンデータから静的に生成されます。アセットの現在の所有者のブロックチェーンアカウントに関連付けられたDID(CAIP-10リンクを使用)は、NFT DIDに代わって行動し、DIDベースのシステムで認証し、所有するストリームまたはその他のデータを更新することを許可された唯一のエンティティです。 NFTDID。NFTの所有権が変更されると、コントローラーの権限も変更されます。

  • 安全なDIDメソッド(近日公開):任意のブロックチェーンでのGnosisSafeスマートコントラクトのDIDメソッド。通常、組織、DAO、およびその他のマルチシグエンティティに使用されます。

Ceramicネットワーク

Ceramicネットワークは、Libp2pピアツーピアネットワークプロトコルの専用トピックを介して通信するCeramicプロトコルを実行するノードの分散型の世界規模のネットワークです。Ceramicは、その独自の設計により、最大の水平方向のスケーラビリティ、スループット、およびパフォーマンスを実現できます。

シャード実行環境

スケーラビリティが単一のグローバル仮想実行環境(VM)に制限され、単一の元帳のステートがすべてのノード間で共有される従来のブロックチェーンシステムとは異なり、各Ceramicノードは、ストリームで計算を実行し、トランザクションを検証するための個別の実行環境として機能します。グローバル元帳ではありません。この「組み込み」実行シャーディングにより、Ceramic Networkを水平方向に拡張して、ネットワーク上のノード数が増えるにつれて、増加する同時ストリームトランザクションの処理を並列化できます。このような設計は、金融ブロックチェーンで必要なスループットよりも桁違いに大きい世界のデータの規模を処理するために必要です。

グローバルネーム空間

すべてのノードは同じCeramicNetworkの一部であるため、Ceramic上のすべてのストリームは、他のノードからアクセスしたり、他のストリームから参照したりできる単一のグローバルネーム空間内に存在します。これにより、オープンソース情報の公開データWebが作成されます。

追加のノードの責任

StreamTypeロジックに従ってストリームトランザクションを実行することに加えて、Ceramicノードは他のいくつかの重要な責任も維持します。

  • StreamStateストレージ:Ceramicノードは、保持したいストリームのStreamStateのみを永続化します。これは、「ピン留め」と呼ばれるプロセスです。異なるノードは異なるストリームのStreamStatesを維持しますが、複数のノードが単一のストリームのステートを維持できます。

  • コミットログストレージ:Ceramicノードは、固定しているストリームへのすべてのコミットのローカルコピーを維持します。

  • 永続性コネクタ:Ceramicノードは、オプションで、固定しているストリームのコミットをバックアップするために、追加の耐久性のあるストレージバックエンドを利用できます。これは、Filecoin、Arweave、Siaなど(近日公開予定)を含む、上記の永続化ネットワークのいずれでもかまいません。

  • クエリ応答:Ceramicノードは、クライアントからのストリームクエリに応答します。ノードにストリームが固定されている場合、応答を返します。そうでない場合は、ネットワークの残りの部分にlibp2pを介したストリームを要求し、応答を返します。

  • トランザクションのブロードキャスト: Ceramicノードがストリームでトランザクションを正常に実行すると、libp2pを介してネットワークの残りの部分にこのトランザクションをブロードキャストするため、このストリームを固定している他のノードもStreamStateを更新してこの新しいトランザクションを反映できます。

クライアント

クライアントは、ストリームでトランザクションとクエリを実行するための標準インターフェイスを提供し、アプリケーションにインストールされます。クライアントは、ユーザーの認証とトランザクションへの署名も担当します。

現在、Ceramicには3つのクライアントがあります。追加のクライアント実装は、他のプログラミング言語で簡単に開発できます。

  • JS HTTPクライアント:HTTPを介してリモートのCeramicノードに接続する軽量のJavaScriptクライアント。JS HTTPクライアントは、アプリケーション開発者に推奨されます。

  • JSコアクライアント:完全なCeramicノードも含むJavaScriptクライアント。JS Coreクライアントは、完全なCeramicプロトコルをブラウザアプリケーションで直接実行することを最大限に分散させたい人向けです。

  • CLI:Ceramicノードと対話するためのコマンドラインインターフェイス。


この記事が気に入ったらサポートをしてみませんか?