IPFS のより深い理解 (パート 1): 初心者から上級者までを対象とした完全ガイド

IPFS のより深い理解 (パート 1): 初心者から上級者までを対象とした完全ガイド

この記事は、「IPFS の詳細な理解」と題された一連の記事の最初のものです。このシリーズは、IPFS の基本的な概念を理解するのに役立ちます。このシリーズはできるだけ退屈にならないように努めます。

このシリーズは 6 つのパートに分かれています。

● IPFSの詳細な理解(1/6): 初心者から上級者向けガイド: このパートでは、IPFS とは何か、なぜ必要なのか、そして IPFS で何ができるのかを説明します。 IPFS の基盤となるすべてのコンポーネント (後のセクションで詳細に分析します) を簡単に紹介し、それらがどのように連携するかを理解します。内部の仕組みを知らなくても簡単に概要を知りたい場合は、このセクションが役立ちます。

● IPFSの詳細な理解(2/6): InterPlanetary Linked Data (IPLD) とは何ですか?このセクションでは、コンテンツ アドレス ネットワークに基づくデータ モデルについて詳しく説明します。 IPLD の詳細と仕様を調べ、徐々に IPLD に慣れて使用していきます。

● IPFSの詳細な理解(3/6): InterPlanetary Naming System (IPNS) とは何ですか?: このセクションでは、分散ネットワークの命名システムについて詳しく説明します。使用仕様と動作の仕組みについて見ていきます。また、これを今日の命名システムである DNS と比較し、IPNS と DNS の長所と短所を列挙します。

● IPFSの詳細な理解(4/6): MultiFormats とは何ですか?この部分では、MultiFormats が必要な理由、MultiFormats の仕組み、そしてユーザー/開発者として MultiFormats を使って何ができるかについて説明します。

● IPFSの徹底理解(5/6): Libp2p とは何ですか?この部分では、IPFS のネットワーク層とそれが IPFS に大きく貢献していることについて説明します。誰もがより明確に理解できるように、その動作、仕様、使用方法を説明します。

● IPFSの徹底理解(6/6): Filecoin とは何ですか?このセクションでは、IPFS のインセンティブ レイヤーである Filecoin について説明します。私たちは、DSN 分散ストレージ ネットワーク、レプリケーションの証明、ストレージの証明、データ ストレージ市場と検索市場、および Filecoin プロトコルに基づくスマート コントラクトの実装を含む、Filecoin のホワイト ペーパーと実装仕様を調査しました。また、ホワイトペーパーでは言及されていない Filecoin プロトコルのいくつかの欠陥についても議論し、Filecoin プロトコルの改善を提案しました。

このシリーズから IPFS について多くのことを学んでいただければ幸いです。さあ始めましょう!

最新の「アベンジャーズ」映画について誰かに尋ねても、おそらく「このサーバーのこのサブドメイン、そしてこのファイルパスの下、スラッシュ「マーベル」スラッシュ「アベンジャーズ」ドット mp4」のようなことは答えないでしょう。代わりに、彼らはビデオの内容を次のように説明します。「宇宙の半分がサノスによって破壊されました...」 人間にとって、これは明らかに最も直感的な考え方ですが、今日私たちがウェブ上のコンテンツにアクセスする方法ではありません。ただし、IPFS などの分散プロトコルは、コンテンツ ベースのアドレス指定 (ファイルの内容を使用してコンテンツにタグを付け、コンテンツを検索する) を使用して、分散ネットワークに保存されているコンテンツを検索します。この記事では、IPFS 全体がどのように機能するか、どのようなさまざまなコンポーネントが関係しているか、そしてそれらがどのように連携するかについて説明します。これを実行するには、IPFS にファイルを追加し、IPFS にファイルを追加すると何が起こるかを調べます。

まず、IPFS に写真を追加してみましょう。これを追加します...

https://unsplash.com/photos/rW-I87aPY5Y

ちなみに、私と一緒に使用するには、システムに IPFS がインストールされている必要があります。ここからインストールできます。 IPFS をインストールした後、IPFS デーモン (ネットワークからデータを追加および取得するために IPFS ネットワークと通信するソフトウェア) を起動する必要があります。 ipfsデーモンプロセスは次のように起動できます。

IPFSに写真を追加すると、次のことが起こります。

 

