メインコンテンツまでスキップ

DigStoreとは?

DigStoreは、Git形式で、暗号化された、コンテンツアドレス指定型のプロジェクトであり、単一の自己防衛型WebAssemblyモジュールにコンパイルされます。

Gitスタイルのコマンド — initaddcommitlogclonepushpull — が使えるプロジェクトでありながら、保存時に暗号化され、1つの.wasmファイルにコンパイルされます。この単一のファイルはあなたのデータであると同時に、そのアクセスを制御するサーバーでもあります。それを保存または中継するホストは、ハッシュでアドレス指定された暗号文しか見えず、それが運んでいるものを読むことはできません。

コンテンツは**URN**でアドレス指定され、URNこそが鍵です。それは場所を示すと同時に復号も行います。誰かにURNを渡せば、そのリソースを読むことができます。渡さなければ読めません — 管理すべき別のパスワードやアクセスリストは存在しません。

Gitとは異なり、DigStoreはビルド出力のために作られており、リポジトリのソースのためのものではありません。プロジェクトをdist/のようなディレクトリに向けると、そこにあるものを取り込みます。

存在理由

問題DigStoreの答え
ホストが公開物を読む・スキャンできてしまうコンテンツは保存時に暗号化され、ホストはハッシュでキー付けされた暗号文しか保持しない
アクセス制御にはパスワードとACLが必要になるURNこそが権限(capability)である — 共有すれば読み取りを許可し、渡さなければ拒否する
サーバーが本物のバイト列を返すと信頼しなければならないclone/pullは、インストール前にモジュールのstore id、公開者の署名済みroot、そしてオンチェーンのシングルトンrootを検証する — 失敗時は閉じる
「このペイロードはどれくらい大きいか」がファイルサイズから漏れるすべてのプロジェクトは1つの.wasmであり、内容について何も明かさない均一なサイズにパディングされる
サービングロジックがデータとは別の場所に存在するデータとそれを制御するコードが同じモジュールにコンパイルされる

このドキュメントの読み方

  • DigStoreフォーマット — 概念編:プロジェクト、デプロイ、.wasmモジュール、URN、暗号化、証明。DigStoreが何であるかを理解したいなら、まずここから。
  • CLIチュートリアル — CLIをインストールして実際のプロジェクトで使う:プロジェクトの初期化、ビルドディレクトリの取り込み、デプロイのコミット、リモート経由の共有、コンテンツのストリーミング読み出しまで。

とにかく試してみたいなら、クイックスタート(無料でWeb優先の手順)または**CLIチュートリアル**に直接進んでください。

注記

DigStoreはDIG Networkの一部です。技術設計の全体像はプロトコルセクション(コンテンツアドレス指定型WASM storeフォーマット)にあります。