Swarm がリリースした最新の公式ホワイトペーパーをご覧ください。
副題
1 はじめに
ワールドコンピューターワールドコンピューター」が現実になると、この「ワールド コンピューター」は分散アプリケーションのオペレーティング システムおよび展開環境として機能します。
Swarm は中断のないサービスを提供し、ネットワーク停止や標的型 DoS 攻撃に効果的に対抗できます。 Swarm は、パーミッションレスな出版プラットフォームとして情報の自由を効果的に促進します。 Swarm は、次のような独自のプライバシー機能で知られています。匿名で閲覧する、拒否可能なストレージ、そしてそしてメタデータが漏洩しないファイル形式ネットワークセキュリティへの需要の高まりに応えます。
Swarm に組み込まれたインセンティブは、帯域幅とストレージ リソースの割り当てを最適化し、経済的に自立できるように設計されています。 Swarm ノードは各ノードに関連してそれぞれの帯域幅の寄与を追跡し、BZZ は不均等な消費による追加の負債を解決するために使用されます。 Swarm 内のパブリッシャーは、Swarm にデータを書き込む権利を購入するために BZZ を費やし、長期ストレージの使用料を前払いする必要があります。
Swarm のモジュール設計は、明確に分離可能なもので構成されています。層組成(図 1 を参照)。技術的に言えば、そしてそしてレイヤー3「APIを介した高度なデータアクセス」副題

2 DISC: ブロックの不変分散ストレージ
DISC (Distributed Immutable Storage of Chunks)これは、Swarm の基礎となるストレージ モデルです。データを蓄積・提供するノードから構成されており、これらのノード間の連携において、各ノードが事業者の利益を最大化する戦略を追求すると仮定すると、ネットワーク全体の挙動は以下のような特徴を示します。
• プライバシー保護と許可のないアップロードとダウンロード
• 公開後のコンテンツへのアクセスのブロックや変更を困難にする堅牢な防御
• 需要の増加に応じた自動拡張
• 完全性が保護されたコンテンツ
• 保存されなくなったコンテンツは最終的に忘れられます
ストレージ容量と帯域幅に余裕がある人は誰でもノードオペレーターとして DISC に参加でき、それに応じた報酬を得ることができます。オペレータが Swarm クライアント ソフトウェアをインストールして実行すると、新しいノードが作成されて Swarm ネットワークの一部となり、基本的には世界中のハード ドライブの小さなスライスである Swarm を処理します。
次に、DISC をさらに定義し、それが上記のプロパティを生成する理由を説明します。
2.1 接続、トポロジー、ルーティング
DISC の最初の責任は、すべてのノードが相互にメッセージを送信できるようにノードのネットワークを構築および維持することです。このメッセージの交換は、p2p ネットワーク プロトコル (libp2p) を使用してノード間に存在する永続的で安全な通信チャネルを通じて行われます。 Swarm は、ノードが Kademlia 接続を確立することを期待します。他のノードの特定のセットに接続すると、アドレスを送信するというノードによるローカルな決定により、最終的にはグローバルに最適なルートを見つけるためのメッセージの送信が行われます。
Kademlia は、各ノードにネットワーク アドレスとは異なる Swarm アドレスが割り当てられていることを前提としています。プレフィックス ビットの値で 2 つの Swarm アドレスに共通する値を計算することで、それらの近接性を定義できます。互いに最も近いノードは完全に接続されたノードを形成します。近所。さらに、各ノードは、個別の近接クラスごとに複数のピア ノードに接続されます (図 2 を参照)。

(注 1: Libp2p は、ユーザーが分散型ピアツーピア アプリケーションを開発するためのネットワーク フレームワークです。)
(注2:Kademliaは、分散P2Pコンピュータネットワークを構築するためにPetar MaymounkovとDavid Mazièresによって設計されたP2Pオーバーレイネットワーク伝送プロトコルです。XOR演算に基づくP2P情報システムです。ネットワークの構造と仕様を定式化します。通信および情報交換を行うノード。)
結果として得られるトポロジでは、中継によって、メッセージが遷移するたびに、メッセージが目的の宛先に少なくとも 1 歩近づくことが保証されます (図 3 を参照)。この手法を使用すると、2 つのノード間で直接接続が維持されていない場合でも、任意の 2 つのノード間でメッセージをルーティングできます。メッセージの配信に必要なホップ数の上限はノードの総数の対数であり、非常に大規模なネットワークであっても、任意の 2 つのノードが常に相互に接続できることが保証されます。