ターミナルでは次のようになりました:

 


最終的なハッシュはここで確認できます:

しかし、中間の 2 つのステップ (Raw と Digest) に関連するものは何も表示されません。これらはすべて「裏側」で起こります。

画像を追加すると、その画像はコンピュータが理解できる Raw データに変換されます。コンテンツがアドレス指定可能になったので (上記で説明しました)、この画像データをそのコンテンツを一意に識別するタグに変換する方法を考え出す必要があります。

ここでハッシュ関数が役立ちます。

ハッシュ関数は、データ(テキスト、写真、聖書全体など)を入力として受け取り、一意である出力(ダイジェスト)を生成します。この画像の 1 つのピクセルを変更すると、出力は異なります。この改ざん防止機能により、IPFS は自己認証ファイルシステムとなります。したがって、この写真を他の人に転送すると、受け取った写真が改ざんされていないかどうかを簡単に確認できます。

さらに、入力内容(この場合は猫の写真)はわかりませんが、出力内容(ダイジェスト)だけがわかります。したがって、コンテンツのセキュリティも確保されます。

ここで、生データを SHA256 ハッシュ関数に渡して、一意のダイジェストを取得します。ここで、このダイジェストを CID (コンテンツ識別子) に変換する必要があります。画像を取得しようとすると、IPFS はこの CID (コンテンツ識別子) を検索します。これを実現するために、IPFS はマルチハッシュと呼ばれる技術を使用します。

マルチハッシュの重要性を理解するには、次の状況を検討してください。

インターネット上に画像を保存すると、その CID を取得でき、それを取得したい人に提供できます。しかし、将来、SHA256 が壊れていることが判明し (つまり、このプロセスは改ざん防止とセキュリティが失われている)、SHA3 を使用したい (改ざん防止とセキュリティを確保するため) 場合はどうなるでしょうか。これは、写真を CID に変換するプロセス全体を変更することを意味し、以前の CID は役に立たなくなります...

この場合、上記の質問は些細な問題のように思えるかもしれませんが、これらのハッシュ関数が数十億ドルの資金を稼いでいることを知っておく必要があります。すべての銀行、国家安全保障機関などは、安全に運営するためにこれらのハッシュ関数を使用しています。これがないと、ブラウザ上のすべてのサイト アドレスの横に表示される緑色のロックも機能しません。

この問題を解決するために、 IPFS はマルチハッシュを使用します。 Multihash を使用するとハッシュをカスタマイズできます。したがって、使用されるハッシュ関数に応じて、CID の複数のバージョンが存在する可能性があります。このシリーズのパート 4 では、Multihash について詳しく説明し、Multiformat についてさらに詳しく説明します。

これで写真を IPFS に追加できましたが、これで終わりではありません。現在の実際の状況は次のとおりです。

大きなファイルはチャンク化され、IPLD(Merkle DAG)にハッシュ化されます。

ファイルが 256kb より大きい場合は、すべての部分が 256kb 以下になるようにファイルを小さな部分に分割します。写真ブロックで使用されているこのコマンドを確認できます。

ipfs オブジェクト取得 Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

これにより、それぞれが 256kb 未満の 15 個のブロックが生成されます。これらの各ブロックは、まずダイジェストに変換され、次に CID に変換されます。

