web-dev-qa-db-ja.com

IPFSはすべてのデータをどこに保存しますか?

私はIPFSの動作を実装して理解しようとしてきましたが、はっきりしないことがいくつかあります。

私が試したこと:
システムにIPFSを実装し、その上にファイルを保存しました。システムからファイルを削除してipfsデーモンを閉じても、IPFSを介して別のマシンからファイルにアクセスできます。
ホームディレクトリに。ipfsフォルダーがあり、IPFSに追加するデータブロックの一部が含まれていることに気付きました。

質問:
1。ブロックもシステムにローカルに保存されていますか?
2。データはどこに保存されますか?私が接続している他のピアで? ipfsデーモンを閉じてもファイルにアクセスできるためです。
3。これが当てはまり、データが複数の場所に保存されている場合、すべてのピアがネットワークから切断されると、データを失う可能性がまだありますか?
4。ネットワーク上のすべてのピアは、ファイル全体またはファイルの一部のみを保存しますか?
5。データのコピーがp2pネットワーク全体に配信されている場合、データが複数回複製されていることを意味しますか?ストレージに関してこれはどのように効率的ですか?
6。他のピアからアップロードされたデータも保存しますか?
7。 IPFSを実行するための最小システム要件は?強力なシステムではなく、豊富なストレージが必要ですか?

前もって感謝します!

29
Aneesh Kumar

何かをアップロードすると、ファイルはipfsによってchunkedされ、キャッシュフォルダー(.ipfs)に保存されます。

ネットワークの別のピア(メインゲートウェイ、ipfs.ioなど)でファイルを表示しようとすると、そのピアはファイルを要求し、cachesそれも。

その後、デーモンをオフにすると、おそらくゲートウェイまたはWeb上の他のピアがまだキャッシュしているため、ゲートウェイ上のファイルを表示できます。

ピアがファイルのダウンロードを希望しているが、メモリが不足している(キャッシュできなくなっている)場合、最も古い使用済みファイルは空き領域を忘れてしまいます。

...実際には、それよりも複雑です。より広い範囲を確認するには、以下を確認してください。

  • gitの仕組み
  • 分散ハッシュテーブル
  • カデムリア
  • マークルの木
  • ...

しかし、後者は、メカニズムが多かれ少なかれ動作する方法のアイデアを提供する必要があります。

さて、ポイントごとに答えましょう

  1. はい
  2. ファイルを要求するすべてのピアがキャッシュします
  3. ファイルの一部をキャッシュしたすべてのピア(自分を含む)からファイルを再構成することができなくなると、ファイルを失います。
  4. その一部だけを手に入れることができます。映画を見ているとき、半分で停止することを想像してください。それで、半分だけがキャッシュされました。
  5. YouTubeで動画を視聴するとき、ブラウザはキャッシュします(つまり、レプリケーションを意味します!)...トラフィックに関してipfsの方が効率的です。ブラウザをオフにして、2分後にもう一度見たいとしましょう。 Ipfsがキャッシュから取得し、YouTubeで再度ダウンロードします。また、デルタストレージ(Gitに関連)andには興味深い問題があります(LAN内にある可能性があります...高速)しかし、私はそれに飛び込むことはありません。
  6. データを取得したら、キャッシュします...
  7. メインデーモンはgoで記述されています。 Goは効率的ですが、C++、C、Rustで記述するほど効率的ではありません。また、技術はかなり若く、時間とともに改善されます。より多くのスペースがあれば、より多くのキャッシュを作成できますが、CPUパワーはそれほど重要ではありません。

データをp2p方式で保存する方法に興味がある場合は、興味深いプロジェクトへのリンクをいくつかご紹介します。

30
G. M.