Blueskyが発表した分散SNSのプロトコルAT Protocolでの識別子であるDIDについて、Soapbox/Rebasedの著者のAlex Gleasonが見解を投稿していたので紹介します。
DID
以下の投稿が議論の始まりでした。
Alex Gleason (alex@gleasonator.com)’s status on Friday, 28-Oct-2022 06:50:02 JSTAlex Gleason I’m reading about ATProtocol so you don’t have to.
Instead of ActivityPub IDs (which are URLs like https://gleasonator.com/users/alex), they use DIDs (“decentalized ID”). What’s a DID? Absolutely nothing – it’s an 87 page document describing the format of a string that starts with did: and no implementation details.
The implementation is up to you. Well, there are some already. We have did:etho:Ac9aB5Fc04Dc1cB1789Af75b523Bd23C70B2D717 for Ethereum addresses, did:dns:alexgleason.me for domain names, and there’s even one called did?xxx for MasterCard’s proprietary/centralized(!) ID network. DIDs are in the format did:<method>:<id>, where the method can be a known method enshrined by the w3c, or a custom one.
So what’s ATProtocol using? A custom “work in progress” DID method called “placeholder” (did:plc:<id>) that… seems to talk to a centralized server?
Remember when Bluesky was under development for 2 years because they couldn’t figure out how to do decentralized identity. So what did they do? THEY JUST GAVE UP?
The did:plc spec is a vague “work in progress”: https://atproto.com/specs/did-plc
We cheekily titled the method “Placeholder”, because we don’t want it to stick around. We’re actively hoping to replace it with something less centralized.
So they still haven’t actually solved the core problem they set out to solve… are they going to resolve DIDs by talking to a centralized service? I suppose they thought since DID has the word “decentralized” in it, that’s good enough to move forward.
This is not inspiring confidence.
AT Protocolでは、ActivityPub ID (https://gleasonator.com/users/alex のような URL形式) の代わりに、DID (Decentralized Identifierer) をIDに使用します。DIDの仕様は「DID Placeholder (did:plc) | AT Protocol」と「Decentralized Identifiers (DIDs) v1.0」にあります。
DIDは [did:
] で始まる文字列で、その書式は以下のABNF記法で定義されます。
did = "did:" method-name ":" method-specific-id
method-name = 1*method-char
method-char = %x61-7A / DIGIT
method-specific-id = *( *idchar ":" ) 1*idchar
idchar = ALPHA / DIGIT / "." / "-" / "_" / pct-encoded
pct-encoded = "%" HEXDIG HEXDIG
例えば、イーサリアム アドレスには did:etho:Ac9aB5Fc04Dc1cB1789Af75b523Bd23C70B2D717 を、ドメイン名には did:dns:alexgleason.meという形式です。method-nameにはW3Cの既知のメソッドとカスタムメソッドを使用できるそうです。既存のDIDメソッドは「DID Specification Registries」に一覧があります。
それで、AT Protocolでは、既存のDIDメソッドに満足できなかったので、method-nameにPlaceholderを意味するplcのカスタムメソッドを採用しています。ただし、現在は中央集権的なPLCサーバーとの通信を想定しているようで、将来分散的なサーバーを想定したものにこのメソッド名ごと置換することを想定しているようです。
AT Protocolを他の分散SNSも採用する場合は、[did:ap:https://gleasonator.com/users/alex] のようにDIDメソッドにActivityPubを意味するapメソッドを用いて併用することになるようです。
ただし、DIDを採用する場合、DIDの名前解決するresolverサーバーが必要になります。ActivityPub IDはURLなので、IDだけで既存のサーバー・技術で名前解決できていました。
「Identity | AT Protocol」にあるとおり、AT Protocolでは、DIDを用いて1ユーザー1ドメイン相当で表現するようです。具体的には、以下は全て同じ意味のユーザーIDになるそうです。
@alice.com
at://alice.com
at://did:plc:bv6ggog3tya2z3vxsub7hnal
要件
上記の議論を踏まえて、Gleasonは以下の見解を投稿していました。
Alex Gleason (alex@gleasonator.com)’s status on Friday, 28-Oct-2022 08:15:55 JSTAlex Gleason The identity thing that Bluesky is trying to solve is not actually a real problem. Admin is a jerk? Start your own server. There’s no user friendly way to be fully distributed, it’s one or the other. The missing pieces are 1) an alternative to traditional DNS, 2) a professional paid fedi hosting service. THAT solves the real problems with federation.
Alex Gleason (alex@gleasonator.com)’s status on Friday, 28-Oct-2022 12:33:44 JSTAlex Gleason https://atproto.com/guides/identity
CTRL+F “hosting service”
It appears 9 times.
Even in this solution that’s supposedly better than Fedi, it relies heavily on the idea of hosting services. In fact it’s required. Since every user has their own domain name, there’s really no such thing as an “instance”. It’s a hosting service.
So that made me think my idea from a year ago was actually good and probably ahead of its time. I’m slightly mad about it and a little burned out.
結局、完全に分散するための手ごろな方法はなく、AT Protocolでは以下が必要になるようです。
- 従来のDNSに代わるもの (PLCサーバー)
- 専門的な分散SNSのホスティングサービス
ATPでのユーザー名は、ドメイン名相当となっており、1ユーザー1ドメインを前提としており、現実的にはホスティングサービスを前提としたものになっているようです。
結論
ここまでを整理すると、AT Protocolでは、中央集権的なPLCサーバーが必要で、1ユーザー1ドメイン相当で、現実的には1人1台のホスティングサービスが必要ということになりそうです。
この点は、「速報: Twitter創業者ジャック・ドーシーによる新SNS Blueskyと分散SNSプロトコルAT Protocolの発表 | GNU social JP」に記載した通り、管理人の印象通りのつくりのようでした。
まだ実際に動作する実装がないため、どのような形になるかわかりません。Blueskyのアプリが公開されたときに答え合わせができるとよいと思います。
詳細プロフィール。SNS: Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
コメント