{

「リンク」: [

{

"名前": ""、

「ハッシュ」: 「QmZ5RgT3jJhRNMEgLSEsez9uz1oDnNeAysLLxRco8jz5Be」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmUZvm5TertyZagJfoaw5E5DRvH6Ssu4Wsdfw69NHaNRTc」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmTA3tDxTZn5DGaDshGTu9XHon3kcRt17dgyoomwbJkxvJ」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmXRkS2AtimY2gujGJDXjSSkpt2Xmgog6FjtmEzt2PwcsA」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmVuqvYLEo76hJVE9c5h9KP2MbQuTxSFyntV22qdz6F1Dr」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmbsEhRqFwKAUoc6ivZyPa1vGUxFKBT4ciH79gVszPcFEG」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmegS44oDgNU2hnD3j8r1WH8xZ2RWfe3Z5eb6aJRHXwJsw」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmbC1ZyGUoxZrmTTjgmiB3KSRRXJFkhpnyKYkiVC6PUMzf」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmZvpEyzP7C8BABesRvpYWPec2HGuzgnTg4VSPiTpQWGpy」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmZhzU2QJF4rUpRSWZxjutWz22CpFELmcNXkGAB1GVb26H」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmZeXvgS1NTxtVv9AeHMpA9oGCRrnVTa9bSCSDgAt52iyT」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmPy1wpe1mACVrXRBtyxriT2T5AffZ1SUkE7xxnAHo4Dvs」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmcHbhgwAVddCyFVigt2DLSg8FGaQ1GLqkyy5M3U5DvTc6」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmNsx32qEiEcHRL1TFcy2bPvwqjHZGp62mbcVa9FUpY9Z5」、

「サイズ」: 262158

},

{

"名前": ""、

「ハッシュ」: 「QmVx2NfXEvHaS8uaRTYaF4ExeLaCSGpTSDhhYBEAembdbk」、

「サイズ」: 69716

}

]、

「データ」: "\b\u0002\u0018Ơ�\u0001 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 ��\u0010 Ơ\u0004"

}

IPFS は IPLD (IPLD は Merkle DAG または有向非巡回グラフを使用) を使用してすべてのブロックを管理し、それらを基本 CID にリンクします。

IPLD (オブジェクト) は 2 つのコンポーネントで構成されます。

● データ - サイズが 256 KB 未満の非構造化バイナリ データの BLOB (バイナリ ラージ オブジェクト)。

● リンク – 構造の配列。他の IPFS オブジェクトへのリンク。

IPLD リンク (この場合は上記の 15 個のリンク) には 3 つの部分があります。

● 名前 – リンクの名前

● ハッシュ - リンクされたIPFSオブジェクトのハッシュ値

● サイズ - リンクされた IPFS オブジェクトの累積サイズ(それに続くリンクのサイズを含む)

IPLD は、分散 Web コミュニティの人々が長い間話題にしてきた Linked Data 上に構築されています。これはティム・バーナーズ=リーが長年取り組んできたことであり、彼の新しい会社であるソリッドはそれを中心にビジネスを構築しています。

IPLDを使用すると、他にも利点があります。これを説明するには、「写真」というフォルダーを作成し、そこに 2 枚の写真 (猫の写真と、同じ写真のコピー) を追加します。

ご覧のとおり、両方の写真のハッシュ値は同じです (これは、画像のコピーで何も変更していないことを証明しています)。これにより、IPFS に重複排除プロパティが追加されます。そのため、友達が同じ猫の写真を IPFS に追加したとしても、その画像のコピーは友達に渡されません。これにより、多くのストレージスペースが節約されます。

この記事を IPFS に保存し、各文字がチャンク化されて一意の CID を持つとしたら、この記事は文字 (大文字と小文字)、数字、およびいくつかの特殊文字の組み合わせになる可能性があります。各文字、数字、記号を 1 回だけ保存し、データ構造内のリンクに従って並べ替えます。

IPFS には、InterPlanetary Naming System (IPNS) と呼ばれる命名システムもあります。その重要性を理解するために、Web サイトを作成し、それを何らかのドメイン名でホストしていると仮定しましょう。この例では、私のウェブサイト https://vaibhavsaini.com/ を使用します。

IPFS でホストしたい場合は、IPFS に Web サイト フォルダーを追加するだけです。この目的のために、wget を使用して Web サイトをダウンロードしました。 Ubuntu や MAC などの Linux ベースのオペレーティング システムを使用している場合は、ぜひ私と一緒に試してみてください。

このウェブサイト(または任意のウェブサイト)からのダウンロード:

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://vaibhavsaini.com

次に、vaibhavsaini.com という名前の IPFS フォルダーを追加します

ipfs add -r vaibhavsaini.com

次のようなものが表示されます:

 


ウェブサイトが最後の CID (つまり、フォルダの CID) でホストされていることがわかります

QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

http プロトコルを使用してサイトにアクセスできます

https://gateway.pinata.cloud/ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB/

たとえば、ウェブサイト上の自分のプロフィール写真を変更したいとします。上記で学んだように、入力を変更すると、異なるダイジェストが生成され、最終的な「CID」も異なります。

つまり、サイトを更新するたびにハッシュを更新する必要があり、以前のサイト (上記の URL) へのリンクを持っている人は新しいサイトを表示できなくなります。