2.2 ブロックとストレージ
Swarm の標準ストレージ ユニットは次のように呼ばれます。ブロック。ピース最大 4 キロバイトのデータで構成されます、アドレスが添付されています。ブロックのアドレスとノードのアドレスは同じアドレス空間に由来するため、それらの近接性を計算できます。 Swarm のストレージ スキームでは、各ブロックは、ブロック自体のアドレスに近いアドレスにあるノードによって保存されると規定されています。
データのプライバシーを確保するために、ブロックは 4 キロバイトにパディングされた後に暗号化され、キーがなければ他のランダム データと区別できなくなります。暗号化されていないブロックであっても、ノードオペレーターは各ブロックがどのようなコンテンツから来たのかを簡単に判断することはできません。 Swarm ノードは、どのデータ ブロックを保存して暗号化するかを自分で選択することができないため、この送信元の曖昧さとメタデータの漏洩不可能性により、保存内容に関連する責任から効果的に保護されます。
Swarm にブロックを挿入するために、ノードは同期プッシュプロトコル(プッシュシンクプロトコル)ブロックは、それが属する近傍に到達するまで転送されます。その後、ブロックの保存確認が同じパスに沿って返信されます。ブロックを取得するには、単に取得プロトコルを使用し、ブロック アドレスを含むリクエストを関連する近隣にルーティングします。途中のいずれかのノードが対応するブロックをローカルに持っている場合、応答でそれを送り返します。

ノードの使用プル同期プロトコルブロックストレージを継続的に同期します。これにより、各近隣がその近隣に属するすべてのブロックを冗長的に格納することが保証されます。この冗長性により、データ転送の回復力が向上し、特定の近隣の一部のノードが到達不能な場合でもブロックの可用性が維持されます。また、同期プロトコルにより、ノードがオフラインになり、新しいノードがネットワークに参加した場合でも、近隣に保存されているコンテンツの一貫性が保たれます。
2.3 転送、プライバシー、およびキャッシュ
Swarm では、メッセージは宛先に近づくように再帰的に転送し、同じルートに沿って応答を返すことによってルーティングされます。このルーティング アルゴリズムには 2 つの重要な特性があります。
• 要求者が曖昧です。
• 需要の増加に応じて自動的にスケールします。
リクエストを開始するノードによって送信されるメッセージは、どのレベルにおいても、リクエストを転送するだけのノードによって送信されるメッセージと同じです。このあいまいさにより、リクエストの発信者はプライバシーが侵害されていないことを確認できるため、許可のないコンテンツの公開やプライベート ブラウジングが容易になります。
ルーティング検索リクエストに参加しているノードは、ノードによって転送されたブロックを保存することを選択できるため、自動スケーラブルな分散システムが有効になります。これについては、以下で説明する帯域幅インセンティブ メカニズムについて説明します。投機的キャッシュ (日和見的キャッシュ)経済的なインセンティブを提供します。
2.4 Swarm アカウンティング プロトコル
スウォーム アカウンティング プロトコル (スウォーム アカウンティング プロトコル、SWAP)帯域幅の無差別な使用からネットワークを保護しながら、ノード オペレータがメッセージのルーティングに協力できるようにします。
ノードはリクエストとレスポンスを転送する際に、各ノードに対する相対的な帯域幅消費量を追跡します。一定の制限内で、サービスはノード間で交換されます。ただし、限度額に達すると、負債を抱えた当事者は、負債が時間をかけて返済されるまで待つか、小切手を送って支払うかを選択でき、小切手はブロックチェーン上で BZZ として現金化できます (図 5 を参照)。

