Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
今からはじめるNostr
Search
Takuma Shinohara
February 22, 2023
Technology
450
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今からはじめるNostr
2023/2/22 Nostrstudy
Takuma Shinohara
February 22, 2023
More Decks by Takuma Shinohara
See All by Takuma Shinohara
Bluesky Meetup in Tokyo vol.4 - 2023to2026
shinoharata
0
270
MCPとは?
shinoharata
0
200
BlueskyMeetup in Fukuoka アイデアソン
shinoharata
1
160
BlueskyMeetup in Fukuoka アイデアソン結果発表
shinoharata
1
130
いまのBlueskyってどうなの
shinoharata
0
190
四谷ラボとは ※2025/05/31
shinoharata
0
180
What's is Bluesky
shinoharata
0
2.1k
dissolute fat
shinoharata
0
270
20240520_toranoana_lab.pdf
shinoharata
0
260
Other Decks in Technology
See All in Technology
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.9k
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
510
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
350
AI時代、データエンジニアが一番おもろい
genshun9
0
690
LLMに渡さなかった仕事
nanaism
0
1.4k
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
210
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
540
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.6k
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
610
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
270
あけおめLINE 傾向とその対策
nasa9084
0
300
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Docker and Python
trallard
47
4.2k
Prompt Engineering for Job Search
mfonobong
0
460
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
240
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Transcript
今日からはじめるNostr NIP-05 ドメイン認証編
もくじ - 自己紹介 - 事前準備 - JSONファイルを作る - サーバーにアップロードする -
ドメインを向ける - 認証を確認する
Shino3 - 誕生日:12月1日 - 血液型:A型 - 身長 :162cm - しごと:エンジニア・プログラマ 広く 浅くどの言語・技術でも
- 趣味 :自動車(レース、改造) グランツーリスモ 自作キーボード設計販売 - 推し :檜山沙耶さん (WeatherNews所属) - しのさん
技術的な部分の説明
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に対してインターネット識別子を設定できるようになる
ドメイン認証の手順 .well-known/nostr.json nip05の照合をおこなう nip05の認証情報 ユーザー情報 ユーザー名 プロフィール nip05の認証情報 etc …
nip05記載のドメインのサーバー ※管理者のみ設定可能
サーバー管理の問題点 • 技術的知識が必要 • ドメイン管理にコストがかかる • ホスティングサービスは比較的、技術者向け • ホームページの運営なんかよくわからない ※国内サービスが使いにくいなど
• 技術的用語がとにかく多い
ホスティングサービスの比較表 Cloudflare Pages Firebase Hosting Netlify GitHub Pages 転送量 無制限
10GB/月 100GB/月 100GB/月 ストレージ 2万ファイル 1GB 100GB 1GB 独自ドメイン ◦ ◦ ◦ ◦ DNS管理 あり なし あり なし SSL対応 ◦ ◦ ◦ ◦ 表示速度 速い 速い まあまあ 速い 商用利用 ◦ ◦ ◦ ×
ホスティングサービスの比較表 Cloudflare Pages Firebase Hosting Netlify GitHub Pages 転送量 無制限
10GB/月 100GB/月 100GB/月 ストレージ 2万ファイル 1GB 100GB 1GB 独自ドメイン ◦ ◦ ◦ ◦ DNS管理 あり なし あり なし SSL対応 ◦ ◦ ◦ ◦ 表示速度 速い 速い まあまあ 速い 商用利用 ◦ ◦ ◦ ×
必要なもの • Nostrアカウント • パソコン(Windows/Mac/Linux) • Cloudflareの登録 • 独自ドメイン(オプション) •
めげない心
JSONとは
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とは
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におけるオブジェクトに準拠する
認証用JSONファイルを用意する
Nostrの認証用JSONファイルを用意する Nostr フォルダの直下に 「.well-known」ディレクトリを作る
Nostrの認証用JSONファイルを用意する SnortでもIrisでも、お好きなクライアントで 自分のプロフィールを表示して 「npubから始まる」公開鍵をコピーします
Nostrの認証用JSONファイルを用意する
Nostrの認証用JSONファイルを用意する { "names": { "_": "d0de11abd77e5c4537591186c0270c12e1cb0f116f4b082fcad66a1063c92d19" } } nostr.json
Nostrの認証用JSONファイルを用意する .well-known フォルダの直下に 「nostr.json」を保存します
サーバーへのアップロード編
サーバーへアップロードする 1 2 3 右のメニューより、Pagesを選択します 切り替わった画面の、 Create a projectを選択 Direct
Uploadを選択します
サーバーへアップロードする Project Nameを入力して、Create Projectボタンを押します。 ※ここでは、仮にnostr-shino4としています
サーバーへアップロードする .well-known が入るフォルダ(Nostrとか)を ドラッグ・アンド・ドロップします
サーバーへアップロードする 完了すると、このように完了したことを表示する画面になります。 ※アップロード自体は数秒でおわります
アップロード内容の確認
アップロード内容の確認 Deploy Siteのボタンを押すと、完了の画面が出ます。 「nostr-shino4.pages.dev」を押して、サイトを開きます
アップロード内容の確認 アクセスすると、見つかりません。とページが出ます。 焦らずに次の手順へ進んでください
アップロード内容の確認 落ち着いてURLに追記します。 nostr-shino4.pages.dev/.well-known/nostr.json JSONの内容が表示されていればOKです
アップロード内容の確認 NIP-05に、記載します。 先程のドメインとユーザー名を以下のように設定します。 _@{あなたのドメイン名}
アップロード内容の確認 このように、認証マークがついたと思います。 お疲れ様でした
まとめ
NIP-05認証は なぜ必要? • 鍵の変更ができない • 秘密鍵が流出すると乗っ取られ る • ドメインは個人の支配下に置くこ とが可能
• 自分の所有するドメインを適切に 運用する • 公開鍵を照合し、自分のアカウン トを証明できる
今後の展望 • データ通信量をクリアした クライアントの登場 • データの整合性解消へ向け、開 発の加速 • 無数に流れてくるデータを 整理し、適切に配信する
仕組み→Nostrendに期待 • Nostrのロゴやイメージの決定 • Nostrの擬人化 • Nostrちゃんの登場 • コミケにNostrちゃんのコス