Slide 1

Slide 1 text

今日からはじめるNostr NIP-05 ドメイン認証編

Slide 2

Slide 2 text

もくじ - 自己紹介 - 事前準備 - JSONファイルを作る - サーバーにアップロードする - ドメインを向ける - 認証を確認する

Slide 3

Slide 3 text

Shino3 - 誕生日:12月1日 - 血液型:A型 - 身長 :162cm - しごと:エンジニア・プログラマ  広く 浅くどの言語・技術でも - 趣味 :自動車(レース、改造)     グランツーリスモ     自作キーボード設計販売 - 推し :檜山沙耶さん     (WeatherNews所属) - しのさん

Slide 4

Slide 4 text

技術的な部分の説明

Slide 5

Slide 5 text

NIP-05認証とは Mapping Nostr keys to DNS-based internet identifiers https://github.com/nostr-protocol/nips/blob/master/05.md NostrキーとDNSベースのインターネット識別子の対応付けをおこなう。 これの仕様は、ドメイン認証の仕組みを定義しているものになります 詳細:ユーザー(kind 0)のnip05に対してインターネット識別子を設定できるようになる

Slide 6

Slide 6 text

ドメイン認証の手順 .well-known/nostr.json nip05の照合をおこなう nip05の認証情報 ユーザー情報 ユーザー名 プロフィール nip05の認証情報 etc … nip05記載のドメインのサーバー ※管理者のみ設定可能

Slide 7

Slide 7 text

サーバー管理の問題点 ● 技術的知識が必要 ● ドメイン管理にコストがかかる ● ホスティングサービスは比較的、技術者向け ● ホームページの運営なんかよくわからない ※国内サービスが使いにくいなど ● 技術的用語がとにかく多い

Slide 8

Slide 8 text

ホスティングサービスの比較表 Cloudflare Pages Firebase Hosting Netlify GitHub Pages 転送量 無制限 10GB/月 100GB/月 100GB/月 ストレージ 2万ファイル 1GB 100GB 1GB 独自ドメイン ○ ○ ○ ○ DNS管理 あり なし あり なし SSL対応 ○ ○ ○ ○ 表示速度 速い 速い まあまあ 速い 商用利用 ○ ○ ○ ×

Slide 9

Slide 9 text

ホスティングサービスの比較表 Cloudflare Pages Firebase Hosting Netlify GitHub Pages 転送量 無制限 10GB/月 100GB/月 100GB/月 ストレージ 2万ファイル 1GB 100GB 1GB 独自ドメイン ○ ○ ○ ○ DNS管理 あり なし あり なし SSL対応 ○ ○ ○ ○ 表示速度 速い 速い まあまあ 速い 商用利用 ○ ○ ○ ×

Slide 10

Slide 10 text

必要なもの ● Nostrアカウント ● パソコン(Windows/Mac/Linux) ● Cloudflareの登録 ● 独自ドメイン(オプション) ● めげない心

Slide 11

Slide 11 text

JSONとは

Slide 12

Slide 12 text

JSONはウェブブラウザなどでよく使われている ECMA-262, revision 3準拠のJavaScript(ECMAScript) を ベースとしている。2006年7月にRFC 4627で仕様が規定され、その後、何度か改定され、 2017年12月14日 [3]にIETF STD 90およびRFC 8259およびECMA-404 2nd editionが発表された。MIMEタイプは application/json、拡張子はjsonとされた。 JSONは単純であるので、特にAjaxの分野で利用が広がりつつある。 JavaScriptでJSONをパースして読み 込むには、文字列をJavaScriptのコードとして解釈させる eval 関数を作用させるだけでよい(ただし、セキュ リティ上の問題があるうえ、ECMAScript 2018 まで[4]は U+2028 LINE SEPARATOR と U+2029 PARAGRAPH SEPARATOR の扱いがJavaScriptと互換性が無いため、JSON専用のパース関数の JSON.parse() を利用するべきである)。このように、広く普及しているウェブブラウザ搭載言語である JavaScriptで簡単に読み込めるため、Ajaxの開発者達から注目を浴びることになった。 JavaScript言語以外でも、ほとんどの言語において JSONは単純な処理で書き出しや読み込みができる。そ のため、JSONは異なるプログラミング言語の間でのデータの受渡しには能率的である。ウェブアプリケー ションの場合において、ウェブクライアントでの JavaScriptとのデータの受渡しなどはその最たる活用例と言 える。プロセス間通信、マシン間通信においても、疎結合にするため、 JSONで情報を受け渡しすることもあ JSONとは

Slide 13

Slide 13 text

