プロトコル概要

ATプロトコルの紹介

プロトコル概要

Authenticated Transfer Protocol(別名atproto)は、大規模な分散型ソーシャルウェブアプリケーション用のフェデレーションプロトコルです。この文書では、ATプロトコルの背後にある考え方を紹介します。

ID

ATプロトコルユーザーは、自分のアカウントに対して永続的な分散型識別子(DID)を持ちます。また、人間可読なハンドルとして機能する構成可能なドメイン名も持っています。IDにはユーザーの現在のホスティングプロバイダーと暗号鍵への参照が含まれます。

データリポジトリ

ユーザーデータは、署名付きデータリポジトリで交換されます。これらのリポジトリは、投稿、コメント、いいね、フォローなどを含むレコードのコレクションです。

ネットワークアーキテクチャ

ATプロトコルにはフェデレーションネットワークアーキテクチャがあり、エンドデバイス間のピアツーピアモデルではなく、アカウントデータがホストサーバーに保存されます。フェデレーションは、ネットワークが使いやすく、確実に利用できるようにするために選択されました。リポジトリデータは、標準ウェブテクノロジー(HTTPおよびWebSocket)を介してサーバー間で同期されます。

ネットワークの3つのコアサービスは、パーソナルデータサーバー(PDS)、リレー、およびAppViewです。フィードジェネレーターとラベラーにも取り組んでいます。

さまざまな方法でスタックできる下位レベルのプリミティブは、リポジトリ、レキシコン、およびDIDです。フェデレーションアーキテクチャに関する技術的な決定の概要をブログで公開しました。

相互運用

Lexiconと呼ばれるグローバルスキーマネットワークは、サーバー間での呼び出しの名前と動作を統一するために使用されます。サーバーは、ユーザーリポジトリを同期するためのコアcom.atproto.* Lexiconや、基本的なソーシャル動作を提供するapp.bsky.* Lexiconなどの機能セットをサポートするためにLexiconを実装します。

ウェブがドキュメントを交換する一方で、ATプロトコルはスキーマ情報とセマンティック情報を交換し、異なる組織のソフトウェアが互いのデータを理解できるようにします。これにより、atprotoクライアントはサーバーから独立してユーザーインターフェイスを自由に作成でき、コンテンツを閲覧する際にレンダリングコード(HTML/JS/CSS)を交換する必要がなくなります。

スケールの実現

パーソナルデータサーバーは、クラウドにおけるあなたのホームです。データをホストし、配布し、IDを管理し、他のサービスへのリクエストを調整してビューを提供してくれます。

リレーはデータの更新情報を多くのサーバーから収集し、一つのfirehoseにまとめます。

AppViewはネットワーク全体のアプリケーションデータの集計値を提供します。広域的な指標(いいね数、リポスト数、フォロワー数)やコンテンツ発見(アルゴリズム)、ユーザー検索に対応します。

この役割の分離は、ユーザーが複数の相互運用可能なプロバイダーの中から選択できるようにすると同時に、大規模なネットワークサイズにもスケールできるようにすることを目的としています。

アルゴリズムの選択

ウェブ検索エンジンと同様に、ユーザーはアグリゲータを自由に選択できます。フィード、ラベラー、検索インデックスは独立したサードパーティによって提供され、リクエストはクライアント設定に基づいてPDSによってルーティングされます。クライアントアプリは、AppViewや必須ラベラーなど特定のサービスに紐付けられている場合があります。

アカウントの移植性

パーソナルデータサーバーは、完全にオフラインになるか、特定のユーザーに対するサービスを停止するかのいずれかによって、いつでも失敗する可能性があると想定しています。ATプロトコルの目的は、ユーザーがサーバーの関与なしに自分のアカウントを新しいPDSに移行できるようにすることです。

ユーザーデータは署名付きデータリポジトリに保存され、DIDによって検証されます。名付きデータリポジトリはデータベースレコード用のGitリポジトリに似たもので、DIDはTLS証明書システムのようなユーザー証明書のレジストリと喩えられます。これらは安全で信頼性が高く、ユーザーのPDSから独立していることが期待されます。

各DIDドキュメントは、署名鍵とローテーション鍵の2つの公開鍵を公開します。

  • 署名鍵:ユーザーのデータリポジトリを検証します。全てのDIDに含まれています。
  • ローテーション鍵:DIDドキュメントへの変更をアサートします。PLC DIDメソッドにはありますが、DID Webメソッドにはありません。

署名鍵はPDSに委託され、ユーザーのデータを管理できるようにしますが、ローテーション鍵はユーザーが保存することもできます(紙に印刷するなど)。これにより、ユーザーは元のホストの助けを借りずにアカウントを新しいPDSに更新できます。

ユーザーデータのバックアップは、バックアップとしてクライアントに永続的に同期するか(使用可能なディスク容量依存)、サードパーティサービスでミラーリングすることができます。PDSが予告なく消えた場合、ユーザーはDIDドキュメントを更新してバックアップをアップロードすることで、新しいプロバイダーに移行できます。

スピーチ、リーチ、モデレーション

ATプロトコルのモデルでは、スピーチリーチは2つの別々のレイヤーとして構築され、は別個の層として設計され、相互に連携して動作します。スピーチ層は寛容で権限を分散し、誰もが発言できることを重視します。リーチ層はその上に位置し、柔軟性とスケーラビリティのために設計されています。

atprotoの基本レイヤー(パーソナルデータリポジトリとフェデレーションネットワーク)は、誰もが自由に参加できるスピーチのための共通スペースを作成します。これは、誰でもサイトを作成できるウェブに似ています。次に、インデックスサービスがネットワークからコンテンツを集約してリーチを有効にします。これは、検索エンジンに似ています。

仕様

主要な仕様の一部は次のとおりです。ATプロトコルの初期バージョンには次のものが含まれています。