テクノロジー | IPFS ネットワークはどのように形成されるのでしょうか?

テクノロジー | IPFS ネットワークはどのように形成されるのでしょうか?

レビュー

IPFS (InterPlanetary File System) は、ピアツーピアの分散ファイル ストレージ システムです。 IPFS のビジョンは、従来の集中型サーバー モデルに代わる、世界中に分散型ネットワークを構築することです。すべての IPFS ノードは分散ネットワークを形成し、各ノードはファイルを保存できます。ユーザーは、IPFS によって構築されたネットワークから DHT (分散ハッシュテーブル) 形式でファイルを取得できるため、既存の World Wide Web に代わる、完全に分散化された新世代のネットワークを実現できます。 IPFS には、DHT ネットワーキング、ファイル ストレージ、Bitswap ファイル交換などの豊富な機能があります。

ファイルの保存とファイル交換の技術的な詳細については、以前のツイートをご覧ください。今日は、このファイル システムの「基盤」であるネットワーク モジュールについて学習します。

IPFSネットワークの紹介

IPFS はオープンソース プロジェクトです。世界中に分散型ネットワークを構築するという目標を達成するには、まず異なる国や地域のノード間の接続問題を解決する必要があります。

まず、IPFS ネットワークの構成を見てみましょう。下の図に示すように、赤いボックス内の Swarm は IPFS が監視するネットワーク アドレスです。 IPv4 および IPv6 プロトコルをサポートし、デフォルトで QUIC プロトコルをサポートします。



*QUIC プロトコルは、Google によって最初に提案され、インターネット技術タスクフォース (IETF) に提出され、正式なネットワーク仕様になりました。 TCP と比較すると、QUIC ネットワーク伝送プロトコルは伝送速度が速くなります。

IPFS ノードが起動すると、ログが下図のように表示されます。 IPFS ノードが、ローカル、LAN、WAN アドレス、最後に /p2p-circuit アドレスを含む次のネットワーク アドレスを監視していることがわかります。


問題は、なぜこれほど多くのアドレスを監視する必要があるのか​​ということです。

これは、IPFS がオープンソース プロジェクトであるためです。世界中のノードを接続するためには、さまざまなネットワーク状況下でのノード接続の問題を解決する必要があります。

ローカル アドレスをリッスンして、複数の IPFS ノードをローカルで起動し、このアドレスを使用して相互に接続できるようにします。 LAN アドレスをリッスンして、イントラネット内で複数の IPFS ノードを起動し、この LAN アドレスを使用して相互に接続できるようにします。 WAN アドレスをリッスンすることで、パブリック ネットワーク内で複数の IPFS ノードを起動し、この WAN アドレスを使用して相互に接続できるようになります。

上記の方法は、ほとんどのネットワーク状況で IPFS ノードのネットワーク接続の問題を解決します。

両方のノードは同じホスト上にあり、127.0.0.1アドレスで接続されています

同じイントラネット内の2つのノード: LANアドレス経由で接続

両方のノードにパブリックネットワークアドレスがあります。パブリックネットワークアドレス経由で接続します。

イントラネットに1ノード、パブリックネットワークに1ノード: イントラネットノードはパブリックネットワークノードのパブリックネットワークアドレスを介して接続されます。

ここに問題があります。 2 つのノードが 2 つの異なるイントラネット環境にある場合、NAT デバイスの存在により、NAT デバイスは対称になる可能性があります。対称 NAT デバイスは侵入できないため、IPFS は異なるイントラネット環境のノードの接続問題を解決するためのリレー方式を提供します。上記のリスニング/P2P 回線アドレスは、この問題を解決するためのものです。直接接続できない異なるイントラネット環境内の 2 つのノードの場合、リレー ノードを構成することで接続が確立されます。

これまで、IPFS は異なるネットワーク環境のノード間の接続を確立するという問題を解決してきました。次に、IPFS が世界中のさまざまな地域のノードを接続する大規模な分散ノード ネットワークを構築する方法を見てみましょう。

IPFSネットワーク構築

IPFS ネットワーク構築のプロセスは、次の 2 つの段階に分けられます。

▲ ブートストラップ段階

