Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~

Segment
March 17, 2023

AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~

Bluesky/AT Protocol 勉強会 #0
https://428lab.connpass.com/event/277114/

Segment

March 17, 2023
Tweet

More Decks by Segment

Other Decks in Programming

Transcript

  1. AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~ Bluesky/ATProtocol 勉強会#0

    Segment(gpsnmeajp) 普段は電子工作したり、VR向けツール作ったりしてます
  2. 中央集権の問題点  透明性のないサービス運営  アルゴリズムの押し付け  UIの押し付け  モデレーションに対する不満 

    APIの有料化・開発者冷遇  広告  凍結  炎上  その他見たくないものが目に入る  人数と反応があんまり一致しない 投稿 購読・ 配信 購読・ 配信 独自API
  3. 再確認: Twitterはすげえぞ  国内ユーザー数: 約6千万人  全世界ユーザー数: 約4億人 (地球人口: 約78億人=5%)

     利用料金: 基本無料 (一部機能のみ有料) + 広告  公式スマートフォンアプリ(iOS, Android)、Webアプリあり  API 無料開放していた  各種政府機関や報道機関が使用するほどの高いサービス安定性  日夜押し寄せるBot、通報、詐欺、DMCA、ヘイトその他への対応  AIによる自動凍結システムなどによる治安維持 出典: https://www.ownly.jp/sslab/sns-user-detail
  4. 再確認: Twitterはすげえぞ  国内ユーザー数: 約6千万人  全世界ユーザー数: 約4億人 (地球人口: 約78億人=5%)

     利用料金: 基本無料 (一部機能のみ有料) + 広告  公式スマートフォンアプリ(iOS, Android)、Webアプリあり  API 無料開放していた  各種政府機関や報道機関が使用するほどの高いサービス安定性  日夜押し寄せるBot、通報、詐欺、DMCA、ヘイトその他への対応  AIによる自動凍結システムなどによる治安維持 出典: https://www.ownly.jp/sslab/sns-user-detail これが無料、これが基準
  5. これが無料、これが基準 再確認: Twitterはすげえぞ  国内ユーザー数: 約6千万人  全世界ユーザー数: 約4億人 (地球人口:

    約78億人=5%)  利用料金: 基本無料 (一部機能のみ有料) + 広告  公式スマートフォンアプリ(iOS, Android)、Webアプリあり  API 無料開放していた  各種政府機関や報道機関が使用するほどの高いサービス安定性  日夜押し寄せるBot、通報、詐欺、DMCA、ヘイトその他への対応  AIによる自動凍結システムなどによる治安維持 出典: https://www.ownly.jp/sslab/sns-user-detail
  6. インス タンス A 投稿 購読・配信 購読・配信 インス タンス B リモートフォロー

    配信 ActivityPub MastodonAPI MisskeyAPI 連合 Relay インス タンス D インス タンス C インス タンス E みんなで分担しよう 選択の自由を得よう 嫌なら引っ越せるように 連合分散型(分権型) : 相互接続SNS
  7. 連合分散型(分権型) : 相互接続SNS インス タンス A 投稿 購読・配信 購読・配信 インス

    タンス B リモートフォロー 配信 ActivityPub MastodonAPI MisskeyAPI 連合 Relay インス タンス D インス タンス C インス タンス E みんなで分担しよう 選択の自由を得よう 嫌なら引っ越せるように 中央集権と 同じ構造を内包 ・モデレーションできる ・人が集中する ・ドメインブロック ・責任の集中
  8. インス タンス A 投稿 購読・配信 購読・配信 インス タンス B リモートフォロー

    配信 ActivityPub MastodonAPI MisskeyAPI 連合 Relay インス タンス D インス タンス C インス タンス E 中央集権と 同じ構造を内包 ・モデレーションできる ・人が集中する ・ドメインブロック ・責任の集中 引っ越しには 元サーバーの協力が必要 投稿は持っていけない みんなで分担しよう 選択の自由を得よう 嫌なら引っ越せるように 連合分散型(分権型) : 相互接続SNS
  9. Relay Server 投稿 イベント中継 フィルタ 保持 & 過去投稿の再配信 Websocket API

    フィルタ登録 配信 Nostr (Websocket) Relay Server Relay Server Relay Server フィルタ登録 配信 Relay Server Relay Server 鍵ペア生成 署名 テキスト投稿 メタ情報投稿 フィルタ登録 配信要求 フォローリスト投稿 表示(重複排除) フォロー=公開鍵リスト作る 無責任分散(多重化) : 公開鍵が唯一我が身の証明 所属なし(身軽) フォロワー引継ぎ 多重化 統制不可能
  10. Relay Server 投稿 イベント中継 フィルタ 保持 & 過去投稿の再配信 Websocket API

    フィルタ登録 配信 Nostr (Websocket) Relay Server Relay Server Relay Server フィルタ登録 配信 Relay Server Relay Server 鍵ペア生成 署名 テキスト投稿 メタ情報投稿 フィルタ登録 配信要求 フォローリスト投稿 表示(重複排除) フォロー=公開鍵リスト作る 無責任分散(多重化) : 公開鍵が唯一我が身の証明 所属なし(身軽) フォロワー引継ぎ 多重化 統制不可能 データ保証なし 鍵漏洩救済なし なりすまし スパム ブロック不可
  11. 理念  スケーラブルな連合  アルゴリズム選択  アカウントポータビリティ  オープンで拡張性のあるプロトコル 

    WWWがATProtocol ブラウザがBlueSky 既存の問題を解決 ※ちなみにTwitter社が関わっており、Twitterの資金でスタートした、Twitterから独立したプロジェクト。 Twitterそしてジャックが分散・自由・オープンを考えていたことがわかります。
  12. その他IPFSなど Repo Repo PDS Repo 連合分散型(分権型) + 自己認証(🔑) PDS 投稿

    フォロー Feed取得 XRPC ATProtocol XRPC ATProtocol DID PLC 検索・おすすめ 統計 名前解決 IPLD Repo 🔑 IPLD Repo 🔑 IPLD Repo 🔑 回復鍵 回復鍵 回復鍵 🔑 🔑 🔑 🔑 署名鍵 🔑 🔑 🔑 🔑署名鍵 🔒 🔒 🔒 クローリング インデクサー クローリング インデクサー フォロー Feed取得 IPLD Repo Repo Repo Repo Repo Repo
  13. 具体的になにができるのか?  所属サーバーと、検索・おすすめシステムが分離 → 好きに選べる・好きに見れる  データを所属先の同意なく自分で所有・移動できる → そのための鍵とローカルリポジトリ 

    名前(Handle)やIDを所属とは関係ない独立したものにできる → 引っ越してもフォローや関係が切れない  AT Protocolベースのソーシャルアプリを自作できる → BlueSkyは実装のひとつ
  14. Nostrとの違いは?  ユーザー名とパスワードでログインできる  鍵の紛失に怯えなくて済む(ローテーション可)  クライアント使用時に鍵の漏出に怯えなくて済む  過去の発言や相互接続はPDS(サーバー)が保証してくれる 

    通信量が爆発的に発生しない  スパムなどへの対策が期待しやすい ❌モデレーションや凍結は発生する ❌PDSが単一障害点になる(not 多重化) PDS IPLD Repo 🔑 🔑 Repo データ is You
  15. DID - Decentralized Identifier 分散識別子/分権識別子/非中央集権型識別子  W3Cの定義する識別子。  ユーザーは1つの不変なIDで表します。 did:plc:ma37ez4i3gmwkvwpytsqeepp

    これはデータリポジトリ(その人のすべての履歴)と 紐づいている、所属によらない唯一無二の分散IDです。 これにより、どこに居てもその人であることが決まります。 (→フォロー関係などが持ち運べる) ※Nostrで言うところの秘密鍵に相当
  16. Handle  ATProtocolで、その人を表す名前(いわゆるID)に相当  @gpsnmeajp.bsky.social  @gpsnmeajp.boobee.blue  @gpsnmeajp.achetaria.com いつでも変えられ、いつでも変わりうる表示名です。

    人間が取り扱うための名前です。 (ログインや名前解決にも使用する) 所属サーバーから借りる 自分のドメインの DNSレコードで証明する ※Nostrで言うところのNIP-05に相当
  17. DID Document と plc.directory  DIDはIDですが、それだけだと紐づけができません。 付随情報が記載されているのがDID Documentです。 ・その人を証明する公開鍵 ・その人はどのPDS(所属サーバー)に所属しているのか

    ・その人のHandle この情報はPDS(所属サーバー)にあっては意味がないため 独立して運営される名前解決サーバー*に置かれます。 現在運営されているのはplc.directory *DNSに相当 ※Nostrで言うところの/.well-known/nostr.jsonに相当 ※これにより鍵ローテーションが可能になります
  18. DID Placeholder (did:plc)  DIDは生成・管理の方法はたくさんありますが ATProtocolとして提唱しているのがdid:plcです。  データリポジトリの最初のハッシュと紐づいています。  鍵ローテーションが可能で、2種類の鍵

    署名鍵と、回復鍵の2つでローテーションできます。  ブロックチェーンではなくシンプルで堅牢な サーバーで管理されます。(plc.directoryなど) IPLD Repo did:plc zkxpsaopwdwddwpo edwpqaidfeaws
  19. データリポジトリ  AT Protocolでは、ユーザーの投稿や操作の履歴は データリポジトリに保管されます  署名鍵で署名しなければ書き込めません。  すべての情報は連鎖的に記録され、検証可能です。 

    サーバー上に置かれますが、誰でも取り出し可能で、 ローカルに保存しておくことで引っ越し可能になります。 ルート コミット ルート コミット ルート コミット CID: コンテンツID タイムスタンプ マークル検索ツリー 署名 署名 署名 Repo 署名済み (個人)データ リポジトリ Re po Re po Re po Re po Re po Re po Re po Re po
  20. PDS(個人データサーバー) クローリングインデクサー PDS : スモールワールド  データの保管・署名・通信を担うサーバーです。  個人間のイベントを扱うためのシステムです。 

    ユーザーの所属・認証・フィード・APIの提供などを行います。  ここに署名鍵を預けます。(ユーザーは回復鍵を手元に持ちます) クローリングインデクサー : ビッグワールド  検索・統計・おすすめなどの大規模処理を担当します。  ユーザーは複数あるサービスを自由に選択できます。
  21. その他IPFSなど Repo Repo PDS Repo PDS 投稿 フォロー Feed取得 XRPC

    ATProtocol XRPC ATProtocol DID PLC 検索・おすすめ 統計 名前解決 IPLD Repo 🔑 IPLD Repo 🔑 IPLD Repo 🔑 回復鍵 回復鍵 回復鍵 🔑 🔑 🔑 🔑 署名鍵 🔑 🔑 🔑 🔑署名鍵 🔒 🔒 🔒 クローリング インデクサー クローリング インデクサー フォロー Feed取得 IPLD Repo Repo Repo Repo Repo Repo 名前解決やデータの流れ
  22. まだ未完成  連合はない  検索もない(もうすぐつく)  Androidアプリもない(非公式はあるヨ)  クローズドベータ 

    モデレーション機能もない  掲げている理想の機能の大半はない(が原型はある)  仕様変更はある 夢を語りながら楽しんでいきましょう とりあえず技術的に試したいだけの 場合は有志サーバーの boobee.blue おすすめ
  23. もっと詳しく知りたい場合は  AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~

    Qiita https://qiita.com/gpsnmeajp/items/eb665d639f088b85454e  The AT Protocol https://atproto.com/  Bluesky公式ブログ https://blueskyweb.xyz/  Github https://github.com/bluesky-social/atproto  BlueSky Scrapbox https://scrapbox.io/Bluesky/  MatrixのBluesky Devルーム