これは深刻な問題を引き起こすでしょう。

このような問題を解決するために、 IPFS は InterPlanetary Naming System (IPNS) を使用します。 IPNS リンクを使用して CID をポイントします。ウェブサイトの CID を更新したい場合は、新しい CID を対応する IPNS リンクにポイントするだけです (これは現在の DNS に似ています)。このシリーズのパート 3 では、IPNS についてさらに詳しく見ていきます。

しかし、今は、自分の Web サイトの IPNS リンクを生成してみましょう

ipfs 名公開 QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

これには数分かかる場合がありますが、出力は次のようになります。

Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy に公開: /ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

新しいCIDを追加したい場合は同じコマンドを使用します

ipfs name publish <新しいCID>

これを使用すると、次のリンクを使用して私のウェブサイトの更新バージョンにアクセスできます: https://gateway.pinata.cloud/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy

しかし、上記のリンクアドレスは、人間にとってはまだ読みやすいものではありません。私たちは https://vaibhavsaini.com のような名前に慣れています。このシリーズのパート 3 では、IPNS をドメイン名にリンクして、https://vaibhavsaini.com にある私の IPFS ホスト Web サイトを表示する方法について説明します。

IPFS は、 HTTP プロトコルの潜在的な代替手段でもあります。しかし、なぜ HTTP を置き換えたいのでしょうか?問題なく動作するようですね?つまり、HTTP プロトコルを使用すれば、この記事を読んだり、Netflix で映画を視聴したりすることは可能です。

私たちにとってはうまく機能しているように見えますが、いくつか大きな問題があります。

あなたが大きな講堂に座っていて、教授が特定の Web サイトを訪問するように指示したとします。出席している各学生はウェブサイトにリクエストを送信し、応答します。つまり、同じデータが部屋内の各生徒に個別に送信されることになります。生徒が 100 人いれば、リクエストも 100 件、応答も 100 件あります。これは明らかに最も効率的なやり方ではありません。理想的には、学生は互いの情報を活用して、必要な情報をより効率的に取得できるようになります。

HTTP では、ネットワーク通信回線に何らかの問題があり、クライアントがサーバーに接続できない場合にも大きな問題が発生する可能性があります。これは、ISP が停止した場合、国が特定のコンテンツをブロックした場合、またはコンテンツが単に削除または移動された場合に発生する可能性があります。このような壊れたリンクは、HTTP ネットワークのほぼすべての場所に存在します。

HTTP の位置ベースのアドレス指定モデルは集中化を促進します。すべてのデータをいくつかのアプリに任せるのは便利ですが、それによって Web 上の多くのデータが汚くなってしまうことにもなります。これにより、これらのプロバイダーは私たちの情報に対して多大な責任と権限を持つことになります。

ここでLibp2pが役立ちます。 Libp2p は、IPFS ネットワーク上のデータ通信や他のノード (コンピューターまたはスマートフォン) の検出に使用されます。その仕組みは、すべてのコンピューターとスマートフォンが IPFS ソフトウェアを実行すると、すべてのシステムがクライアントとサーバーの両方として機能する大規模な BitTorrent ネットワークの一部になるというものです。したがって、100 人の学生が同じ Web サイトをリクエストした場合、学生は互いに Web サイト データをリクエストできます。このようなシステムが大規模に導入されれば、インターネットの速度が大幅に向上する可能性があります。

はい、今のところはこれですべてです。ここまで来たのなら、励ましを受ける価値があります。よくやった!

これまで、IPFS について多くのことを学びました。確認してみましょう:

● IPFS はコンテンツ アドレス可能性に基づいています。 IPFS 上のデータは CID を使用して識別されます。

これらのCID は参照するデータに対して一意です。

● IPFS は改ざん防止特性としてハッシュ関数を使用するため、IPFS は自己認証ファイルシステムになります。

● IPFS はマルチハッシュを使用するため、同じデータに対して異なるバージョンの CID を使用できます (ただし、これは CID が一意ではないことを意味するものではありません)。同じハッシュ関数を使用すると、同じ CID が取得されます。これについては、このシリーズのパート 4 でさらに詳しく説明します。

● IPFS は IPLD を使用してすべてのデータ ブロックを管理およびリンクします。

