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

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

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

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

推薦する

2023 年のイーサリアム エコシステムに関する 5 つの予測

イーサリアム エコシステムに関する 5 つの予測:弱気相場はまだ終わっていない。 EigenLaye...

道の境界 - どのような組織や製品が道と呼べるでしょうか?

今日は、イーサリアムの半分を管理するコンセンシスに関連するニュースが2つあります。 1つは、シリーズ...

データ:過去15時間で、BinanceやBitfinexなどの大手取引所は約1億1,700万XRPを送金した。

Whale Alertのデータによると、BinanceやBitfinexなどの大手取引所は過去15...

暗号通貨界における MLM コインとポンジスキームをどのように区別すればよいでしょうか?

近年、ビットコインに対する世界の姿勢は変動していますが、ビットコインの基盤技術の一つであるブロックチ...

デジタル人民元は国内市場へのサービス提供に重点が置かれており、国際通貨競争に参加するには独自の機能を向上させる必要がある。

ボアオ・アジアフォーラム副議長、中国人民政治協商会議第12期全国委員会副議長、中国人民銀行前総裁の周...

Fedの利下げは暗号通貨市場にどのような影響を与えるでしょうか?

3月のインフレデータが予想以上に高かったため、リスク資産は急落した。利下げはいつ行われるのでしょう...

UAE中央銀行規制報告書: すべての決済プロバイダーは仮想通貨取引を行うことを厳しく禁止されています (完全なレポートをダウンロード)

世界が中国人民銀行(PBoC)によるビットコインとデジタル通貨に関する規制の発表を待っている間、別の...

米国政府はさらに2,170ビットコインをオークションにかけ、2,400万ドル以上の価値があると発表

2,400万ドル以上の価値がある2,170ビットコインがオークションに出品される。米連邦保安官局は連...

BitDeerがCKBマイニングパッケージの販売を開始

BitDeerの公式サイトの発表によると、BitDeerはまもなくCKBマイニングパッケージサービス...

レポート:ビットコイン価格の長期的上昇の4つの理由

最近、Delphi Digital(デジタル資産市場に焦点を当てた調査機関)が新しい四半期レポートを...

中国で受け入れられるブロックチェーンプロジェクトは何ですか?

2009年にサトシ・ナカモトが「ビットコイン」を開発して以来、素晴らしい技術がゆっくりと現れ始めま...

暗号通貨界の大物が10億ドル規模の上場企業を報告:同社の最新の反応はここに

8月8日午後、易邦インターナショナルは記者会見を開いた。同社の胡東会長は、先週金曜日(8月6日)、浙...

呉氏は、国内のエネルギー不足により規制が強化され、海外の鉱山会社がコインを蓄えているとの週刊鉱業ニュースを報じた。0927-1010

ウー・サイード著者 |コリン・ウーこの号の編集者 |コリン・ウー今週のまとめ: 国内のエネルギーと電...