IPFS ノードを起動する前に、そのブートストラップ ノードを構成する必要があります。設定ファイル内の関連する設定を下図に示します。ブートストラップ構成では、IPFS ノードが起動時に接続する必要があるすべてのシード ノードのリストが構成されます。これらのノード アドレス リスト情報はデフォルトです。 IPFS プライベート ネットワークを構築する必要がある場合は、独自のシード ノード リストに変更できます (Qm で始まる文字列は IPFS のノード ID です)。デフォルトで提供されるシード ノードはすべてパブリック ネットワーク アドレスを持つノードです。 IPFS ノードが起動すると、まずシード ノードに接続します。その後、シード ノードを使用して IPFS ネットワーク内のより多くのノードを検出し、それらに接続します。これが DHT ネットワーキング ステージです。



▲ DHTネットワークステージ

IPFS ノードがシード ノードに正常に接続すると、DHT を通じて他のノードを検出します。 DHT の詳しい説明については、こちらの記事「Libp2p における DHT と Bitswap の詳しい説明」を参照してください。

他のノードを見つけたら、それらに接続しようとします。正常に接続されたノードは、このノードのノード リストに追加され、将来このノードと直接通信できるようになります。世界中の IPFS ノードの規模が大きいことを考慮すると、各ノードが他のノードと長時間接続を維持することは不可能であるため、各ノードの接続数は制限されます。通常、ノード接続数は 1,000 未満です (IPFS 構成ファイルで構成可能)。接続がなく通信が必要な場合は、DHT を通じてノード アドレスを見つけ、ノードを接続して通信することで、大規模な分散ノード ネットワークを形成できます。

上記のプロセスを例で説明してみましょう。次の図は一般的なネットワーク トポロジ アーキテクチャです。インターネットに接続されているネットワークは 3 つあります。 IPFS ノード 1 はパブリック IP アドレスを持つサーバー上にデプロイされており、外部から直接アクセスできます。 IPFS ノード 2 と IPFS ノード 3 は両方とも対称 NAT デバイスの背後に展開されており、外部からアクセスすることはできません。


上記のネットワーク アーキテクチャでは、パブリック ネットワーク内の IPFS ノード 1 がシード ノードとして使用されます。最初にシードノードが起動され、次に IPFS ノード 2、ノード 3、ノード 4、ノード 5 のシードノードが IPFS ノード 1 として構成されます。起動後、まず IPFS ノード 1 に接続します。接続が成功すると、DHT を通じて他のノードを検出し、最終的にそれらに接続します。 IPFS ノード 1 の場合、接続先のノード アドレス リストを下図に示します。 IPFS ノード 2、ノード 3、ノード 4、およびノー​​ド 5 はすべて NAT デバイスの背後にあるため、IPFS ノード 1 ノード リスト内のこれらのノードのポートはすべて NAT デバイスによってマップされたポートです (ローカルで開始されるデフォルトの IPFS ポートは 4001 です)。

IPFS ノード 3 の場合、そのノード アドレス リストでは、IPFS ノード 1 のアドレスがパブリック ネットワーク アドレスです。 IPFS ノード 3 と IPFS ノード 2 は両方とも NAT デバイスの背後にあり、直接接続できないため、IPFS ノード 2 のアドレスはリレー アドレスになります。 IPFS ノード1はリレーノードとして使用されます。 IPFS ノード 3 が IPFS ノード 2 にメッセージを送信すると、そのメッセージは IPFS ノード 1 を介して転送されます。リレーアドレスの形式は次のとおりです。

リレーノードアドレス/P2P回路/P2P/ターゲットノードID

IPFS ノード 3 のノード アドレス リストでは、IPFS ノード 4 と IPFS ノード 5 のアドレスは両方とも LAN アドレスであるため、NAT デバイスの背後にあるパブリック ネットワーク ノードと LAN ノードのネットワーク プロセスが完了します。


要約する

以上がIPFSネットワークを構築するプロセスです。説明の便宜上、いくつかの IPFS ノードのみを例として取り上げます。

