レビュー2024/01/18に公開2024/09/04Bitcoindidtech昨年11月に発表されたWeb5の新しいDIDメソッドDHTについてざっとウォークスルーする。table"のイニシャルDHTを利用した分散DNSに、DIDを載せるものである。Documentを永続するdid:ionが主だったが、did:dhtはBitTorrentを永続層にする。did:dhtもBitcoinを利用するにはする(後述)スペック策定者(decentralgabe)によると、95%のユースケースはdid:dhtでカバーでき、残り5%がdid:ionになるとのこと。DHTの概要DIDメソッドは多種多様である。公開鍵をそのままidentifierにするdid:keyのようなもの、webのドメインをラップするdid:webのようなもの、伝播をP2Pに行うことを企図したdid:peer系のものなどある。一方で、もっとも多そうなタイプがなにかしらのデータレジストリを持ちエンドポイントを解決して各種メソッドを実行するサーバを立てる形式である。did:dhtもdid:ionもそのようなサーバを持つ型だが、データレジストリが変わることにより、did:dhtはスケーリングを最重要にしてdid:ionは一貫性を取っている(*1)という特徴に分かれる。これが上記の95%のユースケースはdid:dhtでカバーでき、残り5%がdid:ionになる背景である。DHTを使用するPkarrをDID仕様に合わせたものと言ってよさそうである。DHTのwikipediaによると2013年時点で同時ユーザー数が2,700万人という実績らしい。did:dhtスペックにはノード数が1,000万台と書かれている。(*1)そのわりに一貫性についてもIPFS側を突くことで破られうるという指摘もあるが、アンカリングの頻度およびWebサービス側でのバリデーションも手が取れるなどの理由をもって実用上は問題ないという話もある。けっきょくのところこの手の話は最終的には確率論になることもありここではいったん脇におく。PkarrとはPkarrは以下を目的としてrustで書かれた分散DNSの概念実証である。DNSとP2Pネットワーク間の最もシンプルで合理的な統合により、自己発行した公開鍵が主権のあるパブリックでアドレス指定可能なドメインとして機能できるようになります。このシステムは、秘密鍵を管理できる人であれば誰でも利用できます。要は、公開鍵をドメインネームにして、そのアドレス解決をBitTorrentが供給する(DNSサーバ)という話である。READMEではデモとしてhttps://o4dksfbqk85ogzdb5osziw6befigbuxmuxkuxq8434q89uj56uyy/のURLが示されている。o4以下が公開鍵である。これは単にmarkdownの表記テキストであることに注意で、ハイパーリンクされている実際のURLはhttps://app.pkarr.org/?pk=o4dksfbqk85ogzdb5osziw6befigbuxmuxkuxq8434q89uj56uyyになる。proxyにすることで名前解決できるしネットワークの機器たちが対応すれば可能になる)。そのURLにアクセスしたレスポンスが下記の画面である。o4dksfbqk85ogzdb5osziw6befigbuxmuxkuxq8434q89uj56uyyの公開鍵に紐づいているDNSレコードが表示されている。DNSレコードはmatrixのユーザーIDが値となっている。matrixも分散SNSの位置付けになるのでこのデモが何を示したいのかいまいちピンとこないのだが(*2)、nameとvalueをDNSのTXTレコードに置き換えると腹落ちする。ドメインの所有者情報を権威DNSサーバー抜きに、また、SSL証明書をCA(証明局)抜きに、できるようになるのである。現状はここまでだが、もっと頑張れば上記のhttps://o4dksfbqk85ogzdb5osziw6befigbuxmuxkuxq8434q89uj56uyy/もできるようになるよというイメージだと思う。did:o4dksfbqk85ogzdb5osziw6befigbuxmuxkuxq8434q89uj56uyyのURIで解決できるようにするのがdid:dhtということになる。SystemやBitcoin上のnamecoinのように先例はあるが、Pkarrはシンプルな仕様やBitTorrentを用いた同時アクセス数のスケーリングが売りになるだろうか。(*2)Mastdonのようにインスタンスを超えたアカウントの連携なり引越しのためのmatrixの各鯖間のユニバーサルレジストリが作れるよと示しているのかもしれない。1.0」からPkarrの拡張箇所を中心にピックアップする。core仕様に沿った定義箇所は割愛する。DocumentをDNSレコードにマッピングしている。これをBitTorrentのBEP-44に則ったデータにエンコーディングしてBitTorrentに書き込む。did:dht→Pkarrの方向は互換があり、Pkarrリレーサーバにも書き込める。ゲートウェイdid:dhtはBitTorrentとdid層の二階建てとなる。Truth)と静的データのREAD先(did層を通さずに直接読み取るルート)として解釈して良いと思うが、didは署名などの各種メソッドの実行なども用意されるし、DHTはデータ永続を保証するわけでないのでキャッシングの場所を用意しさらなるスケーリングを可能にするため、did:dht側でもネットワークを形成する。このゲートウェイサーバはAPIこそ定義されているがその構成は自由である。DHTがSSOTのためゲートウェイサーバ間の同期も必須ではない。Web側で更なるスケーリングを行うために、ネットワークベンダーやクラウドベンダーなどに開かれた領域と考えるのが妥当と考える。did:ionはこのゲートウェイサーバに該当するところも内部の仕様設計が相当な範囲で定められていて、ゲートウェイサーバ間の同期が行われるものとなっている。Work"の仕組みがオプションで定められている。Work"のアイディアとほぼほぼ同じハッシュ値の計算となる。競争や報酬はなく、ただただクライアントにリソース消費を強いているだけである。Engineering)を自由にやれということだと解釈する。ゲートウェイレジストリにBitcoinを利用するゲートウェイレジストリは、クライアントがゲートウェイを発見するためのアドレス帳である。BitcoinにおけるDNSシードの役割と解釈して良いと思う。1.0」ではどんなストアを使うかは抽象化されているが、レジストリの仕様書にBitcoinを使用するパターンが記載されている。登録されたゲートウェイであり続けたいなら、"proof-of-legitimacy"と呼んでいる、Bitcoinにkeep-aliveとしてのtxを前回期限後の10ブロック以内に発行し続けることになる。クライアントはBitcoinをクエリすることで、現在「アクティブ」なゲートウェイリストを入手できる。登録されたゲートウェイになるインセンティブが不明であるが、Web5はこれで実装しているとのことである。結論いかがでしたか?did:dhtとは、ブラウザのアドレスバーやネイティブアプリのIP通信でDIDが動作できるようにする第一歩として、DIDを分散DNSにフュージョンしたものです。この記事はけっきょくのところ私自身が理解を深める動機が第一なのでよくわからなかったかもしれません。そのため、ぱっと見でわかる図表を最後に用意しました。did:dhtはゴテンクスです。engineerバッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。