このプロトコルにより、少量のコンテンツをダウンロードまたはアップロードするユーザーは Swarm を無料で使用でき、待つことを厭わないユーザーは、十分な量になるまで各ノードに相互にサービスを提供できるようになります。クレジット最後に、Swarm も無料で使用できます。同時に、大量のコンテンツをアップロードまたはダウンロードするときに支払いを希望するユーザーに、より高速なエクスペリエンスを提供します。
各ノードのメッセージ転送を支援すると、宛先に近いノードへのリクエストのルーティングに成功した各ノードは、リクエストの配信が成功したときに BZZ を取得できるため、各ノードに経済的なインセンティブが生じます。ノード自体がデータを保存していない場合は、少額の料金で近くのノードにデータのブロックを要求できます。このようなトランザクションを通じて、ノードはリクエストを処理する際にわずかな利益を得ることができます。これは、ノードがブロックをキャッシュするインセンティブがあることを意味します。より近いノードからブロックを一度購入すると、同じブロックに対する後続のリクエストにより純粋な利益が得られます。
2.5 容量不足とガベージコレクション
新しいコンテンツが Swarm に追加されると、遅かれ早かれ、各ノードの限られたストレージ容量が使い果たされてしまいます。この時点で、ノードには、新しいブロックに道を譲るためにどのブロックを削除する必要があるかを決定する戦略が必要です。
各 Swarm ノードのローカル ストレージには 2 つの組み込みサブシステムがあります。"そして""そして"キャッシュ”。
「リザーブ」は、ノードの近傍に属するブロックを格納するための専用の固定サイズのストレージスペースです。ブロックが「リザーブ」に保持されるかどうかは、「郵便切手「ブロックチェーン上の契約により、BZZ 経由での購入が可能になります。」郵便バッチ「バッチ」の所有者は、限られた数の消印を発行する権利を有します。これらの消印は一種の信頼トークンとして機能し、Swarm に何かを保存することの具体的な価値をユーザーに示します。この値は、預金者のノードが DISC のユーティリティを最大化できるように、「予約」内のどのブロックを最初に削除するかを決定します (図 6 を参照)。各スタンプの値は時間の経過とともに減少します。 「バッチ」の残高から定期的に差し引かれ、消印の値が不足するとすぐに、関連するブロックが「リザーブ」から追い出され、「キャッシュ」に置かれます。
「キャッシュ」の役割は、「バッチ」値が不十分であるか、ノードアドレスから遠すぎるために「リザーブ」によって保護されないブロックを保持することです。容量に達すると、キャッシュは定期的にプルーニングされ、長期間リクエストされていないブロックは削除されます。ブロックの人気はリクエストが最後に受信された時点で予測でき、より多くの SWAP 収益を持つブロックが最初に予約されます。これを投機的キャッシュと組み合わせると、ゴミ収集この戦略により、帯域幅のインセンティブによる通信事業者の利益が最大化され、ネットワーク レベルで人気のあるコンテンツの自動拡張が実現されます。

2.6 ブロックの種類
上記では、DISC 内のデータの標準単位としてブロックを定義しました。 Swarm には 2 つの基本的なブロック タイプがあります。そしてそして単一所有者のチャンク。
コンテンツアドレス指定可能なブロックのアドレスは、ハッシュダイジェスト(図 7 を参照)。ブロック データの完全性は、ブロックのアドレスとしてハッシュを使用して検証できます。 Swarm が使用するのは、マークルツリーのBMT (バイナリ マークル ツリー) ハッシュアルゴリズム。

副題

3 Swarm APIの機能
Swarm は、ブロックに加えて、ファイル、さまざまなメタデータを含むファイルの階層コレクション、さらにはノード間メッセージングなどの高レベルの概念を実装するための API も公開します。これらの API は、Web 上ですでに使用されている API をミラーリングしようとします。これらの上位層の上に、より斬新なアイデアやデータ構造を描画することができ、DISC が提供するプライバシーと分散化という中核的なサービスの恩恵を受けたいすべての人に、さまざまな可能性が開かれます。
3.1 ファイルとコレクション
1 つのブロックで許可される 4 キロバイトを超えるデータは、複数のブロックに分割されます。同種のブロックのグループは Swarm によって定義されます。ハッシュツリー (ハッシュツリー)このハッシュ ツリーは、アップロード プロセス中にファイルがチャンクに分割される方法をエンコードすることを意味します。このツリーは次のセットで構成されます。リーフノードチャンクデータ自体を含むコンポジションは、中間ブロックの 1 つまたは複数のレイヤーによって参照され、各レイヤーにはサブブロックへの参照が含まれます (図 9 を参照)。
ファイル全体のコンテンツ アドレスは、ルート ブロックのハッシュ ダイジェスト、つまりファイル全体にわたるハッシュ ツリーによって決定されます。マークルルート。このようにして、ファイルのアドレスはチェックサム (チェックサム)、コンテンツの整合性を検証できるようにします。ファイルをバランスの取れたブロックのマークル ツリーとして表すことにより、ファイルへの効率的なランダム アクセスも提供され、結果として効率的な範囲クエリが実行されます。
スワームは「」を使用します。明示する" はコレクションを表します。マニフェストは文字列参照の汎用マップをエンコードし、ディレクトリツリー、またはまたはルーティングテーブルモデル構築を行います。これらにより、Swarm はそれぞれ、ファイル システムを実装し、データベースとして機能し、Web サイトや DAPP の仮想ホスティングを提供することもできます。
URL のホスト部分をマニフェストへの参照として解釈すると、マニフェストは URL ベースのアドレス指定を提供し、URL パスはマニフェストによって表されるマップ内の検索のキーとして使用され、マニフェストに到達するためにのみ使用されます。ファイル参照。

マニフェストは、コンパクトなマークル トライの形式で表現するマッピングをエンコードし、ブロックはトライのノードをシリアル化します (図 10 を参照)。パスを見つけるときは、通過するブランチのノードに沿って対応するブロックを取得するだけで済みます。これにより、コレクションのサイズに対数的な遅延と帯域幅でファイル/レコードを効率的に検索できます。

