内部の仕組み

IPアドレスを知らなくてもscpのように使えます。AltSendmeにファイルを追加すると、貼り付け可能なチケットが生成され、必要な人に渡せます。AltSendmeはデバイスを直接接続し、アカウントや設定なしでデータを転送します。

AltSendmeヒーローグラフィック

重要な概念

1. Blobs

コンテンツアドレス型のblobストレージと転送。iroh-blobsはBLAKE3検証ストリームとコンテンツアドレスリンクを使用し、任意サイズのバイトblobのリクエスト/レスポンスおよびストリーミング転送を実装します。

  • Blob:不透明なバイト列(埋め込みメタデータなし)。
  • Link:blobを識別する32バイトのBLAKE3ハッシュ。
  • HashSeq:リンクのシーケンスを含むblob(チャンク/ツリーに有用)。
  • Provider / Requester:providerがデータを提供し、requesterが取得します。エンドポイントは両方の役割を担えます。

2. Tickets

チケットはirohエンドポイント間で接続情報を共有する方法です。別のエンドポイントに接続する、またはこの場合はblobを取得するために必要なすべてを含む単一トークンです。Ed25519 NodeIdsを含みます:認証のためのデバイスの暗号学的アイデンティティ。フルP2PシステムがIPをピアにブロードキャストするのに対し、この仕組みははるかに優れています。irohでは、明示的に接続したいピア間で「cozy network」を形成するためにチケットが使われます。「full p2p」にして接続情報をブロードキャストすることも可能ですが、チケットはより良い中間的なデフォルトです。

3. ピア検出、NATトラバーサル、ホールパンチング

ピアは起動時にオープンソースのパブリックリレーサーバーに登録し、ファイアウォールとNATを通過して接続を確立します。接続後、irohはQUICホールパンチングで直接P2P接続を試み、リレーをバイパスします。直接接続が可能な場合、E2E暗号化で直接通信します。そうでなければ、リレーは一時的なフォールバックとして機能します。これによりローカルネットワーク内外で信頼性の高い接続が可能になります。

4. QUICと暗号化

QUICはUDP上の最新トランスポートプロトコルで、TCPより低遅延・高パフォーマンスを目指して設計されました。Googleが開発し、IETFによりHTTP/3の基盤として標準化。TLS 1.3をプロトコルに直接統合しています。

QUICが可能にするスーパーパワー:

  • 暗号化と認証
  • ストリーム多重化
  • head-of-line blocking問題なし
  • ストリーム優先度
  • 共有の輻輳制御
  • 暗号化された非信頼性データグラム転送
  • 以前接続したエンドポイントへのゼロRTT接続確立

5. リレー

AltSendmeはオープンソースのパブリックリレーサーバーで直接接続の確立、初期接続時間の短縮、直接接続失敗時のフォールバックをサポートします。すべての接続はE2E暗号化されます。リレーは暗号化パケット送信用の「もう一つのUDPソケット」です。詳しく読む

内部の仕組み | AltSendme