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は以下の見解を投稿していました。
詳細プロフィール。SNS: X Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
Comments