● IPLD は、Merkle DAG (有向非巡回グラフとも呼ばれる) データ構造を使用してデータ ブロックをリンクします。

● IPLD は IPFS に重複排除機能も追加します。

● IPFS は IPNS を使用して CID を固定 IPNS リンクにリンクします。このテクノロジーは、今日の集中型インターネットの DNS に似ています。

● IPFS は Libp2p を使用して IPFS ネットワーク上でデータを通信し、他のノード (コンピューターやスマートフォン) を検出します。これにより、インターネットの速度が大幅に向上します。

以下は IPFS スタックの図式表現です

 

 


原作者: vasa

オリジナルリンク: https://hackernoon.com/understanding-ipfs-in-depth-1-5-a-beginner-to-advanced-guide-e937675a8c8a

翻訳:スター大陸海外チーム

<<:  データによると、採掘可能な暗号通貨は採掘不可能な暗号通貨よりも価値が高い

>>:  金、マイニングマシン、仮想通貨、「中国のおばさん」の投資物語

推薦する

ビットコイン採掘の新たな入札戦争:洪水期には推定22万台のAntminer S17が採掘に投入される

▯ ビットコイン価格の上昇に伴い、中古マイニング機器の営業利益はますます高まっている▯ その結果、...

ビットコインの採掘は気候変動にほとんど影響を与えないと研究が示す

最近、ビットコインのマイニングが現在世界の電力供給の4分の1を消費していると報告されました。これは多...

ニューヨーク州上院、ビットコイン採掘を一時停止する法案を可決

ビットコイン(BTC)は一晩中29,000〜30,000ドルの範囲で横ばいだった。停滞していた市場に...

ETHの最近の価格動向と直接的な影響要因の分析

最近、ビットコインは力強く上昇しており、28000~28500の抵抗範囲を何度も突破しようとしていま...

暗号通貨カード凍結の傾向(3):なぜ多くのビットコインマイナーの銀行カードが凍結されるのか?

本文は以下のとおりです。暗号通貨界における最近の「カード凍結の傾向」は人々の間でパニックを引き起こし...

3回目の半減期前に執筆:マイナーが動かすビットコインの価格メカニズムを解釈する1万語

この記事はblockwaresolutionsからのもので、原著者はMatt D'Souza...

FIL がここにあり、メモリを除いてマイニングはますます激しくなっています。今後の鉱業の動向はどうなるでしょうか?

中国のマイナーから大きな期待を集めていたFILECOINメインネットが、10月15日夜についに正式に...

FRBは米国の仮想通貨投資家のほぼ半数が高所得者だと述べている

連邦準備制度理事会が2021年に発表した「米国世帯の経済的幸福」に関する年次報告書では、米国人の仮想...

ハリス氏の大統領候補指名は暗号通貨業界にとって何を意味するのでしょうか?

ジョー・バイデン大統領が突然選挙戦からの撤退を発表したため、カマラ・ハリス副大統領が民主党の大統領候...

NFTウィークリーレポート:CryptoPunksの総額は20億ドル近く、Animoca Brandsは8,888万ドル以上の資金調達を完了

毎週のレポートでは、NFT 市場データ、アートニュース、ゲームニュース、仮想世界、その他の動向の 5...

BOCHK、ブロックチェーン技術を採用する中国初の銀行に

中国銀行(香港)は応用科学技術研究所と提携してイノベーションセンターを設立し、ブロックチェーン技術を...

ニューヨークが仮想通貨マイニングを再開、環境と利害の衝突

ビットコインマイニングという新興産業は、デジタル資産を絶えず発見しているが、環境保護主義者からの強い...

意見:記録的なマイナー売却にもかかわらず、BTCは2月に4万ドルに戻る可能性がある

ビットコインは過去1週間で大きな変動を経験しました。先週末、テスラの創業者イーロン・マスク氏が自身の...

金融界の大物が市場に参入!ソロス・ファミリーオフィスがビットコイン取引を開始

ヘッジファンド業界の最大手企業の一部が、暗号通貨分野にさらに深く参入している。事情に詳しい関係者によ...

詐欺師が電力会社を装ってビットコインを脅迫

ktnvによると、最近、米国ラスベガスの電力サービス会社NV Energyを装った人物が、ユーザーが...