diff --git a/plc.md b/plc.md index 0b94298..7d83fdb 100644 --- a/plc.md +++ b/plc.md @@ -1,3 +1,15 @@ +# plc + +id(did)とname(domain)を結びつけて返すdnsのようなものです。 + +dnsはipが数字であることから人間には分かりづらいため、nameからipを返すもの。 + +didには、`did:web`, `did:plc`のような形式があり、webはそのまま現在のものを使用しますが、plcを指定するとplcが保存しているものを使用します。 + +例えば、かつて所有していたdomainが失効してもアイディンティティを保持し続けるため機能すると思われますが、実際の運用上は、他のservice、例えば、bsky, pds, bgsなどがhandle.invalidとなり、そういった運用を許容しないと考えられるため、有効に機能するかどうかは難しい面があるかもしれません。 + +ここでは、主に、selfhostする場合のhackをまとめたいと思います。 + ## handle change pdsの`PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX`を使用し、rotation-keyを作成後に、indigoにある`goat plc`を使用します。 @@ -74,3 +86,21 @@ $ goat plc history did:plc:vzsvtbtbnwn22xjqhcu3vd6y 2. `plc_operation.json`と`$PDS_ROTATION_KEY`を使用し、`plc_signed.json`を作成 3. `plc_signed.json`を使用し、plcを更新 +## AVAILABLE_USER_DOMAINS + +昔、pdsには`AVAILABLE_USER_DOMAINS`がありました。これは、そこに所属するユーザーのデフォルトdomainを規定するものです。 + +> envs/pds + +```sh +PDS_VERSION="v1.3.3" +AVAILABLE_USER_DOMAINS=".ai" +``` + +```sh +$ pds=https://bsky.syui.ai +$ date=2023-04-21T13:07:52.503Z +$ curl -sL "plc.directory/export?after=$date"|jq "select(.operation.services.atproto_pds.endpoint == \"$pds\").operation.alsoKnownAs.[]" +--- +"at://ai.ai" +```