ファイル内のハッシュ ツリーの中央ブロックにある子ノード参照と、コレクション内のリスト プレフィックス ツリー ノードは、BMT ハッシュ セグメントの位置に揃えられます。その結果、Swarm は、特定のデータが特定の URL から特定のオフセットにあるファイルの一部であるというコンパクトな証明をサポートします。これが、公的に証明可能なデータベースのインデックス作成とトラストレス集計の基礎となります。
3.2 更新の追跡: フィードとドメイン解決
フィードは許可する方法です可変リソース表示(可変リソースの印象)の単一所有者ブロックの例。フィードは、変更可能なリソースのバージョン付きリビジョン、トピックへの順次更新、または通信チャネル上の当事者によって公開された一連のメッセージを表すことができます。
フィードは、トピックとインデックスから派生した単一のオーナー ブロック識別子を定義することによって機能します。発行者とコンテンツ消費者がインデックスをいつどのように更新するかについて合意すると、そのフィードの更新への具体的な参照を構築して見つけることができます。
DNS がドメインをホスト サーバーの IP アドレスに解決する方法と同様に、Swarm はイーサリアムドメイン名解決サービスENS(Ehereum-Name Service)- 人間が判読できるドメイン名 (Swarm.eth など) をサポートするための参照を解決する、ブロックチェーン上の一連のスマート コントラクト。
ENS に登録された参照は、Web アプリケーションまたはそれが表す Web サイトが更新により新しい Swarm 参照を取得するたびに更新できます。あるいは、ドメイン名がフィードを参照している場合、ユーザーは人間が判読できるドメイン名の恩恵を受けると同時に、ブロックチェーンを操作せずにコンテンツを更新したり、変更が行われるたびに関連するトランザクションコストを支払うこともできます。
3.3 メッセージパッシング
PSS (Postal Service on Swarm) は、Swarm の直接ノード間メッセージング プロトコルです。これは、対象の受信者のメッセージを暗号化し、内容アドレス指定可能なブロック内の件名でメッセージをラップすることによって行われます。ブロックは、そのコンテンツ アドレスが受信者の近傍内に収まるように作成されるため、配信は当然同期プッシュ プロトコルによって処理されます。
また、第三者にとって、メッセージはランダムに暗号化されたブロックと区別できないため、**「トロイの木馬」ブロック**とも呼ばれます。 PSS メッセージの受信を期待しているノードは、近隣に到着するすべてのブロックを復号化してオープンしようとします。トロイの木馬ブロックを正常に復号し、正規の受信者にラップ解除すると、クライアント ノードは、PSS API を使用して、トピックにサブスクライブしているアプリケーションにメッセージをクリア テキストで送信できます。
PSS は非同期配信も提供します。これは、ブロックが持続し、それらのノードが後でオンラインになった場合でも、最終的にすべての隣接ノードに同期されるためです。
PSS を使用すると、ユーザーはこれまで未知の個人からメッセージを受信できるため、匿名メッセージを公的個人 (レジストリなど) に送信したり、フィードを介して安全な通信チャネルを設定して連絡先へのストリームを開始したりするのに理想的な通信プリミティブです。 PSS は受信者によるアクション (ポーリングなど) を必要としないため、プッシュ通知のプリミティブとして推奨されます。
3.4 ピン留めと復元
DISC は、めったにアクセスされない無料のコンテンツを最終的に忘れてしまいます。ブロックに行うことで「固定「この操作により、ノードは特定のコンテンツを確実にローカルに保持できます。同時に、これは」固定されたコンテンツをローカルに保存する人 (固定者)」は、すべてのユーザーの利益のために、コンテンツの受動的または能動的復元に参加できます。
パッシブリカバリー回復プロトコルは、取得が失敗した場合に PSS を使用して回復リクエストを送信することで、不足しているブロックをピナーに通知するために使用されます。ピナーは回復リクエストをリッスンし、不足しているチャンクを再アップロードすることで応答します。これにより、ダウンローダーは再試行時にそれらのチャンクを見つけることができます。この回復機能により、一部の既存のファイル共有ソリューション (BitTorrent、IPFS) の主な操作モードと同様に、パブリッシャー ノードからオリジナルのコンテンツを直接シードすることもできます。
逆に、Swarm は次の機能も提供しますアクティブリカバリー副題
4 結論
Swarm はピアツーピア ネットワークであり、そのすべてのノードが共同して分散ストレージと通信サービスを提供します。パーミッションレスでプライベートな Swarm は、言論の自由、データ主権、Web 上のオープン マーケットプレイスのニーズに対応しながら、完全性保護、検閲耐性、攻撃耐性によってセキュリティを維持します。この記事では、Bee1.0 の初期メインネット起動に含まれる機能を紹介します。
これはマイルストーンであり、旅はまだ始まったばかりです。デジタルの自由を強化するという Swarm の使命に参加してください。