実際、IPFS のこのネットワーク構築方法は、超大規模ノードのネットワーク化にも十分対応できます。ノード規模が非常に大きい場合(数万ノード)は、数十個のノードをシードノードとして設定し、DHT ネットワーキングを通じて数万以上のノードのネットワーキングを完了することができます。このとき、各ノードの長い接続数は数百に維持されます。後続のノードが通信する際に、接続が確立されていない場合は、ノード ID に従って DHT を介してノードのアドレス情報 (すべてのパブリック ネットワーク アドレスと LAN アドレスを含むアドレス リスト) を照会し、アドレスを介してノードを接続して通信プロセスを完了します。

IPFS ネットワークを構成するこの方法は、分散システムにとっても学習価値があり、参考になります。

著者について

Yao Wenhaoは、Data Grid LabのBitXMeshチームのデータプラットフォームアーキテクトです。


<<:  市場分析: イーサリアムは新たな高値を突破した後も上昇を続けることができるか?

>>:  IPFS 公式 @ You |第121回週報

推薦する

福建省初の仮想通貨事件が摘発され、人物は交換報酬を得るために他人の情報を購入していた

PANewsは4月15日、中国新聞社が4月14日に福州で報じたところによると、福建省で仮想通貨に関わ...

EigenLayer は急速に 90 億ドル以上の資金を集めました。ステーキングトラックは成功するでしょうか?

ブロックチェーンアーキテクチャの観点から見ると、パブリックチェーンはデータ層、決済層、実行層、コンセ...

ロシアの鉱業会社の数は15%増加しており、秋には新たな産業法案が導入される可能性がある。

ロシアの暗号通貨業界は拡大しており、今年はマイニング施設を運営する企業の数が増加し、ロシア人のデジタ...

ASIC マイニングマシンは大きな変化を遂げるでしょうか?テスラのソーラーマイニング!

史上最大のビットコインイベントであるビットコイン2022が成功裏に終了し、Meta Lubanはサミ...

四川省とチベットの雪山の下にあるビットコイン鉱山を探索

目の前の鉱山は年間産出額が5000万です。鉱業全般において、この年間生産高は中規模鉱山に相当します。...

2019 年にビットコインのマイニングはマイナーにとって利益を生むようになるでしょうか?

最近のビットコイン価格の上昇により、ビットコインマイニングの利益が増加しました。 2019年4月初旬...

ビットメインは、7nmチップを搭載し、パフォーマンスが大幅に向上した2つの新製品を初めて正式に発表しました。

11月6日、ビットメインは海外ソーシャルメディアTwitterで新製品のニュースを正式に発表した。...

カナダのビットコインマイナー、ビットファームがナスダック・グローバル市場への上場を承認

カナダのビットコインマイナーBitfarmsは、ティッカーシンボルBITFでNasdaq Globa...

ビットポイント、エボラブルアジアと提携し、日本国内のホテル・旅館1,400軒にビットコイン決済を提供

ゴールデンファイナンスニュース -ビットコイン取引所ビットポイントは、日本最大のオンライン旅行代理店...

ビットコインは失敗しないが、マイク・ハーンは失敗する

最近のニュースがビットコインの世界で騒動を引き起こした。ビットコインのコアプロトコル開発チームのメン...

世界の銀行が秘密兵器を開発中:ドルの覇権は終わりを迎える

現在、ほとんどの国際金融取引は、米国の銀行システムの顧客口座ネットワークを経由する必要があります。こ...

1年で半減し、翌年には急上昇しました!ビットコインの7年間の歴史的パターンは繰り返されるでしょうか?

bitcoinblockhalf ウェブサイトのデータによると、現在のブロック生成速度に基づくと、...

難易度が下がり、マイナーが作業を再開し、ビットコインネットワークの計算能力が120EHに急上昇

ビットコインのマイニング難易度は6月4日に9%以上低下し、マシンを停止していたマイナーたちに再び競争...

Bitcoin Cash は再びアップグレードされる予定です。何がアップグレードされますか?

第0章 はじめに半年ごとの BCH アップグレード計画は、5 月 15 日の次のハードフォーク アッ...

ビットコイン価格が半減、暗号通貨市場で大混乱、OKExは契約ポジションを失う可能性も -

ビットコイン価格が半減、暗号通貨市場で大混乱、OKExは契約ポジションを失う可能性もテキスト |パン...