Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~
Search
Segment
March 17, 2023
Programming
4.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~
Bluesky/AT Protocol 勉強会 #0
https://428lab.connpass.com/event/277114/
Segment
March 17, 2023
More Decks by Segment
See All by Segment
Nostr(ノスター)を始めよう
gpsnmeajp
0
500
mocopiを簡易ジェスチャー認識音楽プレイヤーに使ってみた
gpsnmeajp
0
310
分散型SNS nostr 仕組み解説
gpsnmeajp
2
2.9k
クライアントを作ってみてわかったこと
gpsnmeajp
0
360
Nostr概説
gpsnmeajp
0
1.3k
Other Decks in Programming
See All in Programming
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
590
ALB ログから Trace を気合で繋げる技術
fohte
6
690
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
190
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
410
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
380
不幸な GC
chencmd
0
760
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
230
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
110
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.2k
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
5
1.8k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.3k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
It's Worth the Effort
3n
188
29k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
KATA
mclloyd
PRO
35
15k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
280
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Transcript
AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~ Bluesky/ATProtocol 勉強会#0
Segment(gpsnmeajp) 普段は電子工作したり、VR向けツール作ったりしてます
Q. BlueSkyって何?
Q. BlueSkyって何? A. 分散型SNSの問題点をいい塩梅で いいとこ取りしようと頑張ってる 未完成品のSNSサービス & プロトコル
Q. BlueSkyって何? A. 分散型SNSの問題点をいい塩梅で いいとこ取りしようと頑張ってる 未完成品のSNSサービス & プロトコル まだ未完成!!いろいろ未整備! でもどんどん進化中!
今回文字が多いです、ゴメンナサイ 説明には誤りがあることがあります 開発者の方々に割と日々ツッコミを受けています 公式ドキュメントも発展途上です ソースコード読みきれない~
まずは(5分)
中央集権の問題点 透明性のないサービス運営 アルゴリズムの押し付け UIの押し付け モデレーションに対する不満
APIの有料化・開発者冷遇 広告 凍結 炎上 その他見たくないものが目に入る 人数と反応があんまり一致しない 投稿 購読・ 配信 購読・ 配信 独自API
再確認: Twitterはすげえぞ 国内ユーザー数: 約6千万人 全世界ユーザー数: 約4億人 (地球人口: 約78億人=5%)
利用料金: 基本無料 (一部機能のみ有料) + 広告 公式スマートフォンアプリ(iOS, Android)、Webアプリあり API 無料開放していた 各種政府機関や報道機関が使用するほどの高いサービス安定性 日夜押し寄せるBot、通報、詐欺、DMCA、ヘイトその他への対応 AIによる自動凍結システムなどによる治安維持 出典: https://www.ownly.jp/sslab/sns-user-detail
再確認: Twitterはすげえぞ 国内ユーザー数: 約6千万人 全世界ユーザー数: 約4億人 (地球人口: 約78億人=5%)
利用料金: 基本無料 (一部機能のみ有料) + 広告 公式スマートフォンアプリ(iOS, Android)、Webアプリあり API 無料開放していた 各種政府機関や報道機関が使用するほどの高いサービス安定性 日夜押し寄せるBot、通報、詐欺、DMCA、ヘイトその他への対応 AIによる自動凍結システムなどによる治安維持 出典: https://www.ownly.jp/sslab/sns-user-detail これが無料、これが基準
これが無料、これが基準 再確認: Twitterはすげえぞ 国内ユーザー数: 約6千万人 全世界ユーザー数: 約4億人 (地球人口:
約78億人=5%) 利用料金: 基本無料 (一部機能のみ有料) + 広告 公式スマートフォンアプリ(iOS, Android)、Webアプリあり API 無料開放していた 各種政府機関や報道機関が使用するほどの高いサービス安定性 日夜押し寄せるBot、通報、詐欺、DMCA、ヘイトその他への対応 AIによる自動凍結システムなどによる治安維持 出典: https://www.ownly.jp/sslab/sns-user-detail
インス タンス A 投稿 購読・配信 購読・配信 インス タンス B リモートフォロー
配信 ActivityPub MastodonAPI MisskeyAPI 連合 Relay インス タンス D インス タンス C インス タンス E みんなで分担しよう 選択の自由を得よう 嫌なら引っ越せるように 連合分散型(分権型) : 相互接続SNS
連合分散型(分権型) : 相互接続SNS インス タンス A 投稿 購読・配信 購読・配信 インス
タンス B リモートフォロー 配信 ActivityPub MastodonAPI MisskeyAPI 連合 Relay インス タンス D インス タンス C インス タンス E みんなで分担しよう 選択の自由を得よう 嫌なら引っ越せるように 中央集権と 同じ構造を内包 ・モデレーションできる ・人が集中する ・ドメインブロック ・責任の集中
インス タンス A 投稿 購読・配信 購読・配信 インス タンス B リモートフォロー
配信 ActivityPub MastodonAPI MisskeyAPI 連合 Relay インス タンス D インス タンス C インス タンス E 中央集権と 同じ構造を内包 ・モデレーションできる ・人が集中する ・ドメインブロック ・責任の集中 引っ越しには 元サーバーの協力が必要 投稿は持っていけない みんなで分担しよう 選択の自由を得よう 嫌なら引っ越せるように 連合分散型(分権型) : 相互接続SNS
Relay Server 投稿 イベント中継 フィルタ 保持 & 過去投稿の再配信 Websocket API
フィルタ登録 配信 Nostr (Websocket) Relay Server Relay Server Relay Server フィルタ登録 配信 Relay Server Relay Server 鍵ペア生成 署名 テキスト投稿 メタ情報投稿 フィルタ登録 配信要求 フォローリスト投稿 表示(重複排除) フォロー=公開鍵リスト作る 無責任分散(多重化) : 公開鍵が唯一我が身の証明 所属なし(身軽) フォロワー引継ぎ 多重化 統制不可能
Relay Server 投稿 イベント中継 フィルタ 保持 & 過去投稿の再配信 Websocket API
フィルタ登録 配信 Nostr (Websocket) Relay Server Relay Server Relay Server フィルタ登録 配信 Relay Server Relay Server 鍵ペア生成 署名 テキスト投稿 メタ情報投稿 フィルタ登録 配信要求 フォローリスト投稿 表示(重複排除) フォロー=公開鍵リスト作る 無責任分散(多重化) : 公開鍵が唯一我が身の証明 所属なし(身軽) フォロワー引継ぎ 多重化 統制不可能 データ保証なし 鍵漏洩救済なし なりすまし スパム ブロック不可
トレードオフ 集権にすると 縛られる & 利便性高い 完全に分散すると 無法地帯 & 自己責任 うまく組み合わせて両立できないか
BlueSkyの目指すところ (5分)
理念 スケーラブルな連合 アルゴリズム選択 アカウントポータビリティ オープンで拡張性のあるプロトコル
WWWがATProtocol ブラウザがBlueSky 既存の問題を解決 ※ちなみにTwitter社が関わっており、Twitterの資金でスタートした、Twitterから独立したプロジェクト。 Twitterそしてジャックが分散・自由・オープンを考えていたことがわかります。
その他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
具体的になにができるのか? 所属サーバーと、検索・おすすめシステムが分離 → 好きに選べる・好きに見れる データを所属先の同意なく自分で所有・移動できる → そのための鍵とローカルリポジトリ
名前(Handle)やIDを所属とは関係ない独立したものにできる → 引っ越してもフォローや関係が切れない AT Protocolベースのソーシャルアプリを自作できる → BlueSkyは実装のひとつ
Mastodon等従来の連合との違いは? オフライン引っ越しができる (予めカスタムドメインを使用すると)名前を持ち運べる フォロー関係を(元のサーバーに頼らず)維持できる ローカルに依存せず横断的に閲覧・検索できる
おすすめアルゴリズムなどを選択できる PDS IPLD Repo クローリング インデクサー DID PLC
Nostrとの違いは? ユーザー名とパスワードでログインできる 鍵の紛失に怯えなくて済む(ローテーション可) クライアント使用時に鍵の漏出に怯えなくて済む 過去の発言や相互接続はPDS(サーバー)が保証してくれる
通信量が爆発的に発生しない スパムなどへの対策が期待しやすい ❌モデレーションや凍結は発生する ❌PDSが単一障害点になる(not 多重化) PDS IPLD Repo 🔑 🔑 Repo データ is You
AT Protocol/Bskyの 仕組みと用語(8分)
名前解決 IPLD Repo PDS (個人データサーバー) 参照 保持 DID PLC (名前解決サーバー)
DID - Decentralized Identifier 分散識別子/分権識別子/非中央集権型識別子 W3Cの定義する識別子。 ユーザーは1つの不変なIDで表します。 did:plc:ma37ez4i3gmwkvwpytsqeepp
これはデータリポジトリ(その人のすべての履歴)と 紐づいている、所属によらない唯一無二の分散IDです。 これにより、どこに居てもその人であることが決まります。 (→フォロー関係などが持ち運べる) ※Nostrで言うところの秘密鍵に相当
Handle ATProtocolで、その人を表す名前(いわゆるID)に相当 @gpsnmeajp.bsky.social @gpsnmeajp.boobee.blue @gpsnmeajp.achetaria.com いつでも変えられ、いつでも変わりうる表示名です。
人間が取り扱うための名前です。 (ログインや名前解決にも使用する) 所属サーバーから借りる 自分のドメインの DNSレコードで証明する ※Nostrで言うところのNIP-05に相当
DID Document と plc.directory DIDはIDですが、それだけだと紐づけができません。 付随情報が記載されているのがDID Documentです。 ・その人を証明する公開鍵 ・その人はどのPDS(所属サーバー)に所属しているのか
・その人のHandle この情報はPDS(所属サーバー)にあっては意味がないため 独立して運営される名前解決サーバー*に置かれます。 現在運営されているのはplc.directory *DNSに相当 ※Nostrで言うところの/.well-known/nostr.jsonに相当 ※これにより鍵ローテーションが可能になります
DID Placeholder (did:plc) DIDは生成・管理の方法はたくさんありますが ATProtocolとして提唱しているのがdid:plcです。 データリポジトリの最初のハッシュと紐づいています。 鍵ローテーションが可能で、2種類の鍵
署名鍵と、回復鍵の2つでローテーションできます。 ブロックチェーンではなくシンプルで堅牢な サーバーで管理されます。(plc.directoryなど) IPLD Repo did:plc zkxpsaopwdwddwpo edwpqaidfeaws
データリポジトリ AT Protocolでは、ユーザーの投稿や操作の履歴は データリポジトリに保管されます 署名鍵で署名しなければ書き込めません。 すべての情報は連鎖的に記録され、検証可能です。
サーバー上に置かれますが、誰でも取り出し可能で、 ローカルに保存しておくことで引っ越し可能になります。 ルート コミット ルート コミット ルート コミット CID: コンテンツID タイムスタンプ マークル検索ツリー 署名 署名 署名 Repo 署名済み (個人)データ リポジトリ Re po Re po Re po Re po Re po Re po Re po Re po
PDS(個人データサーバー) クローリングインデクサー PDS : スモールワールド データの保管・署名・通信を担うサーバーです。 個人間のイベントを扱うためのシステムです。
ユーザーの所属・認証・フィード・APIの提供などを行います。 ここに署名鍵を預けます。(ユーザーは回復鍵を手元に持ちます) クローリングインデクサー : ビッグワールド 検索・統計・おすすめなどの大規模処理を担当します。 ユーザーは複数あるサービスを自由に選択できます。
その他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 名前解決やデータの流れ
現状と今後 (2分)
まだ未完成 連合はない 検索もない(もうすぐつく) Androidアプリもない(非公式はあるヨ) クローズドベータ
モデレーション機能もない 掲げている理想の機能の大半はない(が原型はある) 仕様変更はある 夢を語りながら楽しんでいきましょう とりあえず技術的に試したいだけの 場合は有志サーバーの boobee.blue おすすめ
もっと詳しく知りたい場合は 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ルーム