JSONはウェブブラウザなどでよく使われている ECMA-262, revision 3準拠のJavaScript(ECMAScript) を ベースとしている。2006年7月にRFC 4627で仕様が規定され、その後、何度か改定され、 2017年12月14日 [3]にIETF STD 90およびRFC 8259およびECMA-404 2nd editionが発表された。MIMEタイプは application/json、拡張子はjsonとされた。 JSONは単純であるので、特にAjaxの分野で利用が広がりつつある。 JavaScriptでJSONをパースして読み 込むには、文字列をJavaScriptのコードとして解釈させる eval 関数を作用させるだけでよい(ただし、セキュ リティ上の問題があるうえ、ECMAScript 2018 まで[4]は U+2028 LINE SEPARATOR と U+2029 PARAGRAPH SEPARATOR の扱いがJavaScriptと互換性が無いため、JSON専用のパース関数の JSON.parse() を利用するべきである)。このように、広く普及しているウェブブラウザ搭載言語である JavaScriptで簡単に読み込めるため、Ajaxの開発者達から注目を浴びることになった。 JavaScript言語以外でも、ほとんどの言語において JSONは単純な処理で書き出しや読み込みができる。そ のため、JSONは異なるプログラミング言語の間でのデータの受渡しには能率的である。ウェブアプリケー ションの場合において、ウェブクライアントでの JavaScriptとのデータの受渡しなどはその最たる活用例と言 える。プロセス間通信、マシン間通信においても、疎結合にするため、 JSONで情報を受け渡しすることもあ JSONとは ・JavaScript Object Notationの略で、データ記述言語の1つである。 ・軽量なテキストベースのデータ交換用フォーマットであり  プログラミング言語を問わず利用できる。 ・名称と構文はJavaScriptにおけるオブジェクトに準拠する

Slide 14

Slide 14 text

認証用JSONファイルを用意する

Slide 15

Slide 15 text

Nostrの認証用JSONファイルを用意する Nostr フォルダの直下に 「.well-known」ディレクトリを作る

Slide 16

Slide 16 text

Nostrの認証用JSONファイルを用意する SnortでもIrisでも、お好きなクライアントで 自分のプロフィールを表示して 「npubから始まる」公開鍵をコピーします

Slide 17

Slide 17 text

Nostrの認証用JSONファイルを用意する

Slide 18

Slide 18 text

Nostrの認証用JSONファイルを用意する {   "names": {     "_": "d0de11abd77e5c4537591186c0270c12e1cb0f116f4b082fcad66a1063c92d19"   } } nostr.json

Slide 19

Slide 19 text

Nostrの認証用JSONファイルを用意する .well-known フォルダの直下に 「nostr.json」を保存します

Slide 20

Slide 20 text

サーバーへのアップロード編

Slide 21

Slide 21 text

サーバーへアップロードする 1 2 3 右のメニューより、Pagesを選択します 切り替わった画面の、 Create a projectを選択 Direct Uploadを選択します

Slide 22

Slide 22 text

サーバーへアップロードする Project Nameを入力して、Create Projectボタンを押します。 ※ここでは、仮にnostr-shino4としています

Slide 23

Slide 23 text

サーバーへアップロードする .well-known が入るフォルダ(Nostrとか)を ドラッグ・アンド・ドロップします

Slide 24

Slide 24 text

サーバーへアップロードする 完了すると、このように完了したことを表示する画面になります。 ※アップロード自体は数秒でおわります

Slide 25

Slide 25 text

アップロード内容の確認

Slide 26

Slide 26 text

アップロード内容の確認 Deploy Siteのボタンを押すと、完了の画面が出ます。 「nostr-shino4.pages.dev」を押して、サイトを開きます

Slide 27

Slide 27 text

アップロード内容の確認 アクセスすると、見つかりません。とページが出ます。 焦らずに次の手順へ進んでください

Slide 28

Slide 28 text

アップロード内容の確認 落ち着いてURLに追記します。 nostr-shino4.pages.dev/.well-known/nostr.json JSONの内容が表示されていればOKです

Slide 29

Slide 29 text

アップロード内容の確認 NIP-05に、記載します。 先程のドメインとユーザー名を以下のように設定します。 _@{あなたのドメイン名}

Slide 30

Slide 30 text

アップロード内容の確認 このように、認証マークがついたと思います。 お疲れ様でした

Slide 31

Slide 31 text

まとめ

Slide 32

Slide 32 text

NIP-05認証は    なぜ必要? ● 鍵の変更ができない ● 秘密鍵が流出すると乗っ取られ る ● ドメインは個人の支配下に置くこ とが可能 ● 自分の所有するドメインを適切に 運用する ● 公開鍵を照合し、自分のアカウン トを証明できる

Slide 33

Slide 33 text

今後の展望 ● データ通信量をクリアした クライアントの登場 ● データの整合性解消へ向け、開 発の加速 ● 無数に流れてくるデータを 整理し、適切に配信する 仕組み→Nostrendに期待 ● Nostrのロゴやイメージの決定 ● Nostrの擬人化 ● Nostrちゃんの登場 ● コミケにNostrちゃんのコス