Skip to content
This repository has been archived by the owner on Feb 6, 2023. It is now read-only.

Ceramic Network

KingYoSun edited this page Sep 16, 2021 · 4 revisions

ざっくり

改変可能な分散型ファイルネットワーク(IPFSのwrapper的なもの)

Streamとnodeについて

こちらより

  • Streamはファイルの実体(ステート)とイベントログ:変更履歴(コミット)の二つで構成されるCeramic Networkのデータ単位
  • データの永続性と可用性の確保はノードに依存している
  • ノードがストリームへの書き込み・参照を行う度にネットワークからコミットが同期されるため、人気のあるストリームほど永続性・可用性が担保される
  • ノードのインメモリーキャッシュのデフォルトは500ストリームまで。それ以上は古いもの順にキャッシュから削除される
  • ノードの再起動・シャットダウンでキャッシュはクリアされる
  • ストリームの永続化にはPinningやアーカイブを使う

-------------以下翻訳--------------

Streamとは

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

ストリームのコミット

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

キャッシング

Ceramicノードには、コミットを短期間保存するためのキャッシング機構が組み込まれています。Ceramicノードがストリームへの書き込みや問い合わせを行うと、そのストリームのすべてのコミットがまずネットワークから同期され、自動的にノードのインメモリーキャッシュに読み込まれます。これにより、最も人気のあるストリームが最も多く複製され、ある程度のデータの永続性と可用性が確保されます。ただし、ディスクスペースとノードのリソースを確保するため、インメモリーキャッシュのデフォルトは500ストリームまでとなっています(ただし、任意の数に設定可能)。この数に達すると、最も古いストリームがノードのキャッシュから削除され、新しいストリームのためのスペースが確保されます。

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

Pinning

Pinning は、コミットのデータをより長期に渡って保持するための仕組みです。ピン留めとは、特定のストリームのコミットを明示的にホストする(ピン留めする)よう、Ceramicノードに指示するプロセスです。コミットはIPLDに格納されているため、CeramicノードにはすでにIPFSノードがバンドルされており、ここでピン留めが行われます。IPFSノードは、接続されているCeramicネットワーク上でアクセス可能なすべてのストリームのコミットをピン留めすることができます。また、Ceramicピン留めは、バンドルされた内部バージョンではなく、外部のIPFSノードを使用しても機能します。

開発者が、1つのセッションを超えてストリームを永続化し、データ損失に対する耐性を高める最も簡単な方法を求めている場合、ピン留めは適切なオプションです。セラミックノードは、無制限にストリームを固定することができます。ただし、1つのIPFSノードだけが特定のストリームをピン留めしていて、それが永遠に消えてしまったり、破損してしまったりすると、そのストリームは失われてしまうことに注意してください。また、あるストリームを固定しているノードが1つだけで、他のCeramicノードがそのストリームをキャッシュしていない場合、そのノードがオフラインになると、他のノードはそのストリームを利用できなくなります。したがって、耐障害性とデータの可用性を高めるためには、異なる環境で動作する複数のIPFSノードが同じストリームをピン留めすることが最善です。

Ceramicノードでストリームを固定する方法については、「固定」ガイドを参照してください。

アーカイビング

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

-----------以下こちらより--------------

StreamTypes¶(ストリームタイプ

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

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

Tile Document

JSONドキュメントを格納するStreamTypeで、NoSQLドキュメントストアと同様の機能を提供します。Tile Documentは、アイデンティティメタデータ(プロファイル、ソーシャルグラフ、レピュテーションスコア、リンクされたソーシャルアカウント)、ユーザー生成コンテンツ(ブログ投稿、ソーシャルメディアなど)、コレクションやユーザーテーブルを形成するための他のStreamIDのインデックス(IDX)、DIDドキュメント、検証可能なクレームなどのデータベースの代替として頻繁に使用されます。タイルドキュメントは、認証のためにDIDに依存しており、ストリームに対するすべての有効な更新は、そのストリームを管理するDIDによって署名されなければなりません。 CAIP-10 リンク:ブロックチェーンのアドレスをDIDにリンクさせる、暗号的に検証可能な証明を格納するStreamType。DIDは、多くの異なるブロックチェーンネットワーク上の多くの異なるアドレスにバインドするCAIP-10リンクを無制限に持つことができます。CAIP-10 Linksはまた、Tile Documentと同じように、認証のためにDIDに依存しています。 カスタム。事前にパッケージされたStreamTypeがユースケースに適していない場合、独自のStreamTypeを実装してCeramicノードにデプロイすることができます。