# DIDってなんだ! #3 - DIDの文法 **Published by:** [Kouki Minamoto](https://paragraph.com/@kouki-minamoto/) **Published on:** 2022-04-14 **URL:** https://paragraph.com/@kouki-minamoto/did-3-did ## Content 前回はこちらから↓ https://mirror.xyz/0xb69CB3EFbaDB1b30f6d88020e1FA1FC84B8804d4/tw4ljjQpBkHG8XbG1-vdVzvy_trbgV3X8K_oO3s2gKM どうもこんにちは、僕はC-Voxelというプロダクトを開発しております、みなもとと申します。 C-Voxelはトランザクションに「こんな仕事をした報酬だよ~」みたいなコンテキストを紐づけることによって、オンチェーン上の職務経歴書を作ろうぜっていうプロジェクトです。↓ https://testnet.cvoxel.xyz/ さて、今日のお題は、**「DIDの文法」です!前回やった通り、DIDってのは、did:example:123456 みたいな奇妙な文字列で表されます。今回はこの文字列の文法(書き方)**についてです! DIDは以下のような三つのパートに分かれていることは前回説明した通りです。 この文字列を使って結局何ができるの?って話なんですけど、これはDIDの仕組みを提供しているシステムにたいして、「こいつのこの情報くれーー!!!」っていう命令みたいなものなのです。その命令を用いて以下のような情報をゲットできたりします。 DID subject(DIDを持ってる人) DIDの検証方法 DID document(DIDに紐づいた個人情報)の一部 その他もろもろ、、、、 DID URL の文法 さて、では上記のような情報をゲットするための要求である DID URL の書き方を実際に見ていきましょう。(感覚的には一般的な https://hogehoge/~ と同じような感じです) DID URLとは、ある特定の情報にアクセスするためのネットワーク上での場所を示すものである。 DID自体の文法はざっくりと、 DIDは did:[method-name]:[method-specific-id] の形で表される Method-name は 1文字以上の文字列で、小文字英数字のみ method-specific-id は1文字以上の文字列で英数字に加え、. - _ が使える。 Path - ほしい情報の場所を示す 特定のDIDにに紐づいた、特定の情報を引き出すためには Path を指定します。PathはDIDの後に / をつけることによって表現できます。また、pathの解釈は DID Method によって異なります。 例) did:example:123456/path Query - DIDに特定の要求を出す DIDに対して特定の要求を出したいときには ? をもちいてQueryを表現します。(Queryは要求っていう意味です)。例えば、以下の例では、example っていう DID Method 上の 123456 のIDに VersionIdが 1 のDID ducumentにアクセスしてねっていう意味になります。 例) did:example:123456?versionId=1 Fragment - 特定の DID document の一部分を表現する DID Fragment は DID document や外部リソースへの DID method に依存しない参照として使われます。(path は DID method に依存してます) DID Fragment と同じ文字列を DID document 側で定義しておくことによって、その部分にアクセスできるようになります。 例1) DID document 内の特定の検証方法を表現 did:example:123#public-key-0 例2) DID document 内の特定のサービスを表現 did:example:123#agent DID parameters 先ほどやった Query (? つけるやつ) を使って、特定の DID method に依存せず、すべてのDID methodで共通して使える DID parameters がいくつかあります。実装は任意なので、DID methodによってはサポートしていない場合もありますが、サポートしている場合は全てのDID methodにおいて、同様の機能を果たします。 service : サービスIDによって、DID documentからサービスを指定します。 relativeRef : サービスのエンドポイントを特定する相対URLです。サービスエンドポイントとは、service パラメータを用いて選択される DID documentを指します。 versionId : 解決される DID document のバージョンを指定します。 versionTime : 解決される DID document の特定のバージョンのタイムスタンプを指定します。つまり、その DID document はそのタイムスタンプの時間に承認されたということになります。 hl : 信頼性を守るための DID document のリソースのハッシュです。 相対 DID URL 相対 DID URL とは、DID document の中で、did:: で始まらない URL です。ベースとなる URI は、 DID subject に紐づいた DID です。 相対 DID URL は検証方法やサービスをDID document の中で参照するときに用いられます。 以下の例では、 #key-1 が相対 DID URL に当たります。 今回も読んでいただきありがとうございました!よろしければ僕らのプロダクト C-Voxel の discordやTwitterのフォローよろしくお願いします! Discord: http://discord.gg/X7juANn39d Twitter: https://twitter.com/C_Voxel?s=20&t=R0R_Zz6mHis1L7bbATNioQ ## Publication Information - [Kouki Minamoto](https://paragraph.com/@kouki-minamoto/): Publication homepage - [All Posts](https://paragraph.com/@kouki-minamoto/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@kouki-minamoto): Subscribe to updates